diff options
-rw-r--r-- | src/codec/SkPngCodec.cpp | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/src/codec/SkPngCodec.cpp b/src/codec/SkPngCodec.cpp index 288dee6ef5..f97a52fc11 100644 --- a/src/codec/SkPngCodec.cpp +++ b/src/codec/SkPngCodec.cpp @@ -933,22 +933,39 @@ void AutoCleanPng::infoCallback(size_t idatLength) { } } - if (encodedColorType == PNG_COLOR_TYPE_GRAY_ALPHA) { - png_color_8p sigBits; - if (png_get_sBIT(fPng_ptr, fInfo_ptr, &sigBits)) { - if (8 == sigBits->alpha && kGraySigBit_GrayAlphaIsJustAlpha == sigBits->gray) { - color = SkEncodedInfo::kXAlpha_Color; + switch (encodedColorType) { + case PNG_COLOR_TYPE_GRAY_ALPHA:{ + png_color_8p sigBits; + if (png_get_sBIT(fPng_ptr, fInfo_ptr, &sigBits)) { + if (8 == sigBits->alpha && kGraySigBit_GrayAlphaIsJustAlpha == sigBits->gray) { + color = SkEncodedInfo::kXAlpha_Color; + } } + break; } - } else if (SkEncodedInfo::kOpaque_Alpha == alpha) { + case PNG_COLOR_TYPE_RGB:{ + png_color_8p sigBits; + if (png_get_sBIT(fPng_ptr, fInfo_ptr, &sigBits)) { + if (5 == sigBits->red && 6 == sigBits->green && 5 == sigBits->blue) { + // Recommend a decode to 565 if the sBIT indicates 565. + color = SkEncodedInfo::k565_Color; + } + } + break; + } + } + +#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK + if (encodedColorType != PNG_COLOR_TYPE_GRAY_ALPHA + && SkEncodedInfo::kOpaque_Alpha == alpha) { png_color_8p sigBits; if (png_get_sBIT(fPng_ptr, fInfo_ptr, &sigBits)) { if (5 == sigBits->red && 6 == sigBits->green && 5 == sigBits->blue) { - // Recommend a decode to 565 if the sBIT indicates 565. - color = SkEncodedInfo::k565_Color; + SkAndroidFrameworkUtils::SafetyNetLog("190188264"); } } } +#endif // SK_BUILD_FOR_ANDROID_FRAMEWORK SkEncodedInfo encodedInfo = SkEncodedInfo::Make(origWidth, origHeight, color, alpha, bitDepth, std::move(profile)); |