From a94890345ef2caae35a72ed3a398b2984349bb2f Mon Sep 17 00:00:00 2001
From: Darrell Anderson <humanreadable@yahoo.com>
Date: Fri, 27 Apr 2012 23:18:48 -0500
Subject: GCC 4.7 fix. This partially resolves bug report 958. Thanks to David
 C. Rankin.

---
 digikam/libs/dimg/loaders/pngloader.cpp | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/digikam/libs/dimg/loaders/pngloader.cpp b/digikam/libs/dimg/loaders/pngloader.cpp
index fd5d771a..fa6dad9b 100644
--- a/digikam/libs/dimg/loaders/pngloader.cpp
+++ b/digikam/libs/dimg/loaders/pngloader.cpp
@@ -57,6 +57,12 @@ extern "C"
 namespace Digikam
 {
 
+#if PNG_LIBPNG_VER_MAJOR > 1 || ( PNG_LIBPNG_VER_MAJOR == 1 && PNG_LIBPNG_VER_MINOR >= 5 )
+  typedef png_bytep iCCP_data;
+#else
+  typedef png_charp iCCP_data;
+#endif
+
 PNGLoader::PNGLoader(DImg* image)
          : DImgLoader(image)
 {
@@ -403,7 +409,12 @@ bool PNGLoader::load(const TQString& filePath, DImgLoaderObserver *observer)
 
     TQMap<int, TQByteArray>& metaData = imageMetaData();
 
+#if PNG_LIBPNG_VER_MAJOR > 1 || ( PNG_LIBPNG_VER_MAJOR == 1 && PNG_LIBPNG_VER_MINOR >= 5 )
+    png_charp   profile_name;
+    iCCP_data   profile_data=NULL;
+#else
     png_charp   profile_name, profile_data=NULL;
+#endif
     png_uint_32 profile_size;
     int         compression_type;
 
@@ -599,7 +610,11 @@ bool PNGLoader::save(const TQString& filePath, DImgLoaderObserver *observer)
 
     if (!profile_rawdata.isEmpty())
     {
+#if PNG_LIBPNG_VER_MAJOR > 1 || ( PNG_LIBPNG_VER_MAJOR == 1 && PNG_LIBPNG_VER_MINOR >= 5 )
+        png_set_iCCP(png_ptr, info_ptr, (png_charp)("icc"), PNG_COMPRESSION_TYPE_BASE, (iCCP_data)profile_rawdata.data(), profile_rawdata.size());
+#else
         png_set_iCCP(png_ptr, info_ptr, (png_charp)"icc", PNG_COMPRESSION_TYPE_BASE, profile_rawdata.data(), profile_rawdata.size());
+#endif
     }
 
     // -------------------------------------------------------------------
-- 
cgit v1.2.3

