aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--dm/DMSrcSink.cpp4
-rw-r--r--src/codec/SkAndroidCodec.cpp32
2 files changed, 7 insertions, 29 deletions
diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp
index 4ac7e80626..1ffffd3bf0 100644
--- a/dm/DMSrcSink.cpp
+++ b/dm/DMSrcSink.cpp
@@ -173,6 +173,9 @@ Error BRDSrc::draw(SkCanvas* canvas) const {
return "Cannot decode (full) region.";
}
alpha8_to_gray8(&bitmap);
+
+ // Verify that we no longer support kIndex8 from this API.
+ SkASSERT(kIndex_8_SkColorType != bitmap.colorType());
canvas->drawBitmap(bitmap, 0, 0);
return "";
}
@@ -229,6 +232,7 @@ Error BRDSrc::draw(SkCanvas* canvas) const {
}
alpha8_to_gray8(&bitmap);
+ SkASSERT(kIndex_8_SkColorType != bitmap.colorType());
canvas->drawBitmapRect(bitmap,
SkRect::MakeXYWH((SkScalar) scaledBorder, (SkScalar) scaledBorder,
(SkScalar) (subsetWidth / fSampleSize),
diff --git a/src/codec/SkAndroidCodec.cpp b/src/codec/SkAndroidCodec.cpp
index b30dd52e4c..6c9152b08a 100644
--- a/src/codec/SkAndroidCodec.cpp
+++ b/src/codec/SkAndroidCodec.cpp
@@ -105,39 +105,19 @@ 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 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;
- }
-
bool highPrecision = fCodec->getEncodedInfo().bitsPerComponent() > 8;
switch (requestedColorType) {
case kARGB_4444_SkColorType:
return kN32_SkColorType;
case kN32_SkColorType:
- // F16 is the Android default for high precision images.
- return highPrecision ? kRGBA_F16_SkColorType : kN32_SkColorType;
case kIndex_8_SkColorType:
- if (kIndex_8_SkColorType == suggestedColorType) {
- return kIndex_8_SkColorType;
- }
break;
case kAlpha_8_SkColorType:
// Fall through to kGray_8. Before kGray_8_SkColorType existed,
// we allowed clients to request kAlpha_8 when they wanted a
// grayscale decode.
case kGray_8_SkColorType:
- if (kGray_8_SkColorType == suggestedColorType) {
+ if (kGray_8_SkColorType == this->getInfo().colorType()) {
return kGray_8_SkColorType;
}
break;
@@ -152,14 +132,8 @@ SkColorType SkAndroidCodec::computeOutputColorType(SkColorType requestedColorTyp
break;
}
- // Android has limited support for kGray_8 (using kAlpha_8). We will not
- // use kGray_8 for Android unless they specifically ask for it.
- if (kGray_8_SkColorType == suggestedColorType) {
- return kN32_SkColorType;
- }
-
- // |suggestedColorType| may be kN32_SkColorType or kIndex_8_SkColorType.
- return highPrecision ? kRGBA_F16_SkColorType : suggestedColorType;
+ // F16 is the Android default for high precision images.
+ return highPrecision ? kRGBA_F16_SkColorType : kN32_SkColorType;
}
SkAlphaType SkAndroidCodec::computeOutputAlphaType(bool requestedUnpremul) {