diff options
author | Matt Sarett <msarett@google.com> | 2017-03-21 10:06:45 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-03-21 14:52:28 +0000 |
commit | 687b6567e31a737ecdff9e71dd7182b3021a40d4 (patch) | |
tree | 98473301d8718ca45cfd83c34c24bcc5f373dba5 /src/images | |
parent | 291547d4e76ba7d3e9caace8deb7761632d8be06 (diff) |
Compatible use of png_set_iCCP
BUG=skia:
Change-Id: Ie37b92fd5e0d2bc92ec7f2bf3e6f56d061bc30a2
Reviewed-on: https://skia-review.googlesource.com/9960
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Ben Wagner <benjaminwagner@google.com>
Diffstat (limited to 'src/images')
-rw-r--r-- | src/images/SkPNGImageEncoder.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/images/SkPNGImageEncoder.cpp b/src/images/SkPNGImageEncoder.cpp index 69a7b0780a..dd4602ad02 100644 --- a/src/images/SkPNGImageEncoder.cpp +++ b/src/images/SkPNGImageEncoder.cpp @@ -39,6 +39,17 @@ static void sk_write_fn(png_structp png_ptr, png_bytep data, png_size_t len) { } } +static void set_icc(png_structp png_ptr, png_infop info_ptr, const SkColorSpaceTransferFn& fn, + const SkMatrix44& toXYZD50) { + sk_sp<SkData> icc = SkICC::WriteToICC(fn, toXYZD50); +#if PNG_LIBPNG_VER_MAJOR > 1 || (PNG_LIBPNG_VER_MAJOR == 1 && PNG_LIBPNG_VER_MINOR >= 5) + png_const_bytep iccPtr = icc->bytes(); +#else + png_charp iccPtr = (png_charp) icc->writable_data(); +#endif + png_set_iCCP(png_ptr, info_ptr, "Skia", 0, iccPtr, icc->size()); +} + static transform_scanline_proc choose_proc(const SkImageInfo& info) { const bool isGammaEncoded = info.gammaCloseToSRGB(); switch (info.colorType()) { @@ -343,8 +354,7 @@ static bool do_encode(SkWStream* stream, const SkPixmap& pixmap, } else if (pixmap.colorSpace()->isNumericalTransferFn(&fn) && pixmap.colorSpace()->toXYZD50(&toXYZD50)) { - sk_sp<SkData> icc = SkICC::WriteToICC(fn, toXYZD50); - png_set_iCCP(png_ptr, info_ptr, "Skia", 0, icc->bytes(), icc->size()); + set_icc(png_ptr, info_ptr, fn, toXYZD50); } // TODO: Should we support writing ICC profiles for additional color spaces? |