freebsd-ports/graphics/GraphicsMagick12/files/patch-coders__png.c
2012-06-01 05:26:28 +00:00

232 lines
9.9 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--- coders/png.c.orig 2010-01-06 23:01:31.000000000 +0100
+++ coders/png.c 2012-05-10 04:50:59.000000000 +0200
@@ -75,6 +75,7 @@
#if defined(HasPNG)
#include "png.h"
#include "zlib.h"
+#include "pngpriv.h"
#if PNG_LIBPNG_VER > 95
/*
@@ -1292,7 +1293,7 @@
" libpng-%.1024s error: %.1024s", PNG_LIBPNG_VER_STRING,
message);
(void) ThrowException2(&image->exception,CoderError,message,image->filename);
- longjmp(ping->jmpbuf,1);
+ longjmp(png_jmpbuf(ping),1);
}
static void PNGWarningHandler(png_struct *ping,png_const_charp message)
@@ -1593,7 +1594,7 @@
ThrowReaderException(ResourceLimitError,MemoryAllocationFailed,image);
}
png_pixels=(unsigned char *) NULL;
- if (setjmp(ping->jmpbuf))
+ if (setjmp(png_jmpbuf(ping)))
{
/*
PNG image is corrupt.
@@ -1955,13 +1956,13 @@
Image has a transparent background.
*/
transparent_color.red=
- (Quantum)(ping_info->trans_values.red & bit_mask);
+ (Quantum)(ping_info->trans_color.red & bit_mask);
transparent_color.green=
- (Quantum) (ping_info->trans_values.green & bit_mask);
+ (Quantum) (ping_info->trans_color.green & bit_mask);
transparent_color.blue=
- (Quantum) (ping_info->trans_values.blue & bit_mask);
+ (Quantum) (ping_info->trans_color.blue & bit_mask);
transparent_color.opacity=
- (Quantum) (ping_info->trans_values.gray & bit_mask);
+ (Quantum) (ping_info->trans_color.gray & bit_mask);
if (ping_info->color_type == PNG_COLOR_TYPE_GRAY)
{
transparent_color.red=transparent_color.opacity;
@@ -2469,7 +2470,7 @@
index=indexes[x];
if (index < ping_info->num_trans)
q->opacity=
- ScaleCharToQuantum(255-ping_info->trans[index]);
+ ScaleCharToQuantum(255-ping_info->trans_alpha[index]);
else
q->opacity=OpaqueOpacity;
q++;
@@ -6054,7 +6055,7 @@
AcquireSemaphoreInfo(&png_semaphore);
#endif
- if (setjmp(ping->jmpbuf))
+ if (setjmp(png_jmpbuf(ping)))
{
/*
PNG write failed.
@@ -6258,13 +6259,13 @@
/*
Identify which colormap entry is transparent.
*/
- ping_info->trans=MagickAllocateMemory(unsigned char *,number_colors);
- if (ping_info->trans == (unsigned char *) NULL)
+ ping_info->trans_alpha=MagickAllocateMemory(unsigned char *,number_colors);
+ if (ping_info->trans_alpha == (unsigned char *) NULL)
ThrowWriterException(ResourceLimitError,MemoryAllocationFailed,
image);
assert(number_colors <= 256);
for (i=0; i < (long) number_colors; i++)
- ping_info->trans[i]=255;
+ ping_info->trans_alpha[i]=255;
for (y=0; y < (long) image->rows; y++)
{
register const PixelPacket
@@ -6284,7 +6285,7 @@
index=indexes[x];
assert((unsigned long) index < number_colors);
- ping_info->trans[index]=(png_byte) (255-
+ ping_info->trans_alpha[index]=(png_byte) (255-
ScaleQuantumToChar(p->opacity));
}
p++;
@@ -6292,14 +6293,14 @@
}
ping_info->num_trans=0;
for (i=0; i < (long) number_colors; i++)
- if (ping_info->trans[i] != 255)
+ 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);
+ MagickFreeMemory(ping_info->trans_alpha);
/*
Identify which colormap entry is the background color.
*/
@@ -6441,12 +6442,12 @@
(p->opacity != OpaqueOpacity))
{
ping_info->valid|=PNG_INFO_tRNS;
- ping_info->trans_values.red=ScaleQuantumToShort(p->red)&mask;
- ping_info->trans_values.green=ScaleQuantumToShort(p->green)&mask;
- ping_info->trans_values.blue=ScaleQuantumToShort(p->blue)&mask;
- ping_info->trans_values.gray=
+ ping_info->trans_color.red=ScaleQuantumToShort(p->red)&mask;
+ ping_info->trans_color.green=ScaleQuantumToShort(p->green)&mask;
+ ping_info->trans_color.blue=ScaleQuantumToShort(p->blue)&mask;
+ ping_info->trans_color.gray=
(png_uint_16) ScaleQuantumToShort(PixelIntensity(p))&mask;
- ping_info->trans_values.index=(unsigned char)
+ ping_info->trans_color.index=(unsigned char)
(ScaleQuantumToChar(MaxRGB-p->opacity));
}
}
@@ -6467,7 +6468,7 @@
{
if (p->opacity != OpaqueOpacity)
{
- if (!RGBColorMatchExact(ping_info->trans_values,*p))
+ if (!RGBColorMatchExact(ping_info->trans_color,*p))
{
break; /* Can't use RGB + tRNS for multiple
transparent colors. */
@@ -6480,7 +6481,7 @@
}
else
{
- if (RGBColorMatchExact(ping_info->trans_values,*p))
+ if (RGBColorMatchExact(ping_info->trans_color,*p))
break; /* Can't use RGB + tRNS when another pixel
having the same RGB samples is
transparent. */
@@ -6498,10 +6499,10 @@
ping_info->color_type &= 0x03; /* changes 4 or 6 to 0 or 2 */
if (image->depth == 8)
{
- ping_info->trans_values.red&=0xff;
- ping_info->trans_values.green&=0xff;
- ping_info->trans_values.blue&=0xff;
- ping_info->trans_values.gray&=0xff;
+ ping_info->trans_color.red&=0xff;
+ ping_info->trans_color.green&=0xff;
+ ping_info->trans_color.blue&=0xff;
+ ping_info->trans_color.gray&=0xff;
}
}
}
@@ -6517,7 +6518,7 @@
{
ping_info->color_type=PNG_COLOR_TYPE_GRAY;
if (save_image_depth == 16 && image->depth == 8)
- ping_info->trans_values.gray*=0x0101;
+ ping_info->trans_color.gray*=0x0101;
}
if (image->depth > QuantumDepth)
image->depth=QuantumDepth;
@@ -6701,13 +6702,13 @@
ping_info->num_trans=0;
if (ping_info->num_trans != 0)
{
- ping_info->trans=MagickAllocateMemory(unsigned char *,
+ ping_info->trans_alpha=MagickAllocateMemory(unsigned char *,
number_colors);
- if (ping_info->trans == (unsigned char *) NULL)
+ if (ping_info->trans_alpha == (unsigned char *) NULL)
ThrowWriterException(ResourceLimitError,
MemoryAllocationFailed,image);
for (i=0; i < (long) number_colors; i++)
- ping_info->trans[i]=(png_byte) trans[i];
+ ping_info->trans_alpha[i]=(png_byte) trans[i];
}
}
@@ -6726,10 +6727,10 @@
image->depth=8;
if ((save_image_depth == 16) && (image->depth == 8))
{
- ping_info->trans_values.red*=0x0101;
- ping_info->trans_values.green*=0x0101;
- ping_info->trans_values.blue*=0x0101;
- ping_info->trans_values.gray*=0x0101;
+ ping_info->trans_color.red*=0x0101;
+ ping_info->trans_color.green*=0x0101;
+ ping_info->trans_color.blue*=0x0101;
+ ping_info->trans_color.gray*=0x0101;
}
}
@@ -6756,8 +6757,8 @@
" Setting up bKGD chunk");
png_set_bKGD(ping,ping_info,&background);
- ping_info->trans_values.gray=(png_uint_16)(maxval*
- ping_info->trans_values.gray/MaxRGB);
+ ping_info->trans_color.gray=(png_uint_16)(maxval*
+ ping_info->trans_color.gray/MaxRGB);
}
}
if (logging)
@@ -7332,7 +7333,7 @@
#endif
if (ping_info->valid & PNG_INFO_tRNS)
{
- MagickFreeMemory(ping_info->trans);
+ MagickFreeMemory(ping_info->trans_alpha);
ping_info->valid&=(~PNG_INFO_tRNS);
}
png_destroy_write_struct(&ping,&ping_info);
@@ -8416,10 +8416,10 @@
{
(void) LogMagickEvent(CoderEvent,GetMagickModule(),
" TERM delay: %lu",
- (png_uint_32) (mng_info->ticks_per_second*final_delay/100));
+ (uint64_t) (mng_info->ticks_per_second*final_delay/100));
if (image->iterations == 0)
(void) LogMagickEvent(CoderEvent,GetMagickModule(),
- " TERM iterations: %lu",PNG_MAX_UINT);
+ " TERM iterations: %lu", (uint64_t)PNG_MAX_UINT);
else
(void) LogMagickEvent(CoderEvent,GetMagickModule(),
" Image iterations: %lu",