PDF: remove unused SkPDFDevice::setDCTEncoder()
All image compression currently uses (losseless) Deflate, not Jpeg. See http://crrev.com/935843007 Review URL: https://codereview.chromium.org/946493002
This commit is contained in:
parent
b92b706dfd
commit
07d5947b88
@ -727,7 +727,6 @@ SkPDFDevice::SkPDFDevice(const SkISize& pageSize, const SkISize& contentSize,
|
||||
, fLastContentEntry(NULL)
|
||||
, fLastMarginContentEntry(NULL)
|
||||
, fClipStack(NULL)
|
||||
, fEncoder(NULL)
|
||||
, fRasterDpi(72.0f)
|
||||
{
|
||||
const SkImageInfo info = make_content_info(contentSize, &initialTransform);
|
||||
@ -760,7 +759,6 @@ SkPDFDevice::SkPDFDevice(const SkISize& layerSize,
|
||||
, fLastContentEntry(NULL)
|
||||
, fLastMarginContentEntry(NULL)
|
||||
, fClipStack(NULL)
|
||||
, fEncoder(NULL)
|
||||
, fRasterDpi(72.0f)
|
||||
{
|
||||
fInitialTransform.reset();
|
||||
@ -2178,7 +2176,7 @@ void SkPDFDevice::internalDrawBitmap(const SkMatrix& origMatrix,
|
||||
}
|
||||
|
||||
SkAutoTUnref<SkPDFObject> image(
|
||||
SkPDFCreateImageObject(*bitmap, subset, fEncoder));
|
||||
SkPDFCreateImageObject(*bitmap, subset));
|
||||
if (!image) {
|
||||
return;
|
||||
}
|
||||
|
@ -126,21 +126,6 @@ public:
|
||||
*/
|
||||
SK_API void setDrawingArea(DrawingArea drawingArea);
|
||||
|
||||
/** Sets the DCTEncoder for images.
|
||||
* @param encoder The encoder to encode a bitmap as JPEG (DCT).
|
||||
* Result of encodings are cached, if the encoder changes the
|
||||
* behaivor dynamically and an image is added to a second catalog,
|
||||
* we will likely use the result of the first encoding call.
|
||||
* By returning false from the encoder function, the encoder result
|
||||
* is not used.
|
||||
* Callers might not want to encode small images, as the time spent
|
||||
* encoding and decoding might not be worth the space savings,
|
||||
* if any at all.
|
||||
*/
|
||||
void setDCTEncoder(SkData* (*encoder)(size_t*, const SkBitmap&)) {
|
||||
fEncoder = encoder;
|
||||
}
|
||||
|
||||
// PDF specific methods.
|
||||
|
||||
/** Returns the resource dictionary for this device.
|
||||
@ -245,7 +230,6 @@ private:
|
||||
// Glyph ids used for each font on this device.
|
||||
SkAutoTDelete<SkPDFGlyphSetMap> fFontGlyphUsage;
|
||||
|
||||
SkData* (*fEncoder)(size_t*, const SkBitmap&);
|
||||
SkScalar fRasterDpi;
|
||||
|
||||
SkBitmap fLegacyBitmap;
|
||||
|
@ -20,8 +20,6 @@
|
||||
#include "SkString.h"
|
||||
#include "SkUnPreMultiply.h"
|
||||
|
||||
static const int kNoColorTransform = 0;
|
||||
|
||||
static size_t get_uncompressed_size(const SkBitmap& bitmap,
|
||||
const SkIRect& srcRect) {
|
||||
switch (bitmap.colorType()) {
|
||||
@ -457,8 +455,7 @@ static SkBitmap unpremultiply_bitmap(const SkBitmap& bitmap,
|
||||
|
||||
// static
|
||||
SkPDFImage* SkPDFImage::CreateImage(const SkBitmap& bitmap,
|
||||
const SkIRect& srcRect,
|
||||
SkData* (*encoder)(size_t*, const SkBitmap&)) {
|
||||
const SkIRect& srcRect) {
|
||||
if (bitmap.colorType() == kUnknown_SkColorType) {
|
||||
return NULL;
|
||||
}
|
||||
@ -484,22 +481,19 @@ SkPDFImage* SkPDFImage::CreateImage(const SkBitmap& bitmap,
|
||||
if (kN32_SkColorType == colorType) {
|
||||
image = SkNEW_ARGS(SkPDFImage, (NULL, bitmap, false,
|
||||
SkIRect::MakeWH(srcRect.width(),
|
||||
srcRect.height()),
|
||||
encoder));
|
||||
srcRect.height())));
|
||||
} else {
|
||||
SkBitmap unpremulBitmap = unpremultiply_bitmap(bitmap, srcRect);
|
||||
image = SkNEW_ARGS(SkPDFImage, (NULL, unpremulBitmap, false,
|
||||
SkIRect::MakeWH(srcRect.width(),
|
||||
srcRect.height()),
|
||||
encoder));
|
||||
srcRect.height())));
|
||||
}
|
||||
} else {
|
||||
image = SkNEW_ARGS(SkPDFImage, (NULL, bitmap, false, srcRect, encoder));
|
||||
image = SkNEW_ARGS(SkPDFImage, (NULL, bitmap, false, srcRect));
|
||||
}
|
||||
if (alphaData.get() != NULL) {
|
||||
SkAutoTUnref<SkPDFImage> mask(
|
||||
SkNEW_ARGS(SkPDFImage, (alphaData.get(), bitmap,
|
||||
true, srcRect, NULL)));
|
||||
SkNEW_ARGS(SkPDFImage, (alphaData.get(), bitmap, true, srcRect)));
|
||||
image->insert("SMask", new SkPDFObjRef(mask))->unref();
|
||||
}
|
||||
return image;
|
||||
@ -510,11 +504,9 @@ SkPDFImage::~SkPDFImage() {}
|
||||
SkPDFImage::SkPDFImage(SkStream* stream,
|
||||
const SkBitmap& bitmap,
|
||||
bool isAlpha,
|
||||
const SkIRect& srcRect,
|
||||
SkData* (*encoder)(size_t*, const SkBitmap&))
|
||||
const SkIRect& srcRect)
|
||||
: fIsAlpha(isAlpha),
|
||||
fSrcRect(srcRect),
|
||||
fEncoder(encoder) {
|
||||
fSrcRect(srcRect) {
|
||||
|
||||
if (bitmap.isImmutable()) {
|
||||
fBitmap = bitmap;
|
||||
@ -588,7 +580,6 @@ SkPDFImage::SkPDFImage(SkPDFImage& pdfImage)
|
||||
fBitmap(pdfImage.fBitmap),
|
||||
fIsAlpha(pdfImage.fIsAlpha),
|
||||
fSrcRect(pdfImage.fSrcRect),
|
||||
fEncoder(pdfImage.fEncoder),
|
||||
fStreamValid(pdfImage.fStreamValid) {
|
||||
// Nothing to do here - the image params are already copied in SkPDFStream's
|
||||
// constructor, and the bitmap will be regenerated and encoded in
|
||||
@ -598,25 +589,6 @@ SkPDFImage::SkPDFImage(SkPDFImage& pdfImage)
|
||||
bool SkPDFImage::populate(SkPDFCatalog* catalog) {
|
||||
if (getState() == kUnused_State) {
|
||||
// Initializing image data for the first time.
|
||||
if (fEncoder && get_uncompressed_size(fBitmap, fSrcRect) > 1) {
|
||||
SkBitmap subset;
|
||||
// Extract subset
|
||||
if (!fBitmap.extractSubset(&subset, fSrcRect)) {
|
||||
return false;
|
||||
}
|
||||
size_t pixelRefOffset = 0;
|
||||
SkAutoTUnref<SkData> data(fEncoder(&pixelRefOffset, subset));
|
||||
if (data.get() && data->size() < get_uncompressed_size(fBitmap,
|
||||
fSrcRect)) {
|
||||
this->setData(data.get());
|
||||
|
||||
insertName("Filter", "DCTDecode");
|
||||
insertInt("ColorTransform", kNoColorTransform);
|
||||
insertInt("Length", this->dataSize());
|
||||
setState(kCompressed_State);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
// Fallback method
|
||||
if (!fStreamValid) {
|
||||
SkAutoTDelete<SkStream> stream(
|
||||
@ -628,9 +600,6 @@ bool SkPDFImage::populate(SkPDFCatalog* catalog) {
|
||||
}
|
||||
#ifndef SK_NO_FLATE
|
||||
else if (getState() == kNoCompression_State) {
|
||||
#else // SK_NO_FLATE
|
||||
else if (getState() == kNoCompression_State && fEncoder) {
|
||||
#endif // SK_NO_FLATE
|
||||
// Compression has not been requested when the stream was first created,
|
||||
// but the new catalog wants it compressed.
|
||||
if (!getSubstitute()) {
|
||||
@ -640,6 +609,7 @@ bool SkPDFImage::populate(SkPDFCatalog* catalog) {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif // SK_NO_FLATE
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -719,8 +689,7 @@ static bool is_jfif_jpeg(SkData* data) {
|
||||
|
||||
SkPDFObject* SkPDFCreateImageObject(
|
||||
const SkBitmap& bitmap,
|
||||
const SkIRect& subset,
|
||||
SkData* (*encoder)(size_t*, const SkBitmap&)) {
|
||||
const SkIRect& subset) {
|
||||
if (SkPDFObject* pdfBitmap = SkPDFBitmap::Create(bitmap, subset)) {
|
||||
return pdfBitmap;
|
||||
}
|
||||
@ -733,5 +702,5 @@ SkPDFObject* SkPDFCreateImageObject(
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return SkPDFImage::CreateImage(bitmap, subset, encoder);
|
||||
return SkPDFImage::CreateImage(bitmap, subset);
|
||||
}
|
||||
|
@ -23,13 +23,8 @@ struct SkIRect;
|
||||
|
||||
/**
|
||||
* Return the mose efficient availible encoding of the given bitmap.
|
||||
*
|
||||
* If the bitmap has encoded JPEG data and that data can be embedded
|
||||
* into the PDF output stream directly, use that. Otherwise, fall
|
||||
* back on SkPDFImage::CreateImage.
|
||||
*/
|
||||
SkPDFObject* SkPDFCreateImageObject(
|
||||
const SkBitmap&, const SkIRect& subset, SkData* (*)(size_t*, const SkBitmap&));
|
||||
SkPDFObject* SkPDFCreateImageObject(const SkBitmap&, const SkIRect& subset);
|
||||
|
||||
/** \class SkPDFImage
|
||||
|
||||
@ -49,8 +44,7 @@ public:
|
||||
* the given parameters.
|
||||
*/
|
||||
static SkPDFImage* CreateImage(const SkBitmap& bitmap,
|
||||
const SkIRect& srcRect,
|
||||
SkData* (*encoder)(size_t*, const SkBitmap&));
|
||||
const SkIRect& srcRect);
|
||||
|
||||
virtual ~SkPDFImage();
|
||||
|
||||
@ -62,7 +56,6 @@ private:
|
||||
SkBitmap fBitmap;
|
||||
bool fIsAlpha;
|
||||
SkIRect fSrcRect;
|
||||
SkData* (*fEncoder)(size_t*, const SkBitmap&);
|
||||
bool fStreamValid;
|
||||
|
||||
/** Create a PDF image XObject. Entries for the image properties are
|
||||
@ -77,11 +70,9 @@ private:
|
||||
* @param isAlpha Whether or not this is the alpha of an image.
|
||||
* @param srcRect The clipping applied to bitmap before generating
|
||||
* imageData.
|
||||
* @param encoder A function used to encode the bitmap for compression.
|
||||
* May be NULL.
|
||||
*/
|
||||
SkPDFImage(SkStream* stream, const SkBitmap& bitmap, bool isAlpha,
|
||||
const SkIRect& srcRect, SkData* (*encoder)(size_t*, const SkBitmap&));
|
||||
const SkIRect& srcRect);
|
||||
|
||||
/** Copy constructor, used to generate substitutes.
|
||||
* @param image The SkPDFImage to copy.
|
||||
|
Loading…
Reference in New Issue
Block a user