Add option to SkDecodingImageGenerator to require unpremul.
Android needs to be able to set unpremul for purgeable
pixelRefs.
Once Android switches to the new interface, we can delete SkImageRef.
Bug=skia:2389
R=reed@google.com, halcanary@google.com
Author: scroggo@google.com
Review URL: https://codereview.chromium.org/223903007
git-svn-id: http://skia.googlecode.com/svn/trunk@14084 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/images/SkDecodingImageGenerator.cpp b/src/images/SkDecodingImageGenerator.cpp
index 016362f..5b842ab 100644
--- a/src/images/SkDecodingImageGenerator.cpp
+++ b/src/images/SkDecodingImageGenerator.cpp
@@ -175,6 +175,8 @@
}
decoder->setDitherImage(fDitherImage);
decoder->setSampleSize(fSampleSize);
+ decoder->setRequireUnpremultipliedColors(
+ info.fAlphaType == kUnpremul_SkAlphaType);
SkBitmap bitmap;
TargetAllocator allocator(fInfo, pixels, rowBytes);
@@ -224,6 +226,7 @@
}
SkBitmap bitmap;
decoder->setSampleSize(opts.fSampleSize);
+ decoder->setRequireUnpremultipliedColors(opts.fRequireUnpremul);
if (!decoder->decode(stream, &bitmap,
SkImageDecoder::kDecodeBounds_Mode)) {
return NULL;
@@ -248,6 +251,10 @@
}
info.fColorType = opts.fRequestedColorType;
}
+
+ if (opts.fRequireUnpremul && info.fAlphaType != kOpaque_SkAlphaType) {
+ info.fAlphaType = kUnpremul_SkAlphaType;
+ }
return SkNEW_ARGS(DecodingImageGenerator,
(data, autoStream.detach(), info,
opts.fSampleSize, opts.fDitherImage));