[libpng15] Added PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED macro, on by default.

This commit is contained in:
Glenn Randers-Pehrson 2015-02-18 13:00:09 -06:00
parent a117d4eacc
commit 014440e6cd
6 changed files with 55 additions and 37 deletions

View File

@ -1,5 +1,5 @@
Libpng 1.5.22beta03 - February 17, 2015 Libpng 1.5.22beta03 - February 18, 2015
This is not intended to be a public release. It will be replaced 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. within a few weeks by a public version or by another test version.
@ -41,7 +41,9 @@ Version 1.5.22beta02 [February 17, 2015]
by the user at build time or run time. This provides a more robust by the user at build time or run time. This provides a more robust
defense against DOS and as-yet undiscovered overflows. defense against DOS and as-yet undiscovered overflows.
Version 1.5.22beta03 [February 17, 2015] Version 1.5.22beta03 [February 18, 2015]
Added PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED macro, on by default.
Allow user to call png_get_IHDR() with NULL arguments (Reuben Hawkins).
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

View File

@ -4305,7 +4305,9 @@ Version 1.5.22beta02 [February 17, 2015]
by the user at build time or run time. This provides a more robust by the user at build time or run time. This provides a more robust
defense against DOS and as-yet undiscovered overflows. defense against DOS and as-yet undiscovered overflows.
Version 1.5.22beta03 [February 17, 2015] Version 1.5.22beta03 [February 18, 2015]
Added PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED macro, on by default.
Allow user to call png_get_IHDR() with NULL arguments (Reuben Hawkins).
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

View File

@ -1,6 +1,6 @@
Libpng-manual.txt - A description on how to use and modify libpng Libpng-manual.txt - A description on how to use and modify libpng
libpng version 1.5.22beta03 - February 17, 2015 libpng version 1.5.22beta03 - February 18, 2015
Updated and distributed by Glenn Randers-Pehrson Updated and distributed by Glenn Randers-Pehrson
<glennrp at users.sourceforge.net> <glennrp at users.sourceforge.net>
Copyright (c) 1998-2014 Glenn Randers-Pehrson Copyright (c) 1998-2014 Glenn Randers-Pehrson
@ -11,7 +11,7 @@ Libpng-manual.txt - A description on how to use and modify libpng
Based on: Based on:
libpng versions 0.97, January 1998, through 1.5.22beta03 - February 17, 2015 libpng versions 0.97, January 1998, through 1.5.22beta03 - February 18, 2015
Updated and distributed by Glenn Randers-Pehrson Updated and distributed by Glenn Randers-Pehrson
Copyright (c) 1998-2014 Glenn Randers-Pehrson Copyright (c) 1998-2014 Glenn Randers-Pehrson
@ -1066,13 +1066,13 @@ in until png_read_end() has read the chunk data following the image.
the PNG datastream is embedded in the PNG datastream is embedded in
a MNG-1.0 datastream) a MNG-1.0 datastream)
Any or all of interlace_type, compression_type, or Any of width, height, color_type, bit_depth,
filter_method can be NULL if you are interlace_type, compression_type, or filter_method can
not interested in their values. be NULL if you are not interested in their values.
Note that png_get_IHDR() returns 32-bit data into Note that png_get_IHDR() returns 32-bit data into
the application's width and height variables. the application's width and height variables.
This is an unsafe situation if these are 16-bit This is an unsafe situation if these are not png_uint_32
variables. In such situations, the variables. In such situations, the
png_get_image_width() and png_get_image_height() png_get_image_width() and png_get_image_height()
functions described below are safer. functions described below are safer.
@ -4475,6 +4475,9 @@ exported functions are marked with PNGAPI:
body; body;
} }
The return type and decorations are placed on a separate line
ahead of the function name, as illustrated above.
The prototypes for all exported functions appear in png.h, The prototypes for all exported functions appear in png.h,
above the comment that says above the comment that says
@ -4489,9 +4492,7 @@ We mark all non-exported functions with "/* PRIVATE */"":
} }
The prototypes for non-exported functions (except for those in The prototypes for non-exported functions (except for those in
pngtest) appear in pngtest) appear in pngpriv.h above the comment that says
pngpriv.h
above the comment that says
/* Maintainer: Put new private prototypes here ^ */ /* Maintainer: Put new private prototypes here ^ */
@ -4500,6 +4501,9 @@ functions and variables begin with "png_", and all publicly visible C
preprocessor macros begin with "PNG". We request that applications that preprocessor macros begin with "PNG". We request that applications that
use libpng *not* begin any of their own symbols with either of these strings. use libpng *not* begin any of their own symbols with either of these strings.
Control keywords if, for, while, and switch are always followed by a space
to distinguish them from function calls, which have no trailing space.
We put a space after each comma and after each semicolon We put a space after each comma and after each semicolon
in "for" statements, and we put spaces before and after each in "for" statements, and we put spaces before and after each
C binary operator and after "for" or "while", and before C binary operator and after "for" or "while", and before
@ -4531,7 +4535,7 @@ Other rules can be inferred by inspecting the libpng source.
XIV. Y2K Compliance in libpng XIV. Y2K Compliance in libpng
February 17, 2015 February 18, 2015
Since the PNG Development group is an ad-hoc body, we can't make Since the PNG Development group is an ad-hoc body, we can't make
an official declaration. an official declaration.
@ -4540,8 +4544,8 @@ This is your unofficial assurance that libpng from version 0.71 and
upward through 1.5.22beta03 are Y2K compliant. It is my belief that earlier upward through 1.5.22beta03 are Y2K compliant. It is my belief that earlier
versions were also Y2K compliant. versions were also Y2K compliant.
Libpng only has two year fields. One is a 2-byte unsigned integer that Libpng only has two year fields. One is a 2-byte unsigned integer
will hold years up to 65535. The other holds the date in text that will hold years up to 65535. The other holds the date in text
format, and will hold years up to 9999. format, and will hold years up to 9999.
The integer is The integer is

