diff options
author | Matt Sarett <msarett@google.com> | 2016-11-08 16:13:43 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-11-08 22:27:02 +0000 |
commit | 562e681e5c600e919c3b57201b85776c4789f5aa (patch) | |
tree | cd513930870236e8ebd3b6a16aadf0eebd79a4f8 /src/codec/SkGifCodec.cpp | |
parent | 1d3ab12b82e1fa16a0d6b6b9cc1c0290b45cbca9 (diff) |
Refactor RGBA/BGRA xform logic in SkCodecs
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4554
Change-Id: Ic9105a2806b915fc56b6810a80dd444561d0d959
Reviewed-on: https://skia-review.googlesource.com/4554
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
Diffstat (limited to 'src/codec/SkGifCodec.cpp')
-rw-r--r-- | src/codec/SkGifCodec.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/codec/SkGifCodec.cpp b/src/codec/SkGifCodec.cpp index e773ed71e9..7fc3c9805a 100644 --- a/src/codec/SkGifCodec.cpp +++ b/src/codec/SkGifCodec.cpp @@ -144,10 +144,12 @@ int SkGifCodec::onGetRepetitionCount() { return fReader->loopCount(); } +static const SkColorType kXformSrcColorType = kRGBA_8888_SkColorType; + void SkGifCodec::initializeColorTable(const SkImageInfo& dstInfo, size_t frameIndex) { SkColorType colorTableColorType = dstInfo.colorType(); if (this->colorXform()) { - colorTableColorType = kRGBA_8888_SkColorType; + colorTableColorType = kXformSrcColorType; } sk_sp<SkColorTable> currColorTable = fReader->getColorTable(colorTableColorType, frameIndex); @@ -158,10 +160,10 @@ void SkGifCodec::initializeColorTable(const SkImageInfo& dstInfo, size_t frameIn fCurrColorTable.reset(new SkColorTable(&color, 1)); } else if (this->colorXform() && !fXformOnDecode) { SkPMColor dstColors[256]; - SkColorSpaceXform::ColorFormat dstFormat = select_xform_format(dstInfo.colorType()); - SkColorSpaceXform::ColorFormat srcFormat = SkColorSpaceXform::kRGBA_8888_ColorFormat; - SkAlphaType xformAlphaType = select_xform_alpha(dstInfo.alphaType(), - this->getInfo().alphaType()); + const SkColorSpaceXform::ColorFormat dstFormat = select_xform_format(dstInfo.colorType()); + const SkColorSpaceXform::ColorFormat srcFormat = select_xform_format(kXformSrcColorType); + const SkAlphaType xformAlphaType = select_xform_alpha(dstInfo.alphaType(), + this->getInfo().alphaType()); SkAssertResult(this->colorXform()->apply(dstFormat, dstColors, srcFormat, currColorTable->readColors(), currColorTable->count(), xformAlphaType)); @@ -261,7 +263,7 @@ void SkGifCodec::initializeSwizzler(const SkImageInfo& dstInfo, size_t frameInde SkImageInfo swizzlerInfo = dstInfo; if (this->colorXform()) { - swizzlerInfo = swizzlerInfo.makeColorType(kRGBA_8888_SkColorType); + swizzlerInfo = swizzlerInfo.makeColorType(kXformSrcColorType); if (kPremul_SkAlphaType == dstInfo.alphaType()) { swizzlerInfo = swizzlerInfo.makeAlphaType(kUnpremul_SkAlphaType); } @@ -470,7 +472,7 @@ void SkGifCodec::applyXformRow(const SkImageInfo& dstInfo, void* dst, const uint fSwizzler->swizzle(fXformBuffer.get(), src); const SkColorSpaceXform::ColorFormat dstFormat = select_xform_format(dstInfo.colorType()); - const SkColorSpaceXform::ColorFormat srcFormat = SkColorSpaceXform::kRGBA_8888_ColorFormat; + const SkColorSpaceXform::ColorFormat srcFormat = select_xform_format(kXformSrcColorType); const SkAlphaType xformAlphaType = select_xform_alpha(dstInfo.alphaType(), this->getInfo().alphaType()); const int xformWidth = get_scaled_dimension(dstInfo.width(), fSwizzler->sampleX()); |