From 577967c155fe3e2ce8251b053da60bd0d8fb32f4 Mon Sep 17 00:00:00 2001 From: msarett Date: Fri, 3 Jun 2016 08:23:40 -0700 Subject: Fix uses of SkImageInfo in BRD to preserve color space info BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2035483005 Review-Url: https://codereview.chromium.org/2035483005 --- src/android/SkBitmapRegionCodec.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'src/android') diff --git a/src/android/SkBitmapRegionCodec.cpp b/src/android/SkBitmapRegionCodec.cpp index b9c82d941a..a335432b31 100644 --- a/src/android/SkBitmapRegionCodec.cpp +++ b/src/android/SkBitmapRegionCodec.cpp @@ -52,8 +52,9 @@ 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 = SkImageInfo::Make(scaledSize.width(), scaledSize.height(), - dstColorType, dstAlphaType); + SkImageInfo decodeInfo = fCodec->getInfo().makeWH(scaledSize.width(), scaledSize.height()) + .makeColorType(dstColorType) + .makeAlphaType(dstAlphaType); // Construct a color table for the decode if necessary SkAutoTUnref colorTable(nullptr); @@ -85,7 +86,7 @@ bool SkBitmapRegionCodec::decodeRegion(SkBitmap* bitmap, SkBRDAllocator* allocat // used kAlpha8 for grayscale images (before kGray8 existed). While // the codec recognizes kGray8, we need to decode into a kAlpha8 // bitmap in order to avoid a behavior change. - outInfo = SkImageInfo::MakeA8(scaledOutWidth, scaledOutHeight); + outInfo = outInfo.makeColorType(kAlpha_8_SkColorType).makeAlphaType(kPremul_SkAlphaType); } bitmap->setInfo(outInfo); if (!bitmap->tryAllocPixels(allocator, colorTable.get())) { @@ -131,8 +132,5 @@ bool SkBitmapRegionCodec::decodeRegion(SkBitmap* bitmap, SkBRDAllocator* allocat } bool SkBitmapRegionCodec::conversionSupported(SkColorType colorType) { - // FIXME: Call virtual function when it lands. - SkImageInfo info = SkImageInfo::Make(0, 0, colorType, fCodec->getInfo().alphaType(), - fCodec->getInfo().profileType()); - return conversion_possible(info, fCodec->getInfo()); + return conversion_possible(fCodec->getInfo().makeColorType(colorType), fCodec->getInfo()); } -- cgit v1.2.3