View File

@ -1,4 +1,4 @@
.TH LIBPNG 3 "February 17, 2015" .TH LIBPNG 3 "February 18, 2015"
.SH NAME .SH NAME
libpng \- Portable Network Graphics (PNG) Reference Library 1.5.22beta03 libpng \- Portable Network Graphics (PNG) Reference Library 1.5.22beta03
.SH SYNOPSIS .SH SYNOPSIS
@ -492,7 +492,7 @@ Following is a copy of the libpng-manual.txt file that accompanies libpng.
.SH LIBPNG.TXT .SH LIBPNG.TXT
Libpng-manual.txt - A description on how to use and modify libpng Libpng-manual.txt - A description on how to use and modify libpng
libpng version 1.5.22beta03 - February 17, 2015 libpng version 1.5.22beta03 - February 18, 2015
Updated and distributed by Glenn Randers-Pehrson Updated and distributed by Glenn Randers-Pehrson
<glennrp at users.sourceforge.net> <glennrp at users.sourceforge.net>
Copyright (c) 1998-2014 Glenn Randers-Pehrson Copyright (c) 1998-2014 Glenn Randers-Pehrson
@ -503,7 +503,7 @@ Libpng-manual.txt - A description on how to use and modify libpng
Based on: Based on:
libpng versions 0.97, January 1998, through 1.5.22beta03 - February 17, 2015 libpng versions 0.97, January 1998, through 1.5.22beta03 - February 18, 2015
Updated and distributed by Glenn Randers-Pehrson Updated and distributed by Glenn Randers-Pehrson
Copyright (c) 1998-2014 Glenn Randers-Pehrson Copyright (c) 1998-2014 Glenn Randers-Pehrson
@ -1558,13 +1558,13 @@ in until png_read_end() has read the chunk data following the image.
the PNG datastream is embedded in the PNG datastream is embedded in
a MNG-1.0 datastream) a MNG-1.0 datastream)
Any or all of interlace_type, compression_type, or Any of width, height, color_type, bit_depth,
filter_method can be NULL if you are interlace_type, compression_type, or filter_method can
not interested in their values. be NULL if you are not interested in their values.
Note that png_get_IHDR() returns 32-bit data into Note that png_get_IHDR() returns 32-bit data into
the application's width and height variables. the application's width and height variables.
This is an unsafe situation if these are 16-bit This is an unsafe situation if these are not png_uint_32
variables. In such situations, the variables. In such situations, the
png_get_image_width() and png_get_image_height() png_get_image_width() and png_get_image_height()
functions described below are safer. functions described below are safer.
@ -4967,6 +4967,9 @@ exported functions are marked with PNGAPI:
body; body;
} }
The return type and decorations are placed on a separate line
ahead of the function name, as illustrated above.
The prototypes for all exported functions appear in png.h, The prototypes for all exported functions appear in png.h,
above the comment that says above the comment that says
@ -4981,9 +4984,7 @@ We mark all non-exported functions with "/* PRIVATE */"":
} }
The prototypes for non-exported functions (except for those in The prototypes for non-exported functions (except for those in
pngtest) appear in pngtest) appear in pngpriv.h above the comment that says
pngpriv.h
above the comment that says
/* Maintainer: Put new private prototypes here ^ */ /* Maintainer: Put new private prototypes here ^ */
@ -4992,6 +4993,9 @@ functions and variables begin with "png_", and all publicly visible C
preprocessor macros begin with "PNG". We request that applications that preprocessor macros begin with "PNG". We request that applications that
use libpng *not* begin any of their own symbols with either of these strings. use libpng *not* begin any of their own symbols with either of these strings.
Control keywords if, for, while, and switch are always followed by a space
to distinguish them from function calls, which have no trailing space.
We put a space after each comma and after each semicolon We put a space after each comma and after each semicolon
in "for" statements, and we put spaces before and after each in "for" statements, and we put spaces before and after each
C binary operator and after "for" or "while", and before C binary operator and after "for" or "while", and before
@ -5023,7 +5027,7 @@ Other rules can be inferred by inspecting the libpng source.
.SH XIV. Y2K Compliance in libpng .SH XIV. Y2K Compliance in libpng
February 17, 2015 February 18, 2015
Since the PNG Development group is an ad-hoc body, we can't make Since the PNG Development group is an ad-hoc body, we can't make
an official declaration. an official declaration.
@ -5032,8 +5036,8 @@ This is your unofficial assurance that libpng from version 0.71 and
upward through 1.5.22beta03 are Y2K compliant. It is my belief that earlier upward through 1.5.22beta03 are Y2K compliant. It is my belief that earlier
versions were also Y2K compliant. versions were also Y2K compliant.
Libpng only has two year fields. One is a 2-byte unsigned integer that Libpng only has two year fields. One is a 2-byte unsigned integer
will hold years up to 65535. The other holds the date in text that will hold years up to 65535. The other holds the date in text
format, and will hold years up to 9999. format, and will hold years up to 9999.
The integer is The integer is
@ -5330,7 +5334,7 @@ possible without all of you.
Thanks to Frank J. T. Wojcik for helping with the documentation. Thanks to Frank J. T. Wojcik for helping with the documentation.
Libpng version 1.5.22beta03 - February 17, 2015: Libpng version 1.5.22beta03 - February 18, 2015:
Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc. Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
Currently maintained by Glenn Randers-Pehrson (glennrp at users.sourceforge.net). Currently maintained by Glenn Randers-Pehrson (glennrp at users.sourceforge.net).
@ -5353,7 +5357,7 @@ this sentence.
This code is released under the libpng license. This code is released under the libpng license.
libpng versions 1.2.6, August 15, 2004, through 1.5.22beta03, February 17, 2015, are libpng versions 1.2.6, August 15, 2004, through 1.5.22beta03, February 18, 2015, are
Copyright (c) 2004,2006-20014 Glenn Randers-Pehrson, and are Copyright (c) 2004,2006-20014 Glenn Randers-Pehrson, and are
distributed according to the same disclaimer and license as libpng-1.2.5 distributed according to the same disclaimer and license as libpng-1.2.5
with the following individual added to the list of Contributing Authors with the following individual added to the list of Contributing Authors
@ -5452,7 +5456,7 @@ certification mark of the Open Source Initiative.
Glenn Randers-Pehrson Glenn Randers-Pehrson
glennrp at users.sourceforge.net glennrp at users.sourceforge.net
February 17, 2015 February 18, 2015
.\" end of man page .\" end of man page

