[master] Added macros to detect use of deprecated features.

Added PNG_DEPSTRUCT, PNG_DEPRECATED, PNG_USE_RESULT, PNG_NORETURN, and
    PNG_ALLOCATED macros to detect deprecated direct access to the
    png_struct or info_struct members and other deprecated usage in
    applications (John Bowler).
  Added -DPNG_CONFIGURE_LIBPNG to the makefile CFLAGS, to prevent warnings
    about direct access to png structs by libpng functions while building
    libpng.
  Removed three direct references to read_info_ptr members in pngtest.c
    that were detected by the new PNG_DEPSTRUCT macro.
  Moved the png_debug macro definitions and the png_read_destroy(),
    png_write_destroy() and png_far_to_near() prototypes from png.h
    to pngpriv.h (John Bowler)
  Moved the synopsis lines for png_read_destroy(), png_write_destroy()
    png_debug(), png_debug1(), and png_debug2() from libpng.3 to libpngpf.3.
This commit is contained in:
Glenn Randers-Pehrson 2009-11-07 10:46:42 -06:00
parent 047c34b734
commit d29033f264
7 changed files with 436 additions and 355 deletions

View File

@ -605,13 +605,36 @@ version 1.4.0beta91 [November 3, 2009]
Patched ltmain.sh for wince support. Patched ltmain.sh for wince support.
Added PNG_CONVERT_tIME_SUPPORTED macro. Added PNG_CONVERT_tIME_SUPPORTED macro.
version 1.4.0beta92 [November 7, 2009] version 1.4.0beta92 [November 4, 2009]
Make inclusion of time.h in pngconf.h depend on PNG_CONVERT_tIME_SUPPORTED Make inclusion of time.h in pngconf.h depend on PNG_CONVERT_tIME_SUPPORTED
Make #define PNG_CONVERT_tIME_SUPPORTED depend on PNG_WRITE_tIME_SUPPORTED Make #define PNG_CONVERT_tIME_SUPPORTED depend on PNG_WRITE_tIME_SUPPORTED
Revised libpng*.txt to describe differences from 1.2.40 to 1.4.0 (instead Revised libpng*.txt to describe differences from 1.2.40 to 1.4.0 (instead
of from 1.2.41) of differences from 1.2.41 to 1.4.0)
version 1.4.0beta93 [November 7, 2009] version 1.4.0beta93 [November 7, 2009]
Added PNG_DEPSTRUCT, PNG_DEPRECATED, PNG_USE_RESULT, PNG_NORETURN, and
PNG_ALLOCATED macros to detect deprecated direct access to the
png_struct or info_struct members and other deprecated usage in
applications (John Bowler).
Added -DPNG_CONFIGURE_LIBPNG to the makefile CFLAGS, to prevent warnings
about direct access to png structs by libpng functions while building
libpng.
Updated scripts/makefile* to add "-DPNG_CONFIGURE_LIBPNG" to CFLAGS.
They need to be tested, especially those using compilers other than gcc.
Updated projects/visualc6 and visualc71 with "/d PNG_CONFIGURE_LIBPNG".
They should work but still need to be updated to remove
references to pnggccrd.c or pngvcrd.c and ASM building.
Added README.txt to the beos, cbuilder5, netware, and xcode projects warning
that they need to be updated, to remove references to pnggccrd.c and
pngvcrd.c and to depend on pngpriv.h
Removed three direct references to read_info_ptr members in pngtest.c
that were detected by the new PNG_DEPSTRUCT macro.
Moved the png_debug macro definitions and the png_read_destroy(),
png_write_destroy() and png_far_to_near() prototypes from png.h
to pngpriv.h (John Bowler)
Moved the synopsis lines for png_read_destroy(), png_write_destroy()
png_debug(), png_debug1(), and png_debug2() from libpng.3 to libpngpf.3.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit (subscription required; visit

24
CHANGES
View File

@ -2295,9 +2295,31 @@ version 1.4.0beta92 [November 4, 2009]
Make inclusion of time.h in pngconf.h depend on PNG_CONVERT_tIME_SUPPORTED Make inclusion of time.h in pngconf.h depend on PNG_CONVERT_tIME_SUPPORTED
Make #define PNG_CONVERT_tIME_SUPPORTED depend on PNG_WRITE_tIME_SUPPORTED Make #define PNG_CONVERT_tIME_SUPPORTED depend on PNG_WRITE_tIME_SUPPORTED
Revised libpng*.txt to describe differences from 1.2.40 to 1.4.0 (instead Revised libpng*.txt to describe differences from 1.2.40 to 1.4.0 (instead
of from 1.2.41) of differences from 1.2.41 to 1.4.0)
version 1.4.0beta93 [November 7, 2009] version 1.4.0beta93 [November 7, 2009]
Added PNG_DEPSTRUCT, PNG_DEPRECATED, PNG_USE_RESULT, PNG_NORETURN, and
PNG_ALLOCATED macros to detect deprecated direct access to the
png_struct or info_struct members and other deprecated usage in
applications (John Bowler).
Added -DPNG_CONFIGURE_LIBPNG to the makefile CFLAGS, to prevent warnings
about direct access to png structs by libpng functions while building
libpng.
Updated scripts/makefile* to add "-DPNG_CONFIGURE_LIBPNG" to CFLAGS.
They need to be tested, especially those using compilers other than gcc.
Updated projects/visualc6 and visualc71 with "/d PNG_CONFIGURE_LIBPNG".
They should work but still need to be updated to remove
references to pnggccrd.c or pngvcrd.c and ASM building.
Added README.txt to the beos, cbuilder5, netware, and xcode projects warning
that they need to be updated, to remove references to pnggccrd.c and
pngvcrd.c and to depend on pngpriv.h
Removed three direct references to read_info_ptr members in pngtest.c
that were detected by the new PNG_DEPSTRUCT macro.
Moved the png_debug macro definitions and the png_read_destroy(),
png_write_destroy() and png_far_to_near() prototypes from png.h
to pngpriv.h (John Bowler)
Moved the synopsis lines for png_read_destroy(), png_write_destroy()
png_debug(), png_debug1(), and png_debug2() from libpng.3 to libpngpf.3.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit (subscription required; visit

570
png.h
View File

@ -627,25 +627,25 @@ typedef png_unknown_chunk FAR * FAR * png_unknown_chunkpp;
typedef struct png_info_struct typedef struct png_info_struct
{ {
/* the following are necessary for every PNG file */ /* the following are necessary for every PNG file */
png_uint_32 width; /* width of image in pixels (from IHDR) */ png_uint_32 width PNG_DEPSTRUCT; /* width of image in pixels (from IHDR) */
png_uint_32 height; /* height of image in pixels (from IHDR) */ png_uint_32 height PNG_DEPSTRUCT; /* height of image in pixels (from IHDR) */
png_uint_32 valid; /* valid chunk data (see PNG_INFO_ below) */ png_uint_32 valid PNG_DEPSTRUCT; /* valid chunk data (see PNG_INFO_ below) */
png_size_t rowbytes; /* bytes needed to hold an untransformed row */ png_size_t rowbytes PNG_DEPSTRUCT; /* bytes needed to hold an untransformed row */
png_colorp palette; /* array of color values (valid & PNG_INFO_PLTE) */ png_colorp palette PNG_DEPSTRUCT; /* array of color values (valid & PNG_INFO_PLTE) */
png_uint_16 num_palette; /* number of color entries in "palette" (PLTE) */ png_uint_16 num_palette PNG_DEPSTRUCT; /* number of color entries in "palette" (PLTE) */
png_uint_16 num_trans; /* number of transparent palette color (tRNS) */ png_uint_16 num_trans PNG_DEPSTRUCT; /* number of transparent palette color (tRNS) */
png_byte bit_depth; /* 1, 2, 4, 8, or 16 bits/channel (from IHDR) */ png_byte bit_depth PNG_DEPSTRUCT; /* 1, 2, 4, 8, or 16 bits/channel (from IHDR) */
png_byte color_type; /* see PNG_COLOR_TYPE_ below (from IHDR) */ png_byte color_type PNG_DEPSTRUCT; /* see PNG_COLOR_TYPE_ below (from IHDR) */
/* The following three should have been named *_method not *_type */ /* The following three should have been named *_method not *_type */
png_byte compression_type; /* must be PNG_COMPRESSION_TYPE_BASE (IHDR) */ png_byte compression_type PNG_DEPSTRUCT; /* must be PNG_COMPRESSION_TYPE_BASE (IHDR) */
png_byte filter_type; /* must be PNG_FILTER_TYPE_BASE (from IHDR) */ png_byte filter_type PNG_DEPSTRUCT; /* must be PNG_FILTER_TYPE_BASE (from IHDR) */
png_byte interlace_type; /* One of PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */ png_byte interlace_type PNG_DEPSTRUCT; /* One of PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */
/* The following is informational only on read, and not used on writes. */ /* The following is informational only on read, and not used on writes. */
png_byte channels; /* number of data channels per pixel (1, 2, 3, 4) */ png_byte channels PNG_DEPSTRUCT; /* number of data channels per pixel (1, 2, 3, 4) */
png_byte pixel_depth; /* number of bits per pixel */ png_byte pixel_depth PNG_DEPSTRUCT; /* number of bits per pixel */
png_byte spare_byte; /* to align the data, and for future use */ png_byte spare_byte PNG_DEPSTRUCT; /* to align the data, and for future use */
png_byte signature[8]; /* magic bytes read by libpng from start of file */ png_byte signature[8] PNG_DEPSTRUCT; /* magic bytes read by libpng from start of file */
/* The rest of the data is optional. If you are reading, check the /* The rest of the data is optional. If you are reading, check the
* valid field to see if the information in these are valid. If you * valid field to see if the information in these are valid. If you
@ -658,13 +658,13 @@ typedef struct png_info_struct
* on which the image was created, normally in the range [1.0, 2.5]. * on which the image was created, normally in the range [1.0, 2.5].
* Data is valid if (valid & PNG_INFO_gAMA) is non-zero. * Data is valid if (valid & PNG_INFO_gAMA) is non-zero.
*/ */
float gamma; /* gamma value of image, if (valid & PNG_INFO_gAMA) */ float gamma PNG_DEPSTRUCT; /* gamma value of image, if (valid & PNG_INFO_gAMA) */
#endif #endif
#ifdef PNG_sRGB_SUPPORTED #ifdef PNG_sRGB_SUPPORTED
/* GR-P, 0.96a */ /* GR-P, 0.96a */
/* Data valid if (valid & PNG_INFO_sRGB) non-zero. */ /* Data valid if (valid & PNG_INFO_sRGB) non-zero. */
png_byte srgb_intent; /* sRGB rendering intent [0, 1, 2, or 3] */ png_byte srgb_intent PNG_DEPSTRUCT; /* sRGB rendering intent [0, 1, 2, or 3] */
#endif #endif
#ifdef PNG_TEXT_SUPPORTED #ifdef PNG_TEXT_SUPPORTED
@ -676,16 +676,16 @@ typedef struct png_info_struct
* unique, and the text string may be empty. Any number of text chunks may * unique, and the text string may be empty. Any number of text chunks may
* be in an image. * be in an image.
*/ */
int num_text; /* number of comments read/to write */ int num_text PNG_DEPSTRUCT; /* number of comments read/to write */
int max_text; /* current size of text array */ int max_text PNG_DEPSTRUCT; /* current size of text array */
png_textp text; /* array of comments read/to write */ png_textp text PNG_DEPSTRUCT; /* array of comments read/to write */
#endif /* PNG_TEXT_SUPPORTED */ #endif /* PNG_TEXT_SUPPORTED */
#ifdef PNG_tIME_SUPPORTED #ifdef PNG_tIME_SUPPORTED
/* The tIME chunk holds the last time the displayed image data was /* The tIME chunk holds the last time the displayed image data was
* modified. See the png_time struct for the contents of this struct. * modified. See the png_time struct for the contents of this struct.
*/ */
png_time mod_time; png_time mod_time PNG_DEPSTRUCT;
#endif #endif
#ifdef PNG_sBIT_SUPPORTED #ifdef PNG_sBIT_SUPPORTED
@ -695,7 +695,7 @@ typedef struct png_info_struct
* the low-order bits is not specified. Data is valid if * the low-order bits is not specified. Data is valid if
* (valid & PNG_INFO_sBIT) is non-zero. * (valid & PNG_INFO_sBIT) is non-zero.
*/ */
png_color_8 sig_bit; /* significant bits in color channels */ png_color_8 sig_bit PNG_DEPSTRUCT; /* significant bits in color channels */
#endif #endif
#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_EXPAND_SUPPORTED) || \ #if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_EXPAND_SUPPORTED) || \
@ -709,8 +709,8 @@ defined(PNG_READ_BACKGROUND_SUPPORTED)
* single color specified that should be treated as fully transparent. * single color specified that should be treated as fully transparent.
* Data is valid if (valid & PNG_INFO_tRNS) is non-zero. * Data is valid if (valid & PNG_INFO_tRNS) is non-zero.
*/ */
png_bytep trans_alpha; /* alpha values for paletted image */ png_bytep trans_alpha PNG_DEPSTRUCT; /* alpha values for paletted image */
png_color_16 trans_color; /* transparent color for non-palette image */ png_color_16 trans_color PNG_DEPSTRUCT; /* transparent color for non-palette image */
#endif #endif
#if defined(PNG_bKGD_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) #if defined(PNG_bKGD_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
@ -720,7 +720,7 @@ defined(PNG_READ_BACKGROUND_SUPPORTED)
* in "background" are normally in the same color space/depth as the * in "background" are normally in the same color space/depth as the
* pixel data. Data is valid if (valid & PNG_INFO_bKGD) is non-zero. * pixel data. Data is valid if (valid & PNG_INFO_bKGD) is non-zero.
*/ */
png_color_16 background; png_color_16 background PNG_DEPSTRUCT;
#endif #endif
#ifdef PNG_oFFs_SUPPORTED #ifdef PNG_oFFs_SUPPORTED
@ -729,9 +729,9 @@ defined(PNG_READ_BACKGROUND_SUPPORTED)
* application-specific co-ordinate space. See the PNG_OFFSET_ defines * application-specific co-ordinate space. See the PNG_OFFSET_ defines
* below for the unit types. Valid if (valid & PNG_INFO_oFFs) non-zero. * below for the unit types. Valid if (valid & PNG_INFO_oFFs) non-zero.
*/ */
png_int_32 x_offset; /* x offset on page */ png_int_32 x_offset PNG_DEPSTRUCT; /* x offset on page */
png_int_32 y_offset; /* y offset on page */ png_int_32 y_offset PNG_DEPSTRUCT; /* y offset on page */
png_byte offset_unit_type; /* offset units type */ png_byte offset_unit_type PNG_DEPSTRUCT; /* offset units type */
#endif #endif
#ifdef PNG_pHYs_SUPPORTED #ifdef PNG_pHYs_SUPPORTED
@ -739,9 +739,9 @@ defined(PNG_READ_BACKGROUND_SUPPORTED)
* display or printing in "phys_unit_type" units (see PNG_RESOLUTION_ * display or printing in "phys_unit_type" units (see PNG_RESOLUTION_
* defines below). Data is valid if (valid & PNG_INFO_pHYs) is non-zero. * defines below). Data is valid if (valid & PNG_INFO_pHYs) is non-zero.
*/ */
png_uint_32 x_pixels_per_unit; /* horizontal pixel density */ png_uint_32 x_pixels_per_unit PNG_DEPSTRUCT; /* horizontal pixel density */
png_uint_32 y_pixels_per_unit; /* vertical pixel density */ png_uint_32 y_pixels_per_unit PNG_DEPSTRUCT; /* vertical pixel density */
png_byte phys_unit_type; /* resolution type (see PNG_RESOLUTION_ below) */ png_byte phys_unit_type PNG_DEPSTRUCT; /* resolution type (see PNG_RESOLUTION_ below) */
#endif #endif
#ifdef PNG_hIST_SUPPORTED #ifdef PNG_hIST_SUPPORTED
@ -751,7 +751,7 @@ defined(PNG_READ_BACKGROUND_SUPPORTED)
* values in the range [0,65535]. Data valid if (valid & PNG_INFO_hIST) * values in the range [0,65535]. Data valid if (valid & PNG_INFO_hIST)
* is non-zero. * is non-zero.
*/ */
png_uint_16p hist; png_uint_16p hist PNG_DEPSTRUCT;
#endif #endif
#ifdef PNG_cHRM_SUPPORTED #ifdef PNG_cHRM_SUPPORTED
@ -762,14 +762,14 @@ defined(PNG_READ_BACKGROUND_SUPPORTED)
* [0.0, 0.8]. Data valid if (valid & PNG_INFO_cHRM) non-zero. * [0.0, 0.8]. Data valid if (valid & PNG_INFO_cHRM) non-zero.
*/ */
#ifdef PNG_FLOATING_POINT_SUPPORTED #ifdef PNG_FLOATING_POINT_SUPPORTED
float x_white; float x_white PNG_DEPSTRUCT;
float y_white; float y_white PNG_DEPSTRUCT;
float x_red; float x_red PNG_DEPSTRUCT;
float y_red; float y_red PNG_DEPSTRUCT;
float x_green; float x_green PNG_DEPSTRUCT;
float y_green; float y_green PNG_DEPSTRUCT;
float x_blue; float x_blue PNG_DEPSTRUCT;
float y_blue; float y_blue PNG_DEPSTRUCT;
#endif #endif
#endif #endif
@ -785,38 +785,38 @@ defined(PNG_READ_BACKGROUND_SUPPORTED)
* implemented, and for a description of the ASCII parameter strings. * implemented, and for a description of the ASCII parameter strings.
* Data values are valid if (valid & PNG_INFO_pCAL) non-zero. * Data values are valid if (valid & PNG_INFO_pCAL) non-zero.
*/ */
png_charp pcal_purpose; /* pCAL chunk description string */ png_charp pcal_purpose PNG_DEPSTRUCT; /* pCAL chunk description string */
png_int_32 pcal_X0; /* minimum value */ png_int_32 pcal_X0 PNG_DEPSTRUCT; /* minimum value */
png_int_32 pcal_X1; /* maximum value */ png_int_32 pcal_X1 PNG_DEPSTRUCT; /* maximum value */
png_charp pcal_units; /* Latin-1 string giving physical units */ png_charp pcal_units PNG_DEPSTRUCT; /* Latin-1 string giving physical units */
png_charpp pcal_params; /* ASCII strings containing parameter values */ png_charpp pcal_params PNG_DEPSTRUCT; /* ASCII strings containing parameter values */
png_byte pcal_type; /* equation type (see PNG_EQUATION_ below) */ png_byte pcal_type PNG_DEPSTRUCT; /* equation type (see PNG_EQUATION_ below) */
png_byte pcal_nparams; /* number of parameters given in pcal_params */ png_byte pcal_nparams PNG_DEPSTRUCT; /* number of parameters given in pcal_params */
#endif #endif
/* New members added in libpng-1.0.6 */ /* New members added in libpng-1.0.6 */
png_uint_32 free_me; /* flags items libpng is responsible for freeing */ png_uint_32 free_me PNG_DEPSTRUCT; /* flags items libpng is responsible for freeing */
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) || \ #if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) || \
defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED) defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED)
/* Storage for unknown chunks that the library doesn't recognize. */ /* Storage for unknown chunks that the library doesn't recognize. */
png_unknown_chunkp unknown_chunks; png_unknown_chunkp unknown_chunks PNG_DEPSTRUCT;
png_size_t unknown_chunks_num; png_size_t unknown_chunks_num PNG_DEPSTRUCT;
#endif #endif
#ifdef PNG_iCCP_SUPPORTED #ifdef PNG_iCCP_SUPPORTED
/* iCCP chunk data. */ /* iCCP chunk data. */
png_charp iccp_name; /* profile name */ png_charp iccp_name PNG_DEPSTRUCT; /* profile name */
png_charp iccp_profile; /* International Color Consortium profile data */ png_charp iccp_profile PNG_DEPSTRUCT; /* International Color Consortium profile data */
/* Note to maintainer: should be png_bytep */ /* Note to maintainer: should be png_bytep */
png_uint_32 iccp_proflen; /* ICC profile data length */ png_uint_32 iccp_proflen PNG_DEPSTRUCT; /* ICC profile data length */
png_byte iccp_compression; /* Always zero */ png_byte iccp_compression PNG_DEPSTRUCT; /* Always zero */
#endif #endif
#ifdef PNG_sPLT_SUPPORTED #ifdef PNG_sPLT_SUPPORTED
/* Data on sPLT chunks (there may be more than one). */ /* Data on sPLT chunks (there may be more than one). */
png_sPLT_tp splt_palettes; png_sPLT_tp splt_palettes PNG_DEPSTRUCT;
png_uint_32 splt_palettes_num; png_uint_32 splt_palettes_num PNG_DEPSTRUCT;
#endif #endif
#ifdef PNG_sCAL_SUPPORTED #ifdef PNG_sCAL_SUPPORTED
@ -827,36 +827,36 @@ defined(PNG_READ_BACKGROUND_SUPPORTED)
* in the image. This external representation is converted to double * in the image. This external representation is converted to double
* here. Data values are valid if (valid & PNG_INFO_sCAL) is non-zero. * here. Data values are valid if (valid & PNG_INFO_sCAL) is non-zero.
*/ */
png_byte scal_unit; /* unit of physical scale */ png_byte scal_unit PNG_DEPSTRUCT; /* unit of physical scale */
#ifdef PNG_FLOATING_POINT_SUPPORTED #ifdef PNG_FLOATING_POINT_SUPPORTED
double scal_pixel_width; /* width of one pixel */ double scal_pixel_width PNG_DEPSTRUCT; /* width of one pixel */
double scal_pixel_height; /* height of one pixel */ double scal_pixel_height PNG_DEPSTRUCT; /* height of one pixel */
#endif #endif
#ifdef PNG_FIXED_POINT_SUPPORTED #ifdef PNG_FIXED_POINT_SUPPORTED
png_charp scal_s_width; /* string containing height */ png_charp scal_s_width PNG_DEPSTRUCT; /* string containing height */
png_charp scal_s_height; /* string containing width */ png_charp scal_s_height PNG_DEPSTRUCT; /* string containing width */
#endif #endif
#endif #endif
#ifdef PNG_INFO_IMAGE_SUPPORTED #ifdef PNG_INFO_IMAGE_SUPPORTED
/* Memory has been allocated if (valid & PNG_ALLOCATED_INFO_ROWS) non-zero */ /* Memory has been allocated if (valid & PNG_ALLOCATED_INFO_ROWS) non-zero */
/* Data valid if (valid & PNG_INFO_IDAT) non-zero */ /* Data valid if (valid & PNG_INFO_IDAT) non-zero */
png_bytepp row_pointers; /* the image bits */ png_bytepp row_pointers PNG_DEPSTRUCT; /* the image bits */
#endif #endif
#if defined(PNG_FIXED_POINT_SUPPORTED) && defined(PNG_gAMA_SUPPORTED) #if defined(PNG_FIXED_POINT_SUPPORTED) && defined(PNG_gAMA_SUPPORTED)
png_fixed_point int_gamma; /* gamma of image, if (valid & PNG_INFO_gAMA) */ png_fixed_point int_gamma PNG_DEPSTRUCT; /* gamma of image, if (valid & PNG_INFO_gAMA) */
#endif #endif
#if defined(PNG_cHRM_SUPPORTED) && defined(PNG_FIXED_POINT_SUPPORTED) #if defined(PNG_cHRM_SUPPORTED) && defined(PNG_FIXED_POINT_SUPPORTED)
png_fixed_point int_x_white; png_fixed_point int_x_white PNG_DEPSTRUCT;
png_fixed_point int_y_white; png_fixed_point int_y_white PNG_DEPSTRUCT;
png_fixed_point int_x_red; png_fixed_point int_x_red PNG_DEPSTRUCT;
png_fixed_point int_y_red; png_fixed_point int_y_red PNG_DEPSTRUCT;
png_fixed_point int_x_green; png_fixed_point int_x_green PNG_DEPSTRUCT;
png_fixed_point int_y_green; png_fixed_point int_y_green PNG_DEPSTRUCT;
png_fixed_point int_x_blue; png_fixed_point int_x_blue PNG_DEPSTRUCT;
png_fixed_point int_y_blue; png_fixed_point int_y_blue PNG_DEPSTRUCT;
#endif #endif
} png_info; } png_info;
@ -1051,212 +1051,212 @@ struct png_struct_def
#ifdef PNG_SETJMP_SUPPORTED #ifdef PNG_SETJMP_SUPPORTED
jmp_buf jmpbuf; /* used in png_error */ jmp_buf jmpbuf; /* used in png_error */
#endif #endif
png_error_ptr error_fn; /* function for printing errors and aborting */ png_error_ptr error_fn PNG_DEPSTRUCT; /* function for printing errors and aborting */
png_error_ptr warning_fn; /* function for printing warnings */ png_error_ptr warning_fn PNG_DEPSTRUCT; /* function for printing warnings */
png_voidp error_ptr; /* user supplied struct for error functions */ png_voidp error_ptr PNG_DEPSTRUCT; /* user supplied struct for error functions */
png_rw_ptr write_data_fn; /* function for writing output data */ png_rw_ptr write_data_fn PNG_DEPSTRUCT; /* function for writing output data */
png_rw_ptr read_data_fn; /* function for reading input data */ png_rw_ptr read_data_fn PNG_DEPSTRUCT; /* function for reading input data */
png_voidp io_ptr; /* ptr to application struct for I/O functions */ png_voidp io_ptr PNG_DEPSTRUCT; /* ptr to application struct for I/O functions */
#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED #ifdef PNG_READ_USER_TRANSFORM_SUPPORTED
png_user_transform_ptr read_user_transform_fn; /* user read transform */ png_user_transform_ptr read_user_transform_fn PNG_DEPSTRUCT; /* user read transform */
#endif #endif
#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED #ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED
png_user_transform_ptr write_user_transform_fn; /* user write transform */ png_user_transform_ptr write_user_transform_fn PNG_DEPSTRUCT; /* user write transform */
#endif #endif
/* These were added in libpng-1.0.2 */ /* These were added in libpng-1.0.2 */
#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED #ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
png_voidp user_transform_ptr; /* user supplied struct for user transform */ png_voidp user_transform_ptr PNG_DEPSTRUCT; /* user supplied struct for user transform */
png_byte user_transform_depth; /* bit depth of user transformed pixels */ png_byte user_transform_depth PNG_DEPSTRUCT; /* bit depth of user transformed pixels */
png_byte user_transform_channels; /* channels in user transformed pixels */ png_byte user_transform_channels PNG_DEPSTRUCT; /* channels in user transformed pixels */
#endif #endif
#endif #endif
png_uint_32 mode; /* tells us where we are in the PNG file */ png_uint_32 mode PNG_DEPSTRUCT; /* tells us where we are in the PNG file */
png_uint_32 flags; /* flags indicating various things to libpng */ png_uint_32 flags PNG_DEPSTRUCT; /* flags indicating various things to libpng */
png_uint_32 transformations; /* which transformations to perform */ png_uint_32 transformations PNG_DEPSTRUCT; /* which transformations to perform */
z_stream zstream; /* pointer to decompression structure (below) */ z_stream zstream PNG_DEPSTRUCT; /* pointer to decompression structure (below) */
png_bytep zbuf; /* buffer for zlib */ png_bytep zbuf PNG_DEPSTRUCT; /* buffer for zlib */
png_size_t zbuf_size; /* size of zbuf */ png_size_t zbuf_size PNG_DEPSTRUCT; /* size of zbuf */
int zlib_level; /* holds zlib compression level */ int zlib_level PNG_DEPSTRUCT; /* holds zlib compression level */
int zlib_method; /* holds zlib compression method */ int zlib_method PNG_DEPSTRUCT; /* holds zlib compression method */
int zlib_window_bits; /* holds zlib compression window bits */ int zlib_window_bits PNG_DEPSTRUCT; /* holds zlib compression window bits */
int zlib_mem_level; /* holds zlib compression memory level */ int zlib_mem_level PNG_DEPSTRUCT; /* holds zlib compression memory level */
int zlib_strategy; /* holds zlib compression strategy */ int zlib_strategy PNG_DEPSTRUCT; /* holds zlib compression strategy */
png_uint_32 width; /* width of image in pixels */ png_uint_32 width PNG_DEPSTRUCT; /* width of image in pixels */
png_uint_32 height; /* height of image in pixels */ png_uint_32 height PNG_DEPSTRUCT; /* height of image in pixels */
png_uint_32 num_rows; /* number of rows in current pass */ png_uint_32 num_rows PNG_DEPSTRUCT; /* number of rows in current pass */
png_uint_32 usr_width; /* width of row at start of write */ png_uint_32 usr_width PNG_DEPSTRUCT; /* width of row at start of write */
png_size_t rowbytes; /* size of row in bytes */ png_size_t rowbytes PNG_DEPSTRUCT; /* size of row in bytes */
png_size_t irowbytes; /* size of current interlaced row in bytes */ png_size_t irowbytes PNG_DEPSTRUCT; /* size of current interlaced row in bytes */
png_uint_32 iwidth; /* width of current interlaced row in pixels */ png_uint_32 iwidth PNG_DEPSTRUCT; /* width of current interlaced row in pixels */
png_uint_32 row_number; /* current row in interlace pass */ png_uint_32 row_number PNG_DEPSTRUCT; /* current row in interlace pass */
png_bytep prev_row; /* buffer to save previous (unfiltered) row */ png_bytep prev_row PNG_DEPSTRUCT; /* buffer to save previous (unfiltered) row */
png_bytep row_buf; /* buffer to save current (unfiltered) row */ png_bytep row_buf PNG_DEPSTRUCT; /* buffer to save current (unfiltered) row */
png_bytep sub_row; /* buffer to save "sub" row when filtering */ png_bytep sub_row PNG_DEPSTRUCT; /* buffer to save "sub" row when filtering */
png_bytep up_row; /* buffer to save "up" row when filtering */ png_bytep up_row PNG_DEPSTRUCT; /* buffer to save "up" row when filtering */
png_bytep avg_row; /* buffer to save "avg" row when filtering */ png_bytep avg_row PNG_DEPSTRUCT; /* buffer to save "avg" row when filtering */
png_bytep paeth_row; /* buffer to save "Paeth" row when filtering */ png_bytep paeth_row PNG_DEPSTRUCT; /* buffer to save "Paeth" row when filtering */
png_row_info row_info; /* used for transformation routines */ png_row_info row_info PNG_DEPSTRUCT; /* used for transformation routines */
png_uint_32 idat_size; /* current IDAT size for read */ png_uint_32 idat_size PNG_DEPSTRUCT; /* current IDAT size for read */
png_uint_32 crc; /* current chunk CRC value */ png_uint_32 crc PNG_DEPSTRUCT; /* current chunk CRC value */
png_colorp palette; /* palette from the input file */ png_colorp palette PNG_DEPSTRUCT; /* palette from the input file */
png_uint_16 num_palette; /* number of color entries in palette */ png_uint_16 num_palette PNG_DEPSTRUCT; /* number of color entries in palette */
png_uint_16 num_trans; /* number of transparency values */ png_uint_16 num_trans PNG_DEPSTRUCT; /* number of transparency values */
png_byte chunk_name[5]; /* null-terminated name of current chunk */ png_byte chunk_name[5] PNG_DEPSTRUCT; /* null-terminated name of current chunk */
png_byte compression; /* file compression type (always 0) */ png_byte compression PNG_DEPSTRUCT; /* file compression type (always 0) */
png_byte filter; /* file filter type (always 0) */ png_byte filter PNG_DEPSTRUCT; /* file filter type (always 0) */
png_byte interlaced; /* PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */ png_byte interlaced PNG_DEPSTRUCT; /* PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */
png_byte pass; /* current interlace pass (0 - 6) */ png_byte pass PNG_DEPSTRUCT; /* current interlace pass (0 - 6) */
png_byte do_filter; /* row filter flags (see PNG_FILTER_ below ) */ png_byte do_filter PNG_DEPSTRUCT; /* row filter flags (see PNG_FILTER_ below ) */
png_byte color_type; /* color type of file */ png_byte color_type PNG_DEPSTRUCT; /* color type of file */
png_byte bit_depth; /* bit depth of file */ png_byte bit_depth PNG_DEPSTRUCT; /* bit depth of file */
png_byte usr_bit_depth; /* bit depth of users row */ png_byte usr_bit_depth PNG_DEPSTRUCT; /* bit depth of users row */
png_byte pixel_depth; /* number of bits per pixel */ png_byte pixel_depth PNG_DEPSTRUCT; /* number of bits per pixel */
png_byte channels; /* number of channels in file */ png_byte channels PNG_DEPSTRUCT; /* number of channels in file */
png_byte usr_channels; /* channels at start of write */ png_byte usr_channels PNG_DEPSTRUCT; /* channels at start of write */
png_byte sig_bytes; /* magic bytes read/written from start of file */ png_byte sig_bytes PNG_DEPSTRUCT; /* magic bytes read/written from start of file */
#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) #if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
png_uint_16 filler; /* filler bytes for pixel expansion */ png_uint_16 filler PNG_DEPSTRUCT; /* filler bytes for pixel expansion */
#endif #endif
#ifdef PNG_bKGD_SUPPORTED #ifdef PNG_bKGD_SUPPORTED
png_byte background_gamma_type; png_byte background_gamma_type PNG_DEPSTRUCT;
# ifdef PNG_FLOATING_POINT_SUPPORTED # ifdef PNG_FLOATING_POINT_SUPPORTED
float background_gamma; float background_gamma PNG_DEPSTRUCT;
# endif # endif
png_color_16 background; /* background color in screen gamma space */ png_color_16 background PNG_DEPSTRUCT; /* background color in screen gamma space */
#ifdef PNG_READ_GAMMA_SUPPORTED #ifdef PNG_READ_GAMMA_SUPPORTED
png_color_16 background_1; /* background normalized to gamma 1.0 */ png_color_16 background_1 PNG_DEPSTRUCT; /* background normalized to gamma 1.0 */
#endif #endif
#endif /* PNG_bKGD_SUPPORTED */ #endif /* PNG_bKGD_SUPPORTED */
#ifdef PNG_WRITE_FLUSH_SUPPORTED #ifdef PNG_WRITE_FLUSH_SUPPORTED
png_flush_ptr output_flush_fn; /* Function for flushing output */ png_flush_ptr output_flush_fn PNG_DEPSTRUCT; /* Function for flushing output */
png_uint_32 flush_dist; /* how many rows apart to flush, 0 - no flush */ png_uint_32 flush_dist PNG_DEPSTRUCT; /* how many rows apart to flush, 0 - no flush */
png_uint_32 flush_rows; /* number of rows written since last flush */ png_uint_32 flush_rows PNG_DEPSTRUCT; /* number of rows written since last flush */
#endif #endif
#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
int gamma_shift; /* number of "insignificant" bits 16-bit gamma */ int gamma_shift PNG_DEPSTRUCT; /* number of "insignificant" bits 16-bit gamma */
#ifdef PNG_FLOATING_POINT_SUPPORTED #ifdef PNG_FLOATING_POINT_SUPPORTED
float gamma; /* file gamma value */ float gamma PNG_DEPSTRUCT; /* file gamma value */
float screen_gamma; /* screen gamma value (display_exponent) */ float screen_gamma PNG_DEPSTRUCT; /* screen gamma value (display_exponent) */
#endif #endif
#endif #endif
#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
png_bytep gamma_table; /* gamma table for 8-bit depth files */ png_bytep gamma_table PNG_DEPSTRUCT; /* gamma table for 8-bit depth files */
png_bytep gamma_from_1; /* converts from 1.0 to screen */ png_bytep gamma_from_1 PNG_DEPSTRUCT; /* converts from 1.0 to screen */
png_bytep gamma_to_1; /* converts from file to 1.0 */ png_bytep gamma_to_1 PNG_DEPSTRUCT; /* converts from file to 1.0 */
png_uint_16pp gamma_16_table; /* gamma table for 16-bit depth files */ png_uint_16pp gamma_16_table PNG_DEPSTRUCT; /* gamma table for 16-bit depth files */
png_uint_16pp gamma_16_from_1; /* converts from 1.0 to screen */ png_uint_16pp gamma_16_from_1 PNG_DEPSTRUCT; /* converts from 1.0 to screen */
png_uint_16pp gamma_16_to_1; /* converts from file to 1.0 */ png_uint_16pp gamma_16_to_1 PNG_DEPSTRUCT; /* converts from file to 1.0 */
#endif #endif
#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_sBIT_SUPPORTED) #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_sBIT_SUPPORTED)
png_color_8 sig_bit; /* significant bits in each available channel */ png_color_8 sig_bit PNG_DEPSTRUCT; /* significant bits in each available channel */
#endif #endif
#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) #if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
png_color_8 shift; /* shift for significant bit tranformation */ png_color_8 shift PNG_DEPSTRUCT; /* shift for significant bit tranformation */
#endif #endif
#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) \ #if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) \
|| defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) || defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
png_bytep trans_alpha; /* alpha values for paletted files */ png_bytep trans_alpha PNG_DEPSTRUCT; /* alpha values for paletted files */
png_color_16 trans_color; /* transparent color for non-paletted files */ png_color_16 trans_color PNG_DEPSTRUCT; /* transparent color for non-paletted files */
#endif #endif
png_read_status_ptr read_row_fn; /* called after each row is decoded */ png_read_status_ptr read_row_fn PNG_DEPSTRUCT; /* called after each row is decoded */
png_write_status_ptr write_row_fn; /* called after each row is encoded */ png_write_status_ptr write_row_fn PNG_DEPSTRUCT; /* called after each row is encoded */
#ifdef PNG_PROGRESSIVE_READ_SUPPORTED #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
png_progressive_info_ptr info_fn; /* called after header data fully read */ png_progressive_info_ptr info_fn PNG_DEPSTRUCT; /* called after header data fully read */
png_progressive_row_ptr row_fn; /* called after each prog. row is decoded */ png_progressive_row_ptr row_fn PNG_DEPSTRUCT; /* called after each prog. row is decoded */
png_progressive_end_ptr end_fn; /* called after image is complete */ png_progressive_end_ptr end_fn PNG_DEPSTRUCT; /* called after image is complete */
png_bytep save_buffer_ptr; /* current location in save_buffer */ png_bytep save_buffer_ptr PNG_DEPSTRUCT; /* current location in save_buffer */
png_bytep save_buffer; /* buffer for previously read data */ png_bytep save_buffer PNG_DEPSTRUCT; /* buffer for previously read data */
png_bytep current_buffer_ptr; /* current location in current_buffer */ png_bytep current_buffer_ptr PNG_DEPSTRUCT; /* current location in current_buffer */
png_bytep current_buffer; /* buffer for recently used data */ png_bytep current_buffer PNG_DEPSTRUCT; /* buffer for recently used data */
png_uint_32 push_length; /* size of current input chunk */ png_uint_32 push_length PNG_DEPSTRUCT; /* size of current input chunk */
png_uint_32 skip_length; /* bytes to skip in input data */ png_uint_32 skip_length PNG_DEPSTRUCT; /* bytes to skip in input data */
png_size_t save_buffer_size; /* amount of data now in save_buffer */ png_size_t save_buffer_size PNG_DEPSTRUCT; /* amount of data now in save_buffer */
png_size_t save_buffer_max; /* total size of save_buffer */ png_size_t save_buffer_max PNG_DEPSTRUCT; /* total size of save_buffer */
png_size_t buffer_size; /* total amount of available input data */ png_size_t buffer_size PNG_DEPSTRUCT; /* total amount of available input data */
png_size_t current_buffer_size; /* amount of data now in current_buffer */ png_size_t current_buffer_size PNG_DEPSTRUCT; /* amount of data now in current_buffer */
int process_mode; /* what push library is currently doing */ int process_mode PNG_DEPSTRUCT; /* what push library is currently doing */
int cur_palette; /* current push library palette index */ int cur_palette PNG_DEPSTRUCT; /* current push library palette index */
# ifdef PNG_TEXT_SUPPORTED # ifdef PNG_TEXT_SUPPORTED
png_size_t current_text_size; /* current size of text input data */ png_size_t current_text_size PNG_DEPSTRUCT; /* current size of text input data */
png_size_t current_text_left; /* how much text left to read in input */ png_size_t current_text_left PNG_DEPSTRUCT; /* how much text left to read in input */
png_charp current_text; /* current text chunk buffer */ png_charp current_text PNG_DEPSTRUCT; /* current text chunk buffer */
png_charp current_text_ptr; /* current location in current_text */ png_charp current_text_ptr PNG_DEPSTRUCT; /* current location in current_text */
# endif /* PNG_PROGRESSIVE_READ_SUPPORTED && PNG_TEXT_SUPPORTED */ # endif /* PNG_PROGRESSIVE_READ_SUPPORTED && PNG_TEXT_SUPPORTED */
#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ #endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__) #if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__)
/* For the Borland special 64K segment handler */ /* For the Borland special 64K segment handler */
png_bytepp offset_table_ptr; png_bytepp offset_table_ptr PNG_DEPSTRUCT;
png_bytep offset_table; png_bytep offset_table PNG_DEPSTRUCT;
png_uint_16 offset_table_number; png_uint_16 offset_table_number PNG_DEPSTRUCT;
png_uint_16 offset_table_count; png_uint_16 offset_table_count PNG_DEPSTRUCT;
png_uint_16 offset_table_count_free; png_uint_16 offset_table_count_free PNG_DEPSTRUCT;
#endif #endif
#ifdef PNG_READ_DITHER_SUPPORTED #ifdef PNG_READ_DITHER_SUPPORTED
png_bytep palette_lookup; /* lookup table for dithering */ png_bytep palette_lookup PNG_DEPSTRUCT; /* lookup table for dithering */
png_bytep dither_index; /* index translation for palette files */ png_bytep dither_index PNG_DEPSTRUCT; /* index translation for palette files */
#endif #endif
#if defined(PNG_READ_DITHER_SUPPORTED) || defined(PNG_hIST_SUPPORTED) #if defined(PNG_READ_DITHER_SUPPORTED) || defined(PNG_hIST_SUPPORTED)
png_uint_16p hist; /* histogram */ png_uint_16p hist PNG_DEPSTRUCT; /* histogram */
#endif #endif
#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED #ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
png_byte heuristic_method; /* heuristic for row filter selection */ png_byte heuristic_method PNG_DEPSTRUCT; /* heuristic for row filter selection */
png_byte num_prev_filters; /* number of weights for previous rows */ png_byte num_prev_filters PNG_DEPSTRUCT; /* number of weights for previous rows */
png_bytep prev_filters; /* filter type(s) of previous row(s) */ png_bytep prev_filters PNG_DEPSTRUCT; /* filter type(s) of previous row(s) */
png_uint_16p filter_weights; /* weight(s) for previous line(s) */ png_uint_16p filter_weights PNG_DEPSTRUCT; /* weight(s) for previous line(s) */
png_uint_16p inv_filter_weights; /* 1/weight(s) for previous line(s) */ png_uint_16p inv_filter_weights PNG_DEPSTRUCT; /* 1/weight(s) for previous line(s) */
png_uint_16p filter_costs; /* relative filter calculation cost */ png_uint_16p filter_costs PNG_DEPSTRUCT; /* relative filter calculation cost */
png_uint_16p inv_filter_costs; /* 1/relative filter calculation cost */ png_uint_16p inv_filter_costs PNG_DEPSTRUCT; /* 1/relative filter calculation cost */
#endif #endif
#ifdef PNG_TIME_RFC1123_SUPPORTED #ifdef PNG_TIME_RFC1123_SUPPORTED
png_charp time_buffer; /* String to hold RFC 1123 time text */ png_charp time_buffer PNG_DEPSTRUCT; /* String to hold RFC 1123 time text */
#endif #endif
/* New members added in libpng-1.0.6 */ /* New members added in libpng-1.0.6 */
png_uint_32 free_me; /* flags items libpng is responsible for freeing */ png_uint_32 free_me PNG_DEPSTRUCT; /* flags items libpng is responsible for freeing */
#ifdef PNG_USER_CHUNKS_SUPPORTED #ifdef PNG_USER_CHUNKS_SUPPORTED
png_voidp user_chunk_ptr; png_voidp user_chunk_ptr PNG_DEPSTRUCT;
png_user_chunk_ptr read_user_chunk_fn; /* user read chunk handler */ png_user_chunk_ptr read_user_chunk_fn PNG_DEPSTRUCT; /* user read chunk handler */
#endif #endif
#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
int num_chunk_list; int num_chunk_list PNG_DEPSTRUCT;
png_bytep chunk_list; png_bytep chunk_list PNG_DEPSTRUCT;
#endif #endif
/* New members added in libpng-1.0.3 */ /* New members added in libpng-1.0.3 */
#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED #ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
png_byte rgb_to_gray_status; png_byte rgb_to_gray_status PNG_DEPSTRUCT;
/* These were changed from png_byte in libpng-1.0.6 */ /* These were changed from png_byte in libpng-1.0.6 */
png_uint_16 rgb_to_gray_red_coeff; png_uint_16 rgb_to_gray_red_coeff PNG_DEPSTRUCT;
png_uint_16 rgb_to_gray_green_coeff; png_uint_16 rgb_to_gray_green_coeff PNG_DEPSTRUCT;
png_uint_16 rgb_to_gray_blue_coeff; png_uint_16 rgb_to_gray_blue_coeff PNG_DEPSTRUCT;
#endif #endif
/* New member added in libpng-1.0.4 (renamed in 1.0.9) */ /* New member added in libpng-1.0.4 (renamed in 1.0.9) */
@ -1264,67 +1264,68 @@ struct png_struct_def
defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \ defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \
defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED) defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED)
/* Changed from png_byte to png_uint_32 at version 1.2.0 */ /* Changed from png_byte to png_uint_32 at version 1.2.0 */
png_uint_32 mng_features_permitted; png_uint_32 mng_features_permitted PNG_DEPSTRUCT;
#endif #endif
/* New member added in libpng-1.0.7 */ /* New member added in libpng-1.0.7 */
#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
png_fixed_point int_gamma; png_fixed_point int_gamma PNG_DEPSTRUCT;
#endif #endif
/* New member added in libpng-1.0.9, ifdef'ed out in 1.0.12, enabled in 1.2.0 */ /* New member added in libpng-1.0.9, ifdef'ed out in 1.0.12, enabled in 1.2.0 */
#ifdef PNG_MNG_FEATURES_SUPPORTED #ifdef PNG_MNG_FEATURES_SUPPORTED
png_byte filter_type; png_byte filter_type PNG_DEPSTRUCT;
#endif #endif
/* New members added in libpng-1.2.0 */ /* New members added in libpng-1.2.0 */
/* New members added in libpng-1.0.2 but first enabled by default in 1.2.0 */ /* New members added in libpng-1.0.2 but first enabled by default in 1.2.0 */
#ifdef PNG_USER_MEM_SUPPORTED #ifdef PNG_USER_MEM_SUPPORTED
png_voidp mem_ptr; /* user supplied struct for mem functions */ png_voidp mem_ptr PNG_DEPSTRUCT; /* user supplied struct for mem functions */
png_malloc_ptr malloc_fn; /* function for allocating memory */ png_malloc_ptr malloc_fn PNG_DEPSTRUCT; /* function for allocating memory */
png_free_ptr free_fn; /* function for freeing memory */ png_free_ptr free_fn PNG_DEPSTRUCT; /* function for freeing memory */
#endif #endif
/* New member added in libpng-1.0.13 and 1.2.0 */ /* New member added in libpng-1.0.13 and 1.2.0 */
png_bytep big_row_buf; /* buffer to save current (unfiltered) row */ png_bytep big_row_buf PNG_DEPSTRUCT; /* buffer to save current (unfiltered) row */
#ifdef PNG_READ_DITHER_SUPPORTED #ifdef PNG_READ_DITHER_SUPPORTED
/* The following three members were added at version 1.0.14 and 1.2.4 */ /* The following three members were added at version 1.0.14 and 1.2.4 */
png_bytep dither_sort; /* working sort array */ png_bytep dither_sort PNG_DEPSTRUCT; /* working sort array */
png_bytep index_to_palette; /* where the original index currently is */ png_bytep index_to_palette PNG_DEPSTRUCT; /* where the original index currently is */
/* in the palette */ /* in the palette */
png_bytep palette_to_index; /* which original index points to this */ png_bytep palette_to_index PNG_DEPSTRUCT; /* which original index points to this */
/* palette color */ /* palette color */
#endif #endif
/* New members added in libpng-1.0.16 and 1.2.6 */ /* New members added in libpng-1.0.16 and 1.2.6 */
png_byte compression_type; png_byte compression_type PNG_DEPSTRUCT;
#ifdef PNG_SET_USER_LIMITS_SUPPORTED #ifdef PNG_SET_USER_LIMITS_SUPPORTED
png_uint_32 user_width_max; png_uint_32 user_width_max PNG_DEPSTRUCT;
png_uint_32 user_height_max; png_uint_32 user_height_max PNG_DEPSTRUCT;
/* Added in libpng-1.4.0: Total number of sPLT, text, and unknown /* Added in libpng-1.4.0: Total number of sPLT, text, and unknown
* chunks that can be stored (0x7fffffff means unlimited). * chunks that can be stored (0x7fffffff means unlimited).
*/ */
png_uint_32 user_chunk_cache_max; png_uint_32 user_chunk_cache_max PNG_DEPSTRUCT;
#endif #endif
/* New member added in libpng-1.0.25 and 1.2.17 */ /* New member added in libpng-1.0.25 and 1.2.17 */
#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED #ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
/* Storage for unknown chunk that the library doesn't recognize. */ /* Storage for unknown chunk that the library doesn't recognize. */
png_unknown_chunk unknown_chunk; png_unknown_chunk unknown_chunk PNG_DEPSTRUCT;
#endif #endif
/* New members added in libpng-1.2.26 */ /* New members added in libpng-1.2.26 */
png_uint_32 old_big_row_buf_size, old_prev_row_size; png_uint_32 old_big_row_buf_size PNG_DEPSTRUCT;
png_uint_32 old_prev_row_size PNG_DEPSTRUCT;
/* New member added in libpng-1.2.30 */ /* New member added in libpng-1.2.30 */
png_charp chunkdata; /* buffer for reading chunk data */ png_charp chunkdata PNG_DEPSTRUCT; /* buffer for reading chunk data */
/* New member added in libpng-1.4.0 */ /* New member added in libpng-1.4.0 */
#ifdef PNG_IO_STATE_SUPPORTED #ifdef PNG_IO_STATE_SUPPORTED
png_uint_32 io_state; png_uint_32 io_state PNG_DEPSTRUCT;
#endif #endif
}; };
@ -1367,12 +1368,12 @@ extern PNG_EXPORT(int,png_sig_cmp) PNGARG((png_bytep sig, png_size_t start,
/* Allocate and initialize png_ptr struct for reading, and any other memory. */ /* Allocate and initialize png_ptr struct for reading, and any other memory. */
extern PNG_EXPORT(png_structp,png_create_read_struct) extern PNG_EXPORT(png_structp,png_create_read_struct)
PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
png_error_ptr error_fn, png_error_ptr warn_fn)); png_error_ptr error_fn, png_error_ptr warn_fn)) PNG_ALLOCATED;
/* Allocate and initialize png_ptr struct for writing, and any other memory */ /* Allocate and initialize png_ptr struct for writing, and any other memory */
extern PNG_EXPORT(png_structp,png_create_write_struct) extern PNG_EXPORT(png_structp,png_create_write_struct)
PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
png_error_ptr error_fn, png_error_ptr warn_fn)); png_error_ptr error_fn, png_error_ptr warn_fn)) PNG_ALLOCATED;
#ifdef PNG_WRITE_SUPPORTED #ifdef PNG_WRITE_SUPPORTED
extern PNG_EXPORT(png_size_t,png_get_compression_buffer_size) extern PNG_EXPORT(png_size_t,png_get_compression_buffer_size)
@ -1392,11 +1393,11 @@ extern PNG_EXPORT(int,png_reset_zstream) PNGARG((png_structp png_ptr));
extern PNG_EXPORT(png_structp,png_create_read_struct_2) extern PNG_EXPORT(png_structp,png_create_read_struct_2)
PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr,
png_malloc_ptr malloc_fn, png_free_ptr free_fn)); png_malloc_ptr malloc_fn, png_free_ptr free_fn)) PNG_ALLOCATED;
extern PNG_EXPORT(png_structp,png_create_write_struct_2) extern PNG_EXPORT(png_structp,png_create_write_struct_2)
PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr,
png_malloc_ptr malloc_fn, png_free_ptr free_fn)); png_malloc_ptr malloc_fn, png_free_ptr free_fn)) PNG_ALLOCATED;
#endif #endif
/* Write the PNG file signature. */ /* Write the PNG file signature. */
@ -1419,7 +1420,7 @@ extern PNG_EXPORT(void,png_write_chunk_end) PNGARG((png_structp png_ptr));
/* Allocate and initialize the info structure */ /* Allocate and initialize the info structure */
extern PNG_EXPORT(png_infop,png_create_info_struct) extern PNG_EXPORT(png_infop,png_create_info_struct)
PNGARG((png_structp png_ptr)); PNGARG((png_structp png_ptr)) PNG_ALLOCATED;
extern PNG_EXPORT(void,png_info_init_3) PNGARG((png_infopp info_ptr, extern PNG_EXPORT(void,png_info_init_3) PNGARG((png_infopp info_ptr,
png_size_t png_info_struct_size)); png_size_t png_info_struct_size));
@ -1645,17 +1646,10 @@ extern PNG_EXPORT(void,png_destroy_info_struct) PNGARG((png_structp png_ptr,
extern PNG_EXPORT(void,png_destroy_read_struct) PNGARG((png_structpp extern PNG_EXPORT(void,png_destroy_read_struct) PNGARG((png_structpp
png_ptr_ptr, png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr)); png_ptr_ptr, png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr));
/* Free all memory used by the read (old method - NOT DLL EXPORTED) */
extern void png_read_destroy PNGARG((png_structp png_ptr, png_infop info_ptr,
png_infop end_info_ptr));
/* Free any memory associated with the png_struct and the png_info_structs */ /* Free any memory associated with the png_struct and the png_info_structs */
extern PNG_EXPORT(void,png_destroy_write_struct) extern PNG_EXPORT(void,png_destroy_write_struct)
PNGARG((png_structpp png_ptr_ptr, png_infopp info_ptr_ptr)); PNGARG((png_structpp png_ptr_ptr, png_infopp info_ptr_ptr));
/* Free any memory used in png_ptr struct (old method - NOT DLL EXPORTED) */
extern void png_write_destroy PNGARG((png_structp png_ptr));
/* Set the libpng method of handling chunk CRC errors */ /* Set the libpng method of handling chunk CRC errors */
extern PNG_EXPORT(void,png_set_crc_action) PNGARG((png_structp png_ptr, extern PNG_EXPORT(void,png_set_crc_action) PNGARG((png_structp png_ptr,
int crit_action, int ancil_action)); int crit_action, int ancil_action));
@ -1894,14 +1888,14 @@ extern PNG_EXPORT(void,png_progressive_combine_row) PNGARG((png_structp png_ptr,
#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ #endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
extern PNG_EXPORT(png_voidp,png_malloc) PNGARG((png_structp png_ptr, extern PNG_EXPORT(png_voidp,png_malloc) PNGARG((png_structp png_ptr,
png_alloc_size_t size)); png_alloc_size_t size)) PNG_ALLOCATED;
/* Added at libpng version 1.4.0 */ /* Added at libpng version 1.4.0 */
extern PNG_EXPORT(png_voidp,png_calloc) PNGARG((png_structp png_ptr, extern PNG_EXPORT(png_voidp,png_calloc) PNGARG((png_structp png_ptr,
png_alloc_size_t size)); png_alloc_size_t size)) PNG_ALLOCATED;
/* Added at libpng version 1.2.4 */ /* Added at libpng version 1.2.4 */
extern PNG_EXPORT(png_voidp,png_malloc_warn) PNGARG((png_structp png_ptr, extern PNG_EXPORT(png_voidp,png_malloc_warn) PNGARG((png_structp png_ptr,
png_alloc_size_t size)); png_alloc_size_t size)) PNG_ALLOCATED;
/* Frees a pointer allocated by png_malloc() */ /* Frees a pointer allocated by png_malloc() */
extern PNG_EXPORT(void,png_free) PNGARG((png_structp png_ptr, png_voidp ptr)); extern PNG_EXPORT(void,png_free) PNGARG((png_structp png_ptr, png_voidp ptr));
@ -1934,23 +1928,18 @@ extern PNG_EXPORT(void,png_data_freer) PNGARG((png_structp png_ptr,
#ifdef PNG_USER_MEM_SUPPORTED #ifdef PNG_USER_MEM_SUPPORTED
extern PNG_EXPORT(png_voidp,png_malloc_default) PNGARG((png_structp png_ptr, extern PNG_EXPORT(png_voidp,png_malloc_default) PNGARG((png_structp png_ptr,
png_alloc_size_t size)); png_alloc_size_t size)) PNG_ALLOCATED;
extern PNG_EXPORT(void,png_free_default) PNGARG((png_structp png_ptr, extern PNG_EXPORT(void,png_free_default) PNGARG((png_structp png_ptr,
png_voidp ptr)); png_voidp ptr));
#endif #endif
#ifdef USE_FAR_KEYWORD /* memory model conversion function */
extern void *png_far_to_near PNGARG((png_structp png_ptr,png_voidp ptr,
int check));
#endif /* USE_FAR_KEYWORD */
/* Fatal error in PNG image of libpng - can't continue */ /* Fatal error in PNG image of libpng - can't continue */
extern PNG_EXPORT(void,png_error) PNGARG((png_structp png_ptr, extern PNG_EXPORT(void,png_error) PNGARG((png_structp png_ptr,
png_const_charp error_message)); png_const_charp error_message)) PNG_NORETURN;
/* The same, but the chunk name is prepended to the error string. */ /* The same, but the chunk name is prepended to the error string. */
extern PNG_EXPORT(void,png_chunk_error) PNGARG((png_structp png_ptr, extern PNG_EXPORT(void,png_chunk_error) PNGARG((png_structp png_ptr,
png_const_charp error_message)); png_const_charp error_message)) PNG_NORETURN;
/* Non-fatal error in libpng. Can continue, but may have a problem. */ /* Non-fatal error in libpng. Can continue, but may have a problem. */
extern PNG_EXPORT(void,png_warning) PNGARG((png_structp png_ptr, extern PNG_EXPORT(void,png_warning) PNGARG((png_structp png_ptr,
@ -2345,117 +2334,6 @@ extern PNG_EXPORT(void, png_write_png) PNGARG((png_structp png_ptr,
png_voidp params)); png_voidp params));
#endif #endif
/* Define PNG_DEBUG at compile time for debugging information. Higher
* numbers for PNG_DEBUG mean more debugging information. This has
* only been added since version 0.95 so it is not implemented throughout
* libpng yet, but more support will be added as needed.
*/
#ifdef PNG_DEBUG
#if (PNG_DEBUG > 0)
#if !defined(PNG_DEBUG_FILE) && defined(_MSC_VER)
#include <crtdbg.h>
#if (PNG_DEBUG > 1)
#ifndef _DEBUG
# define _DEBUG
#endif
#ifndef png_debug
#define png_debug(l,m) _RPT0(_CRT_WARN,m PNG_STRING_NEWLINE)
#endif
#ifndef png_debug1
#define png_debug1(l,m,p1) _RPT1(_CRT_WARN,m PNG_STRING_NEWLINE,p1)
#endif
#ifndef png_debug2
#define png_debug2(l,m,p1,p2) _RPT2(_CRT_WARN,m PNG_STRING_NEWLINE,p1,p2)
#endif
#endif
#else /* PNG_DEBUG_FILE || !_MSC_VER */
#ifndef PNG_DEBUG_FILE
#define PNG_DEBUG_FILE stderr
#endif /* PNG_DEBUG_FILE */
#if (PNG_DEBUG > 1)
/* Note: ["%s"m PNG_STRING_NEWLINE] probably does not work on
* non-ISO compilers
*/
# ifdef __STDC__
# ifndef png_debug
# define png_debug(l,m) \
{ \
int num_tabs=l; \
fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \
(num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":"")))); \
}
# endif
# ifndef png_debug1
# define png_debug1(l,m,p1) \
{ \
int num_tabs=l; \
fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \
(num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))),p1); \
}
# endif
# ifndef png_debug2
# define png_debug2(l,m,p1,p2) \
{ \
int num_tabs=l; \
fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \
(num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))),p1,p2); \
}
# endif
# else /* __STDC __ */
# ifndef png_debug
# define png_debug(l,m) \
{ \
int num_tabs=l; \
char format[256]; \
snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \
(num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \
m,PNG_STRING_NEWLINE); \
fprintf(PNG_DEBUG_FILE,format); \
}
# endif
# ifndef png_debug1
# define png_debug1(l,m,p1) \
{ \
int num_tabs=l; \
char format[256]; \
snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \
(num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \
m,PNG_STRING_NEWLINE); \
fprintf(PNG_DEBUG_FILE,format,p1); \
}
# endif
# ifndef png_debug2
# define png_debug2(l,m,p1,p2) \
{ \
int num_tabs=l; \
char format[256]; \
snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \
(num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \
m,PNG_STRING_NEWLINE); \
fprintf(PNG_DEBUG_FILE,format,p1,p2); \
}
# endif
# endif /* __STDC __ */
#endif /* (PNG_DEBUG > 1) */
#endif /* _MSC_VER */
#endif /* (PNG_DEBUG > 0) */
#endif /* PNG_DEBUG */
#ifndef png_debug
#define png_debug(l, m)
#endif
#ifndef png_debug1
#define png_debug1(l, m, p1)
#endif
#ifndef png_debug2
#define png_debug2(l, m, p1, p2)
#endif
#if 0
extern PNG_EXPORT(png_bytep,png_sig_bytes) PNGARG((void));
#endif
extern PNG_EXPORT(png_charp,png_get_copyright) PNGARG((png_structp png_ptr)); extern PNG_EXPORT(png_charp,png_get_copyright) PNGARG((png_structp png_ptr));
extern PNG_EXPORT(png_charp,png_get_header_ver) PNGARG((png_structp png_ptr)); extern PNG_EXPORT(png_charp,png_get_header_ver) PNGARG((png_structp png_ptr));
extern PNG_EXPORT(png_charp,png_get_header_version) PNGARG((png_structp png_ptr)); extern PNG_EXPORT(png_charp,png_get_header_version) PNGARG((png_structp png_ptr));

View File

@ -1286,6 +1286,41 @@ typedef char FAR * FAR * FAR * png_charppp;
# define PNG_EXPORT(type,symbol) PNG_IMPEXP type PNGAPI symbol # define PNG_EXPORT(type,symbol) PNG_IMPEXP type PNGAPI symbol
#endif #endif
/* Support for compiler specific function attributes. These are used
* so that where compiler support is available incorrect use of API
* functions in png.h will generate compiler warnings.
*/
#ifdef __GNUC__
# define PNG_DEPRECATED __attribute__((__deprecated__))
# define PNG_USE_RESULT __attribute__((__warn_unused_result__))
# define PNG_NORETURN __attribute__((__noreturn__))
# define PNG_ALLOCATED __attribute__((__malloc__))
# ifndef PNG_CONFIGURE_LIBPNG
/* This specifically protects structure members that should only be
* accessed from within the library, therefore should be empty during
* a library build.
*/
# define PNG_DEPSTRUCT __attribute__((__deprecated__))
# endif
#endif
#ifndef PNG_DEPRECATED
# define PNG_DEPRECATED /* use of this function is deprecated */
#endif
#ifndef PNG_USE_RESULT
# define PNG_USE_RESULT /* the result of this function must be checked */
#endif
#ifndef PNG_NORETURN
# define PNG_NORETURN /* this function does not return */
#endif
#ifndef PNG_ALLOCATED
# define PNG_ALLOCATED /* the result of the function is new memory */
#endif
#ifndef PNG_DEPSTRUCT
# define PNG_DEPSTRUCT /* access to this struct member is deprecated */
#endif
/* Users may want to use these so they are not private. Any library /* Users may want to use these so they are not private. Any library
* functions that are passed far data must be model-independent. * functions that are passed far data must be model-independent.
*/ */

View File

@ -22,7 +22,7 @@
static void /* PRIVATE */ static void /* PRIVATE */
png_default_error PNGARG((png_structp png_ptr, png_default_error PNGARG((png_structp png_ptr,
png_const_charp error_message)); png_const_charp error_message)) PNG_NORETURN;
#ifdef PNG_WARNINGS_SUPPORTED #ifdef PNG_WARNINGS_SUPPORTED
static void /* PRIVATE */ static void /* PRIVATE */
png_default_warning PNGARG((png_structp png_ptr, png_default_warning PNGARG((png_structp png_ptr,
@ -285,9 +285,9 @@ png_default_error(png_structp png_ptr, png_const_charp error_message)
longjmp(png_ptr->jmpbuf, 1); longjmp(png_ptr->jmpbuf, 1);
# endif # endif
} }
#else
PNG_ABORT();
#endif #endif
/* Here if not setjmp support or if png_ptr is null. */
PNG_ABORT();
#ifndef PNG_CONSOLE_IO_SUPPORTED #ifndef PNG_CONSOLE_IO_SUPPORTED
error_message = error_message; /* Make compiler happy */ error_message = error_message; /* Make compiler happy */
#endif #endif

123
pngpriv.h
View File

@ -831,6 +831,129 @@ PNG_EXTERN void png_check_IHDR PNGARG((png_structp png_ptr,
int color_type, int interlace_type, int compression_type, int color_type, int interlace_type, int compression_type,
int filter_type)); int filter_type));
/* Free all memory used by the read (old method - NOT DLL EXPORTED) */
extern void png_read_destroy PNGARG((png_structp png_ptr, png_infop info_ptr,
png_infop end_info_ptr));
/* Free any memory used in png_ptr struct (old method - NOT DLL EXPORTED) */
extern void png_write_destroy PNGARG((png_structp png_ptr));
#ifdef USE_FAR_KEYWORD /* memory model conversion function */
extern void *png_far_to_near PNGARG((png_structp png_ptr,png_voidp ptr,
int check));
#endif /* USE_FAR_KEYWORD */
/* Define PNG_DEBUG at compile time for debugging information. Higher
* numbers for PNG_DEBUG mean more debugging information. This has
* only been added since version 0.95 so it is not implemented throughout
* libpng yet, but more support will be added as needed.
*/
#ifdef PNG_DEBUG
#if (PNG_DEBUG > 0)
#if !defined(PNG_DEBUG_FILE) && defined(_MSC_VER)
#include <crtdbg.h>
#if (PNG_DEBUG > 1)
#ifndef _DEBUG
# define _DEBUG
#endif
#ifndef png_debug
#define png_debug(l,m) _RPT0(_CRT_WARN,m PNG_STRING_NEWLINE)
#endif
#ifndef png_debug1
#define png_debug1(l,m,p1) _RPT1(_CRT_WARN,m PNG_STRING_NEWLINE,p1)
#endif
#ifndef png_debug2
#define png_debug2(l,m,p1,p2) _RPT2(_CRT_WARN,m PNG_STRING_NEWLINE,p1,p2)
#endif
#endif
#else /* PNG_DEBUG_FILE || !_MSC_VER */
#ifndef PNG_DEBUG_FILE
#define PNG_DEBUG_FILE stderr
#endif /* PNG_DEBUG_FILE */
#if (PNG_DEBUG > 1)
/* Note: ["%s"m PNG_STRING_NEWLINE] probably does not work on
* non-ISO compilers
*/
# ifdef __STDC__
# ifndef png_debug
# define png_debug(l,m) \
{ \
int num_tabs=l; \
fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \
(num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":"")))); \
}
# endif
# ifndef png_debug1
# define png_debug1(l,m,p1) \
{ \
int num_tabs=l; \
fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \
(num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))),p1); \
}
# endif
# ifndef png_debug2
# define png_debug2(l,m,p1,p2) \
{ \
int num_tabs=l; \
fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \
(num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))),p1,p2); \
}
# endif
# else /* __STDC __ */
# ifndef png_debug
# define png_debug(l,m) \
{ \
int num_tabs=l; \
char format[256]; \
snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \
(num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \
m,PNG_STRING_NEWLINE); \
fprintf(PNG_DEBUG_FILE,format); \
}
# endif
# ifndef png_debug1
# define png_debug1(l,m,p1) \
{ \
int num_tabs=l; \
char format[256]; \
snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \
(num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \
m,PNG_STRING_NEWLINE); \
fprintf(PNG_DEBUG_FILE,format,p1); \
}
# endif
# ifndef png_debug2
# define png_debug2(l,m,p1,p2) \
{ \
int num_tabs=l; \
char format[256]; \
snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \
(num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \
m,PNG_STRING_NEWLINE); \
fprintf(PNG_DEBUG_FILE,format,p1,p2); \
}
# endif
# endif /* __STDC __ */
#endif /* (PNG_DEBUG > 1) */
#endif /* _MSC_VER */
#endif /* (PNG_DEBUG > 0) */
#endif /* PNG_DEBUG */
#ifndef png_debug
#define png_debug(l, m)
#endif
#ifndef png_debug1
#define png_debug1(l, m, p1)
#endif
#ifndef png_debug2
#define png_debug2(l, m, p1, p2)
#endif
#if 0
extern PNG_EXPORT(png_bytep,png_sig_bytes) PNGARG((void));
#endif
/* Maintainer: Put new private prototypes here ^ and in libpngpf.3 */ /* Maintainer: Put new private prototypes here ^ and in libpngpf.3 */
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -1052,11 +1052,11 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
if (png_get_tRNS(read_ptr, read_info_ptr, &trans_alpha, &num_trans, if (png_get_tRNS(read_ptr, read_info_ptr, &trans_alpha, &num_trans,
&trans_color)) &trans_color))
{ {
int sample_max = (1 << read_info_ptr->bit_depth); int sample_max = (1 << bit_depth);
/* libpng doesn't reject a tRNS chunk with out-of-range samples */ /* libpng doesn't reject a tRNS chunk with out-of-range samples */
if (!((read_info_ptr->color_type == PNG_COLOR_TYPE_GRAY && if (!((color_type == PNG_COLOR_TYPE_GRAY &&
(int)trans_color->gray > sample_max) || (int)trans_color->gray > sample_max) ||
(read_info_ptr->color_type == PNG_COLOR_TYPE_RGB && (color_type == PNG_COLOR_TYPE_RGB &&
((int)trans_color->red > sample_max || ((int)trans_color->red > sample_max ||
(int)trans_color->green > sample_max || (int)trans_color->green > sample_max ||
(int)trans_color->blue > sample_max)))) (int)trans_color->blue > sample_max))))