aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/codec/SkAndroidCodec.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/codec/SkAndroidCodec.cpp b/src/codec/SkAndroidCodec.cpp
index a3daeae72b..26b9638c96 100644
--- a/src/codec/SkAndroidCodec.cpp
+++ b/src/codec/SkAndroidCodec.cpp
@@ -63,13 +63,20 @@ SkAndroidCodec* SkAndroidCodec::NewFromData(sk_sp<SkData> data, SkPngChunkReader
SkColorType SkAndroidCodec::computeOutputColorType(SkColorType requestedColorType) {
// The legacy GIF and WBMP decoders always decode to kIndex_8_SkColorType.
- // We will maintain this behavior.
- SkEncodedImageFormat format = (SkEncodedImageFormat)this->getEncodedFormat();
- if (SkEncodedImageFormat::kGIF == format || SkEncodedImageFormat::kWBMP == format) {
- return kIndex_8_SkColorType;
+ // We will maintain this behavior when we can.
+ const SkColorType suggestedColorType = this->getInfo().colorType();
+ switch ((SkEncodedImageFormat) this->getEncodedFormat()) {
+ case SkEncodedImageFormat::kGIF:
+ if (suggestedColorType == kIndex_8_SkColorType) {
+ return kIndex_8_SkColorType;
+ }
+ break;
+ case SkEncodedImageFormat::kWBMP:
+ return kIndex_8_SkColorType;
+ default:
+ break;
}
- SkColorType suggestedColorType = this->getInfo().colorType();
bool highPrecision = fCodec->getEncodedInfo().bitsPerComponent() > 8;
switch (requestedColorType) {
case kARGB_4444_SkColorType: