diff options
author | Matt Sarett <msarett@google.com> | 2017-06-12 16:17:30 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-06-12 20:38:49 +0000 |
commit | 1950e0a868774330330555a9a368992218f42240 (patch) | |
tree | 806ff1a283b52d027871c842e2da8f5df4ca2eb7 /src/images/SkPngEncoder.cpp | |
parent | ca50b874039e326858e38bc67457369532a9c4dd (diff) |
Always encode images with sRGB encoded pixels
Bug: skia:
Change-Id: Icb25bc21a30e88f21df5b0e267d5a3a05535e44a
Reviewed-on: https://skia-review.googlesource.com/19544
Commit-Queue: Matt Sarett <msarett@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'src/images/SkPngEncoder.cpp')
-rw-r--r-- | src/images/SkPngEncoder.cpp | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/src/images/SkPngEncoder.cpp b/src/images/SkPngEncoder.cpp index cc925207b1..b0c2b23dfb 100644 --- a/src/images/SkPngEncoder.cpp +++ b/src/images/SkPngEncoder.cpp @@ -53,7 +53,7 @@ public: bool setHeader(const SkImageInfo& srcInfo, const SkPngEncoder::Options& options); bool setPalette(const SkImageInfo& srcInfo, SkColorTable* colorTable, SkTransferFunctionBehavior); - bool setColorSpace(SkColorSpace* colorSpace); + bool setColorSpace(const SkImageInfo& info); bool writeInfo(const SkImageInfo& srcInfo); void chooseProc(const SkImageInfo& srcInfo, SkTransferFunctionBehavior unpremulBehavior); @@ -355,8 +355,8 @@ bool SkPngEncoderMgr::setPalette(const SkImageInfo& srcInfo, SkColorTable* color return true; } -static void set_icc(png_structp png_ptr, png_infop info_ptr, const SkColorSpace& colorSpace) { - sk_sp<SkData> icc = icc_from_color_space(colorSpace); +static void set_icc(png_structp png_ptr, png_infop info_ptr, const SkImageInfo& info) { + sk_sp<SkData> icc = icc_from_color_space(info); if (!icc) { return; } @@ -372,17 +372,15 @@ static void set_icc(png_structp png_ptr, png_infop info_ptr, const SkColorSpace& png_set_iCCP(png_ptr, info_ptr, name, 0, iccPtr, icc->size()); } -bool SkPngEncoderMgr::setColorSpace(SkColorSpace* colorSpace) { +bool SkPngEncoderMgr::setColorSpace(const SkImageInfo& info) { if (setjmp(png_jmpbuf(fPngPtr))) { return false; } - if (colorSpace) { - if (colorSpace->isSRGB()) { - png_set_sRGB(fPngPtr, fInfoPtr, PNG_sRGB_INTENT_PERCEPTUAL); - } else { - set_icc(fPngPtr, fInfoPtr, *colorSpace); - } + if (info.colorSpace() && info.colorSpace()->isSRGB()) { + png_set_sRGB(fPngPtr, fInfoPtr, PNG_sRGB_INTENT_PERCEPTUAL); + } else { + set_icc(fPngPtr, fInfoPtr, info); } return true; @@ -429,7 +427,7 @@ std::unique_ptr<SkEncoder> SkPngEncoder::Make(SkWStream* dst, const SkPixmap& sr return nullptr; } - if (!encoderMgr->setColorSpace(src.colorSpace())) { + if (!encoderMgr->setColorSpace(src.info())) { return nullptr; } |