From c3d73f4da99e094730457bfc1ffd00f5d71984db Mon Sep 17 00:00:00 2001 From: Glenn Randers-Pehrson Date: Sat, 24 Apr 2010 09:18:57 -0500 Subject: [PATCH] [devel] Added PNG_{READ,WRITE}_INT_FUNCTIONS_SUPPORTED. This allows the functions to read and write ints to be disabled independently of PNG_USE_READ_MACROS, which allows libpng to be built with the functions even though the default is to use the macros - this allows applications to choose at app build time whether or not to use macros (previously impossible because the functions weren't in the default build.) --- ANNOUNCE | 12 +++++++++--- CHANGES | 8 +++++++- png.h | 22 +++++++++++++++------- pngconf.h | 8 ++++++-- scripts/pnglibconf.dfa | 14 +++++++++++++- scripts/pnglibconf.h | 8 +++++--- 6 files changed, 55 insertions(+), 17 deletions(-) diff --git a/ANNOUNCE b/ANNOUNCE index 8f8aeb04a..0b6b464cc 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,5 +1,5 @@ -Libpng 1.5.0beta19 - April 18, 2010 +Libpng 1.5.0beta19 - April 24, 2010 This is not intended to be a public release. It will be replaced within a few weeks by a public version or by another test version. @@ -162,7 +162,7 @@ version 1.5.0beta17 [April 17, 2010] Removed the xcode project because it has not been updated to work with libpng-1.5.0. -version 1.5.0beta18 [April 18, 2010] +version 1.5.0beta18 [April 17, 2010] Restored the ability to include optional pngusr.h Moved replacements for png_error() and png_warning() from the contrib/pngminim project to pngerror.c, for use when warnings or @@ -171,7 +171,13 @@ version 1.5.0beta18 [April 18, 2010] Updated contrib/pngminim project to work with the new pnglibconf.h Added some PNG_NO_* defines to contrib/pngminim/*/pngusr.h to save space. -version 1.5.0beta19 [April 18, 2010] +version 1.5.0beta19 [April 24, 2010] + Added PNG_{READ,WRITE}_INT_FUNCTIONS_SUPPORTED. This allows the functions + to read and write ints to be disabled independently of PNG_USE_READ_MACROS, + which allows libpng to be built with the functions even though the default + is to use the macros - this allows applications to choose at app build + time whether or not to use macros (previously impossible because the + functions weren't in the default build.) Send comments/corrections/commendations to png-mng-implement at lists.sf.net: (subscription required; visit diff --git a/CHANGES b/CHANGES index 870873604..7be4c88bb 100644 --- a/CHANGES +++ b/CHANGES @@ -2653,7 +2653,13 @@ version 1.5.0beta18 [April 17, 2010] Updated contrib/pngminim project to work with the new pnglibconf.h Added some PNG_NO_* defines to contrib/pngminim/*/pngusr.h to save space. -version 1.5.0beta19 [April 18, 2010] +version 1.5.0beta19 [April 24, 2010] + Added PNG_{READ,WRITE}_INT_FUNCTIONS_SUPPORTED. This allows the functions + to read and write ints to be disabled independently of PNG_USE_READ_MACROS, + which allows libpng to be built with the functions even though the default + is to use the macros - this allows applications to choose at app build + time whether or not to use macros (previously impossible because the + functions weren't in the default build.) Send comments/corrections/commendations to png-mng-implement at lists.sf.net (subscription required; visit diff --git a/png.h b/png.h index 2c74a2a1e..d9d3bc2ee 100644 --- a/png.h +++ b/png.h @@ -1,7 +1,7 @@ /* png.h - header file for PNG reference library * - * libpng version 1.5.0beta19 - April 18, 2010 + * libpng version 1.5.0beta19 - April 24, 2010 * Copyright (c) 1998-2010 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) @@ -11,7 +11,7 @@ * Authors and maintainers: * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat * libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger - * libpng versions 0.97, January 1998, through 1.5.0beta19 - April 18, 2010: Glenn + * libpng versions 0.97, January 1998, through 1.5.0beta19 - April 24, 2010: Glenn * See also "Contributing Authors", below. * * Note about libpng version numbers: @@ -170,7 +170,7 @@ * * This code is released under the libpng license. * - * libpng versions 1.2.6, August 15, 2004, through 1.5.0beta19, April 18, 2010, are + * libpng versions 1.2.6, August 15, 2004, through 1.5.0beta19, April 24, 2010, are * Copyright (c) 2004, 2006-2010 Glenn Randers-Pehrson, and are * distributed according to the same disclaimer and license as libpng-1.2.5 * with the following individual added to the list of Contributing Authors: @@ -282,7 +282,7 @@ * Y2K compliance in libpng: * ========================= * - * April 18, 2010 + * April 24, 2010 * * Since the PNG Development group is an ad-hoc body, we can't make * an official declaration. @@ -346,7 +346,7 @@ /* Version information for png.h - this should match the version in png.c */ #define PNG_LIBPNG_VER_STRING "1.5.0beta19" #define PNG_HEADER_VERSION_STRING \ - " libpng version 1.5.0beta19 - April 18, 2010\n" + " libpng version 1.5.0beta19 - April 24, 2010\n" #define PNG_LIBPNG_VER_SONUM 15 #define PNG_LIBPNG_VER_DLLNUM 15 @@ -2024,17 +2024,23 @@ extern PNG_EXPORT(png_bytep,png_get_io_chunk_name,(png_structp png_ptr),,200); ((png_int_32)(*((buf) + 3)))) # endif #endif + +#ifdef PNG_READ_INT_FUNCTIONS_SUPPORTED extern PNG_EXPORT(png_uint_32,png_get_uint_32,(png_bytep buf),,201); extern PNG_EXPORT(png_uint_16,png_get_uint_16,(png_bytep buf),,202); -# ifdef PNG_GET_INT_32_SUPPORTED +#endif +#ifdef PNG_GET_INT_32_SUPPORTED extern PNG_EXPORT(png_int_32,png_get_int_32,(png_bytep buf),,203); -# endif +#endif + extern PNG_EXPORT(png_uint_32,png_get_uint_31,(png_structp png_ptr, png_bytep buf),,204); /* No png_get_int_16 -- may be added if there's a real need for it. */ /* Place a 32-bit number into a buffer in PNG byte order (big-endian). */ +#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED extern PNG_EXPORT(void,png_save_uint_32,(png_bytep buf, png_uint_32 i),,205); +#endif #ifdef PNG_SAVE_INT_32_SUPPORTED extern PNG_EXPORT(void,png_save_int_32,(png_bytep buf, png_int_32 i),,206); #endif @@ -2043,8 +2049,10 @@ extern PNG_EXPORT(void,png_save_int_32,(png_bytep buf, png_int_32 i),,206); * The parameter is declared unsigned int, not png_uint_16, * just to avoid potential problems on pre-ANSI C compilers. */ +#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED extern PNG_EXPORT(void,png_save_uint_16,(png_bytep buf, unsigned int i),,207); /* No png_save_int_16 -- may be added if there's a real need for it. */ +#endif /* The last ordinal number (this is the *last* one, the next one to * use is one more than this.) diff --git a/pngconf.h b/pngconf.h index 8e03ba45c..52a58df9b 100644 --- a/pngconf.h +++ b/pngconf.h @@ -1,7 +1,7 @@ /* pngconf.h - machine configurable file for libpng * - * libpng version 1.5.0beta19 - April 18, 2010 + * libpng version 1.5.0beta19 - April 24, 2010 * * Copyright (c) 1998-2010 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) @@ -41,8 +41,12 @@ /* This controls optimization of the reading of 16 and 32 bit values * from PNG files. It can be set on a per-app-file basis - it * just changes whether a macro is used to the function is called. - * The library builder sets the default. + * The library builder sets the default, if read functions are not + * built into the library the macro implementation is forced on. */ +#ifndef PNG_READ_INT_FUNCTIONS_SUPPORTED +# define PNG_USE_READ_MACROS +#endif #if !defined(PNG_NO_USE_READ_MACROS) && !defined(PNG_USE_READ_MACROS) # if PNG_DEFAULT_READ_MACROS # define PNG_USE_READ_MACROS diff --git a/scripts/pnglibconf.dfa b/scripts/pnglibconf.dfa index 4351dc322..c357600ed 100644 --- a/scripts/pnglibconf.dfa +++ b/scripts/pnglibconf.dfa @@ -137,6 +137,18 @@ setting API_RULE default 0 # Default to using the read macros setting DEFAULT_READ_MACROS default 1 +# The alternative is to call functions to read PNG values, if +# the functions are turned *off* the read macros must always +# be enabled, so turning this off will actually force the +# USE_READ_MACROS option on (see pngconf.h) +option READ_INT_FUNCTIONS requires READ + +# The same for write, but these can only be switched off if +# no writing is required at all - hence the use of an 'enables' +# not a 'requires' below: +option WRITE_INT_FUNCTIONS off +option WRITE enables WRITE_INT_FUNCTIONS + # Generic options - affect both read and write. option BENIGN_ERRORS off option MNG_FEATURES @@ -361,7 +373,7 @@ option WRITE_UNKNOWN_CHUNKS requires WRITE option HANDLE_AS_UNKNOWN -option GET_INT_32 requires READ +option GET_INT_32 requires READ READ_INT_FUNCTIONS # png_get_int_32 is required by the ancillary chunks oFFs and pCAL option READ_oFFs enables GET_INT_32 option READ_pCAL enables GET_INT_32 diff --git a/scripts/pnglibconf.h b/scripts/pnglibconf.h index 403106bb5..863d970f5 100644 --- a/scripts/pnglibconf.h +++ b/scripts/pnglibconf.h @@ -1,7 +1,7 @@ -/* 1.5.0beta17 STANDARD API DEFINITION */ +/* 1.5.0beta19 STANDARD API DEFINITION */ /* pnglibconf.h - library build configuration */ -/* libpng version 1.5.0beta17 - April 2, 2010 */ +/* libpng version 1.5.0beta19 - April 2, 2010 */ /* Copyright (c) 1998-2010 Glenn Randers-Pehrson */ @@ -48,6 +48,7 @@ #define PNG_IO_STATE_SUPPORTED #define PNG_SET_USER_LIMITS_SUPPORTED #define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED +#define PNG_WRITE_INT_FUNCTIONS_SUPPORTED #define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED #define PNG_WRITE_FILTER_SUPPORTED #define PNG_SET_CHUNK_CACHE_LIMIT_SUPPORTED @@ -84,14 +85,15 @@ #define PNG_READ_SHIFT_SUPPORTED #define PNG_CONVERT_tIME_SUPPORTED #define PNG_READ_USER_TRANSFORM_SUPPORTED +#define PNG_READ_INT_FUNCTIONS_SUPPORTED #define PNG_READ_USER_CHUNKS_SUPPORTED #define PNG_READ_hIST_SUPPORTED -#define PNG_READ_QUANTIZE_SUPPORTED #define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED #define PNG_READ_SWAP_ALPHA_SUPPORTED #define PNG_READ_COMPOSITE_NODIV_SUPPORTED #define PNG_SEQUENTIAL_READ_SUPPORTED #define PNG_READ_BACKGROUND_SUPPORTED +#define PNG_READ_QUANTIZE_SUPPORTED #define PNG_READ_iCCP_SUPPORTED #define PNG_READ_STRIP_ALPHA_SUPPORTED #define PNG_READ_PACKSWAP_SUPPORTED