diff options
author | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-04-24 18:55:13 +0000 |
---|---|---|
committer | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-04-24 18:55:13 +0000 |
commit | 915b972a818d0279eb926af38ba6952daa17a63e (patch) | |
tree | 5db6eeacea66b4738e77d7a9fc414750a9087810 /src/images | |
parent | 1f64a21df960293a9d6a9b50c4575d0a9f0bffdc (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')
-rw-r--r-- | src/images/SkImageDecoder_libwebp.cpp | 16 |
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, |