Revert "Do not return Index8 from SkAndroidCodec::computeOutputColorType"
This reverts commit b6f4767294
.
Reason for revert: This breaks CTS tests in Android. Doh.
Original change's description:
> Do not return Index8 from SkAndroidCodec::computeOutputColorType
>
> Given that this is the only known use of Index8 color type,
> this is essentially an experimental delete.
>
> Bug: skia:6620
> Change-Id: Ib363d237e0217f6e7f461a62e54d32892c428095
> Reviewed-on: https://skia-review.googlesource.com/10586
> Reviewed-by: Leon Scroggins <scroggo@google.com>
> Commit-Queue: Matt Sarett <msarett@google.com>
TBR=msarett@google.com,scroggo@google.com,reed@google.com
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:6620
Change-Id: I2b44c695b8b95659520e9532901f636f56e01e2a
Reviewed-on: https://skia-review.googlesource.com/19084
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
This commit is contained in:
parent
7c14d274ee
commit
81c83a7db4
@ -173,9 +173,6 @@ 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 "";
|
||||
}
|
||||
@ -232,7 +229,6 @@ 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),
|
||||
|
@ -105,19 +105,39 @@ 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 == this->getInfo().colorType()) {
|
||||
if (kGray_8_SkColorType == suggestedColorType) {
|
||||
return kGray_8_SkColorType;
|
||||
}
|
||||
break;
|
||||
@ -132,8 +152,14 @@ SkColorType SkAndroidCodec::computeOutputColorType(SkColorType requestedColorTyp
|
||||
break;
|
||||
}
|
||||
|
||||
// F16 is the Android default for high precision images.
|
||||
return highPrecision ? kRGBA_F16_SkColorType : kN32_SkColorType;
|
||||
// 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;
|
||||
}
|
||||
|
||||
SkAlphaType SkAndroidCodec::computeOutputAlphaType(bool requestedUnpremul) {
|
||||
|
Loading…
Reference in New Issue
Block a user