Chromium Code Reviews| 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()); |