From e26a8ad620945623bb418247073e578d14b62f87 Mon Sep 17 00:00:00 2001 From: msarett Date: Thu, 1 Sep 2016 17:47:46 -0700 Subject: [PATCH] Request legacy mode behavior from SkCodec in BitmapRegionDecoder Png assets look funny when we perform a correct, linear premultiply. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2302953002 Review-Url: https://codereview.chromium.org/2302953002 --- src/android/SkBitmapRegionCodec.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/android/SkBitmapRegionCodec.cpp b/src/android/SkBitmapRegionCodec.cpp index a335432b31..9c21484ec5 100644 --- a/src/android/SkBitmapRegionCodec.cpp +++ b/src/android/SkBitmapRegionCodec.cpp @@ -52,9 +52,12 @@ bool SkBitmapRegionCodec::decodeRegion(SkBitmap* bitmap, SkBRDAllocator* allocat // Create the image info for the decode SkColorType dstColorType = fCodec->computeOutputColorType(prefColorType); SkAlphaType dstAlphaType = fCodec->computeOutputAlphaType(requireUnpremul); - SkImageInfo decodeInfo = fCodec->getInfo().makeWH(scaledSize.width(), scaledSize.height()) - .makeColorType(dstColorType) - .makeAlphaType(dstAlphaType); + + // Enable legacy behavior to avoid any gamma correction. Android's assets are + // adjusted to expect a non-gamma correct premultiply. + sk_sp colorSpace = nullptr; + SkImageInfo decodeInfo = SkImageInfo::Make(scaledSize.width(), scaledSize.height(), + dstColorType, dstAlphaType, colorSpace); // Construct a color table for the decode if necessary SkAutoTUnref colorTable(nullptr);