diff options
Diffstat (limited to 'src/images/SkPngEncoder.cpp')
-rw-r--r-- | src/images/SkPngEncoder.cpp | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/src/images/SkPngEncoder.cpp b/src/images/SkPngEncoder.cpp index 7520b9044d..0ca2551735 100644 --- a/src/images/SkPngEncoder.cpp +++ b/src/images/SkPngEncoder.cpp @@ -55,7 +55,7 @@ public: bool setHeader(const SkImageInfo& srcInfo, const SkPngEncoder::Options& options); bool setColorSpace(const SkImageInfo& info); bool writeInfo(const SkImageInfo& srcInfo); - void chooseProc(const SkImageInfo& srcInfo, SkTransferFunctionBehavior unpremulBehavior); + void chooseProc(const SkImageInfo& srcInfo); png_structp pngPtr() { return fPngPtr; } png_infop infoPtr() { return fInfoPtr; } @@ -230,10 +230,7 @@ bool SkPngEncoderMgr::setHeader(const SkImageInfo& srcInfo, const SkPngEncoder:: return true; } -static transform_scanline_proc choose_proc(const SkImageInfo& info, - SkTransferFunctionBehavior unpremulBehavior) { - const bool isSRGBTransferFn = - (SkTransferFunctionBehavior::kRespect == unpremulBehavior) && info.gammaCloseToSRGB(); +static transform_scanline_proc choose_proc(const SkImageInfo& info) { switch (info.colorType()) { case kRGBA_8888_SkColorType: switch (info.alphaType()) { @@ -242,8 +239,7 @@ static transform_scanline_proc choose_proc(const SkImageInfo& info, case kUnpremul_SkAlphaType: return transform_scanline_memcpy; case kPremul_SkAlphaType: - return isSRGBTransferFn ? transform_scanline_srgbA : - transform_scanline_rgbA; + return transform_scanline_rgbA; default: SkASSERT(false); return nullptr; @@ -255,8 +251,7 @@ static transform_scanline_proc choose_proc(const SkImageInfo& info, case kUnpremul_SkAlphaType: return transform_scanline_BGRA; case kPremul_SkAlphaType: - return isSRGBTransferFn ? transform_scanline_sbgrA : - transform_scanline_bgrA; + return transform_scanline_bgrA; default: SkASSERT(false); return nullptr; @@ -369,9 +364,8 @@ bool SkPngEncoderMgr::writeInfo(const SkImageInfo& srcInfo) { return true; } -void SkPngEncoderMgr::chooseProc(const SkImageInfo& srcInfo, - SkTransferFunctionBehavior unpremulBehavior) { - fProc = choose_proc(srcInfo, unpremulBehavior); +void SkPngEncoderMgr::chooseProc(const SkImageInfo& srcInfo) { + fProc = choose_proc(srcInfo); } std::unique_ptr<SkEncoder> SkPngEncoder::Make(SkWStream* dst, const SkPixmap& src, @@ -397,7 +391,7 @@ std::unique_ptr<SkEncoder> SkPngEncoder::Make(SkWStream* dst, const SkPixmap& sr return nullptr; } - encoderMgr->chooseProc(src.info(), options.fUnpremulBehavior); + encoderMgr->chooseProc(src.info()); return std::unique_ptr<SkPngEncoder>(new SkPngEncoder(std::move(encoderMgr), src)); } |