summaryrefslogtreecommitdiffstats
path: root/src/graphicsmagick-2-libpng1.5.patch
diff options
context:
space:
mode:
Diffstat (limited to 'src/graphicsmagick-2-libpng1.5.patch')
-rw-r--r--src/graphicsmagick-2-libpng1.5.patch1986
1 files changed, 0 insertions, 1986 deletions
diff --git a/src/graphicsmagick-2-libpng1.5.patch b/src/graphicsmagick-2-libpng1.5.patch
deleted file mode 100644
index d28ca53..0000000
--- a/src/graphicsmagick-2-libpng1.5.patch
+++ /dev/null
@@ -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