Remove SkCodec::fSrcInfo
This object is now redundant with fEncodedInfo. It holds an
SkColorSpace, which is never used now that SkCodec uses skcms.
SkCodec::getInfo() no longer returns a reference, but creates an
SkImageInfo from the SkEncodedInfo the same way fSrcInfo was
previously created.
Add SkCodec::bounds() and ::dimensions() to replace calling these
methods on getInfo().
Remove srcInfo from SkMaskSwizzler::Create, which just wants to know
whether the src is opaque.
Remove the srcColorType from conversionSupported. Only the base class
version used it. Make it look at fEncodedInfo.color() instead.
Bug: skia:6839
Bug: chromium:887372
Change-Id: I2c0583cae76121211c1a6b49979972fa86daf077
Reviewed-on: https://skia-review.googlesource.com/c/157563
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/src/codec/SkCodec.cpp b/src/codec/SkCodec.cpp
index 929cc6e..73a6a29 100644
--- a/src/codec/SkCodec.cpp
+++ b/src/codec/SkCodec.cpp
@@ -128,7 +128,6 @@
SkCodec::SkCodec(SkEncodedInfo&& info, XformFormat srcFormat, std::unique_ptr<SkStream> stream,
SkEncodedOrigin origin)
: fEncodedInfo(std::move(info))
- , fSrcInfo(fEncodedInfo.makeImageInfo())
, fSrcXformFormat(srcFormat)
, fStream(std::move(stream))
, fNeedsRewind(false)
@@ -141,8 +140,7 @@
SkCodec::~SkCodec() {}
-bool SkCodec::conversionSupported(const SkImageInfo& dst, SkColorType srcColor,
- bool srcIsOpaque, bool needsColorXform) {
+bool SkCodec::conversionSupported(const SkImageInfo& dst, bool srcIsOpaque, bool needsColorXform) {
if (!valid_alpha(dst.alphaType(), srcIsOpaque)) {
return false;
}
@@ -156,11 +154,11 @@
case kRGB_565_SkColorType:
return srcIsOpaque;
case kGray_8_SkColorType:
- return kGray_8_SkColorType == srcColor && srcIsOpaque;
+ return SkEncodedInfo::kGray_Color == fEncodedInfo.color() && srcIsOpaque;
case kAlpha_8_SkColorType:
// conceptually we can convert anything into alpha_8, but we haven't actually coded
- // all of those other conversions yet, so only return true for the case we have codec.
- return fSrcInfo.colorType() == kAlpha_8_SkColorType;;
+ // all of those other conversions yet.
+ return SkEncodedInfo::kXAlpha_Color == fEncodedInfo.color();
default:
return false;
}
@@ -268,7 +266,7 @@
// need to clear, since it must be covered by the desired frame.
if (options.fPriorFrame == requiredFrame) {
SkIRect prevRect = prevFrame->frameRect();
- if (!zero_rect(info, pixels, rowBytes, fSrcInfo.dimensions(), prevRect)) {
+ if (!zero_rect(info, pixels, rowBytes, this->dimensions(), prevRect)) {
return kInternalError;
}
}
@@ -288,7 +286,7 @@
const auto disposalMethod = prevFrame->getDisposalMethod();
if (disposalMethod == SkCodecAnimation::DisposalMethod::kRestoreBGColor) {
auto prevRect = prevFrame->frameRect();
- if (!zero_rect(info, pixels, rowBytes, fSrcInfo.dimensions(), prevRect)) {
+ if (!zero_rect(info, pixels, rowBytes, this->dimensions(), prevRect)) {
return kInternalError;
}
}
@@ -535,7 +533,7 @@
}
int SkCodec::outputScanline(int inputScanline) const {
- SkASSERT(0 <= inputScanline && inputScanline < this->getInfo().height());
+ SkASSERT(0 <= inputScanline && inputScanline < fEncodedInfo.height());
return this->onOutputScanline(inputScanline);
}
@@ -544,7 +542,7 @@
case kTopDown_SkScanlineOrder:
return inputScanline;
case kBottomUp_SkScanlineOrder:
- return this->getInfo().height() - inputScanline - 1;
+ return fEncodedInfo.height() - inputScanline - 1;
default:
// This case indicates an interlaced gif and is implemented by SkGifCodec.
SkASSERT(false);
@@ -642,7 +640,7 @@
}
}
- if (!this->conversionSupported(dstInfo, fSrcInfo.colorType(), srcIsOpaque, needsColorXform)) {
+ if (!this->conversionSupported(dstInfo, srcIsOpaque, needsColorXform)) {
return false;
}