aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/images/SkImageDecoder_libwebp.cpp
diff options
context:
space:
mode:
authorGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-04-24 18:55:13 +0000
committerGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-04-24 18:55:13 +0000
commit915b972a818d0279eb926af38ba6952daa17a63e (patch)
tree5db6eeacea66b4738e77d7a9fc414750a9087810 /src/images/SkImageDecoder_libwebp.cpp
parent1f64a21df960293a9d6a9b50c4575d0a9f0bffdc (diff)
Reland "Properly set alpha type in webp decode."
Also use the newer setConfig function. Add a test to confirm that we set the alpha type properly. Add some images with alpha for testing. (These images are also beneficial for the compare_unpremul test, which was previously not meaningful on 100% opaque images.) All of the added images are in the public domain. They were taken from https://developers.google.com/speed/webp/gallery2: yellow_rose: "Free Stock Photo in High Resolution - Yellow Rose 3 - Flowers" Image Author: Jon Sullivan This file is in the public domain. http://www.public-domain-photos.com/free-stock-photos-4/flowers/yellow-rose-3.jpg baby_tux: "baby tux for my user page" Image Author: Fizyplankton This file is in the public domain. http://www.minecraftwiki.net/images/8/85/Fizyplankton.png NOTRY=true TBR=halcanary@google.com BUG=skia:2388 Author: scroggo@google.com Review URL: https://codereview.chromium.org/252423008 git-svn-id: http://skia.googlecode.com/svn/trunk@14360 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/images/SkImageDecoder_libwebp.cpp')
-rw-r--r--src/images/SkImageDecoder_libwebp.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/images/SkImageDecoder_libwebp.cpp b/src/images/SkImageDecoder_libwebp.cpp
index 5174806653..4e23e50f57 100644
--- a/src/images/SkImageDecoder_libwebp.cpp
+++ b/src/images/SkImageDecoder_libwebp.cpp
@@ -298,8 +298,20 @@ bool SkWEBPImageDecoder::setDecodeConfig(SkBitmap* decodedBitmap,
return false;
}
- return decodedBitmap->setConfig(config, width, height, 0,
- fHasAlpha ? kPremul_SkAlphaType : kOpaque_SkAlphaType);
+ SkImageInfo info;
+ info.fWidth = width;
+ info.fHeight = height;
+ info.fColorType = SkBitmapConfigToColorType(config);
+ if (SkToBool(fHasAlpha)) {
+ if (this->getRequireUnpremultipliedColors()) {
+ info.fAlphaType = kUnpremul_SkAlphaType;
+ } else {
+ info.fAlphaType = kPremul_SkAlphaType;
+ }
+ } else {
+ info.fAlphaType = kOpaque_SkAlphaType;
+ }
+ return decodedBitmap->setConfig(info);
}
bool SkWEBPImageDecoder::onBuildTileIndex(SkStreamRewindable* stream,