From b87e0374fddfd21f001a231e64916fdd05fa275d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Franti=C5=A1ek=20Dvo=C5=99=C3=A1k?= Date: Tue, 14 Jan 2014 12:30:35 +0100 Subject: [PATCH] Unbundle: zlib, libpng. --- Source/FreeImage.h | 1 - Source/FreeImage/PluginPNG.cpp | 14 ++++++++++---- Source/FreeImage/ZLibInterface.cpp | 5 ++--- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/Source/FreeImage.h b/Source/FreeImage.h index ef4581f..17de860 100644 --- a/Source/FreeImage.h +++ b/Source/FreeImage.h @@ -704,7 +704,6 @@ typedef void (DLL_CALLCONV *FI_InitProc)(Plugin *plugin, int format_id); #define PNG_DEFAULT 0 #define PNG_IGNOREGAMMA 1 // loading: avoid gamma correction #define PNG_Z_BEST_SPEED 0x0001 // save using ZLib level 1 compression flag (default value is 6) -#define PNG_Z_DEFAULT_COMPRESSION 0x0006 // save using ZLib level 6 compression flag (default recommended value) #define PNG_Z_BEST_COMPRESSION 0x0009 // save using ZLib level 9 compression flag (default value is 6) #define PNG_Z_NO_COMPRESSION 0x0100 // save without ZLib compression #define PNG_INTERLACED 0x0200 // save using Adam7 interlacing (use | to combine with other save flags) diff --git a/Source/FreeImage/PluginPNG.cpp b/Source/FreeImage/PluginPNG.cpp index 27fb545..dc1c44a 100644 --- a/Source/FreeImage/PluginPNG.cpp +++ b/Source/FreeImage/PluginPNG.cpp @@ -37,8 +37,8 @@ // ---------------------------------------------------------- -#include "../ZLib/zlib.h" -#include "../LibPNG/png.h" +#include +#include // ---------------------------------------------------------- @@ -106,7 +106,11 @@ ReadMetadata(png_structp png_ptr, png_infop info_ptr, FIBITMAP *dib) { tag = FreeImage_CreateTag(); if(!tag) return FALSE; +#ifdef PNG_iTXt_SUPPORTED DWORD tag_length = (DWORD) MAX(text_ptr[i].text_length, text_ptr[i].itxt_length); +#else + DWORD tag_length = text_ptr[i].text_length; +#endif FreeImage_SetTagLength(tag, tag_length); FreeImage_SetTagCount(tag, tag_length); @@ -153,10 +157,11 @@ WriteMetadata(png_structp png_ptr, png_infop info_ptr, FIBITMAP *dib) { text_metadata.key = (char*)FreeImage_GetTagKey(tag); // keyword, 1-79 character description of "text" text_metadata.text = (char*)FreeImage_GetTagValue(tag); // comment, may be an empty string (ie "") text_metadata.text_length = FreeImage_GetTagLength(tag);// length of the text string +#ifdef PNG_iTXt_SUPPORTED text_metadata.itxt_length = FreeImage_GetTagLength(tag);// length of the itxt string text_metadata.lang = 0; // language code, 0-79 characters or a NULL pointer text_metadata.lang_key = 0; // keyword translated UTF-8 string, 0 or more chars or a NULL pointer - +#endif // set the tag png_set_text(png_ptr, info_ptr, &text_metadata, 1); @@ -175,10 +180,11 @@ WriteMetadata(png_structp png_ptr, png_infop info_ptr, FIBITMAP *dib) { text_metadata.key = (char*)g_png_xmp_keyword; // keyword, 1-79 character description of "text" text_metadata.text = (char*)FreeImage_GetTagValue(tag); // comment, may be an empty string (ie "") text_metadata.text_length = FreeImage_GetTagLength(tag);// length of the text string +#ifdef PNG_iTXt_SUPPORTED text_metadata.itxt_length = FreeImage_GetTagLength(tag);// length of the itxt string text_metadata.lang = 0; // language code, 0-79 characters or a NULL pointer text_metadata.lang_key = 0; // keyword translated UTF-8 string, 0 or more chars or a NULL pointer - +#endif // set the tag png_set_text(png_ptr, info_ptr, &text_metadata, 1); bResult &= TRUE; diff --git a/Source/FreeImage/ZLibInterface.cpp b/Source/FreeImage/ZLibInterface.cpp index 3ab6d32..1a90904 100644 --- a/Source/FreeImage/ZLibInterface.cpp +++ b/Source/FreeImage/ZLibInterface.cpp @@ -19,10 +19,9 @@ // Use at your own risk! // ========================================================== -#include "../ZLib/zlib.h" +#include #include "FreeImage.h" #include "Utilities.h" -#include "../ZLib/zutil.h" /* must be the last header because of error C3163 in VS2008 (_vsnprintf defined in stdio.h) */ /** Compresses a source buffer into a target buffer, using the ZLib library. @@ -115,7 +114,7 @@ FreeImage_ZLibGZip(BYTE *target, DWORD target_size, BYTE *source, DWORD source_s return 0; case Z_OK: { // patch header, setup crc and length (stolen from mod_trace_output) - BYTE *p = target + 8; *p++ = 2; *p = OS_CODE; // xflags, os_code + BYTE *p = target + 8; *p++ = 2; *p = 0x03; // xflags, os_code (unix) crc = crc32(crc, source, source_size); memcpy(target + 4 + dest_len, &crc, 4); memcpy(target + 8 + dest_len, &source_size, 4); -- 1.8.2.3