diff options
author | reed <reed@google.com> | 2015-03-20 10:03:36 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-03-20 10:03:36 -0700 |
commit | 1b600d3446b3d236bfa06cf116ec41960bea6ac8 (patch) | |
tree | cbc41e783250b80358ac40c5af3406a8cf13098e /src/pdf/SkPDFImage.h | |
parent | b79ff56de23fef680ae7187040f2d6a9516b553d (diff) |
Revert of PDF: remove last use of SkPDFImage (patchset #5 id:120001 of https://codereview.chromium.org/950633003/)
Reason for revert:
static void draw(SkCanvas* canvas,
const SkPaint& p,
const SkBitmap& src,
SkColorType colorType,
const char text[]) {
SkASSERT(src.colorType() == colorType);
canvas->drawBitmap(src, 0.0f, 0.0f);
canvas->drawText(text, strlen(text), 0.0f, 12.0f, p);
}
This assert is firing, at least on macs, where all images get decoded into 32bit at the moment.
Original issue's description:
> PDF: remove last use of SkPDFImage
>
> Add a GM.
>
> BUG=skia:255
>
> Committed: https://skia.googlesource.com/skia/+/86ad8d643624a55b02e529100bbe4e2940115fa1
TBR=mtklein@google.com,halcanary@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:255
Review URL: https://codereview.chromium.org/1024113002
Diffstat (limited to 'src/pdf/SkPDFImage.h')
-rw-r--r-- | src/pdf/SkPDFImage.h | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/src/pdf/SkPDFImage.h b/src/pdf/SkPDFImage.h new file mode 100644 index 0000000000..64be971bfc --- /dev/null +++ b/src/pdf/SkPDFImage.h @@ -0,0 +1,91 @@ + +/* + * Copyright 2010 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + + +#ifndef SkPDFImage_DEFINED +#define SkPDFImage_DEFINED + +#include "SkPicture.h" +#include "SkPDFDevice.h" +#include "SkPDFStream.h" +#include "SkPDFTypes.h" +#include "SkRefCnt.h" + +class SkBitmap; +class SkData; +class SkPDFCatalog; +struct SkIRect; + +/** + * Return the mose efficient availible encoding of the given bitmap. + */ +SkPDFObject* SkPDFCreateImageObject(SkPDFCanon* canon, + const SkBitmap&, + const SkIRect& subset); + +/** \class SkPDFImage + + An image XObject. +*/ + +// We could play the same trick here as is done in SkPDFGraphicState, storing +// a copy of the Bitmap object (not the pixels), the pixel generation number, +// and settings used from the paint to canonicalize image objects. +class SkPDFImage : public SkPDFStream { +public: + /** Create a new Image XObject to represent the passed bitmap. + * @param bitmap The image to encode. + * @param srcRect The rectangle to cut out of bitmap. + * @param paint Used to calculate alpha, masks, etc. + * @return The image XObject or NUll if there is nothing to draw for + * the given parameters. + */ + static SkPDFImage* CreateImage(const SkBitmap& bitmap, + const SkIRect& srcRect); + + virtual ~SkPDFImage(); + + bool isEmpty() { + return fSrcRect.isEmpty(); + } + +private: + SkBitmap fBitmap; + bool fIsAlpha; + SkIRect fSrcRect; + bool fStreamValid; + + /** Create a PDF image XObject. Entries for the image properties are + * automatically added to the stream dictionary. + * @param stream The image stream. May be NULL. Otherwise, this + * (instead of the input bitmap) will be used as the + * PDF's content stream, possibly with lossless encoding. + * Will be duplicated, and left in indeterminate state. + * @param bitmap The image. If a stream is not given, its color data + * will be used as the image. If a stream is given, this + * is used for configuration only. + * @param isAlpha Whether or not this is the alpha of an image. + * @param srcRect The clipping applied to bitmap before generating + * imageData. + */ + SkPDFImage(SkStream* stream, const SkBitmap& bitmap, bool isAlpha, + const SkIRect& srcRect); + + /** Copy constructor, used to generate substitutes. + * @param image The SkPDFImage to copy. + */ + SkPDFImage(SkPDFImage& pdfImage); + + // Populate the stream dictionary. This method returns false if + // fSubstitute should be used. + virtual bool populate(SkPDFCatalog* catalog); + + typedef SkPDFStream INHERITED; +}; + +#endif |