Chromium Code Reviews| Index: src/pdf/SkPDFImage.cpp |
| diff --git a/src/pdf/SkPDFImage.cpp b/src/pdf/SkPDFImage.cpp |
| index f39dc5908502bef96dd70b40cbba248cd82ece61..77fd84eff94d0be5911f5bc67232d81fafe42453 100644 |
| --- a/src/pdf/SkPDFImage.cpp |
| +++ b/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: |
|
robertphillips
2014/06/02 13:15:59
Why is this 3 and not 4?
reed1
2014/06/02 19:43:06
I am not hear to question the PDF world... though
|
| return srcRect.width() * 3 * srcRect.height(); |
| - case SkBitmap::kA8_Config: |
| + case kAlpha_8_SkColorType: |
|
robertphillips
2014/06/02 13:15:59
And why is this 1?
reed1
2014/06/02 19:43:06
no idea. -- good thing Hal now owns all PDF bugs :
|
| 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()), |
| @@ -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 |
|
scroggo
2014/06/02 13:35:07
Has this been fixed? It seems like this is still a
reed1
2014/06/02 18:41:33
We don't support A1 bitmaps for a long time now.
|
| - // major concern we will fix it later, so far it is NYI. |
| return false; |
| } |
| size_t pixelRefOffset = 0; |