Compare commits

...

3 Commits

Author SHA1 Message Date
Glenn Randers-Pehrson
4f67b78853 [master] Imported from libpng-1.2.41beta08.tar 2009-10-29 23:54:16 -05:00
Glenn Randers-Pehrson
4b14b35208 [master] Ported functions from libpng-1.4.0rc01:
png_calloc(), png_get_io_state(),
    png_get_io_chunk_name(), png_set_premultiply_alpha, and
    png_do_read_premultiply_alpha().
2009-10-29 23:47:05 -05:00
Glenn Randers-Pehrson
bc2ab12f99 [master] Bump version to 1.2.41beta08 2009-10-29 23:41:29 -05:00
62 changed files with 831 additions and 176 deletions

View File

@@ -1,5 +1,5 @@
Libpng 1.2.41beta07 - October 21, 2009
Libpng 1.2.41beta08 - October 30, 2009
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,36 +9,36 @@ Files available for download:
Source files with LF line endings (for Unix/Linux) and with a
"configure" script
libpng-1.2.41beta07.tar.xz (LZMA-compressed, recommended)
libpng-1.2.41beta07.tar.gz
libpng-1.2.41beta07.tar.bz2
libpng-1.2.41beta08.tar.xz (LZMA-compressed, recommended)
libpng-1.2.41beta08.tar.gz
libpng-1.2.41beta08.tar.bz2
Source files with LF line endings (for Unix/Linux) without the
"configure" script
libpng-1.2.41beta07-no-config.tar.xz (LZMA-compressed, recommended)
libpng-1.2.41beta07-no-config.tar.gz
libpng-1.2.41beta07-no-config.tar.bz2
libpng-1.2.41beta08-no-config.tar.xz (LZMA-compressed, recommended)
libpng-1.2.41beta08-no-config.tar.gz
libpng-1.2.41beta08-no-config.tar.bz2
Source files with CRLF line endings (for Windows), without the
"configure" script
lp1241b07.zip
lp1241b07.7z
lp1241b07.tar.bz2
lp1241b08.zip
lp1241b08.7z
lp1241b08.tar.bz2
Project files
libpng-1.2.41beta07-project-netware.zip
libpng-1.2.41beta07-project-wince.zip
libpng-1.2.41beta08-project-netware.zip
libpng-1.2.41beta08-project-wince.zip
Other information:
libpng-1.2.41beta07-README.txt
libpng-1.2.41beta07-KNOWNBUGS.txt
libpng-1.2.41beta07-LICENSE.txt
libpng-1.2.41beta07-Y2K-compliance.txt
libpng-1.2.41beta07-[previous version]-diff.txt
libpng-1.2.41beta08-README.txt
libpng-1.2.41beta08-KNOWNBUGS.txt
libpng-1.2.41beta08-LICENSE.txt
libpng-1.2.41beta08-Y2K-compliance.txt
libpng-1.2.41beta08-[previous version]-diff.txt
Changes since the last public release (1.2.40):
@@ -77,6 +77,11 @@ version 1.2.41beta07 [October 21, 2009]
Ported some cosmetic changes from libpng-1.4.0rc01, changing
many "#if defined(x)" to "#ifdef x" in png.h and pngconf.h.
version 1.2.41beta08 [October 30, 2009]
Ported functions from libpng-1.4.0rc01: png_calloc(), png_get_io_state(),
png_get_io_chunk_name(), png_set_premultiply_alpha, and
png_do_read_premultiply_alpha().
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit

View File

@@ -2466,7 +2466,7 @@ version 1.2.40beta01 [August 20, 2009]
version 1.2.40rc01 [September 2, 2009]
Various bugfixes and improvements to CMakeLists.txt (Philip Lowman)
version 1.2.40 and 1.0.49 [October 21, 2009]
version 1.2.40 and 1.0.49 [October 30, 2009]
No changes.
version 1.0.50 [September 10, 2009]
@@ -2507,6 +2507,11 @@ version 1.2.41beta07 [October 21, 2009]
Ported some cosmetic changes from libpng-1.4.0rc01, changing
many "#if defined(x)" to "#ifdef x" in png.h and pngconf.h.
version 1.2.41beta08 [October 30, 2009]
Ported functions from libpng-1.4.0rc01: png_calloc(), png_get_io_state(),
png_get_io_chunk_name(), png_set_premultiply_alpha, and
png_do_read_premultiply_alpha().
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit
https://lists.sourceforge.net/lists/listinfo/png-mng-implement

16
INSTALL
View File

@@ -1,5 +1,5 @@
Installing libpng version 1.2.41beta07 - October 21, 2009
Installing libpng version 1.2.41beta08 - October 30, 2009
On Unix/Linux and similar systems, you can simply type
@@ -44,7 +44,7 @@ to have access to the zlib.h and zconf.h include files that
correspond to the version of zlib that's installed.
You can rename the directories that you downloaded (they
might be called "libpng-1.2.41beta07" or "lpng109" and "zlib-1.2.1"
might be called "libpng-1.2.41beta08" or "lpng109" and "zlib-1.2.1"
or "zlib121") so that you have directories called "zlib" and "libpng".
Your directory structure should look like this:
@@ -101,9 +101,9 @@ include
CMakeLists.txt => "cmake" script
makefile.std => Generic UNIX makefile (cc, creates static libpng.a)
makefile.elf => Linux/ELF makefile symbol versioning,
gcc, creates libpng12.so.0.1.2.41beta07)
gcc, creates libpng12.so.0.1.2.41beta08)
makefile.linux => Linux/ELF makefile
(gcc, creates libpng12.so.0.1.2.41beta07)
(gcc, creates libpng12.so.0.1.2.41beta08)
makefile.gcc => Generic makefile (gcc, creates static libpng.a)
makefile.knr => Archaic UNIX Makefile that converts files with
ansi2knr (Requires ansi2knr.c from
@@ -125,14 +125,14 @@ include
makefile.openbsd => OpenBSD makefile
makefile.sgi => Silicon Graphics IRIX makefile (cc, creates static lib)
makefile.sggcc => Silicon Graphics (gcc,
creates libpng12.so.0.1.2.41beta07)
creates libpng12.so.0.1.2.41beta08)
makefile.sunos => Sun makefile
makefile.solaris => Solaris 2.X makefile (gcc,
creates libpng12.so.0.1.2.41beta07)
creates libpng12.so.0.1.2.41beta08)
makefile.solaris-x86 => Solaris/intelMMX 2.X makefile (gcc,
creates libpng12.so.0.1.2.41beta07)
creates libpng12.so.0.1.2.41beta08)
makefile.so9 => Solaris 9 makefile (gcc,
creates libpng12.so.0.1.2.41beta07)
creates libpng12.so.0.1.2.41beta08)
makefile.32sunu => Sun Ultra 32-bit makefile
makefile.64sunu => Sun Ultra 64-bit makefile
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc

View File

@@ -1,5 +1,5 @@
Known bugs in libpng version 1.2.41beta07
Known bugs in libpng version 1.2.41beta08
1. February 23, 2006: The custom makefiles don't build libpng with -lz.

View File

@@ -10,7 +10,7 @@ this sentence.
This code is released under the libpng license.
libpng versions 1.2.6, August 15, 2004, through 1.2.41beta07, October 21, 2009, are
libpng versions 1.2.6, August 15, 2004, through 1.2.41beta08, October 30, 2009, are
Copyright (c) 2004, 2006-2009 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
@@ -108,4 +108,4 @@ certification mark of the Open Source Initiative.
Glenn Randers-Pehrson
glennrp at users.sourceforge.net
October 21, 2009
October 30, 2009

View File

