Chromium Code Reviews| Index: src/images/SkImageDecoder_libpng.cpp |
| diff --git a/src/images/SkImageDecoder_libpng.cpp b/src/images/SkImageDecoder_libpng.cpp |
| index 5fc9350b519e23d691bb368aac9cef8d3a0d726b..e8150464c21787c6c606034beafeb8e26e50e021 100644 |
| --- a/src/images/SkImageDecoder_libpng.cpp |
| +++ b/src/images/SkImageDecoder_libpng.cpp |
| @@ -466,7 +466,16 @@ bool SkPNGImageDecoder::onDecode(SkStream* sk_stream, SkBitmap* decodedBitmap, |
| if (SkBitmap::kA8_Config == decodedBitmap->config()) { |
| reallyHasAlpha = true; |
| } |
| - decodedBitmap->setIsOpaque(!reallyHasAlpha); |
| + |
| + SkAlphaType alphaType = kOpaque_SkAlphaType; |
| + if (reallyHasAlpha) { |
| + if (this->getRequireUnpremultipliedColors()) { |
| + alphaType = kUnpremul_SkAlphaType; |
| + } else { |
| + alphaType = kPremul_SkAlphaType; |
| + } |
| + } |
| + decodedBitmap->setAlphaType(alphaType); |
| return true; |
| } |
| @@ -939,7 +948,7 @@ bool SkPNGImageDecoder::onDecodeSubset(SkBitmap* bm, const SkIRect& region) { |
| if (SkBitmap::kA8_Config == decodedBitmap.config()) { |
| reallyHasAlpha = true; |
| } |
| - decodedBitmap.setIsOpaque(!reallyHasAlpha); |
| + decodedBitmap.setAlphaType(reallyHasAlpha ? kPremul_SkAlphaType : kOpaque_SkAlphaType); |
|
scroggo
2013/10/18 20:04:34
Needs to check unpremul
reed1
2013/10/18 21:37:35
Done.
|
| if (swapOnly) { |
| bm->swap(decodedBitmap); |