diff options
author | 2014-04-07 21:37:36 +0000 | |
---|---|---|
committer | 2014-04-07 21:37:36 +0000 | |
commit | 1ae492f19bc3e1ddbe97b5be6380c82f9e6eacb8 (patch) | |
tree | 331941dae5b6cd02b76329e86c150be99b130bf3 /src/images/SkDecodingImageGenerator.cpp | |
parent | fc9482933794fb46920abc67cc84923a273e3fe1 (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.cpp | 7 |
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)); |