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); |