[devel] Made FIXED and FLOATING options consistent in the APIs they enable
and disable. Corrected scripts/options.awk to handle both command line
options and options specified in the .dfa files.
diff --git a/ANNOUNCE b/ANNOUNCE
index 91120c6..0f3b7da 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,5 +1,5 @@
-Libpng 1.5.0beta32 - June 26, 2010
+Libpng 1.5.0beta33 - June 26, 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.
@@ -9,20 +9,20 @@
Source files with LF line endings (for Unix/Linux) and with a
"configure" script
- 1.5.0beta32.tar.xz (LZMA-compressed, recommended)
- 1.5.0beta32.tar.gz
- 1.5.0beta32.tar.bz2
+ 1.5.0beta33.tar.xz (LZMA-compressed, recommended)
+ 1.5.0beta33.tar.gz
+ 1.5.0beta33.tar.bz2
Source files with CRLF line endings (for Windows), without the
"configure" script
- lp150b32.zip
- lp150b32.7z
+ lp150b33.zip
+ lp150b33.7z
Other information:
- 1.5.0beta32-README.txt
- 1.5.0beta32-LICENSE.txt
+ 1.5.0beta33-README.txt
+ 1.5.0beta33-LICENSE.txt
Changes since the last public release (1.4.1):
@@ -252,7 +252,12 @@
Removed some trailing blanks.
version 1.5.0beta32 [June 26, 2010]
- Removed leftover scripts/options.patch and scripts/options.rej.
+ Removed leftover scripts/options.patch and scripts/options.rej
+
+version 1.5.0beta32 [June 26, 2010]
+ Made FIXED and FLOATING options consistent in the APIs they enable and
+ disable. Corrected scripts/options.awk to handle both command line
+ options and options specified in the .dfa files.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net:
(subscription required; visit
diff --git a/CHANGES b/CHANGES
index 90d0fe3..cac7d2a 100644
--- a/CHANGES
+++ b/CHANGES
@@ -2736,6 +2736,11 @@
version 1.5.0beta32 [June 26, 2010]
Removed leftover scripts/options.patch and scripts/options.rej
+version 1.5.0beta32 [June 26, 2010]
+ Made FIXED and FLOATING options consistent in the APIs they enable and
+ disable. Corrected scripts/options.awk to handle both command line
+ options and options specified in the .dfa files.
+
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
diff --git a/png.h b/png.h
index 2b4effe..24f25b9 100644
--- a/png.h
+++ b/png.h
@@ -1,7 +1,7 @@
/* png.h - header file for PNG reference library
*
- * libpng version 1.5.0beta32 - June 26, 2010
+ * libpng version 1.5.0beta33 - June 26, 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.0beta32 - June 26, 2010: Glenn
+ * libpng versions 0.97, January 1998, through 1.5.0beta33 - June 26, 2010: Glenn
* See also "Contributing Authors", below.
*
* Note about libpng version numbers:
@@ -140,7 +140,7 @@
* 1.4.1 14 10401 14.so.14.1[.0]
* 1.4.2 14 10402 14.so.14.2[.0]
* 1.4.3 14 10403 14.so.14.3[.0]
- * 1.5.0beta01-32 15 10500 15.so.15.0[.0]
+ * 1.5.0beta01-33 15 10500 15.so.15.0[.0]
*
* Henceforth the source version will match the shared-library major
* and minor numbers; the shared-library major version number will be
@@ -172,7 +172,7 @@
*
* This code is released under the libpng license.
*
- * libpng versions 1.2.6, August 15, 2004, through 1.5.0beta32, June 26, 2010, are
+ * libpng versions 1.2.6, August 15, 2004, through 1.5.0beta33, June 26, 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:
@@ -290,7 +290,7 @@
* an official declaration.
*
* This is your unofficial assurance that libpng from version 0.71 and
- * upward through 1.5.0beta32 are Y2K compliant. It is my belief that earlier
+ * upward through 1.5.0beta33 are Y2K compliant. It is my belief that earlier
* versions were also Y2K compliant.
*
* Libpng only has three year fields. One is a 2-byte unsigned integer
@@ -346,9 +346,9 @@
*/
/* Version information for png.h - this should match the version in png.c */
-#define PNG_LIBPNG_VER_STRING "1.5.0beta32"
+#define PNG_LIBPNG_VER_STRING "1.5.0beta33"
#define PNG_HEADER_VERSION_STRING \
- " libpng version 1.5.0beta32 - June 26, 2010\n"
+ " libpng version 1.5.0beta33 - June 26, 2010\n"
#define PNG_LIBPNG_VER_SONUM 15
#define PNG_LIBPNG_VER_DLLNUM 15
@@ -361,7 +361,7 @@
* PNG_LIBPNG_VER_STRING, omitting any leading zero:
*/
-#define PNG_LIBPNG_VER_BUILD 32
+#define PNG_LIBPNG_VER_BUILD 33
/* Release Status */
#define PNG_LIBPNG_BUILD_ALPHA 1
@@ -836,7 +836,7 @@
/* This triggers a compiler error in png.c, if png.c and png.h
* do not agree upon the version number.
*/
-typedef png_structp version_1_5_0beta32;
+typedef png_structp version_1_5_0beta33;
typedef png_struct FAR * FAR * png_structpp;
@@ -998,16 +998,17 @@
#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
/* Expand the grayscale to 24-bit RGB if necessary. */
extern PNG_EXPORT(void,png_set_gray_to_rgb,(png_structp png_ptr),,31);
-#endif
-#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
/* Reduce RGB to grayscale. */
# ifdef PNG_FLOATING_POINT_SUPPORTED
extern PNG_EXPORT(void,png_set_rgb_to_gray,(png_structp png_ptr,
int error_action, double red, double green ),,32);
# endif
+# ifdef PNG_FIXED_POINT_SUPPORTED
extern PNG_EXPORT(void,png_set_rgb_to_gray_fixed,(png_structp png_ptr,
int error_action, png_fixed_point red, png_fixed_point green),,33);
+# endif
+
extern PNG_EXPORT(png_byte,png_get_rgb_to_gray_status,(png_structp png_ptr),,
34);
#endif
@@ -1081,6 +1082,7 @@
png_color_16p background_color, int background_gamma_code,
int need_expand, double background_gamma),,47);
# endif
+/* TODO: png_set_background_fixed */
# define PNG_BACKGROUND_GAMMA_UNKNOWN 0
# define PNG_BACKGROUND_GAMMA_SCREEN 1
# define PNG_BACKGROUND_GAMMA_FILE 2
@@ -1107,6 +1109,7 @@
extern PNG_EXPORT(void,png_set_gamma,(png_structp png_ptr,
double screen_gamma, double default_file_gamma),,50);
# endif
+/* TODO: png_set_gamma_fixed */
#endif
@@ -1267,6 +1270,7 @@
int heuristic_method, int num_weights, png_doublep filter_weights,
png_doublep filter_costs),,68);
# endif
+/* TODO: png_set_filter_heuristics_fixed */
#endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */
/* Heuristic used for row filter selection. These defines should NOT be
@@ -1582,6 +1586,7 @@
extern PNG_EXPORT(float, png_get_pixel_aspect_ratio,
(png_structp png_ptr, png_infop info_ptr),,125);
# endif
+/* TODO: png_get_pixel_aspect_ratio_fixed */
/* Returns image x, y offset in pixels or microns, from oFFs chunk data. */
extern PNG_EXPORT(png_int_32, png_get_x_offset_pixels,
@@ -1648,8 +1653,10 @@
extern PNG_EXPORT(png_uint_32,png_get_gAMA,(png_structp png_ptr,
png_infop info_ptr, double *file_gamma),,137);
# endif
+# ifdef PNG_FIXED_POINT_SUPPORTED
extern PNG_EXPORT(png_uint_32,png_get_gAMA_fixed,(png_structp png_ptr,
png_infop info_ptr, png_fixed_point *int_file_gamma),,138);
+# endif
#endif
#ifdef PNG_gAMA_SUPPORTED
@@ -1657,8 +1664,10 @@
extern PNG_EXPORT(void,png_set_gAMA,(png_structp png_ptr,
png_infop info_ptr, double file_gamma),,139);
# endif
+# ifdef PNG_FIXED_POINT_SUPPORTED
extern PNG_EXPORT(void,png_set_gAMA_fixed,(png_structp png_ptr,
png_infop info_ptr, png_fixed_point int_file_gamma),,140);
+# endif
#endif
#ifdef PNG_hIST_SUPPORTED
@@ -1813,12 +1822,11 @@
# ifdef PNG_FLOATING_POINT_SUPPORTED
extern PNG_EXPORT(png_uint_32,png_get_sCAL,(png_structp png_ptr,
png_infop info_ptr, int *unit, double *width, double *height),,168);
-# else
-# ifdef PNG_FIXED_POINT_SUPPORTED
+# endif
+# ifdef PNG_FIXED_POINT_SUPPORTED
extern PNG_EXPORT(png_uint_32,png_get_sCAL_s,(png_structp png_ptr,
png_infop info_ptr, int *unit, png_charpp swidth,
png_charpp sheight),,169);
-# endif
# endif
#endif /* PNG_sCAL_SUPPORTED */
@@ -1826,12 +1834,11 @@
# ifdef PNG_FLOATING_POINT_SUPPORTED
extern PNG_EXPORT(void,png_set_sCAL,(png_structp png_ptr,
png_infop info_ptr, int unit, double width, double height),,170);
-# else
-# ifdef PNG_FIXED_POINT_SUPPORTED
+# endif
+# ifdef PNG_FIXED_POINT_SUPPORTED
extern PNG_EXPORT(void,png_set_sCAL_s,(png_structp png_ptr,
png_infop info_ptr, int unit, png_charp swidth,
png_charp sheight),,171);
-# endif
# endif
#endif /* PNG_sCAL_SUPPORTED || PNG_WRITE_sCAL_SUPPORTED */
diff --git a/pngget.c b/pngget.c
index 296876f..6052f74 100644
--- a/pngget.c
+++ b/pngget.c
@@ -684,7 +684,7 @@
return(0);
}
-#else
+#endif
#ifdef PNG_FIXED_POINT_SUPPORTED
png_uint_32 PNGAPI
png_get_sCAL_s(png_structp png_ptr, png_infop info_ptr,
@@ -703,7 +703,6 @@
}
#endif
#endif
-#endif
#ifdef PNG_pHYs_SUPPORTED
png_uint_32 PNGAPI
diff --git a/pngrtran.c b/pngrtran.c
index 86ba1c5..084503a 100644
--- a/pngrtran.c
+++ b/pngrtran.c
@@ -662,26 +662,12 @@
#endif
#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-/* Convert a RGB image to a grayscale of the same width. This allows us,
- * for example, to convert a 24 bpp RGB image into an 8 bpp grayscale image.
- */
-
-void PNGAPI
-png_set_rgb_to_gray(png_structp png_ptr, int error_action, double red,
- double green)
-{
- int red_fixed = (int)((float)red*100000.0 + 0.5);
- int green_fixed = (int)((float)green*100000.0 + 0.5);
-
- if (png_ptr == NULL)
- return;
-
- png_set_rgb_to_gray_fixed(png_ptr, error_action, red_fixed, green_fixed);
-}
+void
+#ifdef PNG_FIXED_POINT_SUPPORTED
+ PNGAPI
+#else
+ /* PRIVATE */
#endif
-
-void PNGAPI
png_set_rgb_to_gray_fixed(png_structp png_ptr, int error_action,
png_fixed_point red, png_fixed_point green)
{
@@ -741,6 +727,26 @@
(png_uint_16)(32768 - red_int - green_int);
}
}
+
+#ifdef PNG_FLOATING_POINT_SUPPORTED
+/* Convert a RGB image to a grayscale of the same width. This allows us,
+ * for example, to convert a 24 bpp RGB image into an 8 bpp grayscale image.
+ */
+
+void PNGAPI
+png_set_rgb_to_gray(png_structp png_ptr, int error_action, double red,
+ double green)
+{
+ int red_fixed = (int)((float)red*100000.0 + 0.5);
+ int green_fixed = (int)((float)green*100000.0 + 0.5);
+
+ if (png_ptr == NULL)
+ return;
+
+ png_set_rgb_to_gray_fixed(png_ptr, error_action, red_fixed, green_fixed);
+}
+#endif /* FLOATING POINT */
+
#endif
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
diff --git a/pngrutil.c b/pngrutil.c
index a3b37d9..c91b1c8 100644
--- a/pngrutil.c
+++ b/pngrutil.c
@@ -746,8 +746,8 @@
png_ptr->gamma = file_gamma;
# endif
png_set_gAMA(png_ptr, info_ptr, file_gamma);
-#endif
-#ifdef PNG_FIXED_POINT_SUPPORTED
+#else
+ /* Fixed point must be set! */
png_set_gAMA_fixed(png_ptr, info_ptr, igamma);
#endif
}
@@ -3187,7 +3187,7 @@
break;
}
default:
- png_warning(png_ptr, "Ignoring bad adaptive filter type");
+ png_error(png_ptr, "Ignoring bad adaptive filter type");
*row = 0;
break;
}
diff --git a/pngset.c b/pngset.c
index 59d8225..85c4bc5 100644
--- a/pngset.c
+++ b/pngset.c
@@ -141,6 +141,7 @@
png_warning(png_ptr, "Setting gamma = 0");
}
#endif
+#ifdef PNG_FIXED_POINT_SUPPORTED
void PNGAPI
png_set_gAMA_fixed(png_structp png_ptr, png_infop info_ptr, png_fixed_point
int_gamma)
@@ -172,15 +173,14 @@
#ifdef PNG_FLOATING_POINT_SUPPORTED
info_ptr->gamma = (float)(png_gamma/100000.);
#endif
-#ifdef PNG_FIXED_POINT_SUPPORTED
info_ptr->int_gamma = png_gamma;
-#endif
info_ptr->valid |= PNG_INFO_gAMA;
if (png_gamma == 0)
png_warning(png_ptr, "Setting gamma = 0");
}
#endif
+#endif
#ifdef PNG_hIST_SUPPORTED
void PNGAPI
@@ -368,7 +368,7 @@
}
#endif
-#if defined(PNG_READ_sCAL_SUPPORTED) || defined(PNG_WRITE_sCAL_SUPPORTED)
+#ifdef PNG_sCAL_SUPPORTED
#ifdef PNG_FLOATING_POINT_SUPPORTED
void PNGAPI
png_set_sCAL(png_structp png_ptr, png_infop info_ptr,
@@ -385,7 +385,7 @@
info_ptr->valid |= PNG_INFO_sCAL;
}
-#else
+#endif
#ifdef PNG_FIXED_POINT_SUPPORTED
void PNGAPI
png_set_sCAL_s(png_structp png_ptr, png_infop info_ptr,
@@ -440,7 +440,6 @@
}
#endif
#endif
-#endif
#ifdef PNG_pHYs_SUPPORTED
void PNGAPI
@@ -558,13 +557,13 @@
png_set_sRGB(png_ptr, info_ptr, intent);
#ifdef PNG_gAMA_SUPPORTED
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- file_gamma = (float).45455;
- png_set_gAMA(png_ptr, info_ptr, file_gamma);
-#endif
#ifdef PNG_FIXED_POINT_SUPPORTED
int_file_gamma = 45455L;
png_set_gAMA_fixed(png_ptr, info_ptr, int_file_gamma);
+#else
+ /* Floating point must be set! */
+ file_gamma = (float).45455;
+ png_set_gAMA(png_ptr, info_ptr, file_gamma);
#endif
#endif
diff --git a/scripts/options.awk b/scripts/options.awk
index 0b80cec..234074d 100755
--- a/scripts/options.awk
+++ b/scripts/options.awk
@@ -85,6 +85,36 @@
}
}
+# variable=value
+# Sets the given variable to the given value (the syntax is fairly
+# free form, except for deb (you are expected to understand how to
+# set the debug variable...)
+#
+# This happens before the check on 'pre' below skips most of the
+# rest of the actions, so the variable settings happen during
+# preprocessing but are recorded in the END action too. This
+# allows them to be set on the command line too.
+$0 ~ /^[ ]*everything[ =]*off[ ]*$/{
+ everything = "off"
+ next
+}
+$0 ~ /^[ ]*everything[ =]*on[ ]*$/{
+ everything = "on"
+ next
+}
+$0 ~ /^[ ]*logunsupported[ =]*0[ ]*$/{
+ logunsupported = 0
+ next
+}
+$0 ~ /^[ ]*logunsupported[ =]*1[ ]*$/{
+ logunsupported = 1
+ next
+}
+$1 == "deb" && $2 == "=" && NF == 3{
+ deb = $3
+ next
+}
+
# Preprocessing - this just copies the input file with lines
# that need preprocessing (just chunk at present) expanded
# The bare "pre" instead of "pre != 0" crashes under Sunos awk
@@ -153,31 +183,6 @@
next
}
-# variable=value
-# Sets the given variable to the given value (the syntax is fairly
-# free form, except for deb (you are expected to understand how to
-# set the debug variable...)
-$0 ~ /^[ ]*everything[ =]*off[ ]*$/{
- everything = "off"
- next
-}
-$0 ~ /^[ ]*everything[ =]*on[ ]*$/{
- everything = "on"
- next
-}
-$0 ~ /^[ ]*logunsupported[ =]*0[ ]*$/{
- logunsupported = 0
- next
-}
-$0 ~ /^[ ]*logunsupported[ =]*1[ ]*$/{
- logunsupported = 1
- next
-}
-$1 == "deb" && $2 == "=" && NF == 3{
- deb = $3
- next
-}
-
# option NAME ( (requires|enables|if) NAME* | on | off | disabled )*
# Declares an option 'NAME' and describes its default setting (disabled)
# and its relationship to other options. The option is disabled
@@ -403,12 +408,12 @@
if (err) exit 1
if (pre) {
- # Record the variables
- print "deb =", deb
+ # Record the final value of the variables
+ print "deb =", deb >out
if (everything != "") {
- print "everything =", everything
+ print "everything =", everything >out
}
- print "logunsupported =", logunsupported
+ print "logunsupported =", logunsupported >out
exit 0
}
diff --git a/scripts/pnglibconf.dfa b/scripts/pnglibconf.dfa
index 1cbccde..4c55f52 100644
--- a/scripts/pnglibconf.dfa
+++ b/scripts/pnglibconf.dfa
@@ -166,7 +166,7 @@
option WRITE enables WRITE_INT_FUNCTIONS
# Generic options - affect both read and write.
-option BENIGN_ERRORS disabled
+option BENIGN_ERRORS
option MNG_FEATURES
option FLOATING_POINT enables ok_math
option FIXED_POINT enables ok_math
@@ -288,7 +288,7 @@
= NO_READ_COMPOSITE_NODIV PNG_NO_READ_COMPOSITED_NODIV
# Inch conversions: not switched on by default
-option INCH_CONVERSIONS requires FLOATING_POINT disabled
+option INCH_CONVERSIONS requires FLOATING_POINT
= INCH_CONVERSIONS PNG_INCH_CONVERSIONS
# IN DEVELOPMENT
diff --git a/scripts/pnglibconf.h b/scripts/pnglibconf.h
index 76db2da..33c4494 100644
--- a/scripts/pnglibconf.h
+++ b/scripts/pnglibconf.h
@@ -1,4 +1,4 @@
-/* libpng-1.5.0beta32 STANDARD API DEFINITION */
+/* libpng-1.5.0beta33 STANDARD API DEFINITION */
/* pnglibconf.h - library build configuration */
/* last changed in libpng version 1.5.0 - June 26, 2010 */
@@ -36,12 +36,12 @@
#define PNG_ERROR_TEXT_SUPPORTED
#define PNG_READ_SUPPORTED
/*#undef PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED*/
-/*#undef PNG_BENIGN_ERRORS_SUPPORTED*/
+#define PNG_BENIGN_ERRORS_SUPPORTED
#define PNG_SETJMP_SUPPORTED
#define PNG_WRITE_FLUSH_SUPPORTED
#define PNG_MNG_FEATURES_SUPPORTED
#define PNG_FLOATING_POINT_SUPPORTED
-/*#undef PNG_INCH_CONVERSIONS_SUPPORTED*/
+#define PNG_INCH_CONVERSIONS_SUPPORTED
#define PNG_STDIO_SUPPORTED
#define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED
#define PNG_USER_MEM_SUPPORTED
diff --git a/scripts/pngwin.def b/scripts/pngwin.def
index a42cbb8..a445f0d 100644
--- a/scripts/pngwin.def
+++ b/scripts/pngwin.def
@@ -11,7 +11,7 @@
;OS2 CODE PRELOAD MOVEABLE DISCARDABLE
EXPORTS
-;Version 1.5.0beta32
+;Version 1.5.0beta33
png_access_version_number @1
png_set_sig_bytes @2
png_sig_cmp @3
@@ -117,6 +117,9 @@
png_chunk_error @103
png_warning @105
png_chunk_warning @106
+ png_benign_error @107
+ png_chunk_benign_error @108
+ png_set_benign_errors @109
png_get_valid @110
png_get_rowbytes @111
png_get_rows @112
@@ -176,7 +179,9 @@
png_get_tRNS @166
png_set_tRNS @167
png_get_sCAL @168
+ png_get_sCAL_s @169
png_set_sCAL @170
+ png_set_sCAL_s @171
png_set_keep_unknown_chunks @172
png_handle_as_unknown @173
png_set_unknown_chunks @174
@@ -197,6 +202,12 @@
png_get_chunk_cache_max @190
png_set_chunk_malloc_max @191
png_get_chunk_malloc_max @192
+ png_get_pixels_per_inch @193
+ png_get_x_pixels_per_inch @194
+ png_get_y_pixels_per_inch @195
+ png_get_x_offset_inches @196
+ png_get_y_offset_inches @197
+ png_get_pHYs_dpi @198
png_get_io_state @199
png_get_io_chunk_name @200
png_get_uint_32 @201