@@ -86,7 +86,7 @@ EXTRA_DIST= \
${srcdir}/contrib/pngsuite/* \
${srcdir}/contrib/visupng/* \
$(TESTS) \
example.c libpng-1.2.41beta07.txt pngvcrd.c
example.c libpng-1.2.41beta08.txt pngvcrd.c
CLEANFILES= pngout.png libpng12.pc libpng12-config libpng.vers \
libpng.sym

View File

@@ -352,7 +352,7 @@ EXTRA_DIST = \
${srcdir}/contrib/pngsuite/* \
${srcdir}/contrib/visupng/* \
$(TESTS) \
example.c libpng-1.2.41beta07.txt pngvcrd.c
example.c libpng-1.2.41beta08.txt pngvcrd.c
CLEANFILES = pngout.png libpng12.pc libpng12-config libpng.vers \
libpng.sym

14
README
View File

@@ -1,4 +1,4 @@
README for libpng version 1.2.41beta07 - October 21, 2009 (shared library 12.0)
README for libpng version 1.2.41beta08 - October 30, 2009 (shared library 12.0)
See the note about version numbers near the top of png.h
See INSTALL for instructions on how to install libpng.
@@ -194,11 +194,11 @@ Files in this distribution:
descrip.mms => VMS makefile for MMS or MMK
makefile.std => Generic UNIX makefile (cc, creates static libpng.a)
makefile.elf => Linux/ELF makefile symbol versioning,
gcc, creates libpng12.so.0.1.2.41beta07)
gcc, creates libpng12.so.0.1.2.41beta08)
makefile.linux => Linux/ELF makefile
(gcc, creates libpng12.so.0.1.2.41beta07)
(gcc, creates libpng12.so.0.1.2.41beta08)
makefile.gcmmx => Linux/ELF makefile
(gcc, creates libpng12.so.0.1.2.41beta07,
(gcc, creates libpng12.so.0.1.2.41beta08,
uses assembler code tuned for Intel MMX platform)
makefile.gcc => Generic makefile (gcc, creates static libpng.a)
makefile.knr => Archaic UNIX Makefile that converts files with
@@ -220,12 +220,12 @@ Files in this distribution:
makefile.openbsd => OpenBSD makefile
makefile.sgi => Silicon Graphics IRIX (cc, creates static lib)
makefile.sggcc => Silicon Graphics
(gcc, creates libpng12.so.0.1.2.41beta07)
(gcc, creates libpng12.so.0.1.2.41beta08)
makefile.sunos => Sun makefile
makefile.solaris => Solaris 2.X makefile
(gcc, creates libpng12.so.0.1.2.41beta07)
(gcc, creates libpng12.so.0.1.2.41beta08)
makefile.so9 => Solaris 9 makefile
(gcc, creates libpng12.so.0.1.2.41beta07)
(gcc, creates libpng12.so.0.1.2.41beta08)
makefile.32sunu => Sun Ultra 32-bit makefile
makefile.64sunu => Sun Ultra 64-bit makefile
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc

View File

@@ -1,13 +1,13 @@
Y2K compliance in libpng:
=========================
October 21, 2009
October 30, 2009
Since the PNG Development group is an ad-hoc body, we can't make
an official declaration.
This is your unofficial assurance that libpng from version 0.71 and
upward through 1.2.41beta07 are Y2K compliant. It is my belief that earlier
upward through 1.2.41beta08 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

22
configure vendored
View File

@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.64 for libpng 1.2.41beta07.
# Generated by GNU Autoconf 2.64 for libpng 1.2.41beta08.
#
# Report bugs to <png-mng-implement@lists.sourceforge.net>.
#
@@ -698,8 +698,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='libpng'
PACKAGE_TARNAME='libpng'
PACKAGE_VERSION='1.2.41beta07'
PACKAGE_STRING='libpng 1.2.41beta07'
PACKAGE_VERSION='1.2.41beta08'
PACKAGE_STRING='libpng 1.2.41beta08'
PACKAGE_BUGREPORT='png-mng-implement@lists.sourceforge.net'
PACKAGE_URL=''
@@ -1432,7 +1432,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures libpng 1.2.41beta07 to adapt to many kinds of systems.
\`configure' configures libpng 1.2.41beta08 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1502,7 +1502,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of libpng 1.2.41beta07:";;
short | recursive ) echo "Configuration of libpng 1.2.41beta08:";;
esac
cat <<\_ACEOF
@@ -1609,7 +1609,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
libpng configure 1.2.41beta07
libpng configure 1.2.41beta08
generated by GNU Autoconf 2.64
Copyright (C) 2009 Free Software Foundation, Inc.
@@ -2034,7 +2034,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by libpng $as_me 1.2.41beta07, which was
It was created by libpng $as_me 1.2.41beta08, which was
generated by GNU Autoconf 2.64. Invocation command line was
$ $0 $@
@@ -2842,7 +2842,7 @@ fi
# Define the identity of the package.
PACKAGE='libpng'
VERSION='1.2.41beta07'
VERSION='1.2.41beta08'
cat >>confdefs.h <<_ACEOF
@@ -2906,7 +2906,7 @@ fi
PNGLIB_VERSION=1.2.41beta07
PNGLIB_VERSION=1.2.41beta08
PNGLIB_MAJOR=1
PNGLIB_MINOR=2
PNGLIB_RELEASE=41
@@ -12047,7 +12047,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by libpng $as_me 1.2.41beta07, which was
This file was extended by libpng $as_me 1.2.41beta08, which was
generated by GNU Autoconf 2.64. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -12111,7 +12111,7 @@ Report bugs to <png-mng-implement@lists.sourceforge.net>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
libpng config.status 1.2.41beta07
libpng config.status 1.2.41beta08
configured by $0, generated by GNU Autoconf 2.64,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"

View File

@@ -18,12 +18,12 @@ AC_PREREQ(2.59)
dnl Version number stuff here:
AC_INIT([libpng], [1.2.41beta07], [png-mng-implement@lists.sourceforge.net])
AC_INIT([libpng], [1.2.41beta08], [png-mng-implement@lists.sourceforge.net])
AM_INIT_AUTOMAKE
dnl stop configure from automagically running automake
AM_MAINTAINER_MODE
PNGLIB_VERSION=1.2.41beta07
PNGLIB_VERSION=1.2.41beta08
PNGLIB_MAJOR=1
PNGLIB_MINOR=2
PNGLIB_RELEASE=41

View File

@@ -1,6 +1,6 @@
libpng.txt - A description on how to use and modify libpng
libpng version 1.2.41beta07 - October 21, 2009
libpng version 1.2.41beta08 - October 30, 2009
Updated and distributed by Glenn Randers-Pehrson
<glennrp at users.sourceforge.net>
Copyright (c) 1998-2009 Glenn Randers-Pehrson
@@ -11,7 +11,7 @@ libpng.txt - A description on how to use and modify libpng
Based on:
libpng versions 0.97, January 1998, through 1.2.41beta07 - October 21, 2009
libpng versions 0.97, January 1998, through 1.2.41beta08 - October 30, 2009
Updated and distributed by Glenn Randers-Pehrson
Copyright (c) 1998-2009 Glenn Randers-Pehrson
@@ -882,6 +882,15 @@ images) is fully transparent, with
png_set_invert_alpha(png_ptr);
The PNG format only supports pixels with postmultiplied alpha.
If you want to replace the pixels, after reading them, with pixels
that have premultiplied color samples, you can do this with
png_set_premultiply_alpha(png_ptr);
If you do this, any input with a tRNS chunk will be expanded to
have an alpha channel.
PNG files pack pixels of bit depths 1, 2, and 4 into bytes as small as
they can, resulting in, for example, 8 pixels per byte for 1 bit
files. This code expands to 1 pixel per byte without changing the
@@ -2935,6 +2944,70 @@ selection of assembler code features:
We replaced all of these functions with simple stubs in libpng-1.2.20,
when the Intel assembler code was removed due to a licensing issue.
These macros are deprecated:
PNG_READ_TRANSFORMS_NOT_SUPPORTED
PNG_PROGRESSIVE_READ_NOT_SUPPORTED
PNG_NO_SEQUENTIAL_READ_SUPPORTED
PNG_WRITE_TRANSFORMS_NOT_SUPPORTED
PNG_READ_ANCILLARY_CHUNKS_NOT_SUPPORTED
PNG_WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED
They have been replaced, respectively, by:
PNG_NO_READ_TRANSFORMS
PNG_NO_PROGRESSIVE_READ
PNG_NO_SEQUENTIAL_READ
PNG_NO_WRITE_TRANSFORMS
PNG_NO_READ_ANCILLARY_CHUNKS
PNG_NO_WRITE_ANCILLARY_CHUNKS
PNG_MAX_UINT was replaced with PNG_UINT_31_MAX. It has been
deprecated since libpng-1.0.16 and libpng-1.2.6.
The function
png_check_sig(sig, num)
was replaced with
!png_sig_cmp(sig, 0, num)
It has been deprecated since libpng-0.90.
The function
png_set_gray_1_2_4_to_8()
which also expands tRNS to alpha was replaced with
png_set_expand_gray_1_2_4_to_8()
which does not. It has been deprecated since libpng-1.0.18 and 1.2.9.
Functions png_set_benign_errors(), png_benign_error(), and
png_chunk_benign_error() were added.
Support for setting the maximum amount of memory that the application
will allocate for reading chunks was added, as a security measure.
The functions png_set_chunk_cache_max() and png_get_chunk_cache_max()
were added to the library.
We implemented support for I/O states. Added png_ptr member io_state, and
functions png_get_io_chunk_name() and png_get_io_state() in pngget.c
The png_calloc() function was added and is used in place of
of "png_malloc(); png_memset();" except in the case in png_read_png()
where the array consists of pointers; in this case a "for" loop is used
after the png_malloc() to set the pointers to NULL.
We added PNG_TRANSFORM_GRAY_TO_RGB to the available high-level
input transforms.
We added the png_set_premultiply_alpha and
png_do_read_premultiply_alpha() functions.
The call to png_do_chop() in pngrtran.c, which reduces 16-bit input
files to 8-bit bit depth, was relocated ahead of the building
of gamma tables. This allows us to build 8-bit tables instead
of 16-bit tables, when only 8-bit tables are needed. This avoids
wasting some computing resources when the application has called
the png_set_strip_16() function and encounters a 16-bit PNG file.
Checking for and reporting of errors in the IHDR chunk is more thorough.
IX. (Omitted)
X. Detecting libpng
@@ -3073,13 +3146,13 @@ source.
XIII. Y2K Compliance in libpng
October 21, 2009
October 30, 2009
Since the PNG Development group is an ad-hoc body, we can't make
an official declaration.
This is your unofficial assurance that libpng from version 0.71 and
upward through 1.2.41beta07 are Y2K compliant. It is my belief that earlier
upward through 1.2.41beta08 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 that

View File

@@ -1,6 +1,6 @@
.TH LIBPNG 3 "October 21, 2009"
.TH LIBPNG 3 "October 30, 2009"
.SH NAME
libpng \- Portable Network Graphics (PNG) Reference Library 1.2.41beta07
libpng \- Portable Network Graphics (PNG) Reference Library 1.2.41beta08
.SH SYNOPSIS
\fI\fB
@@ -821,7 +821,7 @@ Following is a copy of the libpng.txt file that accompanies libpng.
.SH LIBPNG.TXT
libpng.txt - A description on how to use and modify libpng
libpng version 1.2.41beta07 - October 21, 2009
libpng version 1.2.41beta08 - October 30, 2009
Updated and distributed by Glenn Randers-Pehrson
<glennrp at users.sourceforge.net>
Copyright (c) 1998-2009 Glenn Randers-Pehrson
@@ -832,7 +832,7 @@ libpng.txt - A description on how to use and modify libpng
Based on:
libpng versions 0.97, January 1998, through 1.2.41beta07 - October 21, 2009
libpng versions 0.97, January 1998, through 1.2.41beta08 - October 30, 2009
Updated and distributed by Glenn Randers-Pehrson
Copyright (c) 1998-2009 Glenn Randers-Pehrson
@@ -1703,6 +1703,15 @@ images) is fully transparent, with
png_set_invert_alpha(png_ptr);
The PNG format only supports pixels with postmultiplied alpha.
If you want to replace the pixels, after reading them, with pixels
that have premultiplied color samples, you can do this with
png_set_premultiply_alpha(png_ptr);
If you do this, any input with a tRNS chunk will be expanded to
have an alpha channel.
PNG files pack pixels of bit depths 1, 2, and 4 into bytes as small as
they can, resulting in, for example, 8 pixels per byte for 1 bit
files. This code expands to 1 pixel per byte without changing the
@@ -3756,6 +3765,70 @@ selection of assembler code features:
We replaced all of these functions with simple stubs in libpng-1.2.20,
when the Intel assembler code was removed due to a licensing issue.
These macros are deprecated:
PNG_READ_TRANSFORMS_NOT_SUPPORTED
PNG_PROGRESSIVE_READ_NOT_SUPPORTED
PNG_NO_SEQUENTIAL_READ_SUPPORTED
PNG_WRITE_TRANSFORMS_NOT_SUPPORTED
PNG_READ_ANCILLARY_CHUNKS_NOT_SUPPORTED
PNG_WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED
They have been replaced, respectively, by:
PNG_NO_READ_TRANSFORMS
PNG_NO_PROGRESSIVE_READ
PNG_NO_SEQUENTIAL_READ
PNG_NO_WRITE_TRANSFORMS
PNG_NO_READ_ANCILLARY_CHUNKS
PNG_NO_WRITE_ANCILLARY_CHUNKS
PNG_MAX_UINT was replaced with PNG_UINT_31_MAX. It has been
deprecated since libpng-1.0.16 and libpng-1.2.6.
The function
png_check_sig(sig, num)
was replaced with
!png_sig_cmp(sig, 0, num)
It has been deprecated since libpng-0.90.
The function
png_set_gray_1_2_4_to_8()
which also expands tRNS to alpha was replaced with
png_set_expand_gray_1_2_4_to_8()
which does not. It has been deprecated since libpng-1.0.18 and 1.2.9.
Functions png_set_benign_errors(), png_benign_error(), and
png_chunk_benign_error() were added.
Support for setting the maximum amount of memory that the application
will allocate for reading chunks was added, as a security measure.
The functions png_set_chunk_cache_max() and png_get_chunk_cache_max()
were added to the library.
We implemented support for I/O states. Added png_ptr member io_state, and
functions png_get_io_chunk_name() and png_get_io_state() in pngget.c
The png_calloc() function was added and is used in place of
of "png_malloc(); png_memset();" except in the case in png_read_png()
where the array consists of pointers; in this case a "for" loop is used
after the png_malloc() to set the pointers to NULL.
We added PNG_TRANSFORM_GRAY_TO_RGB to the available high-level
input transforms.
We added the png_set_premultiply_alpha and
png_do_read_premultiply_alpha() functions.
The call to png_do_chop() in pngrtran.c, which reduces 16-bit input
files to 8-bit bit depth, was relocated ahead of the building
of gamma tables. This allows us to build 8-bit tables instead
of 16-bit tables, when only 8-bit tables are needed. This avoids
wasting some computing resources when the application has called
the png_set_strip_16() function and encounters a 16-bit PNG file.
Checking for and reporting of errors in the IHDR chunk is more thorough.
.SH IX. (Omitted)
.SH X. Detecting libpng
@@ -3894,13 +3967,13 @@ source.
.SH XIII. Y2K Compliance in libpng
October 21, 2009
October 30, 2009
Since the PNG Development group is an ad-hoc body, we can't make
an official declaration.
This is your unofficial assurance that libpng from version 0.71 and
upward through 1.2.41beta07 are Y2K compliant. It is my belief that earlier
upward through 1.2.41beta08 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 that
@@ -4184,7 +4257,7 @@ the first widely used release:
1.0.49 10 10049 10.so.0.49[.0]
1.2.40 13 10240 12.so.0.40[.0]
1.0.50 10 10050 10.so.0.50[.0]
1.2.41beta01-07 13 10241 12.so.0.41[.0]
1.2.41beta01-08 13 10241 12.so.0.41[.0]
Henceforth the source version will match the shared-library minor
and patch numbers; the shared-library major version number will be
@@ -4240,7 +4313,7 @@ possible without all of you.
Thanks to Frank J. T. Wojcik for helping with the documentation.
Libpng version 1.2.41beta07 - October 21, 2009:
Libpng version 1.2.41beta08 - October 30, 2009:
Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
Currently maintained by Glenn Randers-Pehrson (glennrp at users.sourceforge.net).
@@ -4263,7 +4336,7 @@ this sentence.
This code is released under the libpng license.
libpng versions 1.2.6, August 15, 2004, through 1.2.41beta07, October 21, 2009, are
libpng versions 1.2.6, August 15, 2004, through 1.2.41beta08, October 30, 2009, are
Copyright (c) 2004,2006-2008 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
@@ -4362,7 +4435,7 @@ certification mark of the Open Source Initiative.
Glenn Randers-Pehrson
glennrp at users.sourceforge.net
October 21, 2009
October 30, 2009
.\" end of man page

View File

@@ -1,6 +1,6 @@
.TH LIBPNGPF 3 "October 21, 2009"
.TH LIBPNGPF 3 "October 30, 2009"
.SH NAME
libpng \- Portable Network Graphics (PNG) Reference Library 1.2.41beta07
libpng \- Portable Network Graphics (PNG) Reference Library 1.2.41beta08
(private functions)
.SH SYNOPSIS
\fB#include <png.h>\fP

2
png.5
View File

@@ -1,4 +1,4 @@
.TH PNG 5 "October 21, 2009"
.TH PNG 5 "October 30, 2009"
.SH NAME
png \- Portable Network Graphics (PNG) format
.SH DESCRIPTION

31
png.c
View File

@@ -1,7 +1,7 @@
/* png.c - location for general purpose libpng functions
*
* Last changed in libpng 1.2.41 [October 21, 2009]
* Last changed in libpng 1.2.41 [October 30, 2009]
* Copyright (c) 1998-2009 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.)
@@ -16,7 +16,7 @@
#include "png.h"
/* Generate a compiler error if there is an old png.h in the search path. */
typedef version_1_2_41beta07 Your_png_h_is_not_version_1_2_41beta07;
typedef version_1_2_41beta08 Your_png_h_is_not_version_1_2_41beta08;
/* Version information for C files. This had better match the version
* string defined in png.h.
@@ -717,10 +717,23 @@ png_charp PNGAPI
png_get_copyright(png_structp png_ptr)
{
png_ptr = png_ptr; /* Silence compiler warning about unused png_ptr */
return ((png_charp) "\n libpng version 1.2.41beta07 - October 21, 2009\n\
Copyright (c) 1998-2009 Glenn Randers-Pehrson\n\
Copyright (c) 1996-1997 Andreas Dilger\n\
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.\n");
#ifdef PNG_STRING_COPYRIGHT
return PNG_STRING_COPYRIGHT
#else
#ifdef __STDC__
return ((png_charp) PNG_STRING_NEWLINE \
"libpng version x 1.2.41beta08 - October 30, 2009" PNG_STRING_NEWLINE \
"Copyright (c) 1998-2009 Glenn Randers-Pehrson" PNG_STRING_NEWLINE \
"Copyright (c) 1996-1997 Andreas Dilger" PNG_STRING_NEWLINE \
"Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc." \
PNG_STRING_NEWLINE);
#else
return ((png_charp) "libpng version 1.2.41beta08 - October 30, 2009\
Copyright (c) 1998-2009 Glenn Randers-Pehrson\
Copyright (c) 1996-1997 Andreas Dilger\
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.");
#endif
#endif
}
/* The following return the library version as a short string in the
@@ -752,11 +765,15 @@ png_get_header_version(png_structp png_ptr)
{
/* Returns longer string containing both version and date */
png_ptr = png_ptr; /* Silence compiler warning about unused png_ptr */
#ifdef __STDC__
return ((png_charp) PNG_HEADER_VERSION_STRING
#ifndef PNG_READ_SUPPORTED
" (NO READ SUPPORT)"
#endif
"\n");
PNG_STRING_NEWLINE);
#else
return ((png_charp) PNG_HEADER_VERSION_STRING);
#endif
}
#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)

