# HG changeset patch # User Mark Brand # Date 1324893171 -3600 # Node ID 115edae4e20edf9e8f001de455485da07023cde6 # Parent bad1e79c931fd75ac9d52c305e0ad47b11ae124f update package graphicsmagick diff -r bad1e79c931f -r 115edae4e20e src/graphicsmagick-2-libpng1.5.patch --- a/src/graphicsmagick-2-libpng1.5.patch Fri Dec 23 14:30:32 2011 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1986 +0,0 @@ -This file is part of mingw-cross-env. -See doc/index.html for further information. - -This patch has been taken from: -http://cvs.graphicsmagick.org/cgi-bin/cvsweb.cgi/GraphicsMagick/coders/png.c.diff?r1=1.457;r2=1.410.2.4 - ---- GraphicsMagick/coders/png.c 2010/03/07 21:23:50 1.410.2.4 -+++ GraphicsMagick/coders/png.c 2010/09/19 23:35:45 1.457 -@@ -88,26 +88,7 @@ - #include "zlib.h" - - --/* -- * TO DO: rewrite using png_get_tRNS() instead of direct access to the -- * ping and ping_info structs. -- */ --#if PNG_LIBPNG_VER < 10400 --# define trans_color trans_values /* Changed at libpng-1.4.0beta35 */ --# define trans_alpha trans /* Changed at libpng-1.4.0beta74 */ --#else -- /* We could parse PNG_LIBPNG_VER_STRING here but it's too much bother.. -- * Just don't use libpng-1.4.0beta32-34 or beta67-73 -- */ --# ifndef PNG_USER_CHUNK_CACHE_MAX /* Added at libpng-1.4.0beta32 */ --# define trans_color trans_values /* Changed at libpng-1.4.0beta35 */ --# endif --# ifndef PNG_TRANSFORM_GRAY_TO_RGB /* Added at libpng-1.4.0beta67 */ --# define trans_alpha trans /* Changed at libpng-1.4.0beta74 */ --# endif --#endif -- --#if PNG_LIBPNG_VER > 95 -+#if PNG_LIBPNG_VER > 10011 - /* - Optional declarations. Define or undefine them as you like. - */ -@@ -164,10 +145,6 @@ static SemaphoreInfo - PNG_MNG_FEATURES_SUPPORTED is disabled by default in libpng-1.0.9 and - will be enabled by default in libpng-1.2.0. - */ --#if (PNG_LIBPNG_VER == 10009) /* work around libpng-1.0.9 bug */ --# undef PNG_READ_EMPTY_PLTE_SUPPORTED --# undef PNG_WRITE_EMPTY_PLTE_SUPPORTED --#endif - #ifdef PNG_MNG_FEATURES_SUPPORTED - # ifndef PNG_READ_EMPTY_PLTE_SUPPORTED - # define PNG_READ_EMPTY_PLTE_SUPPORTED -@@ -244,6 +221,16 @@ static png_byte FARDATA mng_tIME[5]={116 - static png_byte FARDATA mng_zTXt[5]={122, 84, 88, 116, '\0'}; - */ - -+typedef struct _UShortPixelPacket -+{ -+ unsigned short -+ red, -+ green, -+ blue, -+ opacity, -+ index; -+} UShortPixelPacket; -+ - typedef struct _MngBox - { - long -@@ -492,7 +479,6 @@ static const char* PngColorTypeToString( - return result; - } - --#if PNG_LIBPNG_VER > 95 - #if defined(PNG_SORT_PALETTE) - /* - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -@@ -785,7 +771,6 @@ static MagickPassFail CompressColormapTr - return(MagickPass); - } - #endif --#endif /* PNG_LIBPNG_VER > 95 */ - #endif /* HasPNG */ - - /* -@@ -907,7 +892,7 @@ static MagickPassFail IsPNG(const unsign - extern "C" { - #endif - --#if (PNG_LIBPNG_VER > 95) -+#if (PNG_LIBPNG_VER > 10011) - static size_t WriteBlobMSBULong(Image *image,const unsigned long value) - { - unsigned char -@@ -956,13 +941,13 @@ static void LogPNGChunk(int logging, png - " Writing %c%c%c%c chunk, length: %lu", - type[0],type[1],type[2],type[3],length); - } --#endif /* PNG_LIBPNG_VER > 95 */ -+#endif /* PNG_LIBPNG_VER > 10011 */ - - #if defined(__cplusplus) || defined(c_plusplus) - } - #endif - --#if PNG_LIBPNG_VER > 95 -+#if PNG_LIBPNG_VER > 10011 - /* - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % % -@@ -1351,7 +1336,11 @@ static void PNGErrorHandler(png_struct * - " libpng-%.1024s error: %.1024s", - PNG_LIBPNG_VER_STRING, message); - (void) ThrowException2(&image->exception,CoderError,message,image->filename); -+#if (PNG_LIBPNG_VER < 10500) - longjmp(ping->jmpbuf,1); -+#else -+ png_longjmp(ping,1); -+#endif - } - - static void PNGWarningHandler(png_struct *ping,png_const_charp message) -@@ -1372,19 +1361,8 @@ static void PNGWarningHandler(png_struct - #ifdef PNG_USER_MEM_SUPPORTED - static png_voidp png_IM_malloc(png_structp png_ptr,png_uint_32 size) - { --#if (PNG_LIBPNG_VER < 10011) -- png_voidp -- ret; -- -- png_ptr=png_ptr; -- ret=MagickAllocateMemory(png_voidp,(size_t) size); -- if (ret == NULL) -- png_error("Insufficient memory."); -- return (ret); --#else - png_ptr=png_ptr; - return MagickAllocateMemory(png_voidp,(size_t) size); --#endif - } - - /* -@@ -1560,11 +1538,24 @@ static Image *ReadOnePNGImage(MngInfo *m - logging, - num_text, - num_passes, -- pass; -+ pass, -+ ping_bit_depth, -+ ping_colortype, -+ ping_interlace_method, -+ ping_compression_method, -+ ping_filter_method, -+ ping_num_trans; - -- PixelPacket -+ UShortPixelPacket - transparent_color; - -+ png_bytep -+ ping_trans_alpha; -+ -+ png_color_16p -+ ping_background, -+ ping_trans_color; -+ - png_info - *end_info, - *ping_info; -@@ -1572,6 +1563,11 @@ static Image *ReadOnePNGImage(MngInfo *m - png_struct - *ping; - -+ png_uint_32 -+ ping_rowbytes, -+ ping_width, -+ ping_height; -+ - png_textp - text; - -@@ -1619,23 +1615,12 @@ static Image *ReadOnePNGImage(MngInfo *m - LockSemaphoreInfo(png_semaphore); - #endif - --#if (PNG_LIBPNG_VER < 10007) -+#if (PNG_LIBPNG_VER < 10012) - if (image_info->verbose) - printf("Your PNG library (libpng-%s) is rather old.\n", - PNG_LIBPNG_VER_STRING); - #endif - --#if (PNG_LIBPNG_VER >= 10400) --# ifndef PNG_TRANSFORM_GRAY_TO_RGB /* Added at libpng-1.4.0beta67 */ -- if (image_info->verbose) -- { -- printf("Your PNG library (libpng-%s) is an old beta version.\n", -- PNG_LIBPNG_VER_STRING); -- printf("Please update it.\n"); -- } --# endif --#endif -- - image=mng_info->image; - - /* -@@ -1665,7 +1650,7 @@ static Image *ReadOnePNGImage(MngInfo *m - ThrowReaderException(ResourceLimitError,MemoryAllocationFailed,image); - } - png_pixels=(unsigned char *) NULL; -- if (setjmp(ping->jmpbuf)) -+ if (setjmp(png_jmpbuf(ping))) - { - /* - PNG image is corrupt. -@@ -1740,18 +1725,32 @@ static Image *ReadOnePNGImage(MngInfo *m - - png_read_info(ping,ping_info); - -+ (void) png_get_IHDR(ping,ping_info, -+ &ping_width, -+ &ping_height, -+ &ping_bit_depth, -+ &ping_colortype, -+ &ping_interlace_method, -+ &ping_compression_method, -+ &ping_filter_method); -+ -+ (void) png_get_tRNS(ping, ping_info, &ping_trans_alpha, &ping_num_trans, -+ &ping_trans_color); -+ -+ (void) png_get_bKGD(ping, ping_info, &ping_background); -+ - #if (QuantumDepth == 8) - image->depth=8; - #else -- if (ping_info->bit_depth > 8) -+ if (ping_bit_depth > 8) - image->depth=16; - else - image->depth=8; - #endif - -- if (ping_info->bit_depth < 8) -+ if (ping_bit_depth < 8) - { -- if ((ping_info->color_type == PNG_COLOR_TYPE_PALETTE)) -+ if (ping_colortype == PNG_COLOR_TYPE_PALETTE) - { - png_set_packing(ping); - image->depth=8; -@@ -1761,21 +1760,22 @@ static Image *ReadOnePNGImage(MngInfo *m - { - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " PNG width: %lu, height: %lu", -- (unsigned long)ping_info->width, -- (unsigned long)ping_info->height); -+ (unsigned long)ping_width, -+ (unsigned long)ping_height); - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " PNG color_type: %d, bit_depth: %d", -- ping_info->color_type, ping_info->bit_depth); -+ ping_colortype, ping_bit_depth); - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " PNG compression_method: %d", -- ping_info->compression_type); -+ ping_compression_method); - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " PNG interlace_method: %d, filter_method: %d", -- ping_info->interlace_type,ping_info->filter_type); -+ ping_interlace_method, -+ ping_filter_method); - } - --#if (PNG_LIBPNG_VER > 10008) && defined(PNG_READ_iCCP_SUPPORTED) -- if (ping_info->valid & PNG_INFO_iCCP) -+#if defined(PNG_READ_iCCP_SUPPORTED) -+ if (png_get_valid(ping, ping_info, PNG_INFO_iCCP)) - { - int - compression; -@@ -1803,15 +1803,19 @@ static Image *ReadOnePNGImage(MngInfo *m - } - } - } --#endif /* #if (PNG_LIBPNG_VER > 10008) && defined(PNG_READ_iCCP_SUPPORTED) */ -+#endif /* #if defined(PNG_READ_iCCP_SUPPORTED) */ - #if defined(PNG_READ_sRGB_SUPPORTED) - { - int - intent; - -- if (mng_info->have_global_srgb) -- image->rendering_intent=(RenderingIntent) -- (mng_info->global_srgb_intent+1); -+ if (!png_get_sRGB(ping,ping_info,&intent)) -+ { -+ if (mng_info->have_global_srgb) -+ { -+ png_set_sRGB(ping,ping_info,(mng_info->global_srgb_intent+1)); -+ } -+ } - if (png_get_sRGB(ping,ping_info,&intent)) - { - image->rendering_intent=(RenderingIntent) (intent+1); -@@ -1827,8 +1831,11 @@ static Image *ReadOnePNGImage(MngInfo *m - double - file_gamma; - -- if (mng_info->have_global_gama) -- image->gamma=mng_info->global_gamma; -+ if (!png_get_gAMA(ping,ping_info,&file_gamma)) -+ { -+ if (mng_info->have_global_gama) -+ png_set_gAMA(ping,ping_info,mng_info->global_gamma); -+ } - if (png_get_gAMA(ping,ping_info,&file_gamma)) - { - image->gamma=(float) file_gamma; -@@ -1838,9 +1845,20 @@ static Image *ReadOnePNGImage(MngInfo *m - file_gamma); - } - } -- if (mng_info->have_global_chrm) -- image->chromaticity=mng_info->global_chrm; -- if (ping_info->valid & PNG_INFO_cHRM) -+ if (!png_get_valid(ping, ping_info, PNG_INFO_cHRM)) -+ { -+ if (mng_info->have_global_chrm) -+ (void) png_set_cHRM(ping,ping_info, -+ mng_info->global_chrm.white_point.x, -+ mng_info->global_chrm.white_point.y, -+ mng_info->global_chrm.red_primary.x, -+ mng_info->global_chrm.red_primary.y, -+ mng_info->global_chrm.green_primary.x, -+ mng_info->global_chrm.green_primary.y, -+ mng_info->global_chrm.blue_primary.x, -+ mng_info->global_chrm.blue_primary.y); -+ } -+ if (png_get_valid(ping, ping_info, PNG_INFO_cHRM)) - { - (void) png_get_cHRM(ping,ping_info, - &image->chromaticity.white_point.x, -@@ -1867,12 +1885,9 @@ static Image *ReadOnePNGImage(MngInfo *m - image->chromaticity.white_point.x=0.3127f; - image->chromaticity.white_point.y=0.3290f; - } -- if (mng_info->have_global_gama || image->rendering_intent) -- ping_info->valid|=PNG_INFO_gAMA; -- if (mng_info->have_global_chrm || image->rendering_intent) -- ping_info->valid|=PNG_INFO_cHRM; - #if defined(PNG_oFFs_SUPPORTED) -- if (mng_info->mng_type == 0 && (ping_info->valid & PNG_INFO_oFFs)) -+ if (mng_info->mng_type == 0 && (png_get_valid(ping, ping_info, -+ PNG_INFO_oFFs))) - { - image->page.x=png_get_x_offset_pixels(ping, ping_info); - image->page.y=png_get_y_offset_pixels(ping, ping_info); -@@ -1885,7 +1900,17 @@ static Image *ReadOnePNGImage(MngInfo *m - } - #endif - #if defined(PNG_pHYs_SUPPORTED) -- if (ping_info->valid & PNG_INFO_pHYs) -+ if (!png_get_valid(ping, ping_info, PNG_INFO_pHYs)) -+ { -+ if (mng_info->have_global_phys) -+ { -+ png_set_pHYs(ping,ping_info, -+ mng_info->global_x_pixels_per_unit, -+ mng_info->global_y_pixels_per_unit, -+ mng_info->global_phys_unit_type); -+ } -+ } -+ if (png_get_valid(ping, ping_info, PNG_INFO_pHYs)) - { - int - unit_type; -@@ -1915,25 +1940,8 @@ static Image *ReadOnePNGImage(MngInfo *m - (unsigned long)y_resolution, - unit_type); - } -- else -- { -- if (mng_info->have_global_phys) -- { -- image->x_resolution=(float) mng_info->global_x_pixels_per_unit; -- image->y_resolution=(float) mng_info->global_y_pixels_per_unit; -- if (mng_info->global_phys_unit_type == PNG_RESOLUTION_METER) -- { -- image->units=PixelsPerCentimeterResolution; -- image->x_resolution=(double) -- mng_info->global_x_pixels_per_unit/100.0; -- image->y_resolution=(double) -- mng_info->global_y_pixels_per_unit/100.0; -- } -- ping_info->valid|=PNG_INFO_pHYs; -- } -- } - #endif -- if (ping_info->valid & PNG_INFO_PLTE) -+ if (png_get_valid(ping, ping_info, PNG_INFO_PLTE)) - { - int - number_colors; -@@ -1942,14 +1950,14 @@ static Image *ReadOnePNGImage(MngInfo *m - palette; - - (void) png_get_PLTE(ping,ping_info,&palette,&number_colors); -- if (number_colors == 0 && ping_info->color_type == -+ if (number_colors == 0 && ping_colortype == - PNG_COLOR_TYPE_PALETTE) - { - if (mng_info->global_plte_length) - { - png_set_PLTE(ping,ping_info,mng_info->global_plte, - (int) mng_info->global_plte_length); -- if (!(ping_info->valid & PNG_INFO_tRNS)) -+ if (!(png_get_valid(ping, ping_info, PNG_INFO_tRNS))) - if (mng_info->global_trns_length) - { - if (mng_info->global_trns_length > -@@ -1966,7 +1974,7 @@ static Image *ReadOnePNGImage(MngInfo *m - #ifndef PNG_READ_EMPTY_PLTE_SUPPORTED - mng_info->have_saved_bkgd_index || - #endif -- ping_info->valid & PNG_INFO_bKGD) -+ png_get_valid(ping, ping_info, PNG_INFO_bKGD)) - { - png_color_16 - background; -@@ -1974,9 +1982,9 @@ static Image *ReadOnePNGImage(MngInfo *m - #ifndef PNG_READ_EMPTY_PLTE_SUPPORTED - if (mng_info->have_saved_bkgd_index) - background.index=mng_info->saved_bkgd_index; -- else - #endif -- background.index=ping_info->background.index; -+ if (png_get_valid(ping, ping_info, PNG_INFO_bKGD)) -+ background.index=ping_background->index; - background.red=(png_uint_16) - mng_info->global_plte[background.index].red; - background.green=(png_uint_16) -@@ -1995,34 +2003,76 @@ static Image *ReadOnePNGImage(MngInfo *m - } - - #if defined(PNG_READ_bKGD_SUPPORTED) -- if (mng_info->have_global_bkgd && !(ping_info->valid & PNG_INFO_bKGD)) -+ if (mng_info->have_global_bkgd && -+ !(png_get_valid(ping,ping_info, PNG_INFO_bKGD))) - image->background_color=mng_info->mng_global_bkgd; -- if (ping_info->valid & PNG_INFO_bKGD) -+ if (png_get_valid(ping, ping_info, PNG_INFO_bKGD)) - { - /* - Set image background color. - */ -+ - if (logging) - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " Reading PNG bKGD chunk."); -- if (ping_info->bit_depth <= QuantumDepth) -+ -+ if (ping_bit_depth == QuantumDepth) - { -- image->background_color.red=ping_info->background.red; -- image->background_color.green=ping_info->background.green; -- image->background_color.blue=ping_info->background.blue; -+ image->background_color.red = ping_background->red; -+ image->background_color.green= ping_background->green; -+ image->background_color.blue = ping_background->blue; - } -- else -+ else /* Scale background components to 16-bit */ - { -+ unsigned int -+ bkgd_scale; -+ -+ if (logging != MagickFalse) -+ (void) LogMagickEvent(CoderEvent,GetMagickModule(), -+ " raw ping_background=(%d,%d,%d).",ping_background->red, -+ ping_background->green,ping_background->blue); -+ -+ bkgd_scale = 1; -+ if (ping_bit_depth == 1) -+ bkgd_scale = 255; -+ else if (ping_bit_depth == 2) -+ bkgd_scale = 85; -+ else if (ping_bit_depth == 4) -+ bkgd_scale = 17; -+ if (ping_bit_depth <= 8) -+ bkgd_scale *= 257; -+ -+ ping_background->red *= bkgd_scale; -+ ping_background->green *= bkgd_scale; -+ ping_background->blue *= bkgd_scale; -+ -+ if (logging != MagickFalse) -+ { -+ (void) LogMagickEvent(CoderEvent,GetMagickModule(), -+ " bkgd_scale=%d.",bkgd_scale); -+ (void) LogMagickEvent(CoderEvent,GetMagickModule(), -+ " ping_background=(%d,%d,%d).",ping_background->red, -+ ping_background->green,ping_background->blue); -+ } -+ - image->background_color.red= -- ScaleShortToQuantum(ping_info->background.red); -+ ScaleShortToQuantum(ping_background->red); - image->background_color.green= -- ScaleShortToQuantum(ping_info->background.green); -+ ScaleShortToQuantum(ping_background->green); - image->background_color.blue= -- ScaleShortToQuantum(ping_info->background.blue); -+ ScaleShortToQuantum(ping_background->blue); -+ image->background_color.opacity=OpaqueOpacity; -+ -+ if (logging != MagickFalse) -+ (void) LogMagickEvent(CoderEvent,GetMagickModule(), -+ " image->background_color=(%d,%d,%d).", -+ image->background_color.red, -+ image->background_color.green,image->background_color.blue); - } - } - #endif -- if (ping_info->valid & PNG_INFO_tRNS) -+ -+ if (png_get_valid(ping, ping_info, PNG_INFO_tRNS)) - { - int - bit_mask; -@@ -2031,49 +2081,70 @@ static Image *ReadOnePNGImage(MngInfo *m - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " Reading PNG tRNS chunk."); - -- bit_mask = (1 << ping_info->bit_depth) - 1; -+ bit_mask = (1 << ping_bit_depth) - 1; - - /* - Image has a transparent background. - */ -+ - transparent_color.red= -- (Quantum)(ping_info->trans_color.red & bit_mask); -+ (unsigned short)(ping_trans_color->red & bit_mask); - transparent_color.green= -- (Quantum) (ping_info->trans_color.green & bit_mask); -+ (unsigned short) (ping_trans_color->green & bit_mask); - transparent_color.blue= -- (Quantum) (ping_info->trans_color.blue & bit_mask); -+ (unsigned short) (ping_trans_color->blue & bit_mask); - transparent_color.opacity= -- (Quantum) (ping_info->trans_color.gray & bit_mask); -- if (ping_info->color_type == PNG_COLOR_TYPE_GRAY) -+ (unsigned short) (ping_trans_color->gray & bit_mask); -+ -+ if (ping_colortype == PNG_COLOR_TYPE_GRAY) - { -+#if (Quantum_depth == 8) -+ if (ping_bit_depth < Quantum_depth) -+#endif -+ transparent_color.opacity=(unsigned short) ( -+ ping_trans_color->gray * -+ (65535L/((1UL << ping_bit_depth)-1))); -+ -+#if (Quantum_depth == 8) -+ else -+ transparent_color.opacity=(unsigned short) ( -+ (ping_trans_color->gray * 65535L)/ -+ ((1UL << ping_bit_depth)-1)); -+#endif -+ if (logging != MagickFalse) -+ { -+ (void) LogMagickEvent(CoderEvent,GetMagickModule(), -+ " Raw tRNS graylevel is %d.",ping_trans_color->gray); -+ (void) LogMagickEvent(CoderEvent,GetMagickModule(), -+ " scaled graylevel is %d.",transparent_color.opacity); -+ } - transparent_color.red=transparent_color.opacity; - transparent_color.green=transparent_color.opacity; - transparent_color.blue=transparent_color.opacity; - } - } - #if defined(PNG_READ_sBIT_SUPPORTED) -- if (mng_info->have_global_sbit) -- { -- int -- not_valid; -- not_valid=!ping_info->valid; -- if (not_valid & PNG_INFO_sBIT) -+ if (!png_get_valid(ping, ping_info, PNG_INFO_sBIT)) -+ if (mng_info->have_global_sbit) - png_set_sBIT(ping,ping_info,&mng_info->global_sbit); -- } - #endif - num_passes=png_set_interlace_handling(ping); -+ - png_read_update_info(ping,ping_info); -+ -+ ping_rowbytes=png_get_rowbytes(ping,ping_info); -+ - /* - Initialize image structure. - */ - mng_info->image_box.left=0; -- mng_info->image_box.right=(long) ping_info->width; -+ mng_info->image_box.right=(long) ping_width; - mng_info->image_box.top=0; -- mng_info->image_box.bottom=(long) ping_info->height; -+ mng_info->image_box.bottom=(long) ping_height; - if (mng_info->mng_type == 0) - { -- mng_info->mng_width=ping_info->width; -- mng_info->mng_height=ping_info->height; -+ mng_info->mng_width=ping_width; -+ mng_info->mng_height=ping_height; - mng_info->frame=mng_info->image_box; - mng_info->clip=mng_info->image_box; - } -@@ -2082,14 +2153,14 @@ static Image *ReadOnePNGImage(MngInfo *m - image->page.y=mng_info->y_off[mng_info->object_id]; - } - image->compression=ZipCompression; -- image->columns=ping_info->width; -- image->rows=ping_info->height; -- if ((ping_info->color_type == PNG_COLOR_TYPE_PALETTE) || -- (ping_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) || -- (ping_info->color_type == PNG_COLOR_TYPE_GRAY)) -+ image->columns=ping_width; -+ image->rows=ping_height; -+ if ((ping_colortype == PNG_COLOR_TYPE_PALETTE) || -+ (ping_colortype == PNG_COLOR_TYPE_GRAY_ALPHA) || -+ (ping_colortype == PNG_COLOR_TYPE_GRAY)) - { - image->storage_class=PseudoClass; -- image->colors=1 << ping_info->bit_depth; -+ image->colors=1 << ping_bit_depth; - #if (QuantumDepth == 8) - if (image->colors > 256) - image->colors=256; -@@ -2097,7 +2168,7 @@ static Image *ReadOnePNGImage(MngInfo *m - if (image->colors > 65536L) - image->colors=65536L; - #endif -- if (ping_info->color_type == PNG_COLOR_TYPE_PALETTE) -+ if (ping_colortype == PNG_COLOR_TYPE_PALETTE) - { - int - number_colors; -@@ -2121,7 +2192,7 @@ static Image *ReadOnePNGImage(MngInfo *m - */ - if (!AllocateImageColormap(image,image->colors)) - ThrowReaderException(ResourceLimitError,MemoryAllocationFailed,image); -- if (ping_info->color_type == PNG_COLOR_TYPE_PALETTE) -+ if (ping_colortype == PNG_COLOR_TYPE_PALETTE) - { - int - number_colors; -@@ -2142,7 +2213,7 @@ static Image *ReadOnePNGImage(MngInfo *m - unsigned long - scale; - -- scale=(MaxRGB/((1 << ping_info->bit_depth)-1)); -+ scale=(MaxRGB/((1 << ping_bit_depth)-1)); - if (scale < 1) - scale=1; - for (i=0; i < (long) image->colors; i++) -@@ -2182,10 +2253,9 @@ static Image *ReadOnePNGImage(MngInfo *m - " Reading PNG IDAT chunk(s)"); - if (num_passes > 1) - png_pixels=MagickAllocateMemory(unsigned char *, -- ping_info->rowbytes*image->rows); -+ ping_rowbytes*image->rows); - else -- png_pixels=MagickAllocateMemory(unsigned char *, -- ping_info->rowbytes); -+ png_pixels=MagickAllocateMemory(unsigned char *, ping_rowbytes); - if (png_pixels == (unsigned char *) NULL) - ThrowReaderException(ResourceLimitError,MemoryAllocationFailed,image); - -@@ -2205,20 +2275,20 @@ static Image *ReadOnePNGImage(MngInfo *m - int - depth; - -- depth=(long) ping_info->bit_depth; -+ depth=(long) ping_bit_depth; - #endif -- image->matte=((ping_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) || -- (ping_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) || -- (ping_info->valid & PNG_INFO_tRNS)); -+ image->matte=((ping_colortype == PNG_COLOR_TYPE_RGB_ALPHA) || -+ (ping_colortype == PNG_COLOR_TYPE_GRAY_ALPHA) || -+ (png_get_valid(ping, ping_info, PNG_INFO_tRNS))); - - for (y=0; y < (long) image->rows; y++) - { - if (num_passes > 1) -- row_offset=ping_info->rowbytes*y; -+ row_offset=ping_rowbytes*y; - else - row_offset=0; - png_read_row(ping,png_pixels+row_offset,NULL); -- if (!SetImagePixels(image,0,y,image->columns,1)) /* Was GetImagePixels() */ -+ if (!SetImagePixels(image,0,y,image->columns,1)) - break; - #if (QuantumDepth == 8) - if (depth == 16) -@@ -2229,13 +2299,13 @@ static Image *ReadOnePNGImage(MngInfo *m - - r=png_pixels+row_offset; - p=r; -- if (ping_info->color_type == PNG_COLOR_TYPE_GRAY) -+ if (ping_colortype == PNG_COLOR_TYPE_GRAY) - { - for (x=(long) image->columns; x > 0; x--) - { - *r++=*p++; - p++; -- if ((ping_info->valid & PNG_INFO_tRNS) && -+ if ((png_get_valid(ping, ping_info, PNG_INFO_tRNS)) && - (((*(p-2) << 8)|*(p-1)) - == transparent_color.opacity)) - { -@@ -2246,9 +2316,9 @@ static Image *ReadOnePNGImage(MngInfo *m - *r++=OpaqueOpacity; - } - } -- else if (ping_info->color_type == PNG_COLOR_TYPE_RGB) -+ else if (ping_colortype == PNG_COLOR_TYPE_RGB) - { -- if (ping_info->valid & PNG_INFO_tRNS) -+ if (png_get_valid(ping, ping_info, PNG_INFO_tRNS)) - for (x=(long) image->columns; x > 0; x--) - { - *r++=*p++; -@@ -2282,25 +2352,25 @@ static Image *ReadOnePNGImage(MngInfo *m - *r++=OpaqueOpacity; - } - } -- else if (ping_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) -+ else if (ping_colortype == PNG_COLOR_TYPE_RGB_ALPHA) - for (x=(long) (4*image->columns); x > 0; x--) - { - *r++=*p++; - p++; - } -- else if (ping_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) -+ else if (ping_colortype == PNG_COLOR_TYPE_GRAY_ALPHA) - for (x=(long) (2*image->columns); x > 0; x--) - { - *r++=*p++; - p++; - } - } -- if (depth == 8 && ping_info->color_type == PNG_COLOR_TYPE_GRAY) -+ if (depth == 8 && ping_colortype == PNG_COLOR_TYPE_GRAY) - (void) ImportImagePixelArea(image,(QuantumType) GrayQuantum, - image->depth,png_pixels+ - row_offset,0,0); -- if (ping_info->color_type == PNG_COLOR_TYPE_GRAY || -- ping_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) -+ if (ping_colortype == PNG_COLOR_TYPE_GRAY || -+ ping_colortype == PNG_COLOR_TYPE_GRAY_ALPHA) - { - image->depth=8; - (void) ImportImagePixelArea(image, -@@ -2309,12 +2379,12 @@ static Image *ReadOnePNGImage(MngInfo *m - row_offset,0,0); - image->depth=depth; - } -- else if (depth == 8 && ping_info->color_type == PNG_COLOR_TYPE_RGB) -+ else if (depth == 8 && ping_colortype == PNG_COLOR_TYPE_RGB) - (void) ImportImagePixelArea(image,(QuantumType) RGBQuantum, - image->depth,png_pixels+ - row_offset,0,0); -- else if (ping_info->color_type == PNG_COLOR_TYPE_RGB || -- ping_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) -+ else if (ping_colortype == PNG_COLOR_TYPE_RGB || -+ ping_colortype == PNG_COLOR_TYPE_RGB_ALPHA) - { - image->depth=8; - (void) ImportImagePixelArea(image,(QuantumType) RGBAQuantum, -@@ -2322,28 +2392,28 @@ static Image *ReadOnePNGImage(MngInfo *m - row_offset,0,0); - image->depth=depth; - } -- else if (ping_info->color_type == PNG_COLOR_TYPE_PALETTE) -+ else if (ping_colortype == PNG_COLOR_TYPE_PALETTE) - (void) ImportImagePixelArea(image,(QuantumType) IndexQuantum, -- ping_info->bit_depth,png_pixels+ -+ ping_bit_depth,png_pixels+ - row_offset,0,0); - /* FIXME, sample size ??? */ - #else /* (QuantumDepth != 8) */ - -- if (ping_info->color_type == PNG_COLOR_TYPE_GRAY) -+ if (ping_colortype == PNG_COLOR_TYPE_GRAY) - (void) ImportImagePixelArea(image,(QuantumType) GrayQuantum, - image->depth,png_pixels+ - row_offset,0,0); -- else if (ping_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) -+ else if (ping_colortype == PNG_COLOR_TYPE_GRAY_ALPHA) - (void) ImportImagePixelArea(image,(QuantumType) GrayAlphaQuantum, - image->depth,png_pixels+ - row_offset,0,0); -- else if (ping_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) -+ else if (ping_colortype == PNG_COLOR_TYPE_RGB_ALPHA) - (void) ImportImagePixelArea(image,(QuantumType) RGBAQuantum, - image->depth,png_pixels+ - row_offset,0,0); -- else if (ping_info->color_type == PNG_COLOR_TYPE_PALETTE) -+ else if (ping_colortype == PNG_COLOR_TYPE_PALETTE) - (void) ImportImagePixelArea(image,(QuantumType) IndexQuantum, -- ping_info->bit_depth,png_pixels+ -+ ping_bit_depth,png_pixels+ - row_offset,0,0); - /* FIXME, sample size ??? */ - else -@@ -2372,7 +2442,7 @@ static Image *ReadOnePNGImage(MngInfo *m - /* - Convert grayscale image to PseudoClass pixel packets. - */ -- image->matte=ping_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA; -+ image->matte=ping_colortype == PNG_COLOR_TYPE_GRAY_ALPHA; - quantum_scanline=MagickAllocateMemory(Quantum *, - (image->matte ? 2 : 1) * - image->columns*sizeof(Quantum)); -@@ -2385,7 +2455,7 @@ static Image *ReadOnePNGImage(MngInfo *m - *p; - - if (num_passes > 1) -- row_offset=ping_info->rowbytes*y; -+ row_offset=ping_rowbytes*y; - else - row_offset=0; - png_read_row(ping,png_pixels+row_offset,NULL); -@@ -2395,7 +2465,7 @@ static Image *ReadOnePNGImage(MngInfo *m - indexes=AccessMutableIndexes(image); - p=png_pixels+row_offset; - r=quantum_scanline; -- switch (ping_info->bit_depth) -+ switch (ping_bit_depth) - { - case 1: - { -@@ -2445,7 +2515,7 @@ static Image *ReadOnePNGImage(MngInfo *m - } - case 8: - { -- if (ping_info->color_type == 4) -+ if (ping_colortype == 4) - for (x=(long) image->columns; x > 0; x--) - { - *r++=*p++; -@@ -2473,7 +2543,7 @@ static Image *ReadOnePNGImage(MngInfo *m - *r=0; - *r|=(*p++); - r++; -- if (ping_info->color_type == 4) -+ if (ping_colortype == 4) - { - q->opacity=((*p++) << 8); - q->opacity|=(*p++); -@@ -2488,7 +2558,7 @@ static Image *ReadOnePNGImage(MngInfo *m - *r=0; - *r|=(*p++); - r++; -- if (ping_info->color_type == 4) -+ if (ping_colortype == 4) - { - q->opacity=((*p++) << 8); - q->opacity|=(*p++); -@@ -2499,7 +2569,7 @@ static Image *ReadOnePNGImage(MngInfo *m - #else /* QuantumDepth == 8 */ - *r++=(*p++); - p++; /* strip low byte */ -- if (ping_info->color_type == 4) -+ if (ping_colortype == 4) - { - q->opacity=(Quantum) (MaxRGB-(*p++)); - p++; -@@ -2549,7 +2619,7 @@ static Image *ReadOnePNGImage(MngInfo *m - " exit ReadOnePNGImage()."); - return (image); - } -- if (ping_info->valid & PNG_INFO_tRNS) -+ if (png_get_valid(ping, ping_info, PNG_INFO_tRNS)) - { - ClassType - storage_class; -@@ -2572,25 +2642,26 @@ static Image *ReadOnePNGImage(MngInfo *m - IndexPacket - index; - -- if (ping_info->color_type == PNG_COLOR_TYPE_PALETTE) -+ if (ping_colortype == PNG_COLOR_TYPE_PALETTE) - for (x=0; x < (long) image->columns; x++) - { - index=indexes[x]; -- if (index < ping_info->num_trans) -+ if (index < ping_num_trans) - q->opacity= -- ScaleCharToQuantum(255-ping_info->trans_alpha[index]); -+ ScaleCharToQuantum(255-ping_trans_alpha[index]); - else - q->opacity=OpaqueOpacity; - q++; - } -- else if (ping_info->color_type == PNG_COLOR_TYPE_GRAY) -+ else if (ping_colortype == PNG_COLOR_TYPE_GRAY) - for (x=0; x < (long) image->columns; x++) - { - index=indexes[x]; - q->red=image->colormap[index].red; - q->green=image->colormap[index].green; - q->blue=image->colormap[index].blue; -- if (q->red == transparent_color.opacity) -+ if (ScaleQuantumToShort(q->red) == -+ transparent_color.opacity) - q->opacity=TransparentOpacity; - else - q->opacity=OpaqueOpacity; -@@ -2600,9 +2671,9 @@ static Image *ReadOnePNGImage(MngInfo *m - else - for (x=(long) image->columns; x > 0; x--) - { -- if (q->red == transparent_color.red && -- q->green == transparent_color.green && -- q->blue == transparent_color.blue) -+ if (ScaleQuantumToShort(q->red) == transparent_color.red && -+ ScaleQuantumToShort(q->green) == transparent_color.green && -+ ScaleQuantumToShort(q->blue) == transparent_color.blue) - q->opacity=TransparentOpacity; - else - q->opacity=OpaqueOpacity; -@@ -2714,7 +2785,7 @@ static Image *ReadOnePNGImage(MngInfo *m - mng_info->ob[object_id]->interlace_method=interlace_method; - mng_info->ob[object_id]->compression_method=compression_method; - mng_info->ob[object_id]->filter_method=filter_method; -- if (ping_info->valid & PNG_INFO_PLTE) -+ if (png_get_valid(ping, ping_info, PNG_INFO_PLTE)) - { - int - number_colors; -@@ -5734,7 +5805,7 @@ static Image *ReadMNGImage(const ImageIn - (void) LogMagickEvent(CoderEvent,GetMagickModule(),"exit ReadMNGImage()"); - return(image); - } --#else /* PNG_LIBPNG_VER > 95 */ -+#else /* PNG_LIBPNG_VER > 10011 */ - static Image *ReadPNGImage(const ImageInfo *image_info, - ExceptionInfo *exception) - { -@@ -5749,7 +5820,7 @@ static Image *ReadMNGImage(const ImageIn - { - return (ReadPNGImage(image_info,exception)); - } --#endif /* PNG_LIBPNG_VER > 95 */ -+#endif /* PNG_LIBPNG_VER > 10011 */ - #endif - - /* -@@ -5960,7 +6031,7 @@ ModuleExport void UnregisterPNGImage(voi - } - - #if defined(HasPNG) --#if PNG_LIBPNG_VER > 95 -+#if PNG_LIBPNG_VER > 10011 - /* - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % % -@@ -6043,20 +6114,6 @@ ModuleExport void UnregisterPNGImage(voi - */ - - --#if (PNG_LIBPNG_VER > 99 && PNG_LIBPNG_VER < 10007) --/* This function became available in libpng version 1.0.6g. */ --static void --png_set_compression_buffer_size(png_structp png_ptr, png_uint_32 size) --{ -- if (png_ptr->zbuf) -- png_free(png_ptr, png_ptr->zbuf); png_ptr->zbuf=NULL; -- png_ptr->zbuf_size=(png_size_t) size; -- png_ptr->zbuf=(png_bytep) png_malloc(png_ptr, size); -- if (!png_ptr->zbuf) -- png_error(png_ptr,"Unable to allocate zbuf"); --} --#endif -- - static void - png_write_raw_profile(const ImageInfo *image_info,png_struct *ping, - png_info *ping_info, const char *profile_type, -@@ -6064,7 +6121,6 @@ png_write_raw_profile(const ImageInfo *i - const unsigned char *profile_data, - png_uint_32 length) - { --#if (PNG_LIBPNG_VER > 10005) - png_textp - text; - -@@ -6083,25 +6139,12 @@ png_write_raw_profile(const ImageInfo *i - - unsigned char - hex[16]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; --#endif - --#if (PNG_LIBPNG_VER <= 10005) -- if (image_info->verbose) -- (void) printf("Not "); -- (void) image_info; -- (void) ping; -- (void) ping_info; -- (void) profile_type; -- (void) profile_description; -- (void) profile_data; -- (void) length; --#endif - if (image_info->verbose) - { - (void) printf("writing raw profile: type=%.1024s, length=%lu\n", - profile_type, (unsigned long)length); - } --#if (PNG_LIBPNG_VER > 10005) - text=(png_textp) png_malloc(ping,(png_uint_32) sizeof(png_text)); - description_length=strlen((const char *) profile_description); - allocated_length=(png_uint_32) (length*2 + (length >> 5) + 20 -@@ -6137,7 +6180,6 @@ png_write_raw_profile(const ImageInfo *i - png_free(ping,text[0].text); - png_free(ping,text[0].key); - png_free(ping,text); --#endif - } - - static MagickPassFail WriteOnePNGImage(MngInfo *mng_info, -@@ -6152,17 +6194,34 @@ static MagickPassFail WriteOnePNGImage(M - - int - num_passes, -- pass; -+ pass, -+ ping_bit_depth = 0, -+ ping_colortype = 0, -+ ping_interlace_method = 0, -+ ping_compression_method = 0, -+ ping_filter_method = 0, -+ ping_num_trans = 0; -+ -+ png_bytep -+ ping_trans_alpha = NULL; - - png_colorp - palette; - -+ png_color_16 -+ ping_background, -+ ping_trans_color; -+ - png_info - *ping_info; - - png_struct - *ping; - -+ png_uint_32 -+ ping_width, -+ ping_height; -+ - long - y; - -@@ -6181,8 +6240,7 @@ static MagickPassFail WriteOnePNGImage(M - image_depth, - image_matte, - logging, -- matte, -- not_valid; -+ matte; - - unsigned long - quantum_size, /* depth for ExportImage */ -@@ -6211,6 +6269,18 @@ static MagickPassFail WriteOnePNGImage(M - return MagickFail; - } - -+ /* Initialize some stuff */ -+ ping_background.red = 0; -+ ping_background.green = 0; -+ ping_background.blue = 0; -+ ping_background.gray = 0; -+ ping_background.index = 0; -+ -+ ping_trans_color.red=0; -+ ping_trans_color.green=0; -+ ping_trans_color.blue=0; -+ ping_trans_color.gray=0; -+ - image_colors=image->colors; - image_depth=image->depth; - image_matte=image->matte; -@@ -6259,7 +6329,7 @@ static MagickPassFail WriteOnePNGImage(M - LockSemaphoreInfo(png_semaphore); - #endif - -- if (setjmp(ping->jmpbuf)) -+ if (setjmp(png_jmpbuf(ping))) - { - /* - PNG write failed. -@@ -6288,16 +6358,16 @@ static MagickPassFail WriteOnePNGImage(M - # endif - #endif - x=0; -- ping_info->width=image->columns; -- ping_info->height=image->rows; -+ ping_width=image->columns; -+ ping_height=image->rows; - if (logging) - { - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " width=%lu", -- (unsigned long)ping_info->width); -+ (unsigned long)ping_width); - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " height=%lu", -- (unsigned long)ping_info->height); -+ (unsigned long)ping_height); - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " image->depth=%u",image_depth); - } -@@ -6306,12 +6376,12 @@ static MagickPassFail WriteOnePNGImage(M - quantum_size=(image_depth > 8) ? 16:8; - - save_image_depth=image_depth; -- ping_info->bit_depth=(png_byte) save_image_depth; -+ ping_bit_depth=(png_byte) save_image_depth; - if (logging) - { - (void) LogMagickEvent(CoderEvent,GetMagickModule(), -- " ping_info->bit_depth=%u", -- ping_info->bit_depth); -+ " ping_bit_depth=%u", -+ ping_bit_depth); - } - #if defined(PNG_pHYs_SUPPORTED) - if ((image->x_resolution != 0) && (image->y_resolution != 0) && -@@ -6398,8 +6468,8 @@ static MagickPassFail WriteOnePNGImage(M - matte=image_matte; - if (mng_info->write_png8) - { -- ping_info->color_type=PNG_COLOR_TYPE_PALETTE; -- ping_info->bit_depth=8; -+ ping_colortype=PNG_COLOR_TYPE_PALETTE; -+ ping_bit_depth=8; - { - /* TO DO: make this a function cause it's used twice, except - for reducing the sample depth from 8. */ -@@ -6424,13 +6494,13 @@ static MagickPassFail WriteOnePNGImage(M - " Colors quantized to %ld", - number_colors); - } -- if (matte) -- ping_info->valid|=PNG_INFO_tRNS; -+ - /* - Set image palette. - */ -- ping_info->color_type=PNG_COLOR_TYPE_PALETTE; -- ping_info->valid|=PNG_INFO_PLTE; -+ -+ ping_colortype=PNG_COLOR_TYPE_PALETTE; -+ - #if defined(PNG_SORT_PALETTE) - save_number_colors=image_colors; - if (CompressColormapTransFirst(image) == MagickFail) -@@ -6465,20 +6535,17 @@ static MagickPassFail WriteOnePNGImage(M - - } - png_set_PLTE(ping,ping_info,palette,(int) number_colors); --#if (PNG_LIBPNG_VER > 10008) - MagickFreeMemory(palette); --#endif - /* - Identify which colormap entry is transparent. - */ -- ping_info->trans_alpha=MagickAllocateMemory(unsigned char *, -- number_colors); -- if (ping_info->trans_alpha == (unsigned char *) NULL) -+ ping_trans_alpha=MagickAllocateMemory(unsigned char *, number_colors); -+ if (ping_trans_alpha == (unsigned char *) NULL) - ThrowWriterException(ResourceLimitError,MemoryAllocationFailed, - image); - assert(number_colors <= 256); - for (i=0; i < (long) number_colors; i++) -- ping_info->trans_alpha[i]=255; -+ ping_trans_alpha[i]=255; - for (y=0; y < (long) image->rows; y++) - { - register const PixelPacket -@@ -6498,29 +6565,29 @@ static MagickPassFail WriteOnePNGImage(M - - index=indexes[x]; - assert((unsigned long) index < number_colors); -- ping_info->trans_alpha[index]=(png_byte) (255- -+ ping_trans_alpha[index]=(png_byte) (255- - ScaleQuantumToChar(p->opacity)); - } - p++; - } - } -- ping_info->num_trans=0; -+ ping_num_trans=0; - for (i=0; i < (long) number_colors; i++) -- if (ping_info->trans_alpha[i] != 255) -- ping_info->num_trans=(unsigned short) (i+1); -- if (ping_info->num_trans == 0) -- ping_info->valid&=(~PNG_INFO_tRNS); -- if (!(ping_info->valid & PNG_INFO_tRNS)) -- ping_info->num_trans=0; -- if (ping_info->num_trans == 0) -- MagickFreeMemory(ping_info->trans_alpha); -+ if (ping_trans_alpha[i] != 255) -+ ping_num_trans=(unsigned short) (i+1); -+ if (ping_num_trans == 0) -+ png_set_invalid(ping,ping_info,PNG_INFO_tRNS); -+ if (!(png_get_valid(ping,ping_info,PNG_INFO_tRNS))) -+ ping_num_trans=0; -+ if (ping_num_trans == 0) -+ MagickFreeMemory(ping_trans_alpha); - /* - Identify which colormap entry is the background color. - */ - for (i=0; i < (long) Max(number_colors-1,1); i++) -- if (RGBColorMatchExact(ping_info->background,image->colormap[i])) -+ if (RGBColorMatchExact(ping_background,image->colormap[i])) - break; -- ping_info->background.index=(png_uint_16) i; -+ ping_background.index=(png_uint_16) i; - } - if (image_matte) - { -@@ -6530,79 +6597,79 @@ static MagickPassFail WriteOnePNGImage(M - else if (mng_info->write_png24) - { - image_matte=MagickFalse; -- ping_info->color_type=PNG_COLOR_TYPE_RGB; -+ ping_colortype=PNG_COLOR_TYPE_RGB; - } - else if (mng_info->write_png32) - { - image_matte=MagickTrue; -- ping_info->color_type=PNG_COLOR_TYPE_RGB_ALPHA; -+ ping_colortype=PNG_COLOR_TYPE_RGB_ALPHA; - } - else - { -- if (ping_info->bit_depth < 8) -- ping_info->bit_depth=8; -+ if (ping_bit_depth < 8) -+ ping_bit_depth=8; - -- ping_info->color_type=PNG_COLOR_TYPE_RGB; -+ ping_colortype=PNG_COLOR_TYPE_RGB; - if (characteristics.monochrome) - { - if (characteristics.opaque) - { -- ping_info->color_type=PNG_COLOR_TYPE_GRAY; -- ping_info->bit_depth=1; -+ ping_colortype=PNG_COLOR_TYPE_GRAY; -+ ping_bit_depth=1; - } - else - { -- ping_info->color_type=PNG_COLOR_TYPE_GRAY_ALPHA; -+ ping_colortype=PNG_COLOR_TYPE_GRAY_ALPHA; - } - } - else if (characteristics.grayscale) - { - if (characteristics.opaque) -- ping_info->color_type=PNG_COLOR_TYPE_GRAY; -+ ping_colortype=PNG_COLOR_TYPE_GRAY; - else -- ping_info->color_type=PNG_COLOR_TYPE_GRAY_ALPHA; -+ ping_colortype=PNG_COLOR_TYPE_GRAY_ALPHA; - } - else if (characteristics.palette && image_colors <= 256) - { -- ping_info->color_type=PNG_COLOR_TYPE_PALETTE; -- ping_info->bit_depth=8; -+ ping_colortype=PNG_COLOR_TYPE_PALETTE; -+ ping_bit_depth=8; - mng_info->IsPalette=MagickTrue; - } - else - { - if (characteristics.opaque) -- ping_info->color_type=PNG_COLOR_TYPE_RGB; -+ ping_colortype=PNG_COLOR_TYPE_RGB; - else -- ping_info->color_type=PNG_COLOR_TYPE_RGB_ALPHA; -+ ping_colortype=PNG_COLOR_TYPE_RGB_ALPHA; - } - if (image_info->type == BilevelType) - { - if (characteristics.monochrome) - { - if (!image_matte) -- ping_info->bit_depth=1; -+ ping_bit_depth=1; - } - } - if (image_info->type == GrayscaleType) -- ping_info->color_type=PNG_COLOR_TYPE_GRAY; -+ ping_colortype=PNG_COLOR_TYPE_GRAY; - if (image_info->type == GrayscaleMatteType) -- ping_info->color_type=PNG_COLOR_TYPE_GRAY_ALPHA; -+ ping_colortype=PNG_COLOR_TYPE_GRAY_ALPHA; - /* if (!mng_info->optimize && matte) */ -- /* ping_info->color_type=PNG_COLOR_TYPE_RGB_ALPHA; */ -+ /* ping_colortype=PNG_COLOR_TYPE_RGB_ALPHA; */ - - if (logging) - { - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " Tentative PNG color type: %s (%d)", -- PngColorTypeToString(ping_info->color_type), -- ping_info->color_type); -+ PngColorTypeToString(ping_colortype), -+ ping_colortype); - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " image_info->type: %d",image_info->type); - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " image->depth: %u",image_depth); - (void) LogMagickEvent(CoderEvent,GetMagickModule(), -- " ping_info->bit_depth: %d", -- ping_info->bit_depth); -+ " ping_bit_depth: %d", -+ ping_bit_depth); - } - - if (matte && (mng_info->optimize || mng_info->IsPalette)) -@@ -6614,10 +6681,10 @@ static MagickPassFail WriteOnePNGImage(M - { - /* - No transparent pixels are present. Change 4 or 6 to 0 or 2, -- and do not set the PNG_INFO_tRNS flag in ping_info->valid. -+ and do not set the PNG_INFO_tRNS flag. - */ - image_matte=MagickFalse; -- ping_info->color_type&=0x03; -+ ping_colortype&=0x03; - } - else - { -@@ -6625,13 +6692,13 @@ static MagickPassFail WriteOnePNGImage(M - mask; - - mask=0xffff; -- if (ping_info->bit_depth == 8) -+ if (ping_bit_depth == 8) - mask=0x00ff; -- if (ping_info->bit_depth == 4) -+ if (ping_bit_depth == 4) - mask=0x000f; -- if (ping_info->bit_depth == 2) -+ if (ping_bit_depth == 2) - mask=0x0003; -- if (ping_info->bit_depth == 1) -+ if (ping_bit_depth == 1) - mask=0x0001; - - /* -@@ -6655,19 +6722,20 @@ static MagickPassFail WriteOnePNGImage(M - if ((p != (const PixelPacket *) NULL) && - (p->opacity != OpaqueOpacity)) - { -- ping_info->valid|=PNG_INFO_tRNS; -- ping_info->trans_color.red=ScaleQuantumToShort(p->red)&mask; -- ping_info->trans_color.green=ScaleQuantumToShort(p->green) -+ ping_trans_color.red=ScaleQuantumToShort(p->red)&mask; -+ ping_trans_color.green=ScaleQuantumToShort(p->green) - &mask; -- ping_info->trans_color.blue=ScaleQuantumToShort(p->blue) -+ ping_trans_color.blue=ScaleQuantumToShort(p->blue) - &mask; -- ping_info->trans_color.gray= -+ ping_trans_color.gray= - (png_uint_16) ScaleQuantumToShort(PixelIntensity(p))&mask; -- ping_info->trans_color.index=(unsigned char) -+ ping_trans_color.index=(unsigned char) - (ScaleQuantumToChar(MaxRGB-p->opacity)); -+ (void) png_set_tRNS(ping, ping_info, NULL, 0, -+ &ping_trans_color); - } - } -- if (ping_info->valid & PNG_INFO_tRNS) -+ if (png_get_valid(ping, ping_info, PNG_INFO_tRNS)) - { - /* - Determine if there is one and only one transparent color -@@ -6684,7 +6752,7 @@ static MagickPassFail WriteOnePNGImage(M - { - if (p->opacity != OpaqueOpacity) - { -- if (!RGBColorMatchExact(ping_info->trans_color,*p)) -+ if (!RGBColorMatchExact(ping_trans_color,*p)) - { - break; /* Can't use RGB + tRNS for multiple - transparent colors. */ -@@ -6697,7 +6765,7 @@ static MagickPassFail WriteOnePNGImage(M - } - else - { -- if (RGBColorMatchExact(ping_info->trans_color,*p)) -+ if (RGBColorMatchExact(ping_trans_color,*p)) - break; /* Can't use RGB + tRNS when another pixel - having the same RGB samples is - transparent. */ -@@ -6708,50 +6776,50 @@ static MagickPassFail WriteOnePNGImage(M - break; - } - if (x != 0) -- ping_info->valid&=(~PNG_INFO_tRNS); -+ png_set_invalid(ping, ping_info, PNG_INFO_tRNS); - } -- if (ping_info->valid & PNG_INFO_tRNS) -+ if (png_get_valid(ping, ping_info, PNG_INFO_tRNS)) - { -- ping_info->color_type &= 0x03; /* changes 4 or 6 to 0 or 2 */ -+ ping_colortype &= 0x03; /* changes 4 or 6 to 0 or 2 */ - if (image_depth == 8) - { -- ping_info->trans_color.red&=0xff; -- ping_info->trans_color.green&=0xff; -- ping_info->trans_color.blue&=0xff; -- ping_info->trans_color.gray&=0xff; -+ ping_trans_color.red&=0xff; -+ ping_trans_color.green&=0xff; -+ ping_trans_color.blue&=0xff; -+ ping_trans_color.gray&=0xff; - } - } - } - matte=image_matte; -- if (ping_info->valid & PNG_INFO_tRNS) -+ if (png_get_valid(ping, ping_info, PNG_INFO_tRNS)) - image_matte=MagickFalse; - if ((mng_info->optimize || mng_info->IsPalette) && - characteristics.grayscale && (!image_matte || image_depth >= 8)) - { - if (image_matte) -- ping_info->color_type=PNG_COLOR_TYPE_GRAY_ALPHA; -+ ping_colortype=PNG_COLOR_TYPE_GRAY_ALPHA; - else - { -- ping_info->color_type=PNG_COLOR_TYPE_GRAY; -+ ping_colortype=PNG_COLOR_TYPE_GRAY; - if (save_image_depth == 16 && image_depth == 8) -- ping_info->trans_color.gray*=0x0101; -+ ping_trans_color.gray*=0x0101; - } - if (image_depth > QuantumDepth) - image_depth=QuantumDepth; - if (image_colors == 0 || image_colors-1 > MaxRGB) - image_colors=1 << image_depth; - if (image_depth > 8) -- ping_info->bit_depth=16; -+ ping_bit_depth=16; - else - { -- if (ping_info->color_type == PNG_COLOR_TYPE_PALETTE) -+ if (ping_colortype == PNG_COLOR_TYPE_PALETTE) - { -- ping_info->bit_depth=1; -- while ((int) (1 << ping_info->bit_depth) < -+ ping_bit_depth=1; -+ while ((int) (1 << ping_bit_depth) < - (long) image_colors) -- ping_info->bit_depth <<= 1; -+ ping_bit_depth <<= 1; - } -- else if (mng_info->optimize && ping_info->color_type == -+ else if (mng_info->optimize && ping_colortype == - PNG_COLOR_TYPE_GRAY && image_colors < 17 && - mng_info->IsPalette) - { -@@ -6779,11 +6847,11 @@ static MagickPassFail WriteOnePNGImage(M - depth_1_ok=MagickFalse; - } - if (depth_1_ok) -- ping_info->bit_depth=1; -+ ping_bit_depth=1; - else if (depth_2_ok) -- ping_info->bit_depth=2; -+ ping_bit_depth=2; - else if (depth_4_ok) -- ping_info->bit_depth=4; -+ ping_bit_depth=4; - } - } - } -@@ -6796,13 +6864,10 @@ static MagickPassFail WriteOnePNGImage(M - number_colors; - - number_colors=image_colors; -- if (matte) -- ping_info->valid|=PNG_INFO_tRNS; - /* - Set image palette. - */ -- ping_info->color_type=PNG_COLOR_TYPE_PALETTE; -- ping_info->valid|=PNG_INFO_PLTE; -+ ping_colortype=PNG_COLOR_TYPE_PALETTE; - if (mng_info->have_write_global_plte && !matte) - { - png_set_PLTE(ping,ping_info,NULL,0); -@@ -6847,14 +6912,12 @@ static MagickPassFail WriteOnePNGImage(M - " Setting up PLTE chunk with %d colors", - (int) number_colors); - png_set_PLTE(ping,ping_info,palette,(int) number_colors); --#if (PNG_LIBPNG_VER > 10008) - MagickFreeMemory(palette); --#endif - } -- ping_info->bit_depth=1; -- while ((1UL << ping_info->bit_depth) < number_colors) -- ping_info->bit_depth <<= 1; -- ping_info->num_trans=0; -+ ping_bit_depth=1; -+ while ((1UL << ping_bit_depth) < number_colors) -+ ping_bit_depth <<= 1; -+ ping_num_trans=0; - if (matte) - { - int -@@ -6890,7 +6953,7 @@ static MagickPassFail WriteOnePNGImage(M - if (trans_alpha[index] != (png_byte) (255- - ScaleQuantumToChar(p->opacity))) - { -- ping_info->color_type= -+ ping_colortype= - PNG_COLOR_TYPE_RGB_ALPHA; - break; - } -@@ -6900,11 +6963,11 @@ static MagickPassFail WriteOnePNGImage(M - } - p++; - } -- if (ping_info->color_type==PNG_COLOR_TYPE_RGB_ALPHA) -+ if (ping_colortype==PNG_COLOR_TYPE_RGB_ALPHA) - { -- ping_info->num_trans=0; -- ping_info->valid&=(~PNG_INFO_tRNS); -- ping_info->valid&=(~PNG_INFO_PLTE); -+ ping_num_trans=0; -+ png_set_invalid(ping, ping_info, PNG_INFO_tRNS); -+ png_set_invalid(ping, ping_info, PNG_INFO_PLTE); - mng_info->IsPalette=MagickFalse; - (void) SyncImage(image); - if (logging) -@@ -6916,40 +6979,41 @@ static MagickPassFail WriteOnePNGImage(M - break; - } - } -- if ((ping_info->valid & PNG_INFO_tRNS)) -+ if (png_get_valid(ping, ping_info, PNG_INFO_tRNS)) - { - for (i=0; i < (long) number_colors; i++) - { - if (trans_alpha[i] == 256) - trans_alpha[i]=255; - if (trans_alpha[i] != 255) -- ping_info->num_trans=(unsigned short) (i+1); -+ ping_num_trans=(unsigned short) (i+1); - } - } -- if (ping_info->num_trans == 0) -- ping_info->valid&=(~PNG_INFO_tRNS); -- if (!(ping_info->valid & PNG_INFO_tRNS)) -- ping_info->num_trans=0; -- if (ping_info->num_trans != 0) -+ if (ping_num_trans == 0) -+ png_set_invalid(ping, ping_info, PNG_INFO_tRNS); -+ if (!png_get_valid(ping, ping_info, PNG_INFO_tRNS)) -+ ping_num_trans=0; -+ -+ if (ping_num_trans != 0) - { -- ping_info->trans_alpha=MagickAllocateMemory( -- unsigned char *, number_colors); -- if (ping_info->trans_alpha == (unsigned char *) NULL) -- ThrowWriterException(ResourceLimitError, -- MemoryAllocationFailed,image); -- for (i=0; i < (long) number_colors; i++) -- ping_info->trans_alpha[i]=(png_byte) trans_alpha[i]; -+ for (i=0; i<256; i++) -+ ping_trans_alpha[i]=(png_byte) trans_alpha[i]; - } -+ -+ (void) png_set_tRNS(ping, ping_info, -+ ping_trans_alpha, -+ ping_num_trans, -+ &ping_trans_color); - } - - /* - Identify which colormap entry is the background color. - */ - for (i=0; i < (long) Max(number_colors-1,1); i++) -- if (RGBColorMatchExact(ping_info->background, -+ if (RGBColorMatchExact(ping_background, - image->colormap[i])) - break; -- ping_info->background.index=(png_uint_16) i; -+ ping_background.index=(png_uint_16) i; - } - } - else -@@ -6958,10 +7022,10 @@ static MagickPassFail WriteOnePNGImage(M - image_depth=8; - if ((save_image_depth == 16) && (image_depth == 8)) - { -- ping_info->trans_color.red*=0x0101; -- ping_info->trans_color.green*=0x0101; -- ping_info->trans_color.blue*=0x0101; -- ping_info->trans_color.gray*=0x0101; -+ ping_trans_color.red*=0x0101; -+ ping_trans_color.green*=0x0101; -+ ping_trans_color.blue*=0x0101; -+ ping_trans_color.gray*=0x0101; - } - } - -@@ -6969,7 +7033,7 @@ static MagickPassFail WriteOnePNGImage(M - Adjust background and transparency samples in sub-8-bit - grayscale files. - */ -- if (ping_info->bit_depth < 8 && ping_info->color_type == -+ if (ping_bit_depth < 8 && ping_colortype == - PNG_COLOR_TYPE_GRAY) - { - png_uint_16 -@@ -6978,7 +7042,7 @@ static MagickPassFail WriteOnePNGImage(M - png_color_16 - background; - -- maxval=(1 << ping_info->bit_depth)-1; -+ maxval=(1 << ping_bit_depth)-1; - - - background.gray=(png_uint_16) -@@ -6989,28 +7053,26 @@ static MagickPassFail WriteOnePNGImage(M - " Setting up bKGD chunk"); - png_set_bKGD(ping,ping_info,&background); - -- ping_info->trans_color.gray=(png_uint_16)(maxval* -- ping_info->trans_color.gray/ -- MaxRGB); -+ ping_trans_color.gray=(png_uint_16)(maxval* -+ ping_trans_color.gray/ -+ MaxRGB); - } - } - if (logging) - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " PNG color type: %s (%d)", -- PngColorTypeToString(ping_info->color_type), -- ping_info->color_type); -+ PngColorTypeToString(ping_colortype), -+ ping_colortype); - /* - Initialize compression level and filtering. - */ - if (logging) - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " Setting up deflate compression"); --#if (PNG_LIBPNG_VER > 99) - if (logging) - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " Compression buffer size: 32768"); - png_set_compression_buffer_size(ping,32768L); --#endif - if (logging) - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " Compression mem level: 9"); -@@ -7044,7 +7106,7 @@ static MagickPassFail WriteOnePNGImage(M - if (logging) - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " Filter_type: PNG_INTRAPIXEL_DIFFERENCING"); -- ping_info->filter_type=PNG_INTRAPIXEL_DIFFERENCING; -+ ping_filter_method=PNG_INTRAPIXEL_DIFFERENCING; - } - else - if (logging) -@@ -7061,8 +7123,8 @@ static MagickPassFail WriteOnePNGImage(M - if ((image_info->quality % 10) != 5) - base_filter=(int) image_info->quality % 10; - else -- if ((ping_info->color_type == PNG_COLOR_TYPE_GRAY) || -- (ping_info->color_type == PNG_COLOR_TYPE_PALETTE) || -+ if ((ping_colortype == PNG_COLOR_TYPE_GRAY) || -+ (ping_colortype == PNG_COLOR_TYPE_PALETTE) || - (image_info->quality < 50)) - base_filter=PNG_NO_FILTERS; - else -@@ -7099,7 +7161,7 @@ static MagickPassFail WriteOnePNGImage(M - { - if (LocaleCompare(profile_name,"ICM") == 0) - { --#if (PNG_LIBPNG_VER > 10008) && defined(PNG_WRITE_iCCP_SUPPORTED) -+#if defined(PNG_WRITE_iCCP_SUPPORTED) - { - if (logging) - (void) LogMagickEvent(CoderEvent,GetMagickModule(), -@@ -7170,8 +7232,8 @@ static MagickPassFail WriteOnePNGImage(M - (void) png_set_sRGB(ping,ping_info,PerceptualIntent); - png_set_gAMA(ping,ping_info,0.45455); - } -- not_valid=(!ping_info->valid); -- if ((!mng_info->write_mng) || not_valid & PNG_INFO_sRGB) -+ if ((!mng_info->write_mng) || -+ !png_get_valid(ping, ping_info, PNG_INFO_sRGB)) - #endif - { - if (!mng_info->have_write_global_gama && (image->gamma != 0.0)) -@@ -7210,7 +7272,7 @@ static MagickPassFail WriteOnePNGImage(M - bp.x,bp.y); - } - } -- ping_info->interlace_type=(image_info->interlace == LineInterlace); -+ ping_interlace_method=(image_info->interlace == LineInterlace); - - if (mng_info->write_mng) - png_set_sig_bytes(ping,8); -@@ -7219,6 +7281,15 @@ static MagickPassFail WriteOnePNGImage(M - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " Writing PNG header chunks"); - -+ png_set_IHDR(ping,ping_info, -+ ping_width, -+ ping_height, -+ ping_bit_depth, -+ ping_colortype, -+ ping_interlace_method, -+ ping_compression_method, -+ ping_filter_method); -+ - png_write_info(ping,ping_info); - - #if (PNG_LIBPNG_VER == 10206) -@@ -7313,7 +7384,7 @@ static MagickPassFail WriteOnePNGImage(M - { - if ((!mng_info->write_png8 && !mng_info->write_png24 && - !mng_info->write_png32) && -- (!image_matte || (ping_info->bit_depth >= QuantumDepth)) && -+ (!image_matte || (ping_bit_depth >= QuantumDepth)) && - (mng_info->optimize || mng_info->IsPalette) && - IsGrayImage(image,&image->exception)) - { -@@ -7325,7 +7396,7 @@ static MagickPassFail WriteOnePNGImage(M - if (!AcquireImagePixels(image,0,y,image->columns,1, - &image->exception)) - break; -- if (ping_info->color_type == PNG_COLOR_TYPE_GRAY) -+ if (ping_colortype == PNG_COLOR_TYPE_GRAY) - { - if (mng_info->IsPalette) - (void) ExportImagePixelArea(image, -@@ -7368,14 +7439,14 @@ static MagickPassFail WriteOnePNGImage(M - " pass %d, Image Is RGB," - " PNG colortype is %s (%d)",pass, - PngColorTypeToString( -- ping_info->color_type), -- ping_info->color_type); -+ ping_colortype), -+ ping_colortype); - for (y=0; y < (long) image->rows; y++) - { - if (!AcquireImagePixels(image,0,y,image->columns,1, - &image->exception)) - break; -- if (ping_info->color_type == PNG_COLOR_TYPE_GRAY) -+ if (ping_colortype == PNG_COLOR_TYPE_GRAY) - { - if (image->storage_class == DirectClass) - (void) ExportImagePixelArea(image,(QuantumType) -@@ -7388,7 +7459,7 @@ static MagickPassFail WriteOnePNGImage(M - quantum_size, - png_pixels,0,0); - } -- else if (ping_info->color_type == -+ else if (ping_colortype == - PNG_COLOR_TYPE_GRAY_ALPHA) - (void) ExportImagePixelArea(image,(QuantumType) - GrayAlphaQuantum, -@@ -7433,12 +7504,12 @@ static MagickPassFail WriteOnePNGImage(M - if (!AcquireImagePixels(image,0,y,image->columns,1, - &image->exception)) - break; -- if (ping_info->color_type == PNG_COLOR_TYPE_GRAY) -+ if (ping_colortype == PNG_COLOR_TYPE_GRAY) - (void) ExportImagePixelArea(image,(QuantumType) - GrayQuantum, - quantum_size, - png_pixels,0,0); -- else if (ping_info->color_type == -+ else if (ping_colortype == - PNG_COLOR_TYPE_GRAY_ALPHA) - (void) ExportImagePixelArea(image,(QuantumType) - GrayAlphaQuantum, -@@ -7471,38 +7542,32 @@ static MagickPassFail WriteOnePNGImage(M - " Writing PNG image data"); - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " Width: %lu", -- (unsigned long)ping_info->width); -+ (unsigned long)ping_width); - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " Height: %lu", -- (unsigned long)ping_info->height); -+ (unsigned long)ping_height); - (void) LogMagickEvent(CoderEvent,GetMagickModule(), -- " PNG sample depth: %d",ping_info->bit_depth); -+ " PNG sample depth: %d",ping_bit_depth); - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " PNG color type: %s (%d)", -- PngColorTypeToString(ping_info->color_type), -- ping_info->color_type); -+ PngColorTypeToString(ping_colortype), -+ ping_colortype); - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " PNG Interlace method: %d", -- ping_info->interlace_type); -+ ping_interlace_method); - } - /* - Generate text chunks. - */ --#if (PNG_LIBPNG_VER <= 10005) -- ping_info->num_text=0; --#endif - attribute=GetImageAttribute(image,(char *) NULL); - for ( ; attribute != (const ImageAttribute *) NULL; - attribute=attribute->next) - { --#if (PNG_LIBPNG_VER > 10005) - png_textp - text; --#endif - - if (*attribute->key == '[') - continue; --#if (PNG_LIBPNG_VER > 10005) - text=(png_textp) png_malloc(ping,(png_uint_32) sizeof(png_text)); - text[0].key=attribute->key; - text[0].text=attribute->value; -@@ -7519,40 +7584,6 @@ static MagickPassFail WriteOnePNGImage(M - } - png_set_text(ping,ping_info,text,1); - png_free(ping,text); --#else -- /* Work directly with ping_info struct; -- * png_set_text before libpng version -- * 1.0.5a is leaky */ -- if (ping_info->num_text == 0) -- { -- ping_info->text=MagickAllocateMemory(png_text *, -- 256*sizeof(png_text)); -- if (ping_info->text == (png_text *) NULL) -- (void) ThrowException(&image->exception,(ExceptionType) -- ResourceLimitError,MemoryAllocationFailed, -- image->filename); -- } -- i=ping_info->num_text++; -- if (i > 255) -- (void) ThrowException(&image->exception,(ExceptionType) -- ResourceLimitError, -- "Cannot write more than 256 PNG text chunks", -- image->filename); -- ping_info->text[i].key=attribute->key; -- ping_info->text[i].text=attribute->value; -- ping_info->text[i].text_length=strlen(attribute->value); -- ping_info->text[i].compression= -- image_info->compression == NoCompression || -- (image_info->compression == UndefinedCompression && -- ping_info->text[i].text_length < 128) ? -1 : 0; -- if (logging) -- { -- (void) LogMagickEvent(CoderEvent,GetMagickModule(), -- " Setting up text chunk"); -- (void) LogMagickEvent(CoderEvent,GetMagickModule(), -- " keyword: %s",ping_info->text[i].key); -- } --#endif - } - if (logging) - (void) LogMagickEvent(CoderEvent,GetMagickModule(), -@@ -7560,9 +7591,9 @@ static MagickPassFail WriteOnePNGImage(M - png_write_end(ping,ping_info); - if (mng_info->need_fram && (int) image->dispose == BackgroundDispose) - { -- if (mng_info->page.x || mng_info->page.y || (ping_info->width != -+ if (mng_info->page.x || mng_info->page.y || (ping_width != - mng_info->page.width) || -- (ping_info->height != mng_info->page.height)) -+ (ping_height != mng_info->page.height)) - { - unsigned char - chunk[32]; -@@ -7583,10 +7614,10 @@ static MagickPassFail WriteOnePNGImage(M - chunk[14]=0; /* clipping boundaries delta type */ - PNGLong(chunk+15,(png_uint_32) (mng_info->page.x)); /* left cb */ - PNGLong(chunk+19,(png_uint_32) (mng_info->page.x + -- ping_info->width)); -+ ping_width)); - PNGLong(chunk+23,(png_uint_32) (mng_info->page.y)); /* top cb */ - PNGLong(chunk+27,(png_uint_32) (mng_info->page.y + -- ping_info->height)); -+ ping_height)); - (void) WriteBlob(image,31,(char *) chunk); - (void) WriteBlobMSBULong(image,crc32(0,chunk,31)); - mng_info->old_framing_mode=4; -@@ -7605,7 +7636,7 @@ static MagickPassFail WriteOnePNGImage(M - - /* Save depth actually written */ - -- s[0]=(char) ping_info->bit_depth; -+ s[0]=(char) ping_bit_depth; - s[1]='\0'; - - (void) SetImageAttribute(image,"[png:bit-depth-written]",s); -@@ -7613,18 +7644,6 @@ static MagickPassFail WriteOnePNGImage(M - /* - Free PNG resources. - */ --#if (PNG_LIBPNG_VER < 10007) -- if (ping_info->valid & PNG_INFO_PLTE) -- { -- MagickFreeMemory(ping_info->palette); -- ping_info->valid&=(~PNG_INFO_PLTE); -- } --#endif -- if (ping_info->valid & PNG_INFO_tRNS) -- { -- MagickFreeMemory(ping_info->trans_alpha); -- ping_info->valid&=(~PNG_INFO_tRNS); -- } - png_destroy_write_struct(&ping,&ping_info); - - MagickFreeMemory(png_pixels); -@@ -8365,23 +8384,12 @@ static unsigned int WriteMNGImage(const - final_delay=0, - initial_delay; - --#if (PNG_LIBPNG_VER < 10007) -+#if (PNG_LIBPNG_VER < 10200) - if (image_info->verbose) - printf("Your PNG library (libpng-%s) is rather old.\n", - PNG_LIBPNG_VER_STRING); - #endif - --#if (PNG_LIBPNG_VER >= 10400) --# ifndef PNG_TRANSFORM_GRAY_TO_RGB /* Added at libpng-1.4.0beta67 */ -- if (image_info->verbose) -- { -- printf("Your PNG library (libpng-%s) is an old beta version.\n", -- PNG_LIBPNG_VER_STRING); -- printf("Please update it.\n"); -- } --# endif --#endif -- - /* - Open image file. - */ -@@ -9196,7 +9204,7 @@ static unsigned int WriteMNGImage(const - (void) LogMagickEvent(CoderEvent,GetMagickModule(),"exit WriteMNGImage()"); - return(MagickPass); - } --#else /* PNG_LIBPNG_VER > 95 */ -+#else /* PNG_LIBPNG_VER > 10011 */ - static unsigned int WritePNGImage(const ImageInfo *image_info,Image *image) - { - image=image; -@@ -9208,5 +9216,5 @@ static unsigned int WriteMNGImage(const - { - return (WritePNGImage(image_info,image)); - } --#endif /* PNG_LIBPNG_VER > 95 */ -+#endif /* PNG_LIBPNG_VER > 10011 */ - #endif - \ No newline at end of file diff -r bad1e79c931f -r 115edae4e20e src/graphicsmagick.mk --- a/src/graphicsmagick.mk Fri Dec 23 14:30:32 2011 -0500 +++ b/src/graphicsmagick.mk Mon Dec 26 10:52:51 2011 +0100 @@ -4,8 +4,8 @@ # GraphicsMagick PKG := graphicsmagick $(PKG)_IGNORE := -$(PKG)_VERSION := 1.3.12 -$(PKG)_CHECKSUM := 6b8a414af162ad8679f2f04b10f128edc8ee3233 +$(PKG)_VERSION := 1.3.13 +$(PKG)_CHECKSUM := f1f9e88afbb9729513e8868f718e72e66226e556 $(PKG)_SUBDIR := GraphicsMagick-$($(PKG)_VERSION) $(PKG)_FILE := GraphicsMagick-$($(PKG)_VERSION).tar.bz2 $(PKG)_WEBSITE := http://www.graphicsmagick.org/