|
|
|
@ -43,6 +43,8 @@
|
|
|
|
|
#include <kis_paint_layer.h>
|
|
|
|
|
#include <kis_group_layer.h>
|
|
|
|
|
|
|
|
|
|
#include <zlib.h>
|
|
|
|
|
|
|
|
|
|
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<unsigned char*>(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;
|
|
|
|
|
}
|
|
|
|
|