64
png.h
View File

@@ -1,6 +1,6 @@
/* png.h - header file for PNG reference library
*
* libpng version 1.2.41beta07 - October 21, 2009
* libpng version 1.2.41beta08 - October 30, 2009
* Copyright (c) 1998-2009 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.)
@@ -10,7 +10,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.2.41beta07 - October 21, 2009: Glenn
* libpng versions 0.97, January 1998, through 1.2.41beta08 - October 30, 2009: Glenn
* See also "Contributing Authors", below.
*
* Note about libpng version numbers:
@@ -245,7 +245,7 @@
* 1.2.40rc01 13 10240 12.so.0.40[.0]
* 1.0.49 10 10049 10.so.0.49[.0]
* 1.2.40 13 10240 12.so.0.40[.0]
* 1.2.41beta01-07 13 10241 12.so.0.41[.0]
* 1.2.41beta01-08 13 10241 12.so.0.41[.0]
*
* Henceforth the source version will match the shared-library major
* and minor numbers; the shared-library major version number will be
@@ -277,7 +277,7 @@
*
* This code is released under the libpng license.
*
* libpng versions 1.2.6, August 15, 2004, through 1.2.41beta07, October 21, 2009, are
* libpng versions 1.2.6, August 15, 2004, through 1.2.41beta08, October 30, 2009, are
* Copyright (c) 2004, 2006-2009 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:
@@ -389,13 +389,13 @@
* Y2K compliance in libpng:
* =========================
*
* October 21, 2009
* October 30, 2009
*
* Since the PNG Development group is an ad-hoc body, we can't make
* an official declaration.
*
* This is your unofficial assurance that libpng from version 0.71 and
* upward through 1.2.41beta07 are Y2K compliant. It is my belief that earlier
* upward through 1.2.41beta08 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
@@ -451,9 +451,9 @@
*/
/* Version information for png.h - this should match the version in png.c */
#define PNG_LIBPNG_VER_STRING "1.2.41beta07"
#define PNG_LIBPNG_VER_STRING "1.2.41beta08"
#define PNG_HEADER_VERSION_STRING \
" libpng version 1.2.41beta07 - October 21, 2009\n"
" libpng version 1.2.41beta08 - October 30, 2009\n"
#define PNG_LIBPNG_VER_SONUM 0
#define PNG_LIBPNG_VER_DLLNUM 13
@@ -466,7 +466,7 @@
* PNG_LIBPNG_VER_STRING, omitting any leading zero:
*/
#define PNG_LIBPNG_VER_BUILD 07
#define PNG_LIBPNG_VER_BUILD 08
/* Release Status */
#define PNG_LIBPNG_BUILD_ALPHA 1
@@ -1199,6 +1199,8 @@ typedef void (PNGAPI *png_unknown_chunk_ptr) PNGARG((png_structp));
/* Added to libpng-1.2.34 */
#define PNG_TRANSFORM_STRIP_FILLER_BEFORE 0x0800 /* write only */
#define PNG_TRANSFORM_STRIP_FILLER_AFTER 0x1000 /* write only */
/* Added to libpng-1.2.41 */
#define PNG_TRANSFORM_GRAY_TO_RGB 0x2000 /* read only */
/* Flags for MNG supported features */
#define PNG_FLAG_MNG_EMPTY_PLTE 0x01
@@ -1498,6 +1500,10 @@ struct png_struct_def
#ifdef PNG_SET_USER_LIMITS_SUPPORTED
png_uint_32 user_width_max;
png_uint_32 user_height_max;
/* Added in libpng-1.2.41: Total number of sPLT, text, and unknown
* chunks that can be stored (0x7fffffff means unlimited).
*/
png_uint_32 user_chunk_cache_max;
#endif
/* New member added in libpng-1.0.25 and 1.2.17 */
@@ -1512,13 +1518,17 @@ struct png_struct_def
/* New member added in libpng-1.2.30 */
png_charp chunkdata; /* buffer for reading chunk data */
/* New member added in libpng-1.4.0 */
#ifdef PNG_IO_STATE_SUPPORTED
png_uint_32 io_state;
#endif
};
/* 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_2_41beta07;
typedef png_structp version_1_2_41beta08;
typedef png_struct FAR * FAR * png_structpp;
@@ -1699,6 +1709,11 @@ extern PNG_EXPORT(void,png_set_swap_alpha) PNGARG((png_structp png_ptr));
extern PNG_EXPORT(void,png_set_invert_alpha) PNGARG((png_structp png_ptr));
#endif
#ifdef PNG_READ_PREMULTIPLY_ALPHA_SUPPORTED
extern PNG_EXPORT(void,png_set_premultiply_alpha)
PNGARG((png_structp png_ptr));
#endif
#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
/* Add a filler byte to 8-bit Gray or 24-bit RGB images. */
extern PNG_EXPORT(void,png_set_filler) PNGARG((png_structp png_ptr,
@@ -2104,6 +2119,9 @@ extern PNG_EXPORT(void,png_progressive_combine_row) PNGARG((png_structp png_ptr,
extern PNG_EXPORT(png_voidp,png_malloc) PNGARG((png_structp png_ptr,
png_uint_32 size));
/* Added at libpng version 1.2.41 */
extern PNG_EXPORT(png_voidp,png_calloc) PNGARG((png_structp png_ptr,
png_uint_32 size));
#ifdef PNG_1_0_X
# define png_malloc_warn png_malloc
@@ -2778,6 +2796,24 @@ extern PNG_EXPORT(png_uint_32,png_get_user_height_max) PNGARG((png_structp
png_ptr));
#endif
/* Added in libpng-1.4.0 */
#ifdef PNG_IO_STATE_SUPPORTED
extern PNG_EXPORT(png_uint_32,png_get_io_state) PNGARG((png_structp png_ptr));
extern PNG_EXPORT(png_bytep,png_get_io_chunk_name)
PNGARG((png_structp png_ptr));
/* The flags returned by png_get_io_state() are the following: */
#define PNG_IO_NONE 0x0000 /* no I/O at this moment */
#define PNG_IO_READING 0x0001 /* currently reading */
#define PNG_IO_WRITING 0x0002 /* currently writing */
#define PNG_IO_SIGNATURE 0x0010 /* currently at the file signature */
#define PNG_IO_CHUNK_HDR 0x0020 /* currently at the chunk header */
#define PNG_IO_CHUNK_DATA 0x0040 /* currently at the chunk data */
#define PNG_IO_CHUNK_CRC 0x0080 /* currently at the chunk crc */
#define PNG_IO_MASK_OP 0x000f /* current operation: reading/writing */
#define PNG_IO_MASK_LOC 0x00f0 /* current location: sig/hdr/data/crc */
#endif /* ?PNG_IO_STATE_SUPPORTED */
/* Maintainer: Put new public prototypes here ^, in libpng.3, and in
* project defs
@@ -2921,7 +2957,8 @@ extern PNG_EXPORT(void,png_save_uint_16)
/* 0x800000L Unused */
#define PNG_ADD_ALPHA 0x1000000L /* Added to libpng-1.2.7 */
#define PNG_EXPAND_tRNS 0x2000000L /* Added to libpng-1.2.9 */
/* 0x4000000L unused */
#define PNG_PREMULTIPLY_ALPHA 0x4000000L /* Added to libpng-1.2.41 */
/* by volker */
/* 0x8000000L unused */
/* 0x10000000L unused */
/* 0x20000000L unused */
@@ -3414,6 +3451,11 @@ PNG_EXTERN void png_do_strip_filler PNGARG((png_row_infop row_info,
png_bytep row, png_uint_32 flags));
#endif
#ifdef PNG_READ_PREMULTIPLY_ALPHA_SUPPORTED
PNG_EXTERN void png_do_read_premultiply_alpha
PNGARG((png_row_infop row_info, png_bytep row));
#endif
#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
PNG_EXTERN void png_do_swap PNGARG((png_row_infop row_info, png_bytep row));
#endif

View File

@@ -1,7 +1,7 @@
/* pngconf.h - machine configurable file for libpng
*
* libpng version 1.2.41beta07 - October 21, 2009
* libpng version 1.2.41beta08 - October 30, 2009
* Copyright (c) 1998-2009 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.)
@@ -115,6 +115,17 @@
# define PNG_WRITE_SUPPORTED
#endif
/* Enabled in 1.2.41. */
#ifdef PNG_ALLOW_BENIGN_ERRORS
# define png_benign_error png_warning
# define png_chunk_benign_error png_chunk_warning
#else
# ifndef PNG_BENIGN_ERRORS_SUPPORTED
# define png_benign_error png_error
# define png_chunk_benign_error png_chunk_error
# endif
#endif
/* Added in libpng-1.2.41 */
#if !defined(PNG_NO_WARNINGS) && !defined(PNG_WARNINGS_SUPPORTED)
# define PNG_WARNINGS_SUPPORTED
@@ -613,24 +624,33 @@
# ifndef PNG_NO_READ_BACKGROUND
# define PNG_READ_BACKGROUND_SUPPORTED
# endif
#ifndef PNG_1_0_X
# ifndef PNG_NO_READ_16_TO_8
# define PNG_READ_16_TO_8_SUPPORTED
# endif
#endif
# ifndef PNG_NO_READ_FILLER
# define PNG_READ_FILLER_SUPPORTED
# endif
# ifndef PNG_NO_READ_GAMMA
# define PNG_READ_GAMMA_SUPPORTED
# endif
#ifndef PNG_1_0_X
# ifndef PNG_NO_READ_GRAY_TO_RGB
# define PNG_READ_GRAY_TO_RGB_SUPPORTED
# endif
#endif
# ifndef PNG_NO_READ_SWAP_ALPHA
# define PNG_READ_SWAP_ALPHA_SUPPORTED
# endif
# ifndef PNG_NO_READ_INVERT_ALPHA
# define PNG_READ_INVERT_ALPHA_SUPPORTED
# endif
#ifndef PNG_1_0_X
# ifndef PNG_NO_READ_PREMULTIPLY_ALPHA
# define PNG_READ_PREMULTIPLY_ALPHA_SUPPORTED
# endif
#endif
# ifndef PNG_NO_READ_STRIP_ALPHA
# define PNG_READ_STRIP_ALPHA_SUPPORTED
# endif
@@ -707,9 +727,11 @@
# ifndef PNG_NO_WRITE_SWAP_ALPHA
# define PNG_WRITE_SWAP_ALPHA_SUPPORTED
# endif
#ifndef PNG_1_0_X
# ifndef PNG_NO_WRITE_INVERT_ALPHA
# define PNG_WRITE_INVERT_ALPHA_SUPPORTED
# endif
#endif
# ifndef PNG_NO_WRITE_USER_TRANSFORM
# define PNG_WRITE_USER_TRANSFORM_SUPPORTED
# endif
@@ -847,7 +869,31 @@
# define PNG_USER_HEIGHT_MAX 1000000L
#endif
/* Added at libpng-1.2.34 and 1.4.0 */
#ifndef PNG_1_0_X
/* Added at libpng-1.2.41 */
#ifndef PNG_USER_CHUNK_CACHE_MAX
# define PNG_USER_CHUNK_CACHE_MAX 0x7ffffffLL
#endif
#endif
/* Added at libpng-1.2.41 */
#ifndef PNG_1_0_X
#if !defined(PNG_NO_IO_STATE) && !defined(PNG_IO_STATE_SUPPORTED)
# define PNG_IO_STATE_SUPPORTED
#endif
#endif
#ifndef PNG_LITERAL_SHARP
# define PNG_LITERAL_SHARP 0x23
#endif
#ifndef PNG_LITERAL_LEFT_SQUARE_BRACKET
# define PNG_LITERAL_LEFT_SQUARE_BRACKET 0x5b
#endif
#ifndef PNG_LITERAL_RIGHT_SQUARE_BRACKET
# define PNG_LITERAL_RIGHT_SQUARE_BRACKET 0x5d
#endif
/* Added at libpng-1.2.34 */
#ifndef PNG_STRING_NEWLINE
#define PNG_STRING_NEWLINE "\n"
#endif

View File

@@ -1,7 +1,7 @@
/* pngerror.c - stub functions for i/o and memory allocation
*
* Last changed in libpng 1.2.41 [October 21, 2009]
* Last changed in libpng 1.2.41 [October 30, 2009]
* Copyright (c) 1998-2009 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.)
@@ -45,7 +45,7 @@ png_error(png_structp png_ptr, png_const_charp error_message)
if (png_ptr->flags&
(PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT))
{
if (*error_message == '#')
if (*error_message == PNG_LITERAL_SHARP)
{
/* Strip "#nnnn " from beginning of error message. */
int offset;
@@ -112,7 +112,7 @@ png_warning(png_structp png_ptr, png_const_charp warning_message)
(PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT))
#endif
{
if (*warning_message == '#')
if (*warning_message == PNG_LITERAL_SHARP)
{
for (offset = 1; offset < 15; offset++)
if (warning_message[offset] == ' ')
@@ -127,6 +127,16 @@ png_warning(png_structp png_ptr, png_const_charp warning_message)
}
#endif /* PNG_WARNINGS_SUPPORTED */
#ifdef PNG_BENIGN_ERRORS_SUPPORTED
void PNGAPI
png_benign_error(png_structp png_ptr, png_const_charp error_message)
{
if (png_ptr->flags & PNG_FLAG_BENIGN_ERRORS_WARN)
png_warning(png_ptr, error_message);
else
png_error(png_ptr, error_message);
}
#endif
/* These utilities are used internally to build an error message that relates
* to the current chunk. The chunk name comes from png_ptr->chunk_name,
@@ -153,10 +163,10 @@ png_format_buffer(png_structp png_ptr, png_charp buffer, png_const_charp
int c = png_ptr->chunk_name[iin++];
if (isnonalpha(c))
{
buffer[iout++] = '[';
buffer[iout++] = PNG_LITERAL_LEFT_SQUARE_BRACKET;
buffer[iout++] = png_digit[(c & 0xf0) >> 4];
buffer[iout++] = png_digit[c & 0x0f];
buffer[iout++] = ']';
buffer[iout++] = PNG_LITERAL_RIGHT_SQUARE_BRACKET;
}
else
{
@@ -206,6 +216,18 @@ png_chunk_warning(png_structp png_ptr, png_const_charp warning_message)
}
#endif /* PNG_WARNINGS_SUPPORTED */
#ifdef PNG_READ_SUPPORTED
#ifdef PNG_BENIGN_ERRORS_SUPPORTED
void PNGAPI
png_chunk_benign_error(png_structp png_ptr, png_const_charp error_message)
{
if (png_ptr->flags & PNG_FLAG_BENIGN_ERRORS_WARN)
png_chunk_warning(png_ptr, error_message);
else
png_chunk_error(png_ptr, error_message);
}
#endif
#endif /* PNG_READ_SUPPORTED */
/* This is the default error handling function. Note that replacements for
* this function MUST NOT RETURN, or the program will likely crash. This
@@ -217,7 +239,7 @@ png_default_error(png_structp png_ptr, png_const_charp error_message)
{
#ifdef PNG_CONSOLE_IO_SUPPORTED
#ifdef PNG_ERROR_NUMBERS_SUPPORTED
if (*error_message == '#')
if (*error_message == PNG_LITERAL_SHARP)
{
/* Strip "#nnnn " from beginning of error message. */
int offset;
@@ -282,7 +304,7 @@ png_default_warning(png_structp png_ptr, png_const_charp warning_message)
{
#ifdef PNG_CONSOLE_IO_SUPPORTED
# ifdef PNG_ERROR_NUMBERS_SUPPORTED
if (*warning_message == '#')
if (*warning_message == PNG_LITERAL_SHARP)
{
int offset;
char warning_number[16];

View File

@@ -1,7 +1,7 @@
/* pngget.c - retrieval of values from info struct
*
* Last changed in libpng 1.2.41 [October 21, 2009]
* Last changed in libpng 1.2.41 [October 30, 2009]
* Copyright (c) 1998-2009 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.)
@@ -939,7 +939,27 @@ png_get_user_height_max (png_structp png_ptr)
{
return (png_ptr? png_ptr->user_height_max : 0);
}
/* This function was added to libpng 1.2.41 */
png_uint_32 PNGAPI
png_get_chunk_cache_max (png_structp png_ptr)
{
return (png_ptr? png_ptr->user_chunk_cache_max? 0x7fffffffL :
png_ptr->user_chunk_cache_max - 1 : 0);
}
#endif /* ?PNG_SET_USER_LIMITS_SUPPORTED */
#ifdef PNG_IO_STATE_SUPPORTED
png_uint_32 PNGAPI
png_get_io_state (png_structp png_ptr)
{
return png_ptr->io_state;
}
png_bytep PNGAPI
png_get_io_chunk_name (png_structp png_ptr)
{
return png_ptr->chunk_name;
}
#endif /* ?PNG_IO_STATE_SUPPORTED */
#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */

View File

@@ -114,6 +114,16 @@ png_destroy_struct_2(png_voidp struct_ptr, png_free_ptr free_fn,
* result, we would be truncating potentially larger memory requests
* (which should cause a fatal error) and introducing major problems.
*/
png_voidp PNGAPI
png_calloc(png_structp png_ptr, png_uint_32 size)
{
png_voidp ret;
ret = (png_malloc(png_ptr, size));
if (ret != NULL)
png_memset(ret,0,(png_size_t)size);
return (ret);
}
png_voidp PNGAPI
png_malloc(png_structp png_ptr, png_uint_32 size)
@@ -431,6 +441,16 @@ png_destroy_struct_2(png_voidp struct_ptr, png_free_ptr free_fn,
* have the ability to do that.
*/
png_voidp PNGAPI
png_calloc(png_structp png_ptr, png_uint_32 size)
{
png_voidp ret;
ret = (png_malloc(png_ptr, size));
if (ret != NULL)
png_memset(ret,0,(png_size_t)size);
return (ret);
}
png_voidp PNGAPI
png_malloc(png_structp png_ptr, png_uint_32 size)

View File

@@ -1,7 +1,7 @@
/* pngread.c - read a PNG file
*
* Last changed in libpng 1.2.41 [October 21, 2009]
* Last changed in libpng 1.2.41 [October 30, 2009]
* Copyright (c) 1998-2009 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.)
@@ -349,6 +349,10 @@ png_read_info(png_structp png_ptr, png_infop info_ptr)
png_size_t num_checked = png_ptr->sig_bytes,
num_to_check = 8 - num_checked;
#ifdef PNG_IO_STATE_SUPPORTED
png_ptr->io_state = PNG_IO_READING | PNG_IO_SIGNATURE;
#endif
png_read_data(png_ptr, &(info_ptr->signature[num_checked]), num_to_check);
png_ptr->sig_bytes = 8;
@@ -1448,6 +1452,22 @@ png_read_png(png_structp png_ptr, png_infop info_ptr,
png_set_swap(png_ptr);
#endif
/* Added at libpng-1.2.41 */
#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED
/* Invert the alpha channel from opacity to transparency
*/
if (transforms & PNG_TRANSFORM_INVERT_ALPHA)
png_set_invert_alpha(png_ptr);
#endif
/* Added at libpng-1.2.41 */
#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
/* Expand grayscale image to RGB
*/
if (transforms & PNG_TRANSFORM_GRAY_TO_RGB)
png_set_gray_to_rgb(png_ptr);
#endif
/* We don't handle adding filler bytes */
/* Optional call to gamma correct and add the background to the palette

View File

@@ -1,7 +1,7 @@
/* pngrio.c - functions for data input
*
* Last changed in libpng 1.2.41 [October 21, 2009]
* Last changed in libpng 1.2.41 [October 30, 2009]
* Copyright (c) 1998-2009 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.)

View File

@@ -1,7 +1,7 @@
/* pngrtran.c - transforms the data in a row for PNG readers
*
* Last changed in libpng 1.2.41 [October 21, 2009]
* Last changed in libpng 1.2.41 [October 30, 2009]
* Copyright (c) 1998-2009 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.)
@@ -140,6 +140,22 @@ png_set_strip_alpha(png_structp png_ptr)
}
#endif
#ifdef PNG_READ_PREMULTIPLY_ALPHA_SUPPORTED
void PNGAPI
png_set_premultiply_alpha(png_structp png_ptr)
{
png_debug(1, "in png_set_premultiply_alpha");
if(png_ptr == NULL)
return;
png_ptr->transformations |=
(PNG_PREMULTIPLY_ALPHA | PNG_EXPAND_tRNS);
png_ptr->transformations |=
PNG_EXPAND; /* This shouldn't be necessary */
png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
}
#endif
#ifdef PNG_READ_DITHER_SUPPORTED
/* Dither file to 8 bit. Supply a palette, the current number
* of elements in the palette, the maximum number of elements
@@ -335,9 +351,8 @@ png_set_dither(png_structp png_ptr, png_colorp palette,
png_ptr->palette_to_index[i] = (png_byte)i;
}
hash = (png_dsortpp)png_malloc(png_ptr, (png_uint_32)(769 *
hash = (png_dsortpp)png_calloc(png_ptr, (png_uint_32)(769 *
png_sizeof(png_dsortp)));
png_memset(hash, 0, 769 * png_sizeof(png_dsortp));
num_new_palette = num_palette;
@@ -483,10 +498,9 @@ png_set_dither(png_structp png_ptr, png_colorp palette,
int num_green = (1 << PNG_DITHER_GREEN_BITS);
int num_blue = (1 << PNG_DITHER_BLUE_BITS);
png_size_t num_entries = ((png_size_t)1 << total_bits);
png_ptr->palette_lookup = (png_bytep )png_malloc(png_ptr,
png_ptr->palette_lookup = (png_bytep )png_calloc(png_ptr,
(png_uint_32)(num_entries * png_sizeof(png_byte)));
png_memset(png_ptr->palette_lookup, 0, num_entries *
png_sizeof(png_byte));
distance = (png_bytep)png_malloc(png_ptr, (png_uint_32)(num_entries *
png_sizeof(png_byte)));
@@ -1437,6 +1451,11 @@ png_do_read_transformations(png_structp png_ptr)
png_do_gray_to_rgb(&(png_ptr->row_info), png_ptr->row_buf + 1);
#endif
#ifdef PNG_READ_16_TO_8_SUPPORTED
if (png_ptr->transformations & PNG_16_TO_8)
png_do_chop(&(png_ptr->row_info), png_ptr->row_buf + 1);
#endif
#ifdef PNG_READ_BACKGROUND_SUPPORTED
if ((png_ptr->transformations & PNG_BACKGROUND) &&
((png_ptr->num_trans != 0 ) ||
@@ -1466,11 +1485,6 @@ png_do_read_transformations(png_structp png_ptr)
png_ptr->gamma_shift);
#endif
#ifdef PNG_READ_16_TO_8_SUPPORTED
if (png_ptr->transformations & PNG_16_TO_8)
png_do_chop(&(png_ptr->row_info), png_ptr->row_buf + 1);
#endif
#ifdef PNG_READ_DITHER_SUPPORTED
if (png_ptr->transformations & PNG_DITHER)
{
@@ -1520,6 +1534,12 @@ png_do_read_transformations(png_structp png_ptr)
(png_uint_32)png_ptr->filler, png_ptr->flags);
#endif
#ifdef PNG_READ_PREMULTIPLY_ALPHA_SUPPORTED
if (png_ptr->transformations & PNG_PREMULTIPLY_ALPHA)
png_do_read_premultiply_alpha(&(png_ptr->row_info),
png_ptr->row_buf + 1);
#endif
#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED
if (png_ptr->transformations & PNG_INVERT_ALPHA)
png_do_read_invert_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1);
@@ -2023,6 +2043,85 @@ png_do_read_invert_alpha(png_row_infop row_info, png_bytep row)
}
#endif
#ifdef PNG_READ_PREMULTIPLY_ALPHA_SUPPORTED
void /* PRIVATE */
png_do_read_premultiply_alpha(png_row_infop row_info, png_bytep row)
{
png_debug(1, "in png_do_read_premultiply_alpha");
{
png_uint_32 row_width = row_info->width;
if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
{
/* This premultiplies the pixels with the alpha channel in RGBA */
if (row_info->bit_depth == 8)
{
png_bytep sp = row + row_info->rowbytes;
png_bytep dp = sp;
png_uint_16 a = 0;
png_uint_32 i;
for (i = 0; i < row_width; i++)
{
a = *(--sp); --dp;
*(--dp) = (*(--sp) * a) / 255;
*(--dp) = (*(--sp) * a) / 255;
*(--dp) = (*(--sp) * a) / 255;
}
}
/* This premultiplies the pixels with the alpha channel in RRGGBBAA */
else
{
png_uint_16p sp = (png_uint_16p)(row + row_info->rowbytes);
png_uint_16p dp = sp;
png_uint_32 a = 0;
png_uint_32 i;
for (i = 0; i < row_width; i++)
{
a = *(--sp); --dp;
*(--dp) = (png_uint_16) ((*(--sp) * a) / 65535);
*(--dp) = (png_uint_16) ((*(--sp) * a) / 65535);
*(--dp) = (png_uint_16) ((*(--sp) * a) / 65535);
}
}
}
else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
{
/* This premultiplies the pixels with the alpha channel in GA */
if (row_info->bit_depth == 8)
{
png_bytep sp = row + row_info->rowbytes;
png_bytep dp = sp;
png_uint_16 a = 0;
png_uint_32 i;
for (i = 0; i < row_width; i++)
{
a = *(--sp); --dp;
*(--dp) = (*(--sp) * a) / 255;
}
}
/* This premultiplies the pixels with the alpha channel in GGAA */
else
{
png_uint_16p sp = (png_uint_16p) (row + row_info->rowbytes);
png_uint_16p dp = sp;
png_uint_32 a = 0;
png_uint_32 i;
for (i = 0; i < row_width; i++)
{
a = *(--sp); --dp;
*(--dp) = (png_uint_16) ((*(--sp) * a) / 65535);
}
}
}
}
}
#endif
#ifdef PNG_READ_FILLER_SUPPORTED
/* Add filler channel if we have RGB color */
void /* PRIVATE */
@@ -4129,6 +4228,33 @@ static PNG_CONST int png_gamma_shift[] =
* tables, we don't make a full table if we are reducing to 8-bit in
* the future. Note also how the gamma_16 tables are segmented so that
* we don't need to allocate > 64K chunks for a full 16-bit table.
*
* See the PNG extensions document for an integer algorithm for creating
* the gamma tables. Maybe we will implement that here someday.
*
* We should only reach this point if
*
* the file_gamma is known (i.e., the gAMA or sRGB chunk is present,
* or the application has provided a file_gamma)
*
* AND
* {
* the screen_gamma is known
* OR
*
* RGB_to_gray transformation is being performed
* }
*
* AND
* {
* the screen_gamma is different from the reciprocal of the
* file_gamma by more than the specified threshold
*
* OR
*
* a background color has been specified and the file_gamma
* and screen_gamma are not 1.0, within the specified threshold.
* }
*/
void /* PRIVATE */
@@ -4240,9 +4366,8 @@ png_build_gamma_table(png_structp png_ptr)
else
g = 1.0;
png_ptr->gamma_16_table = (png_uint_16pp)png_malloc(png_ptr,
png_ptr->gamma_16_table = (png_uint_16pp)png_calloc(png_ptr,
(png_uint_32)(num * png_sizeof(png_uint_16p)));
png_memset(png_ptr->gamma_16_table, 0, num * png_sizeof(png_uint_16p));
if (png_ptr->transformations & (PNG_16_TO_8 | PNG_BACKGROUND))
{
@@ -4302,9 +4427,8 @@ png_build_gamma_table(png_structp png_ptr)
g = 1.0 / (png_ptr->gamma);
png_ptr->gamma_16_to_1 = (png_uint_16pp)png_malloc(png_ptr,
png_ptr->gamma_16_to_1 = (png_uint_16pp)png_calloc(png_ptr,
(png_uint_32)(num * png_sizeof(png_uint_16p )));
png_memset(png_ptr->gamma_16_to_1, 0, num * png_sizeof(png_uint_16p));
for (i = 0; i < num; i++)
{
@@ -4327,10 +4451,8 @@ png_build_gamma_table(png_structp png_ptr)
else
g = png_ptr->gamma; /* Probably doing rgb_to_gray */
png_ptr->gamma_16_from_1 = (png_uint_16pp)png_malloc(png_ptr,
png_ptr->gamma_16_from_1 = (png_uint_16pp)png_calloc(png_ptr,
(png_uint_32)(num * png_sizeof(png_uint_16p)));
png_memset(png_ptr->gamma_16_from_1, 0,
num * png_sizeof(png_uint_16p));
for (i = 0; i < num; i++)
{

View File

@@ -1,7 +1,7 @@
/* pngrutil.c - utilities to read a PNG file
*
* Last changed in libpng 1.2.41 [October 21, 2009]
* Last changed in libpng 1.2.41 [October 30, 2009]
* Copyright (c) 1998-2009 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.)
@@ -112,6 +112,13 @@ png_read_chunk_header(png_structp png_ptr)
png_byte buf[8];
png_uint_32 length;
#ifdef PNG_IO_STATE_SUPPORTED
/* Inform the I/O callback that the chunk header is being read.
* PNG_IO_CHUNK_HDR requires a single I/O call.
*/
png_ptr->io_state = PNG_IO_READING | PNG_IO_CHUNK_HDR;
#endif
/* Read the length and the chunk name */
png_read_data(png_ptr, buf, 8);
length = png_get_uint_31(png_ptr, buf);
@@ -129,6 +136,13 @@ png_read_chunk_header(png_structp png_ptr)
/* Check to see if chunk name is valid */
png_check_chunk_name(png_ptr, png_ptr->chunk_name);
#ifdef PNG_IO_STATE_SUPPORTED
/* Inform the I/O callback that chunk data will (possibly) be read.
* PNG_IO_CHUNK_DATA does NOT require a specific number of I/O calls.
*/
png_ptr->io_state = PNG_IO_READING | PNG_IO_CHUNK_DATA;
#endif
return length;
}
@@ -203,6 +217,12 @@ png_crc_error(png_structp png_ptr)
need_crc = 0;
}
#ifdef PNG_IO_STATE_SUPPORTED
/* Inform the I/O callback that the chunk CRC is being read */
/* PNG_IO_CHUNK_CRC requires the I/O to be done at once */
png_ptr->io_state = PNG_IO_READING | PNG_IO_CHUNK_CRC;
#endif
png_read_data(png_ptr, crc_bytes, 4);
if (need_crc)
@@ -1136,6 +1156,23 @@ png_handle_sPLT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
png_debug(1, "in png_handle_sPLT");
#ifdef PNG_SET_USER_LIMITS_SUPPORTED
if (png_ptr->user_chunk_cache_max != 0)
{
if (png_ptr->user_chunk_cache_max == 1)
{
png_crc_finish(png_ptr, length);
return;
}
if (--png_ptr->user_chunk_cache_max == 1)
{
png_warning(png_ptr, "No space in chunk cache for sPLT");
png_crc_finish(png_ptr, length);
return;
}
}
#endif
if (!(png_ptr->mode & PNG_HAVE_IHDR))
png_error(png_ptr, "Missing IHDR before sPLT");
@@ -1923,6 +1960,22 @@ png_handle_tEXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
png_debug(1, "in png_handle_tEXt");
#ifdef PNG_SET_USER_LIMITS_SUPPORTED
if (png_ptr->user_chunk_cache_max != 0)
{
if (png_ptr->user_chunk_cache_max == 1)
{
png_crc_finish(png_ptr, length);
return;
}
if (--png_ptr->user_chunk_cache_max == 1)
{
png_warning(png_ptr, "No space in chunk cache for tEXt");
png_crc_finish(png_ptr, length);
return;
}
}
#endif
if (!(png_ptr->mode & PNG_HAVE_IHDR))
png_error(png_ptr, "Missing IHDR before tEXt");
@@ -2009,6 +2062,22 @@ png_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
png_debug(1, "in png_handle_zTXt");
#ifdef PNG_SET_USER_LIMITS_SUPPORTED
if (png_ptr->user_chunk_cache_max != 0)
{
if (png_ptr->user_chunk_cache_max == 1)
{
png_crc_finish(png_ptr, length);
return;
}
if (--png_ptr->user_chunk_cache_max == 1)
{
png_warning(png_ptr, "No space in chunk cache for zTXt");
png_crc_finish(png_ptr, length);
return;
}
}
#endif
if (!(png_ptr->mode & PNG_HAVE_IHDR))
png_error(png_ptr, "Missing IHDR before zTXt");
@@ -2114,6 +2183,22 @@ png_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
png_debug(1, "in png_handle_iTXt");
#ifdef PNG_SET_USER_LIMITS_SUPPORTED
if (png_ptr->user_chunk_cache_max != 0)
{
if (png_ptr->user_chunk_cache_max == 1)
{
png_crc_finish(png_ptr, length);
return;
}
if (--png_ptr->user_chunk_cache_max == 1)
{
png_warning(png_ptr, "No space in chunk cache for iTXt");
png_crc_finish(png_ptr, length);
return;
}
}
#endif
if (!(png_ptr->mode & PNG_HAVE_IHDR))
png_error(png_ptr, "Missing IHDR before iTXt");
@@ -2242,6 +2327,22 @@ png_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
png_debug(1, "in png_handle_unknown");
#ifdef PNG_SET_USER_LIMITS_SUPPORTED
if (png_ptr->user_chunk_cache_max != 0)
{
if (png_ptr->user_chunk_cache_max == 1)
{
png_crc_finish(png_ptr, length);
return;
}
if (--png_ptr->user_chunk_cache_max == 1)
{
png_warning(png_ptr, "No space in chunk cache for unknown chunk");
png_crc_finish(png_ptr, length);
return;
}
}
#endif
if (png_ptr->mode & PNG_HAVE_IDAT)
{
@@ -3209,9 +3310,10 @@ defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
if (row_bytes + 64 > png_ptr->old_big_row_buf_size)
{
png_free(png_ptr, png_ptr->big_row_buf);
png_ptr->big_row_buf = (png_bytep)png_malloc(png_ptr, row_bytes + 64);
if (png_ptr->interlaced)
png_memset(png_ptr->big_row_buf, 0, row_bytes + 64);
png_ptr->big_row_buf = (png_bytep)png_calloc(png_ptr, row_bytes + 64);
else
png_ptr->big_row_buf = (png_bytep)png_malloc(png_ptr, row_bytes + 64);
png_ptr->row_buf = png_ptr->big_row_buf + 32;
png_ptr->old_big_row_buf_size = row_bytes + 64;
}

View File

@@ -1,7 +1,7 @@
/* pngset.c - storage of image information into info struct
*
* Last changed in libpng 1.2.41 [October 21, 2009]
* Last changed in libpng 1.2.41 [October 30, 2009]
* Copyright (c) 1998-2009 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.)
@@ -474,10 +474,8 @@ png_set_PLTE(png_structp png_ptr, png_infop info_ptr,
* of num_palette entries, in case of an invalid PNG file that has
* too-large sample values.
*/
png_ptr->palette = (png_colorp)png_malloc(png_ptr,
png_ptr->palette = (png_colorp)png_calloc(png_ptr,
PNG_MAX_PALETTE_LENGTH * png_sizeof(png_color));
png_memset(png_ptr->palette, 0, PNG_MAX_PALETTE_LENGTH *
png_sizeof(png_color));
png_memcpy(png_ptr->palette, palette, num_palette * png_sizeof(png_color));
info_ptr->palette = png_ptr->palette;
info_ptr->num_palette = png_ptr->num_palette = (png_uint_16)num_palette;
@@ -1208,7 +1206,33 @@ png_set_user_limits (png_structp png_ptr, png_uint_32 user_width_max,
png_ptr->user_width_max = user_width_max;
png_ptr->user_height_max = user_height_max;
}
/* This function was added to libpng 1.2.41 */
void PNGAPI
png_set_chunk_cache_max (png_structp png_ptr,
png_uint_32 user_chunk_cache_max)
{
if (png_ptr == NULL)
return;
png_ptr->user_chunk_cache_max = user_chunk_cache_max;
if (user_chunk_cache_max == 0x7fffffffL) /* Unlimited */
png_ptr->user_chunk_cache_max = 0;
else
png_ptr->user_chunk_cache_max = user_chunk_cache_max + 1;
}
#endif /* ?PNG_SET_USER_LIMITS_SUPPORTED */
#ifdef PNG_BENIGN_ERRORS_SUPPORTED
void PNGAPI
png_set_benign_errors(png_structp png_ptr, int allowed)
{
png_debug(1, "in png_set_benign_errors");
if (allowed)
png_ptr->flags |= PNG_FLAG_BENIGN_ERRORS_WARN;
else
png_ptr->flags &= ~PNG_FLAG_BENIGN_ERRORS_WARN;
}
#endif /* PNG_BENIGN_ERRORS_SUPPORTED */
#endif /* ?PNG_1_0_X */
#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */

View File

@@ -1,7 +1,7 @@
/* pngtest.c - a simple test program to test libpng
*
* Last changed in libpng 1.2.41 [October 21, 2009]
* Last changed in libpng 1.2.41 [October 30, 2009]
* Copyright (c) 1998-2009 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.)
@@ -1689,4 +1689,4 @@ main(int argc, char *argv[])
}
/* Generate a compiler error if there is an old png.h in the search path. */
typedef version_1_2_41beta07 your_png_h_is_not_version_1_2_41beta07;
typedef version_1_2_41beta08 your_png_h_is_not_version_1_2_41beta08;

View File

@@ -1,7 +1,7 @@
/* pngtrans.c - transforms the data in a row (used by both readers and writers)
*
* Last changed in libpng 1.2.41 [October 21, 2009]
* Last changed in libpng 1.2.41 [October 30, 2009]
* Copyright (c) 1998-2009 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.)

View File

@@ -1,7 +1,7 @@
/* pngwio.c - functions for data output
*
* Last changed in libpng 1.2.41 [October 21, 2009]
* Last changed in libpng 1.2.41 [October 30, 2009]
* Copyright (c) 1998-2009 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.)

View File

@@ -1,7 +1,7 @@
/* pngwrite.c - general routines to write a PNG file
*
* Last changed in libpng 1.2.41 [October 21, 2009]
* Last changed in libpng 1.2.41 [October 30, 2009]
* Copyright (c) 1998-2009 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.)
@@ -1506,11 +1506,6 @@ png_write_png(png_structp png_ptr, png_infop info_ptr,
{
if (png_ptr == NULL || info_ptr == NULL)
return;
#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED
/* Invert the alpha channel from opacity to transparency */
if (transforms & PNG_TRANSFORM_INVERT_ALPHA)
png_set_invert_alpha(png_ptr);
#endif
/* Write the file header information. */
png_write_info(png_ptr, info_ptr);
@@ -1570,6 +1565,18 @@ png_write_png(png_structp png_ptr, png_infop info_ptr,
png_set_packswap(png_ptr);
#endif
#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED
/* Invert the alpha channel from opacity to transparency */
if (transforms & PNG_TRANSFORM_INVERT_ALPHA)
png_set_invert_alpha(png_ptr);
#endif
#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED
/* Invert the alpha channel from opacity to transparency */
if (transforms & PNG_TRANSFORM_INVERT_ALPHA)
png_set_invert_alpha(png_ptr);
#endif
/* ----------------------- end of transformations ------------------- */
/* Write the bits */

View File

@@ -1,7 +1,7 @@
/* pngwtran.c - transforms the data in a row for PNG writers
*
* Last changed in libpng 1.2.41 [October 21, 2009]
* Last changed in libpng 1.2.41 [October 30, 2009]
* Copyright (c) 1998-2009 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.)

View File

@@ -1,7 +1,7 @@
/* pngwutil.c - utilities to write a PNG file
*
* Last changed in libpng 1.2.41 [October 21, 2009]
* Last changed in libpng 1.2.41 [October 30, 2009]
* Copyright (c) 1998-2009 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.)
@@ -58,11 +58,16 @@ png_save_uint_16(png_bytep buf, unsigned int i)
* we should call png_set_sig_bytes() to tell libpng how many of the
* bytes have already been written.
*/
void /* PRIVATE */
void PNGAPI
png_write_sig(png_structp png_ptr)
{
png_byte png_signature[8] = {137, 80, 78, 71, 13, 10, 26, 10};
#ifdef PNG_IO_STATE_SUPPORTED
/* Inform the I/O callback that the signature is being written */
png_ptr->io_state = PNG_IO_WRITING | PNG_IO_SIGNATURE;
#endif
/* Write the rest of the 8 byte signature */
png_write_data(png_ptr, &png_signature[png_ptr->sig_bytes],
(png_size_t)(8 - png_ptr->sig_bytes));
@@ -106,6 +111,13 @@ png_write_chunk_start(png_structp png_ptr, png_bytep chunk_name,
if (png_ptr == NULL)
return;
#ifdef PNG_IO_STATE_SUPPORTED
/* Inform the I/O callback that the chunk header is being written.
* PNG_IO_CHUNK_HDR requires a single I/O call.
*/
png_ptr->io_state = PNG_IO_WRITING | PNG_IO_CHUNK_HDR;
#endif
/* Write the length and the chunk name */
png_save_uint_32(buf, length);
png_memcpy(buf + 4, chunk_name, 4);
@@ -115,6 +127,13 @@ png_write_chunk_start(png_structp png_ptr, png_bytep chunk_name,
/* Reset the crc and run it over the chunk name */
png_reset_crc(png_ptr);
png_calculate_crc(png_ptr, chunk_name, (png_size_t)4);
#ifdef PNG_IO_STATE_SUPPORTED
/* Inform the I/O callback that chunk data will (possibly) be written.
* PNG_IO_CHUNK_DATA does NOT require a specific number of I/O calls.
*/
png_ptr->io_state = PNG_IO_WRITING | PNG_IO_CHUNK_DATA;
#endif
}
/* Write the data of a PNG chunk started with png_write_chunk_start().
@@ -146,6 +165,13 @@ png_write_chunk_end(png_structp png_ptr)
if (png_ptr == NULL) return;
#ifdef PNG_IO_STATE_SUPPORTED
/* Inform the I/O callback that the chunk CRC is being written.
* PNG_IO_CHUNK_CRC requires a single I/O function call.
*/
png_ptr->io_state = PNG_IO_WRITING | PNG_IO_CHUNK_CRC;
#endif
/* Write the crc in a single operation */
png_save_uint_32(buf, png_ptr->crc);
@@ -1792,29 +1818,28 @@ png_write_start_row(png_structp png_ptr)
/* We only need to keep the previous row if we are using one of these. */
if (png_ptr->do_filter & (PNG_FILTER_AVG | PNG_FILTER_UP | PNG_FILTER_PAETH))
{
/* Set up previous row buffer */
png_ptr->prev_row = (png_bytep)png_malloc(png_ptr,
(png_uint_32)buf_size);
png_memset(png_ptr->prev_row, 0, buf_size);
/* Set up previous row buffer */
png_ptr->prev_row = (png_bytep)png_calloc(png_ptr,
(png_uint_32)buf_size);
if (png_ptr->do_filter & PNG_FILTER_UP)
{
png_ptr->up_row = (png_bytep)png_malloc(png_ptr,
(png_uint_32)(png_ptr->rowbytes + 1));
(png_uint_32)(png_ptr->rowbytes + 1));
png_ptr->up_row[0] = PNG_FILTER_VALUE_UP;
}
if (png_ptr->do_filter & PNG_FILTER_AVG)
{
png_ptr->avg_row = (png_bytep)png_malloc(png_ptr,
(png_uint_32)(png_ptr->rowbytes + 1));
(png_uint_32)(png_ptr->rowbytes + 1));
png_ptr->avg_row[0] = PNG_FILTER_VALUE_AVG;
}
if (png_ptr->do_filter & PNG_FILTER_PAETH)
{
png_ptr->paeth_row = (png_bytep)png_malloc(png_ptr,
(png_uint_32)(png_ptr->rowbytes + 1));
(png_uint_32)(png_ptr->rowbytes + 1));
png_ptr->paeth_row[0] = PNG_FILTER_VALUE_PAETH;
}
}
@@ -2151,6 +2176,14 @@ png_write_find_filter(png_structp png_ptr, png_row_infop row_info)
png_debug(1, "in png_write_find_filter");
#ifndef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
if (png_ptr->row_number == 0 && filter_to_do == PNG_ALL_FILTERS)
{
/* These will never be selected so we need not test them. */
filter_to_do &= ~(PNG_FILTER_UP | PNG_FILTER_PAETH);
}
#endif
/* Find out how many bytes offset each pixel is */
bpp = (row_info->pixel_depth + 7) >> 3;

View File

@@ -222,7 +222,7 @@
COPY_PHASE_STRIP = NO;
DYLIB_COMPATIBILITY_VERSION = 3;
DYLIB_CURRENT_VERSION = 3;
FRAMEWORK_VERSION = 1.2.41beta07;
FRAMEWORK_VERSION = 1.2.41beta08;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PREFIX_HEADER = "";
INFOPLIST_FILE = Info.plist;
@@ -240,7 +240,7 @@
buildSettings = {
DYLIB_COMPATIBILITY_VERSION = 3;
DYLIB_CURRENT_VERSION = 3;
FRAMEWORK_VERSION = 1.2.41beta07;
FRAMEWORK_VERSION = 1.2.41beta08;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PREFIX_HEADER = "";
INFOPLIST_FILE = Info.plist;

View File

@@ -195,7 +195,7 @@ configure_file(${PNG_SOURCE_DIR}/scripts/libpng-config.in
# SET UP LINKS
if(PNG_SHARED)
set_target_properties(${PNG_LIB_NAME} PROPERTIES
# VERSION 0.${PNGLIB_RELEASE}.1.2.41beta07
# VERSION 0.${PNGLIB_RELEASE}.1.2.41beta08
VERSION 0.${PNGLIB_RELEASE}.0
SOVERSION 0
CLEAN_DIRECT_OUTPUT 1)

View File

@@ -11,7 +11,7 @@
# Modeled after libxml-config.
version=1.2.41beta07
version=1.2.41beta08
prefix=""
libdir=""
libs=""

View File

@@ -5,6 +5,6 @@ includedir=@includedir@/libpng12
Name: libpng
Description: Loads and saves PNG files
Version: 1.2.41beta07
Version: 1.2.41beta08
Libs: -L${libdir} -lpng12
Cflags: -I${includedir}

View File

@@ -11,7 +11,7 @@
# Library name:
LIBNAME=libpng12
PNGMAJ = 0
PNGMIN = 1.2.41beta07
PNGMIN = 1.2.41beta08
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:

View File

@@ -11,7 +11,7 @@
# Library name:
LIBNAME=libpng12
PNGMAJ = 0
PNGMIN = 1.2.41beta07
PNGMIN = 1.2.41beta08
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:

View File

@@ -23,7 +23,7 @@ LN_SF = ln -f -s
LIBNAME=libpng12
PNGMAJ = 0
PNGMIN = 1.2.41beta07
PNGMIN = 1.2.41beta08
PNGVER = $(PNGMAJ).$(PNGMIN)
prefix=/usr/local

View File

@@ -11,7 +11,7 @@
# Library name:
LIBNAME=libpng12
PNGMAJ = 0
PNGMIN = 1.2.41beta07
PNGMIN = 1.2.41beta08
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:

View File

@@ -77,7 +77,7 @@ CFLAGS= $(strip $(MINGW_CCFLAGS) $(addprefix -I,$(ZLIBINC)) \
LIBNAME = libpng12
PNGMAJ = 0
CYGDLL = 12
PNGMIN = 1.2.41beta07
PNGMIN = 1.2.41beta08
PNGVER = $(PNGMAJ).$(PNGMIN)
SHAREDLIB=cygpng$(CYGDLL).dll

View File

@@ -22,7 +22,7 @@ ZLIBINC=../zlib
# Library name:
LIBNAME = libpng12
PNGMAJ = 12
PNGMIN = 1.2.41beta07
PNGMIN = 1.2.41beta08
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:

View File

@@ -8,7 +8,7 @@
# Library name:
PNGMAJ = 0
PNGMIN = 1.2.41beta07
PNGMIN = 1.2.41beta08
PNGVER = $(PNGMAJ).$(PNGMIN)
LIBNAME = libpng12

View File

@@ -16,7 +16,7 @@
# Library name:
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.2.41beta07
PNGMIN = 1.2.41beta08
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:

View File

@@ -17,7 +17,7 @@
# Library name:
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.2.41beta07
PNGMIN = 1.2.41beta08
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:

View File

@@ -21,7 +21,7 @@ ZLIBINC=/opt/zlib/include
# Library name:
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.2.41beta07
PNGMIN = 1.2.41beta08
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:

View File

@@ -11,7 +11,7 @@
# Library name:
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.2.41beta07
PNGMIN = 1.2.41beta08
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:

View File

@@ -21,7 +21,7 @@ ZLIBINC=/opt/zlib/include
# Library name:
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.2.41beta07
PNGMIN = 1.2.41beta08
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:

View File

@@ -10,7 +10,7 @@
# Library name:
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.2.41beta07
PNGMIN = 1.2.41beta08
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:

View File

@@ -77,7 +77,7 @@ CFLAGS= $(strip $(MINGW_CCFLAGS) $(addprefix -I,$(ZLIBINC)) \
LIBNAME = libpng12
PNGMAJ = 0
MINGDLL = 12
PNGMIN = 1.2.41beta07
PNGMIN = 1.2.41beta08
PNGVER = $(PNGMAJ).$(PNGMIN)
SHAREDLIB=libpng$(MINGDLL).dll

View File

@@ -17,7 +17,7 @@ INCSDIR=${LOCALBASE}/include/libpng12
LIB= png12
SHLIB_MAJOR= 0
SHLIB_MINOR= 1.2.41beta07
SHLIB_MINOR= 1.2.41beta08
SRCS= png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
pngwtran.c pngmem.c pngerror.c pngpread.c

View File

@@ -17,7 +17,7 @@ INCSDIR=${LOCALBASE}/include/libpng
LIB= png
SHLIB_MAJOR= 3
SHLIB_MINOR= 1.2.41beta07
SHLIB_MINOR= 1.2.41beta08
SRCS= png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
pngwtran.c pngmem.c pngerror.c pngpread.c

View File

@@ -10,7 +10,7 @@
# Library name:
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.2.41beta07
PNGMIN = 1.2.41beta08
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:

View File

@@ -11,7 +11,7 @@ LIBDIR= ${PREFIX}/lib
MANDIR= ${PREFIX}/man/cat
SHLIB_MAJOR= 0
SHLIB_MINOR= 1.2.41beta07
SHLIB_MINOR= 1.2.41beta08
LIB= png
SRCS= png.c pngerror.c pngget.c pngmem.c pngpread.c \

View File

@@ -12,7 +12,7 @@
# Library name:
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.2.41beta07
PNGMIN = 1.2.41beta08
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:

View File

@@ -9,7 +9,7 @@
# Library name:
LIBNAME=libpng12
PNGMAJ = 0
PNGMIN = 1.2.41beta07
PNGMIN = 1.2.41beta08
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:

View File

@@ -9,7 +9,7 @@
# Library name:
LIBNAME=libpng12
PNGMAJ = 0
PNGMIN = 1.2.41beta07
PNGMIN = 1.2.41beta08
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:

View File

@@ -11,7 +11,7 @@
# Library name:
PNGMAJ = 0
PNGMIN = 1.2.41beta07
PNGMIN = 1.2.41beta08
PNGVER = $(PNGMAJ).$(PNGMIN)
LIBNAME = libpng12

View File

@@ -11,7 +11,7 @@
# Library name:
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.2.41beta07
PNGMIN = 1.2.41beta08
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:

View File

@@ -11,7 +11,7 @@
# Library name:
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.2.41beta07
PNGMIN = 1.2.41beta08
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:

View File

@@ -2,7 +2,7 @@
; PNG.LIB module definition file for OS/2
;----------------------------------------
; Version 1.2.41beta07
; Version 1.2.41beta08
LIBRARY PNG
DESCRIPTION "PNG image compression library for OS/2"
@@ -222,6 +222,18 @@ EXPORTS
png_save_int_32
png_get_uint_31
png_set_expand_gray_1_2_4_to_8
; Added at version 1.2.41
png_write_sig
png_benign_error
png_benign_chunk_error
png_set_benign_error
png_get_io_chunk_name
png_get_io_state
png_set_premultiply_alpha
png_get_chunk_cache_max
png_set_chunk_cache_max
png_check_cHRM_fixed
png_calloc
; These are not present when libpng is compiled with PNG_NO_GLOBAL_ARRAYS
png_pass_start

View File

@@ -5,7 +5,7 @@
LIBRARY
EXPORTS
;Version 1.2.41beta07
;Version 1.2.41beta08
png_build_grayscale_palette @1
png_check_sig @2
png_chunk_error @3
@@ -237,3 +237,15 @@ EXPORTS
png_save_int_32 @205
png_get_uint_31 @206
png_set_expand_gray_1_2_4_to_8 @207
; Added at version 1.2.41
png_write_sig @207
png_benign_error @208
png_benign_chunk_error @209
png_set_benign_error @210
png_get_io_chunk_name @211
png_get_io_state @212
png_set_premultiply_alpha @213
png_get_chunk_cache_max @214
png_set_chunk_cache_max @215
png_check_cHRM_fixed @216
png_calloc @217