16
png.h
View File

@ -1,7 +1,7 @@
/* png.h - header file for PNG reference library /* png.h - header file for PNG reference library
* *
* libpng version 1.5.22beta03 - February 17, 2015 * libpng version 1.5.22beta03 - February 18, 2015
* Copyright (c) 1998-2015 Glenn Randers-Pehrson * Copyright (c) 1998-2015 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
@ -11,7 +11,7 @@
* Authors and maintainers: * Authors and maintainers:
* libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat * 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.89c, June 1996, through 0.96, May 1997: Andreas Dilger
* libpng versions 0.97, January 1998, through 1.5.22beta03 - February 17, 2015: Glenn * libpng versions 0.97, January 1998, through 1.5.22beta03 - February 18, 2015: Glenn
* See also "Contributing Authors", below. * See also "Contributing Authors", below.
* *
* Note about libpng version numbers: * Note about libpng version numbers:
@ -237,7 +237,7 @@
* *
* This code is released under the libpng license. * This code is released under the libpng license.
* *
* libpng versions 1.2.6, August 15, 2004, through 1.5.22beta03, February 17, 2015, are * libpng versions 1.2.6, August 15, 2004, through 1.5.22beta03, February 18, 2015, are
* Copyright (c) 2004, 2006-2015 Glenn Randers-Pehrson, and are * Copyright (c) 2004, 2006-2015 Glenn Randers-Pehrson, and are
* distributed according to the same disclaimer and license as libpng-1.2.5 * distributed according to the same disclaimer and license as libpng-1.2.5
* with the following individual added to the list of Contributing Authors: * with the following individual added to the list of Contributing Authors:
@ -349,7 +349,7 @@
* Y2K compliance in libpng: * Y2K compliance in libpng:
* ========================= * =========================
* *
* February 17, 2015 * February 18, 2015
* *
* Since the PNG Development group is an ad-hoc body, we can't make * Since the PNG Development group is an ad-hoc body, we can't make
* an official declaration. * an official declaration.
@ -418,7 +418,7 @@
/* Version information for png.h - this should match the version in png.c */ /* Version information for png.h - this should match the version in png.c */
#define PNG_LIBPNG_VER_STRING "1.5.22beta03" #define PNG_LIBPNG_VER_STRING "1.5.22beta03"
#define PNG_HEADER_VERSION_STRING \ #define PNG_HEADER_VERSION_STRING \
" libpng version 1.5.22beta03 - February 17, 2015\n" " libpng version 1.5.22beta03 - February 18, 2015\n"
#define PNG_LIBPNG_VER_SONUM 15 #define PNG_LIBPNG_VER_SONUM 15
#define PNG_LIBPNG_VER_DLLNUM 15 #define PNG_LIBPNG_VER_DLLNUM 15
@ -1050,11 +1050,13 @@ PNG_EXPORTA(5, png_structp, png_create_write_struct,
png_error_ptr warn_fn), png_error_ptr warn_fn),
PNG_ALLOCATED); PNG_ALLOCATED);
#ifdef PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED
PNG_EXPORT(6, png_size_t, png_get_compression_buffer_size, PNG_EXPORT(6, png_size_t, png_get_compression_buffer_size,
(png_const_structp png_ptr)); (png_const_structp png_ptr));
PNG_EXPORT(7, void, png_set_compression_buffer_size, (png_structp png_ptr, PNG_EXPORT(7, void, png_set_compression_buffer_size, (png_structp png_ptr,
png_size_t size)); png_size_t size));
#endif /* WRITE_CUSTOMIZE_COMPRESSION */
/* Moved from pngconf.h in 1.4.0 and modified to ensure setjmp/longjmp /* Moved from pngconf.h in 1.4.0 and modified to ensure setjmp/longjmp
* match up. * match up.
@ -1720,6 +1722,7 @@ PNG_FIXED_EXPORT(209, void, png_set_filter_heuristics_fixed,
* for PNG images, and do considerably fewer caclulations. In the future, * for PNG images, and do considerably fewer caclulations. In the future,
* these values may not correspond directly to the zlib compression levels. * these values may not correspond directly to the zlib compression levels.
*/ */
#ifdef PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED
PNG_EXPORT(69, void, png_set_compression_level, PNG_EXPORT(69, void, png_set_compression_level,
(png_structp png_ptr, int level)); (png_structp png_ptr, int level));
@ -1737,7 +1740,7 @@ PNG_EXPORT(72, void, png_set_compression_window_bits, (png_structp png_ptr,
PNG_EXPORT(73, void, png_set_compression_method, (png_structp png_ptr, PNG_EXPORT(73, void, png_set_compression_method, (png_structp png_ptr,
int method)); int method));
#endif #endif /* WRITE_CUSTOMIZE_COMPRESSION */
#ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED #ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED
/* Also set zlib parameters for compressing non-IDAT chunks */ /* Also set zlib parameters for compressing non-IDAT chunks */
@ -1759,6 +1762,7 @@ PNG_EXPORT(225, void, png_set_text_compression_window_bits, (png_structp
PNG_EXPORT(226, void, png_set_text_compression_method, (png_structp png_ptr, PNG_EXPORT(226, void, png_set_text_compression_method, (png_structp png_ptr,
int method)); int method));
#endif /* PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED */ #endif /* PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED */
#endif /* WRITE */
/* These next functions are called for input/output, memory, and error /* These next functions are called for input/output, memory, and error
* handling. They are in the file pngrio.c, pngwio.c, and pngerror.c, * handling. They are in the file pngrio.c, pngwio.c, and pngerror.c,

View File

@ -1396,6 +1396,7 @@ png_set_filter_heuristics_fixed(png_structp png_ptr, int heuristic_method,
#endif /* FIXED_POINT */ #endif /* FIXED_POINT */
#endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */ #endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */
#ifdef PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED
void PNGAPI void PNGAPI
png_set_compression_level(png_structp png_ptr, int level) png_set_compression_level(png_structp png_ptr, int level)
{ {
@ -1474,6 +1475,7 @@ png_set_compression_method(png_structp png_ptr, int method)
png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_METHOD; png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_METHOD;
png_ptr->zlib_method = method; png_ptr->zlib_method = method;
} }
#endif /* WRITE_CUSTOMIZE_COMPRESSION */
/* The following were added to libpng-1.5.4 */ /* The following were added to libpng-1.5.4 */
#ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED #ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED