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: |
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()), |
@@ -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; |