diff options
Diffstat (limited to 'chromium/third_party/skia/src/pdf/SkPDFImage.cpp')
-rw-r--r-- | chromium/third_party/skia/src/pdf/SkPDFImage.cpp | 62 |
1 files changed, 30 insertions, 32 deletions
diff --git a/chromium/third_party/skia/src/pdf/SkPDFImage.cpp b/chromium/third_party/skia/src/pdf/SkPDFImage.cpp index 81adcc20d6b..77fd84eff94 100644 --- a/chromium/third_party/skia/src/pdf/SkPDFImage.cpp +++ b/chromium/third_party/skia/src/pdf/SkPDFImage.cpp @@ -27,16 +27,17 @@ static bool skip_compression(SkPDFCatalog* catalog) { static size_t get_uncompressed_size(const SkBitmap& bitmap, const SkIRect& srcRect) { - switch (bitmap.config()) { - case SkBitmap::kIndex8_Config: + switch (bitmap.colorType()) { + case kIndex_8_SkColorType: return srcRect.width() * srcRect.height(); - case SkBitmap::kARGB_4444_Config: + case kARGB_4444_SkColorType: return ((srcRect.width() * 3 + 1) / 2) * srcRect.height(); - case SkBitmap::kRGB_565_Config: + case kRGB_565_SkColorType: return srcRect.width() * 3 * srcRect.height(); - case SkBitmap::kARGB_8888_Config: + case kRGBA_8888_SkColorType: + case kBGRA_8888_SkColorType: return srcRect.width() * 3 * srcRect.height(); - case SkBitmap::kA8_Config: + case kAlpha_8_SkColorType: return 1; default: SkASSERT(false); @@ -208,9 +209,9 @@ static SkStream* create_black_image() { static SkStream* extract_image_data(const SkBitmap& bitmap, const SkIRect& srcRect, bool extractAlpha, bool* isTransparent) { - SkBitmap::Config config = bitmap.config(); - if (extractAlpha && (config == SkBitmap::kIndex8_Config || - config == SkBitmap::kRGB_565_Config)) { + SkColorType colorType = bitmap.colorType(); + if (extractAlpha && (kIndex_8_SkColorType == colorType || + kRGB_565_SkColorType == colorType)) { if (isTransparent != NULL) { *isTransparent = false; } @@ -221,26 +222,26 @@ static SkStream* extract_image_data(const SkBitmap& bitmap, SkStream* stream = NULL; bitmap.lockPixels(); - switch (config) { - case SkBitmap::kIndex8_Config: + switch (colorType) { + case kIndex_8_SkColorType: if (!extractAlpha) { stream = extract_index8_image(bitmap, srcRect); } break; - case SkBitmap::kARGB_4444_Config: + case kARGB_4444_SkColorType: stream = extract_argb4444_data(bitmap, srcRect, extractAlpha, &isOpaque, &transparent); break; - case SkBitmap::kRGB_565_Config: + case kRGB_565_SkColorType: if (!extractAlpha) { stream = extract_rgb565_image(bitmap, srcRect); } break; - case SkBitmap::kARGB_8888_Config: + case kN32_SkColorType: stream = extract_argb8888_data(bitmap, srcRect, extractAlpha, &isOpaque, &transparent); break; - case SkBitmap::kA8_Config: + case kAlpha_8_SkColorType: if (!extractAlpha) { stream = create_black_image(); } else { @@ -373,14 +374,13 @@ static uint16_t get_argb4444_neighbor_avg_color(const SkBitmap& bitmap, static SkBitmap unpremultiply_bitmap(const SkBitmap& bitmap, const SkIRect& srcRect) { SkBitmap outBitmap; - outBitmap.setConfig(bitmap.config(), srcRect.width(), srcRect.height()); - outBitmap.allocPixels(); + outBitmap.allocPixels(bitmap.info().makeWH(srcRect.width(), srcRect.height())); int dstRow = 0; outBitmap.lockPixels(); bitmap.lockPixels(); - switch (bitmap.config()) { - case SkBitmap::kARGB_4444_Config: { + switch (bitmap.colorType()) { + case kARGB_4444_SkColorType: { for (int y = srcRect.fTop; y < srcRect.fBottom; y++) { uint16_t* dst = outBitmap.getAddr16(0, dstRow); uint16_t* src = bitmap.getAddr16(0, y); @@ -408,7 +408,7 @@ static SkBitmap unpremultiply_bitmap(const SkBitmap& bitmap, } break; } - case SkBitmap::kARGB_8888_Config: { + case kN32_SkColorType: { for (int y = srcRect.fTop; y < srcRect.fBottom; y++) { uint32_t* dst = outBitmap.getAddr32(0, dstRow); uint32_t* src = bitmap.getAddr32(0, y); @@ -440,7 +440,7 @@ static SkBitmap unpremultiply_bitmap(const SkBitmap& bitmap, SkPDFImage* SkPDFImage::CreateImage(const SkBitmap& bitmap, const SkIRect& srcRect, SkPicture::EncodeBitmap encoder) { - if (bitmap.config() == SkBitmap::kNo_Config) { + if (bitmap.colorType() == kUnknown_SkColorType) { return NULL; } @@ -459,9 +459,9 @@ SkPDFImage* SkPDFImage::CreateImage(const SkBitmap& bitmap, } SkPDFImage* image; - SkBitmap::Config config = bitmap.config(); - if (alphaData.get() != NULL && (config == SkBitmap::kARGB_8888_Config || - config == SkBitmap::kARGB_4444_Config)) { + SkColorType colorType = bitmap.colorType(); + if (alphaData.get() != NULL && (kN32_SkColorType == colorType || + kARGB_4444_SkColorType == colorType)) { SkBitmap unpremulBitmap = unpremultiply_bitmap(bitmap, srcRect); image = SkNEW_ARGS(SkPDFImage, (NULL, unpremulBitmap, false, SkIRect::MakeWH(srcRect.width(), srcRect.height()), @@ -507,7 +507,7 @@ SkPDFImage::SkPDFImage(SkStream* stream, if (bitmap.isImmutable()) { fBitmap = bitmap; } else { - bitmap.deepCopyTo(&fBitmap, bitmap.config()); + bitmap.deepCopyTo(&fBitmap); fBitmap.setImmutable(); } @@ -518,12 +518,12 @@ SkPDFImage::SkPDFImage(SkStream* stream, fStreamValid = false; } - SkBitmap::Config config = fBitmap.config(); + SkColorType colorType = fBitmap.colorType(); insertName("Type", "XObject"); insertName("Subtype", "Image"); - bool alphaOnly = (config == SkBitmap::kA8_Config); + bool alphaOnly = (kAlpha_8_SkColorType == colorType); if (!isAlpha && alphaOnly) { // For alpha only images, we stretch a single pixel of black for @@ -538,7 +538,7 @@ SkPDFImage::SkPDFImage(SkStream* stream, if (isAlpha || alphaOnly) { insertName("ColorSpace", "DeviceGray"); - } else if (config == SkBitmap::kIndex8_Config) { + } else if (kIndex_8_SkColorType == colorType) { SkAutoLockPixels alp(fBitmap); insert("ColorSpace", make_indexed_color_space(fBitmap.getColorTable()))->unref(); @@ -547,12 +547,12 @@ SkPDFImage::SkPDFImage(SkStream* stream, } int bitsPerComp = 8; - if (config == SkBitmap::kARGB_4444_Config) { + if (kARGB_4444_SkColorType == colorType) { bitsPerComp = 4; } insertInt("BitsPerComponent", bitsPerComp); - if (config == SkBitmap::kRGB_565_Config) { + if (kRGB_565_SkColorType == colorType) { SkASSERT(!isAlpha); SkAutoTUnref<SkPDFInt> zeroVal(new SkPDFInt(0)); SkAutoTUnref<SkPDFScalar> scale5Val( @@ -592,8 +592,6 @@ bool SkPDFImage::populate(SkPDFCatalog* catalog) { SkBitmap subset; // Extract subset if (!fBitmap.extractSubset(&subset, fSrcRect)) { - // TODO(edisonn) It fails only for kA1_Config, if that is a - // major concern we will fix it later, so far it is NYI. return false; } size_t pixelRefOffset = 0; |