From 1fcd8345ac5fcc47883c082fa1d39110e4b2cb55 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 25 Jul 2019 14:00:04 +0300 Subject: [PATCH] QPNGImageWriter: fix compilation with libpng 1.4 Amends 83de6d0ce5baceb7739b89254cba4acc6fdab47d. The interface of png_set_iCCP() changed source-incompatibly from 1.4 to 1.5. #ifdef on the version as is done elsewhere in the code. Drop a no-op C cast. Also add PNG_iCCP_SUPPORTED around the new code, as that check is used elsewhere in the code. Change-Id: Ie203bd9eebea5697f426fa3e95591f86346b2685 Reviewed-by: Eirik Aavitsland --- src/gui/image/qpnghandler.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/gui/image/qpnghandler.cpp b/src/gui/image/qpnghandler.cpp index 023696a401..8cfcbdb2d2 100644 --- a/src/gui/image/qpnghandler.cpp +++ b/src/gui/image/qpnghandler.cpp @@ -980,6 +980,7 @@ bool QPNGImageWriter::writeImage(const QImage& image, volatile int compression_i bpc, // per channel color_type, 0, 0, 0); // sets #channels +#ifdef PNG_iCCP_SUPPORTED if (image.colorSpace().isValid()) { QColorSpace cs = image.colorSpace(); // Support the old gamma making it override transferfunction. @@ -995,9 +996,17 @@ bool QPNGImageWriter::writeImage(const QImage& image, volatile int compression_i if (iccProfileName.isEmpty()) iccProfileName = QByteArrayLiteral("Custom"); QByteArray iccProfile = cs.iccProfile(); - png_set_iCCP(png_ptr, info_ptr, (png_const_charp)iccProfileName.constData(), - PNG_COMPRESSION_TYPE_BASE, (png_const_bytep)iccProfile.constData(), iccProfile.length()); - } else if (gamma != 0.0) { + png_set_iCCP(png_ptr, info_ptr, + #if PNG_LIBPNG_VER < 10500 + iccProfileName.data(), PNG_COMPRESSION_TYPE_BASE, iccProfile.data(), + #else + iccProfileName.constData(), PNG_COMPRESSION_TYPE_BASE, + (png_const_bytep)iccProfile.constData(), + #endif + iccProfile.length()); + } else +#endif + if (gamma != 0.0) { png_set_gAMA(png_ptr, info_ptr, 1.0/gamma); }