aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/images/SkDecodingImageGenerator.cpp
diff options
context:
space:
mode:
authorGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-04-07 21:37:36 +0000
committerGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-04-07 21:37:36 +0000
commit1ae492f19bc3e1ddbe97b5be6380c82f9e6eacb8 (patch)
tree331941dae5b6cd02b76329e86c150be99b130bf3 /src/images/SkDecodingImageGenerator.cpp
parentfc9482933794fb46920abc67cc84923a273e3fe1 (diff)
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
Diffstat (limited to 'src/images/SkDecodingImageGenerator.cpp')
-rw-r--r--src/images/SkDecodingImageGenerator.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/images/SkDecodingImageGenerator.cpp b/src/images/SkDecodingImageGenerator.cpp
index 016362f43c..5b842abf5f 100644
--- a/src/images/SkDecodingImageGenerator.cpp
+++ b/src/images/SkDecodingImageGenerator.cpp
@@ -175,6 +175,8 @@ bool DecodingImageGenerator::getPixels(const SkImageInfo& info,
}
decoder->setDitherImage(fDitherImage);
decoder->setSampleSize(fSampleSize);
+ decoder->setRequireUnpremultipliedColors(
+ info.fAlphaType == kUnpremul_SkAlphaType);
SkBitmap bitmap;
TargetAllocator allocator(fInfo, pixels, rowBytes);
@@ -224,6 +226,7 @@ SkImageGenerator* CreateDecodingImageGenerator(
}
SkBitmap bitmap;
decoder->setSampleSize(opts.fSampleSize);
+ decoder->setRequireUnpremultipliedColors(opts.fRequireUnpremul);
if (!decoder->decode(stream, &bitmap,
SkImageDecoder::kDecodeBounds_Mode)) {
return NULL;
@@ -248,6 +251,10 @@ SkImageGenerator* CreateDecodingImageGenerator(
}
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));