diff --git a/filters/chalk/png/kis_png_converter.cc b/filters/chalk/png/kis_png_converter.cc index 87b460294..75a5c6972 100644 --- a/filters/chalk/png/kis_png_converter.cc +++ b/filters/chalk/png/kis_png_converter.cc @@ -43,6 +43,8 @@ #include #include +#include + namespace { const TQ_UINT8 PIXEL_BLUE = 0; @@ -222,6 +224,9 @@ KisImageBuilder_Result KisPNGConverter::decode(const KURL& uri) // Read image profile png_charp profile_name, profile_data; +#if PNG_LIBPNG_VER_MAJOR > 1 || ( PNG_LIBPNG_VER_MAJOR == 1 && PNG_LIBPNG_VER_MINOR >= 5 ) + unsigned char* uprofile_data = reinterpret_cast(profile_data); +#endif int compression_type; png_uint_32 proflen; int number_of_passes = 1; @@ -230,7 +235,11 @@ KisImageBuilder_Result KisPNGConverter::decode(const KURL& uri) number_of_passes = png_set_interlace_handling(png_ptr); KisProfile* profile = 0; +#if PNG_LIBPNG_VER_MAJOR > 1 || ( PNG_LIBPNG_VER_MAJOR == 1 && PNG_LIBPNG_VER_MINOR >= 5 ) + if(png_get_iCCP(png_ptr, info_ptr, &profile_name, &compression_type, &uprofile_data, &proflen)) +#else if(png_get_iCCP(png_ptr, info_ptr, &profile_name, &compression_type, &profile_data, &proflen)) +#endif { TQByteArray profile_rawdata; // XXX: Hardcoded for icc type -- is that correct for us? @@ -627,7 +636,11 @@ KisImageBuilder_Result KisPNGConverter::buildFile(const KURL& uri, KisPaintLayer } else { // Profile char* name = new char[(*it)->type().length()+1]; strcpy(name, (*it)->type().ascii()); +#if PNG_LIBPNG_VER_MAJOR > 1 || ( PNG_LIBPNG_VER_MAJOR == 1 && PNG_LIBPNG_VER_MINOR >= 5 ) + png_set_iCCP(png_ptr, info_ptr, name, PNG_COMPRESSION_TYPE_BASE, (unsigned char*)(*it)->annotation().data(), (*it) -> annotation() . size()); +#else png_set_iCCP(png_ptr, info_ptr, name, PNG_COMPRESSION_TYPE_BASE, (char*)(*it)->annotation().data(), (*it) -> annotation() . size()); +#endif } ++it; }