diff options
author | msarett <msarett@google.com> | 2016-04-22 13:18:37 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-04-22 13:18:37 -0700 |
commit | a45a668fa57eb968e24f379eceb2e56324e2cca2 (patch) | |
tree | fcf1d7e6948181657ca7bb7f55ef6248bf9e519f /src/codec/SkBmpStandardCodec.cpp | |
parent | a3b3b238f507a6ec7f43febc6bf0bb17e04e770f (diff) |
Use SkEncodedInfo in place of SkSwizzler::SrcConfig
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1911613002
Review URL: https://codereview.chromium.org/1911613002
Diffstat (limited to 'src/codec/SkBmpStandardCodec.cpp')
-rw-r--r-- | src/codec/SkBmpStandardCodec.cpp | 36 |
1 files changed, 8 insertions, 28 deletions
diff --git a/src/codec/SkBmpStandardCodec.cpp b/src/codec/SkBmpStandardCodec.cpp index a509c75b6d..b2d8fc9735 100644 --- a/src/codec/SkBmpStandardCodec.cpp +++ b/src/codec/SkBmpStandardCodec.cpp @@ -153,40 +153,20 @@ SkCodec::Result SkBmpStandardCodec::onGetPixels(const SkImageInfo& dstInfo, } void SkBmpStandardCodec::initializeSwizzler(const SkImageInfo& dstInfo, const Options& opts) { - // Get swizzler configuration - SkSwizzler::SrcConfig config = SkSwizzler::kUnknown; - switch (this->bitsPerPixel()) { - case 1: - config = SkSwizzler::kIndex1; - break; - case 2: - config = SkSwizzler::kIndex2; - break; - case 4: - config = SkSwizzler::kIndex4; - break; - case 8: - config = SkSwizzler::kIndex; - break; - case 24: - config = SkSwizzler::kBGR; - break; - case 32: - if (fIsOpaque) { - config = SkSwizzler::kBGRX; - } else { - config = SkSwizzler::kBGRA; - } - break; - default: - SkASSERT(false); + // In the case of paletted ico-in-bmps, we will report BGRA to the client, + // since we may be required to apply an alpha mask after the decode. But + // the swizzler needs to know the actual format of the bmp. + SkEncodedInfo swizzlerInfo = this->getEncodedInfo(); + if (fInIco && this->bitsPerPixel() <= 8) { + swizzlerInfo = SkEncodedInfo::Make(SkEncodedInfo::kPalette_Color, swizzlerInfo.alpha(), + this->bitsPerPixel()); } // Get a pointer to the color table if it exists const SkPMColor* colorPtr = get_color_ptr(fColorTable.get()); // Create swizzler - fSwizzler.reset(SkSwizzler::CreateSwizzler(config, colorPtr, dstInfo, opts)); + fSwizzler.reset(SkSwizzler::CreateSwizzler(swizzlerInfo, colorPtr, dstInfo, opts)); SkASSERT(fSwizzler); } |