Index: src/codec/SkPngCodec.cpp |
diff --git a/src/codec/SkPngCodec.cpp b/src/codec/SkPngCodec.cpp |
index 0002bc5a31b922eb1e869bc20f9eb6c2440f7886..d6366d3b396417f3026ec3e34b154b0d252e4113 100644 |
--- a/src/codec/SkPngCodec.cpp |
+++ b/src/codec/SkPngCodec.cpp |
@@ -149,11 +149,12 @@ bool SkPngCodec::createColorTable(const SkImageInfo& dstInfo, int* ctableCount) |
// If we are not decoding to F16, we can color xform now and store the results |
// in the color table. |
if (fColorXform && kRGBA_F16_SkColorType != dstInfo.colorType()) { |
- SkColorType xformColorType = is_rgba(dstInfo.colorType()) ? |
- kRGBA_8888_SkColorType : kBGRA_8888_SkColorType; |
- SkAlphaType xformAlphaType = select_alpha_xform(dstInfo.alphaType(), |
+ SkColorSpaceXform::ColorFormat xformColorFormat = is_rgba(dstInfo.colorType()) ? |
+ SkColorSpaceXform::kRGBA_8888_ColorFormat : |
+ SkColorSpaceXform::kBGRA_8888_ColorFormat; |
+ SkAlphaType xformAlphaType = select_xform_alpha(dstInfo.alphaType(), |
this->getInfo().alphaType()); |
- fColorXform->apply(colorTable, colorTable, numColors, xformColorType, xformAlphaType); |
+ fColorXform->apply(colorTable, colorTable, numColors, xformColorFormat, xformAlphaType); |
} |
// Pad the color table with the last color in the table (or black) in the case that |
@@ -380,16 +381,17 @@ void SkPngCodec::allocateStorage(const SkImageInfo& dstInfo) { |
void SkPngCodec::applyXformRow(void* dst, const void* src, SkColorType colorType, |
SkAlphaType alphaType, int width) { |
+ SkColorSpaceXform::ColorFormat colorFormat = select_xform_format(colorType); |
msarett
2016/09/14 20:20:35
Leon, ideally your PNG change can land first? I t
scroggo
2016/09/14 20:35:01
That depends. How much of a hurry are you to get t
msarett
2016/09/14 21:09:43
I'll probably want to write some stuff based on th
|
switch (fXformMode) { |
case kSwizzleOnly_XformMode: |
fSwizzler->swizzle(dst, (const uint8_t*) src); |
break; |
case kColorOnly_XformMode: |
- fColorXform->apply(dst, (const uint32_t*) src, width, colorType, alphaType); |
+ fColorXform->apply(dst, (const uint32_t*) src, width, colorFormat, alphaType); |
break; |
case kSwizzleColor_XformMode: |
fSwizzler->swizzle(fColorXformSrcRow, (const uint8_t*) src); |
- fColorXform->apply(dst, fColorXformSrcRow, width, colorType, alphaType); |
+ fColorXform->apply(dst, fColorXformSrcRow, width, colorFormat, alphaType); |
break; |
} |
} |
@@ -425,7 +427,7 @@ public: |
return y; |
} |
- SkAlphaType xformAlphaType = select_alpha_xform(dstInfo.alphaType(), |
+ SkAlphaType xformAlphaType = select_xform_alpha(dstInfo.alphaType(), |
this->getInfo().alphaType()); |
int width = fSwizzler ? fSwizzler->swizzleWidth() : dstInfo.width(); |
@@ -511,7 +513,7 @@ public: |
} |
} |
- SkAlphaType xformAlphaType = select_alpha_xform(dstInfo.alphaType(), |
+ SkAlphaType xformAlphaType = select_xform_alpha(dstInfo.alphaType(), |
this->getInfo().alphaType()); |
int width = fSwizzler ? fSwizzler->swizzleWidth() : dstInfo.width(); |
srcRow = storage.get(); |
@@ -902,7 +904,7 @@ SkCodec::Result SkPngCodec::onGetPixels(const SkImageInfo& dstInfo, void* dst, |
uint64_t SkPngCodec::onGetFillValue(const SkImageInfo& dstInfo) const { |
const SkPMColor* colorPtr = get_color_ptr(fColorTable.get()); |
if (colorPtr) { |
- SkAlphaType alphaType = select_alpha_xform(dstInfo.alphaType(), |
+ SkAlphaType alphaType = select_xform_alpha(dstInfo.alphaType(), |
this->getInfo().alphaType()); |
return get_color_table_fill_value(dstInfo.colorType(), alphaType, colorPtr, 0, |
fColorXform.get()); |