Imported from libpng-1.2.30beta04.tar
This commit is contained in:
parent
b96b342561
commit
4310a4d813
37
ANNOUNCE
37
ANNOUNCE
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
Libpng 1.2.30beta03 - July 6, 2008
|
Libpng 1.2.30beta04 - July 10, 2008
|
||||||
|
|
||||||
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.
|
||||||
@ -9,37 +9,37 @@ Files available for download:
|
|||||||
Source files with LF line endings (for Unix/Linux) and with a
|
Source files with LF line endings (for Unix/Linux) and with a
|
||||||
"configure" script
|
"configure" script
|
||||||
|
|
||||||
libpng-1.2.30beta03.tar.gz
|
libpng-1.2.30beta04.tar.gz
|
||||||
libpng-1.2.30beta03.tar.lzma
|
libpng-1.2.30beta04.tar.lzma
|
||||||
(Get the lzma codec from <http://tukaani.org/lzma>).
|
(Get the lzma codec from <http://tukaani.org/lzma>).
|
||||||
libpng-1.2.30beta03.tar.bz2
|
libpng-1.2.30beta04.tar.bz2
|
||||||
|
|
||||||
Source files with LF line endings (for Unix/Linux) without the
|
Source files with LF line endings (for Unix/Linux) without the
|
||||||
"configure" script
|
"configure" script
|
||||||
|
|
||||||
libpng-1.2.30beta03-no-config.tar.gz
|
libpng-1.2.30beta04-no-config.tar.gz
|
||||||
libpng-1.2.30beta03-no-config.tar.lzma
|
libpng-1.2.30beta04-no-config.tar.lzma
|
||||||
libpng-1.2.30beta03-no-config.tar.bz2
|
libpng-1.2.30beta04-no-config.tar.bz2
|
||||||
|
|
||||||
Source files with CRLF line endings (for Windows), without the
|
Source files with CRLF line endings (for Windows), without the
|
||||||
"configure" script
|
"configure" script
|
||||||
|
|
||||||
lp1230b03.zip
|
lp1230b04.zip
|
||||||
lp1230b03.7z
|
lp1230b04.7z
|
||||||
lp1230b03.tar.bz2
|
lp1230b04.tar.bz2
|
||||||
|
|
||||||
Project files
|
Project files
|
||||||
|
|
||||||
libpng-1.2.30beta03-project-netware.zip
|
libpng-1.2.30beta04-project-netware.zip
|
||||||
libpng-1.2.30beta03-project-wince.zip
|
libpng-1.2.30beta04-project-wince.zip
|
||||||
|
|
||||||
Other information:
|
Other information:
|
||||||
|
|
||||||
libpng-1.2.30beta03-README.txt
|
libpng-1.2.30beta04-README.txt
|
||||||
libpng-1.2.30beta03-KNOWNBUGS.txt
|
libpng-1.2.30beta04-KNOWNBUGS.txt
|
||||||
libpng-1.2.30beta03-LICENSE.txt
|
libpng-1.2.30beta04-LICENSE.txt
|
||||||
libpng-1.2.30beta03-Y2K-compliance.txt
|
libpng-1.2.30beta04-Y2K-compliance.txt
|
||||||
libpng-1.2.30beta03-[previous version]-diff.txt
|
libpng-1.2.30beta04-[previous version]-diff.txt
|
||||||
|
|
||||||
Changes since the last public release (1.2.29):
|
Changes since the last public release (1.2.29):
|
||||||
|
|
||||||
@ -82,6 +82,9 @@ version 1.2.30beta03 [July 6, 2008]
|
|||||||
Merge reading of chunk length and chunk type into a single 8-byte read.
|
Merge reading of chunk length and chunk type into a single 8-byte read.
|
||||||
Merge writing of chunk length and chunk type into a single 8-byte write.
|
Merge writing of chunk length and chunk type into a single 8-byte write.
|
||||||
|
|
||||||
|
version 1.2.30beta04 [July 10, 2008]
|
||||||
|
Merged more cosmetic whitespace changes from libpng-1.4.0beta19.
|
||||||
|
|
||||||
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
|
||||||
|
3
CHANGES
3
CHANGES
@ -2183,6 +2183,9 @@ version 1.2.30beta03 [July 6, 2008]
|
|||||||
Merge reading of chunk length and chunk type into a single 8-byte read.
|
Merge reading of chunk length and chunk type into a single 8-byte read.
|
||||||
Merge writing of chunk length and chunk type into a single 8-byte write.
|
Merge writing of chunk length and chunk type into a single 8-byte write.
|
||||||
|
|
||||||
|
version 1.2.30beta04 [July 10, 2008]
|
||||||
|
Merged more cosmetic whitespace changes from libpng-1.4.0beta19.
|
||||||
|
|
||||||
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
|
||||||
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
|
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
|
||||||
|
16
INSTALL
16
INSTALL
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
Installing libpng version 1.2.30beta03 - July 6, 2008
|
Installing libpng version 1.2.30beta04 - July 10, 2008
|
||||||
|
|
||||||
On Unix/Linux and similar systems, you can simply type
|
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.
|
correspond to the version of zlib that's installed.
|
||||||
|
|
||||||
You can rename the directories that you downloaded (they
|
You can rename the directories that you downloaded (they
|
||||||
might be called "libpng-1.2.30beta03" or "lpng109" and "zlib-1.2.1"
|
might be called "libpng-1.2.30beta04" or "lpng109" and "zlib-1.2.1"
|
||||||
or "zlib121") so that you have directories called "zlib" and "libpng".
|
or "zlib121") so that you have directories called "zlib" and "libpng".
|
||||||
|
|
||||||
Your directory structure should look like this:
|
Your directory structure should look like this:
|
||||||
@ -101,9 +101,9 @@ include
|
|||||||
CMakeLists.txt => "cmake" script
|
CMakeLists.txt => "cmake" script
|
||||||
makefile.std => Generic UNIX makefile (cc, creates static libpng.a)
|
makefile.std => Generic UNIX makefile (cc, creates static libpng.a)
|
||||||
makefile.elf => Linux/ELF makefile symbol versioning,
|
makefile.elf => Linux/ELF makefile symbol versioning,
|
||||||
gcc, creates libpng12.so.0.1.2.30beta03)
|
gcc, creates libpng12.so.0.1.2.30beta04)
|
||||||
makefile.linux => Linux/ELF makefile
|
makefile.linux => Linux/ELF makefile
|
||||||
(gcc, creates libpng12.so.0.1.2.30beta03)
|
(gcc, creates libpng12.so.0.1.2.30beta04)
|
||||||
makefile.gcc => Generic makefile (gcc, creates static libpng.a)
|
makefile.gcc => Generic makefile (gcc, creates static libpng.a)
|
||||||
makefile.knr => Archaic UNIX Makefile that converts files with
|
makefile.knr => Archaic UNIX Makefile that converts files with
|
||||||
ansi2knr (Requires ansi2knr.c from
|
ansi2knr (Requires ansi2knr.c from
|
||||||
@ -125,14 +125,14 @@ include
|
|||||||
makefile.openbsd => OpenBSD makefile
|
makefile.openbsd => OpenBSD makefile
|
||||||
makefile.sgi => Silicon Graphics IRIX makefile (cc, creates static lib)
|
makefile.sgi => Silicon Graphics IRIX makefile (cc, creates static lib)
|
||||||
makefile.sggcc => Silicon Graphics (gcc,
|
makefile.sggcc => Silicon Graphics (gcc,
|
||||||
creates libpng12.so.0.1.2.30beta03)
|
creates libpng12.so.0.1.2.30beta04)
|
||||||
makefile.sunos => Sun makefile
|
makefile.sunos => Sun makefile
|
||||||
makefile.solaris => Solaris 2.X makefile (gcc,
|
makefile.solaris => Solaris 2.X makefile (gcc,
|
||||||
creates libpng12.so.0.1.2.30beta03)
|
creates libpng12.so.0.1.2.30beta04)
|
||||||
makefile.solaris-x86 => Solaris/intelMMX 2.X makefile (gcc,
|
makefile.solaris-x86 => Solaris/intelMMX 2.X makefile (gcc,
|
||||||
creates libpng12.so.0.1.2.30beta03)
|
creates libpng12.so.0.1.2.30beta04)
|
||||||
makefile.so9 => Solaris 9 makefile (gcc,
|
makefile.so9 => Solaris 9 makefile (gcc,
|
||||||
creates libpng12.so.0.1.2.30beta03)
|
creates libpng12.so.0.1.2.30beta04)
|
||||||
makefile.32sunu => Sun Ultra 32-bit makefile
|
makefile.32sunu => Sun Ultra 32-bit makefile
|
||||||
makefile.64sunu => Sun Ultra 64-bit makefile
|
makefile.64sunu => Sun Ultra 64-bit makefile
|
||||||
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
|
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
|
||||||
|
2
KNOWNBUG
2
KNOWNBUG
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
Known bugs in libpng version 1.2.30beta03
|
Known bugs in libpng version 1.2.30beta04
|
||||||
|
|
||||||
1. February 23, 2006: The custom makefiles don't build libpng with -lz.
|
1. February 23, 2006: The custom makefiles don't build libpng with -lz.
|
||||||
|
|
||||||
|
4
LICENSE
4
LICENSE
@ -8,7 +8,7 @@ COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
|
|||||||
If you modify libpng you may insert additional notices immediately following
|
If you modify libpng you may insert additional notices immediately following
|
||||||
this sentence.
|
this sentence.
|
||||||
|
|
||||||
libpng versions 1.2.6, August 15, 2004, through 1.2.30beta03, July 6, 2008, are
|
libpng versions 1.2.6, August 15, 2004, through 1.2.30beta04, July 10, 2008, are
|
||||||
Copyright (c) 2004, 2006-2008 Glenn Randers-Pehrson, and are
|
Copyright (c) 2004, 2006-2008 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
|
||||||
@ -106,4 +106,4 @@ certification mark of the Open Source Initiative.
|
|||||||
|
|
||||||
Glenn Randers-Pehrson
|
Glenn Randers-Pehrson
|
||||||
glennrp at users.sourceforge.net
|
glennrp at users.sourceforge.net
|
||||||
July 6, 2008
|
July 10, 2008
|
||||||
|
@ -86,7 +86,7 @@ EXTRA_DIST= \
|
|||||||
${srcdir}/contrib/pngsuite/* \
|
${srcdir}/contrib/pngsuite/* \
|
||||||
${srcdir}/contrib/visupng/* \
|
${srcdir}/contrib/visupng/* \
|
||||||
$(TESTS) \
|
$(TESTS) \
|
||||||
example.c libpng-1.2.30beta03.txt pngvcrd.c
|
example.c libpng-1.2.30beta04.txt pngvcrd.c
|
||||||
|
|
||||||
CLEANFILES= pngout.png libpng12.pc libpng12-config libpng.vers \
|
CLEANFILES= pngout.png libpng12.pc libpng12-config libpng.vers \
|
||||||
libpng.sym
|
libpng.sym
|
||||||
|
@ -331,7 +331,7 @@ EXTRA_DIST = \
|
|||||||
${srcdir}/contrib/pngsuite/* \
|
${srcdir}/contrib/pngsuite/* \
|
||||||
${srcdir}/contrib/visupng/* \
|
${srcdir}/contrib/visupng/* \
|
||||||
$(TESTS) \
|
$(TESTS) \
|
||||||
example.c libpng-1.2.30beta03.txt pngvcrd.c
|
example.c libpng-1.2.30beta04.txt pngvcrd.c
|
||||||
|
|
||||||
CLEANFILES = pngout.png libpng12.pc libpng12-config libpng.vers \
|
CLEANFILES = pngout.png libpng12.pc libpng12-config libpng.vers \
|
||||||
libpng.sym
|
libpng.sym
|
||||||
|
14
README
14
README
@ -1,4 +1,4 @@
|
|||||||
README for libpng version 1.2.30beta03 - July 6, 2008 (shared library 12.0)
|
README for libpng version 1.2.30beta04 - July 10, 2008 (shared library 12.0)
|
||||||
See the note about version numbers near the top of png.h
|
See the note about version numbers near the top of png.h
|
||||||
|
|
||||||
See INSTALL for instructions on how to install libpng.
|
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
|
descrip.mms => VMS makefile for MMS or MMK
|
||||||
makefile.std => Generic UNIX makefile (cc, creates static libpng.a)
|
makefile.std => Generic UNIX makefile (cc, creates static libpng.a)
|
||||||
makefile.elf => Linux/ELF makefile symbol versioning,
|
makefile.elf => Linux/ELF makefile symbol versioning,
|
||||||
gcc, creates libpng12.so.0.1.2.30beta03)
|
gcc, creates libpng12.so.0.1.2.30beta04)
|
||||||
makefile.linux => Linux/ELF makefile
|
makefile.linux => Linux/ELF makefile
|
||||||
(gcc, creates libpng12.so.0.1.2.30beta03)
|
(gcc, creates libpng12.so.0.1.2.30beta04)
|
||||||
makefile.gcmmx => Linux/ELF makefile
|
makefile.gcmmx => Linux/ELF makefile
|
||||||
(gcc, creates libpng12.so.0.1.2.30beta03,
|
(gcc, creates libpng12.so.0.1.2.30beta04,
|
||||||
uses assembler code tuned for Intel MMX platform)
|
uses assembler code tuned for Intel MMX platform)
|
||||||
makefile.gcc => Generic makefile (gcc, creates static libpng.a)
|
makefile.gcc => Generic makefile (gcc, creates static libpng.a)
|
||||||
makefile.knr => Archaic UNIX Makefile that converts files with
|
makefile.knr => Archaic UNIX Makefile that converts files with
|
||||||
@ -220,12 +220,12 @@ Files in this distribution:
|
|||||||
makefile.openbsd => OpenBSD makefile
|
makefile.openbsd => OpenBSD makefile
|
||||||
makefile.sgi => Silicon Graphics IRIX (cc, creates static lib)
|
makefile.sgi => Silicon Graphics IRIX (cc, creates static lib)
|
||||||
makefile.sggcc => Silicon Graphics
|
makefile.sggcc => Silicon Graphics
|
||||||
(gcc, creates libpng12.so.0.1.2.30beta03)
|
(gcc, creates libpng12.so.0.1.2.30beta04)
|
||||||
makefile.sunos => Sun makefile
|
makefile.sunos => Sun makefile
|
||||||
makefile.solaris => Solaris 2.X makefile
|
makefile.solaris => Solaris 2.X makefile
|
||||||
(gcc, creates libpng12.so.0.1.2.30beta03)
|
(gcc, creates libpng12.so.0.1.2.30beta04)
|
||||||
makefile.so9 => Solaris 9 makefile
|
makefile.so9 => Solaris 9 makefile
|
||||||
(gcc, creates libpng12.so.0.1.2.30beta03)
|
(gcc, creates libpng12.so.0.1.2.30beta04)
|
||||||
makefile.32sunu => Sun Ultra 32-bit makefile
|
makefile.32sunu => Sun Ultra 32-bit makefile
|
||||||
makefile.64sunu => Sun Ultra 64-bit makefile
|
makefile.64sunu => Sun Ultra 64-bit makefile
|
||||||
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
|
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
|
||||||
|
4
Y2KINFO
4
Y2KINFO
@ -1,13 +1,13 @@
|
|||||||
Y2K compliance in libpng:
|
Y2K compliance in libpng:
|
||||||
=========================
|
=========================
|
||||||
|
|
||||||
July 6, 2008
|
July 10, 2008
|
||||||
|
|
||||||
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.
|
||||||
|
|
||||||
This is your unofficial assurance that libpng from version 0.71 and
|
This is your unofficial assurance that libpng from version 0.71 and
|
||||||
upward through 1.2.30beta03 are Y2K compliant. It is my belief that earlier
|
upward through 1.2.30beta04 are Y2K compliant. It is my belief that earlier
|
||||||
versions were also Y2K compliant.
|
versions were also Y2K compliant.
|
||||||
|
|
||||||
Libpng only has three year fields. One is a 2-byte unsigned integer
|
Libpng only has three year fields. One is a 2-byte unsigned integer
|
||||||
|
22
configure
vendored
22
configure
vendored
@ -1,6 +1,6 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.62 for libpng 1.2.30beta03.
|
# Generated by GNU Autoconf 2.62 for libpng 1.2.30beta04.
|
||||||
#
|
#
|
||||||
# Report bugs to <png-mng-implement@lists.sourceforge.net>.
|
# Report bugs to <png-mng-implement@lists.sourceforge.net>.
|
||||||
#
|
#
|
||||||
@ -745,8 +745,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
|
|||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='libpng'
|
PACKAGE_NAME='libpng'
|
||||||
PACKAGE_TARNAME='libpng'
|
PACKAGE_TARNAME='libpng'
|
||||||
PACKAGE_VERSION='1.2.30beta03'
|
PACKAGE_VERSION='1.2.30beta04'
|
||||||
PACKAGE_STRING='libpng 1.2.30beta03'
|
PACKAGE_STRING='libpng 1.2.30beta04'
|
||||||
PACKAGE_BUGREPORT='png-mng-implement@lists.sourceforge.net'
|
PACKAGE_BUGREPORT='png-mng-implement@lists.sourceforge.net'
|
||||||
|
|
||||||
ac_unique_file="pngget.c"
|
ac_unique_file="pngget.c"
|
||||||
@ -1484,7 +1484,7 @@ if test "$ac_init_help" = "long"; then
|
|||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# 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.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures libpng 1.2.30beta03 to adapt to many kinds of systems.
|
\`configure' configures libpng 1.2.30beta04 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
@ -1554,7 +1554,7 @@ fi
|
|||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of libpng 1.2.30beta03:";;
|
short | recursive ) echo "Configuration of libpng 1.2.30beta04:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
@ -1661,7 +1661,7 @@ fi
|
|||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
libpng configure 1.2.30beta03
|
libpng configure 1.2.30beta04
|
||||||
generated by GNU Autoconf 2.62
|
generated by GNU Autoconf 2.62
|
||||||
|
|
||||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
|
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
|
||||||
@ -1675,7 +1675,7 @@ cat >config.log <<_ACEOF
|
|||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by libpng $as_me 1.2.30beta03, which was
|
It was created by libpng $as_me 1.2.30beta04, which was
|
||||||
generated by GNU Autoconf 2.62. Invocation command line was
|
generated by GNU Autoconf 2.62. Invocation command line was
|
||||||
|
|
||||||
$ $0 $@
|
$ $0 $@
|
||||||
@ -2389,7 +2389,7 @@ fi
|
|||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE='libpng'
|
PACKAGE='libpng'
|
||||||
VERSION='1.2.30beta03'
|
VERSION='1.2.30beta04'
|
||||||
|
|
||||||
|
|
||||||
cat >>confdefs.h <<_ACEOF
|
cat >>confdefs.h <<_ACEOF
|
||||||
@ -2558,7 +2558,7 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
PNGLIB_VERSION=1.2.30beta03
|
PNGLIB_VERSION=1.2.30beta04
|
||||||
PNGLIB_MAJOR=1
|
PNGLIB_MAJOR=1
|
||||||
PNGLIB_MINOR=2
|
PNGLIB_MINOR=2
|
||||||
PNGLIB_RELEASE=30
|
PNGLIB_RELEASE=30
|
||||||
@ -13125,7 +13125,7 @@ exec 6>&1
|
|||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by libpng $as_me 1.2.30beta03, which was
|
This file was extended by libpng $as_me 1.2.30beta04, which was
|
||||||
generated by GNU Autoconf 2.62. Invocation command line was
|
generated by GNU Autoconf 2.62. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
@ -13178,7 +13178,7 @@ Report bugs to <bug-autoconf@gnu.org>."
|
|||||||
_ACEOF
|
_ACEOF
|
||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
libpng config.status 1.2.30beta03
|
libpng config.status 1.2.30beta04
|
||||||
configured by $0, generated by GNU Autoconf 2.62,
|
configured by $0, generated by GNU Autoconf 2.62,
|
||||||
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
|
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
|
||||||
|
|
||||||
|
@ -18,12 +18,12 @@ AC_PREREQ(2.59)
|
|||||||
|
|
||||||
dnl Version number stuff here:
|
dnl Version number stuff here:
|
||||||
|
|
||||||
AC_INIT([libpng], [1.2.30beta03], [png-mng-implement@lists.sourceforge.net])
|
AC_INIT([libpng], [1.2.30beta04], [png-mng-implement@lists.sourceforge.net])
|
||||||
AM_INIT_AUTOMAKE
|
AM_INIT_AUTOMAKE
|
||||||
dnl stop configure from automagically running automake
|
dnl stop configure from automagically running automake
|
||||||
AM_MAINTAINER_MODE
|
AM_MAINTAINER_MODE
|
||||||
|
|
||||||
PNGLIB_VERSION=1.2.30beta03
|
PNGLIB_VERSION=1.2.30beta04
|
||||||
PNGLIB_MAJOR=1
|
PNGLIB_MAJOR=1
|
||||||
PNGLIB_MINOR=2
|
PNGLIB_MINOR=2
|
||||||
PNGLIB_RELEASE=30
|
PNGLIB_RELEASE=30
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#if 0 /* in case someone actually tries to compile this */
|
#if 0 /* in case someone actually tries to compile this */
|
||||||
|
|
||||||
/* example.c - an example of using libpng
|
/* example.c - an example of using libpng
|
||||||
* Last changed in libpng 1.2.30 [July 6, 2008]
|
* Last changed in libpng 1.2.30 [July 10, 2008]
|
||||||
* This file has been placed in the public domain by the authors.
|
* This file has been placed in the public domain by the authors.
|
||||||
* Maintained 1998-2008 Glenn Randers-Pehrson
|
* Maintained 1998-2008 Glenn Randers-Pehrson
|
||||||
* Maintained 1996, 1997 Andreas Dilger)
|
* Maintained 1996, 1997 Andreas Dilger)
|
||||||
@ -505,7 +505,7 @@ row_callback(png_structp png_ptr, png_bytep new_row,
|
|||||||
* shown below:
|
* shown below:
|
||||||
*/
|
*/
|
||||||
/* Check if row_num is in bounds. */
|
/* Check if row_num is in bounds. */
|
||||||
if((row_num >= 0) && (row_num < height))
|
if ((row_num >= 0) && (row_num < height))
|
||||||
{
|
{
|
||||||
/* Get pointer to corresponding row in our
|
/* Get pointer to corresponding row in our
|
||||||
* PNG read buffer.
|
* PNG read buffer.
|
||||||
@ -515,7 +515,7 @@ row_callback(png_structp png_ptr, png_bytep new_row,
|
|||||||
/* If both rows are allocated then copy the new row
|
/* If both rows are allocated then copy the new row
|
||||||
* data to the corresponding row data.
|
* data to the corresponding row data.
|
||||||
*/
|
*/
|
||||||
if((old_row != NULL) && (new_row != NULL))
|
if ((old_row != NULL) && (new_row != NULL))
|
||||||
png_progressive_combine_row(png_ptr, old_row, new_row);
|
png_progressive_combine_row(png_ptr, old_row, new_row);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
libpng.txt - A description on how to use and modify libpng
|
libpng.txt - A description on how to use and modify libpng
|
||||||
|
|
||||||
libpng version 1.2.30beta03 - July 6, 2008
|
libpng version 1.2.30beta04 - July 10, 2008
|
||||||
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-2008 Glenn Randers-Pehrson
|
Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
||||||
@ -9,7 +9,7 @@ libpng.txt - A description on how to use and modify libpng
|
|||||||
|
|
||||||
Based on:
|
Based on:
|
||||||
|
|
||||||
libpng versions 0.97, January 1998, through 1.2.30beta03 - July 6, 2008
|
libpng versions 0.97, January 1998, through 1.2.30beta04 - July 10, 2008
|
||||||
Updated and distributed by Glenn Randers-Pehrson
|
Updated and distributed by Glenn Randers-Pehrson
|
||||||
Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
||||||
|
|
||||||
@ -2851,13 +2851,13 @@ application:
|
|||||||
|
|
||||||
IX. Y2K Compliance in libpng
|
IX. Y2K Compliance in libpng
|
||||||
|
|
||||||
July 6, 2008
|
July 10, 2008
|
||||||
|
|
||||||
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.
|
||||||
|
|
||||||
This is your unofficial assurance that libpng from version 0.71 and
|
This is your unofficial assurance that libpng from version 0.71 and
|
||||||
upward through 1.2.30beta03 are Y2K compliant. It is my belief that earlier
|
upward through 1.2.30beta04 are Y2K compliant. It is my belief that earlier
|
||||||
versions were also Y2K compliant.
|
versions were also Y2K compliant.
|
||||||
|
|
||||||
Libpng only has three year fields. One is a 2-byte unsigned integer that
|
Libpng only has three year fields. One is a 2-byte unsigned integer that
|
20
libpng.3
20
libpng.3
@ -1,6 +1,6 @@
|
|||||||
.TH LIBPNG 3 "July 6, 2008"
|
.TH LIBPNG 3 "July 10, 2008"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libpng \- Portable Network Graphics (PNG) Reference Library 1.2.30beta03
|
libpng \- Portable Network Graphics (PNG) Reference Library 1.2.30beta04
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
\fI\fB
|
\fI\fB
|
||||||
|
|
||||||
@ -821,7 +821,7 @@ Following is a copy of the libpng.txt file that accompanies libpng.
|
|||||||
.SH LIBPNG.TXT
|
.SH LIBPNG.TXT
|
||||||
libpng.txt - A description on how to use and modify libpng
|
libpng.txt - A description on how to use and modify libpng
|
||||||
|
|
||||||
libpng version 1.2.30beta03 - July 6, 2008
|
libpng version 1.2.30beta04 - July 10, 2008
|
||||||
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-2008 Glenn Randers-Pehrson
|
Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
||||||
@ -830,7 +830,7 @@ libpng.txt - A description on how to use and modify libpng
|
|||||||
|
|
||||||
Based on:
|
Based on:
|
||||||
|
|
||||||
libpng versions 0.97, January 1998, through 1.2.30beta03 - July 6, 2008
|
libpng versions 0.97, January 1998, through 1.2.30beta04 - July 10, 2008
|
||||||
Updated and distributed by Glenn Randers-Pehrson
|
Updated and distributed by Glenn Randers-Pehrson
|
||||||
Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
||||||
|
|
||||||
@ -3672,13 +3672,13 @@ application:
|
|||||||
|
|
||||||
.SH IX. Y2K Compliance in libpng
|
.SH IX. Y2K Compliance in libpng
|
||||||
|
|
||||||
July 6, 2008
|
July 10, 2008
|
||||||
|
|
||||||
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.
|
||||||
|
|
||||||
This is your unofficial assurance that libpng from version 0.71 and
|
This is your unofficial assurance that libpng from version 0.71 and
|
||||||
upward through 1.2.30beta03 are Y2K compliant. It is my belief that earlier
|
upward through 1.2.30beta04 are Y2K compliant. It is my belief that earlier
|
||||||
versions were also Y2K compliant.
|
versions were also Y2K compliant.
|
||||||
|
|
||||||
Libpng only has three year fields. One is a 2-byte unsigned integer that
|
Libpng only has three year fields. One is a 2-byte unsigned integer that
|
||||||
@ -3911,7 +3911,7 @@ the first widely used release:
|
|||||||
1.0.35 10 10035 10.so.0.35[.0]
|
1.0.35 10 10035 10.so.0.35[.0]
|
||||||
1.2.29 13 10229 12.so.0.29[.0]
|
1.2.29 13 10229 12.so.0.29[.0]
|
||||||
1.0.37 10 10037 10.so.0.37[.0]
|
1.0.37 10 10037 10.so.0.37[.0]
|
||||||
1.2.30beta01-03 13 10230 12.so.0.30[.0]
|
1.2.30beta01-04 13 10230 12.so.0.30[.0]
|
||||||
|
|
||||||
Henceforth the source version will match the shared-library minor
|
Henceforth the source version will match the shared-library minor
|
||||||
and patch numbers; the shared-library major version number will be
|
and patch numbers; the shared-library major version number will be
|
||||||
@ -3967,7 +3967,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.2.30beta03 - July 6, 2008:
|
Libpng version 1.2.30beta04 - July 10, 2008:
|
||||||
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).
|
||||||
|
|
||||||
@ -3988,7 +3988,7 @@ included in the libpng distribution, the latter shall prevail.)
|
|||||||
If you modify libpng you may insert additional notices immediately following
|
If you modify libpng you may insert additional notices immediately following
|
||||||
this sentence.
|
this sentence.
|
||||||
|
|
||||||
libpng versions 1.2.6, August 15, 2004, through 1.2.30beta03, July 6, 2008, are
|
libpng versions 1.2.6, August 15, 2004, through 1.2.30beta04, July 10, 2008, are
|
||||||
Copyright (c) 2004,2006-2008 Glenn Randers-Pehrson, and are
|
Copyright (c) 2004,2006-2008 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
|
||||||
@ -4087,7 +4087,7 @@ certification mark of the Open Source Initiative.
|
|||||||
|
|
||||||
Glenn Randers-Pehrson
|
Glenn Randers-Pehrson
|
||||||
glennrp at users.sourceforge.net
|
glennrp at users.sourceforge.net
|
||||||
July 6, 2008
|
July 10, 2008
|
||||||
|
|
||||||
.\" end of man page
|
.\" end of man page
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.TH LIBPNGPF 3 "July 6, 2008"
|
.TH LIBPNGPF 3 "July 10, 2008"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libpng \- Portable Network Graphics (PNG) Reference Library 1.2.30beta03
|
libpng \- Portable Network Graphics (PNG) Reference Library 1.2.30beta04
|
||||||
(private functions)
|
(private functions)
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
\fB#include <png.h>\fP
|
\fB#include <png.h>\fP
|
||||||
|
2
png.5
2
png.5
@ -1,4 +1,4 @@
|
|||||||
.TH PNG 5 "July 6, 2008"
|
.TH PNG 5 "July 10, 2008"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
png \- Portable Network Graphics (PNG) format
|
png \- Portable Network Graphics (PNG) format
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
50
png.c
50
png.c
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/* png.c - location for general purpose libpng functions
|
/* png.c - location for general purpose libpng functions
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.2.30 [July 6, 2008]
|
* Last changed in libpng 1.2.30 [July 10, 2008]
|
||||||
* For conditions of distribution and use, see copyright notice in png.h
|
* For conditions of distribution and use, see copyright notice in png.h
|
||||||
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
@ -13,7 +13,7 @@
|
|||||||
#include "png.h"
|
#include "png.h"
|
||||||
|
|
||||||
/* Generate a compiler error if there is an old png.h in the search path. */
|
/* Generate a compiler error if there is an old png.h in the search path. */
|
||||||
typedef version_1_2_30beta03 Your_png_h_is_not_version_1_2_30beta03;
|
typedef version_1_2_30beta04 Your_png_h_is_not_version_1_2_30beta04;
|
||||||
|
|
||||||
/* Version information for C files. This had better match the version
|
/* Version information for C files. This had better match the version
|
||||||
* string defined in png.h. */
|
* string defined in png.h. */
|
||||||
@ -92,7 +92,7 @@ PNG_CONST int FARDATA png_pass_dsp_mask[]
|
|||||||
void PNGAPI
|
void PNGAPI
|
||||||
png_set_sig_bytes(png_structp png_ptr, int num_bytes)
|
png_set_sig_bytes(png_structp png_ptr, int num_bytes)
|
||||||
{
|
{
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_debug(1, "in png_set_sig_bytes\n");
|
png_debug(1, "in png_set_sig_bytes\n");
|
||||||
if (num_bytes > 8)
|
if (num_bytes > 8)
|
||||||
png_error(png_ptr, "Too many bytes for PNG signature.");
|
png_error(png_ptr, "Too many bytes for PNG signature.");
|
||||||
@ -153,7 +153,7 @@ png_zalloc(voidpf png_ptr, uInt items, uInt size)
|
|||||||
png_uint_32 save_flags=p->flags;
|
png_uint_32 save_flags=p->flags;
|
||||||
png_uint_32 num_bytes;
|
png_uint_32 num_bytes;
|
||||||
|
|
||||||
if(png_ptr == NULL) return (NULL);
|
if (png_ptr == NULL) return (NULL);
|
||||||
if (items > PNG_UINT_32_MAX/size)
|
if (items > PNG_UINT_32_MAX/size)
|
||||||
{
|
{
|
||||||
png_warning (p, "Potential overflow in png_zalloc()");
|
png_warning (p, "Potential overflow in png_zalloc()");
|
||||||
@ -241,7 +241,7 @@ png_create_info_struct(png_structp png_ptr)
|
|||||||
png_infop info_ptr;
|
png_infop info_ptr;
|
||||||
|
|
||||||
png_debug(1, "in png_create_info_struct\n");
|
png_debug(1, "in png_create_info_struct\n");
|
||||||
if(png_ptr == NULL) return (NULL);
|
if (png_ptr == NULL) return (NULL);
|
||||||
#ifdef PNG_USER_MEM_SUPPORTED
|
#ifdef PNG_USER_MEM_SUPPORTED
|
||||||
info_ptr = (png_infop)png_create_struct_2(PNG_STRUCT_INFO,
|
info_ptr = (png_infop)png_create_struct_2(PNG_STRUCT_INFO,
|
||||||
png_ptr->malloc_fn, png_ptr->mem_ptr);
|
png_ptr->malloc_fn, png_ptr->mem_ptr);
|
||||||
@ -263,7 +263,7 @@ void PNGAPI
|
|||||||
png_destroy_info_struct(png_structp png_ptr, png_infopp info_ptr_ptr)
|
png_destroy_info_struct(png_structp png_ptr, png_infopp info_ptr_ptr)
|
||||||
{
|
{
|
||||||
png_infop info_ptr = NULL;
|
png_infop info_ptr = NULL;
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
|
|
||||||
png_debug(1, "in png_destroy_info_struct\n");
|
png_debug(1, "in png_destroy_info_struct\n");
|
||||||
if (info_ptr_ptr != NULL)
|
if (info_ptr_ptr != NULL)
|
||||||
@ -302,11 +302,11 @@ png_info_init_3(png_infopp ptr_ptr, png_size_t png_info_struct_size)
|
|||||||
{
|
{
|
||||||
png_infop info_ptr = *ptr_ptr;
|
png_infop info_ptr = *ptr_ptr;
|
||||||
|
|
||||||
if(info_ptr == NULL) return;
|
if (info_ptr == NULL) return;
|
||||||
|
|
||||||
png_debug(1, "in png_info_init_3\n");
|
png_debug(1, "in png_info_init_3\n");
|
||||||
|
|
||||||
if(png_sizeof(png_info) > png_info_struct_size)
|
if (png_sizeof(png_info) > png_info_struct_size)
|
||||||
{
|
{
|
||||||
png_destroy_struct(info_ptr);
|
png_destroy_struct(info_ptr);
|
||||||
info_ptr = (png_infop)png_create_struct(PNG_STRUCT_INFO);
|
info_ptr = (png_infop)png_create_struct(PNG_STRUCT_INFO);
|
||||||
@ -325,9 +325,9 @@ png_data_freer(png_structp png_ptr, png_infop info_ptr,
|
|||||||
png_debug(1, "in png_data_freer\n");
|
png_debug(1, "in png_data_freer\n");
|
||||||
if (png_ptr == NULL || info_ptr == NULL)
|
if (png_ptr == NULL || info_ptr == NULL)
|
||||||
return;
|
return;
|
||||||
if(freer == PNG_DESTROY_WILL_FREE_DATA)
|
if (freer == PNG_DESTROY_WILL_FREE_DATA)
|
||||||
info_ptr->free_me |= mask;
|
info_ptr->free_me |= mask;
|
||||||
else if(freer == PNG_USER_WILL_FREE_DATA)
|
else if (freer == PNG_USER_WILL_FREE_DATA)
|
||||||
info_ptr->free_me &= ~mask;
|
info_ptr->free_me &= ~mask;
|
||||||
else
|
else
|
||||||
png_warning(png_ptr,
|
png_warning(png_ptr,
|
||||||
@ -459,7 +459,7 @@ if (mask & PNG_FREE_SPLT)
|
|||||||
{
|
{
|
||||||
if (num != -1)
|
if (num != -1)
|
||||||
{
|
{
|
||||||
if(info_ptr->splt_palettes)
|
if (info_ptr->splt_palettes)
|
||||||
{
|
{
|
||||||
png_free(png_ptr, info_ptr->splt_palettes[num].name);
|
png_free(png_ptr, info_ptr->splt_palettes[num].name);
|
||||||
png_free(png_ptr, info_ptr->splt_palettes[num].entries);
|
png_free(png_ptr, info_ptr->splt_palettes[num].entries);
|
||||||
@ -469,7 +469,7 @@ if (mask & PNG_FREE_SPLT)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(info_ptr->splt_palettes_num)
|
if (info_ptr->splt_palettes_num)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < (int)info_ptr->splt_palettes_num; i++)
|
for (i = 0; i < (int)info_ptr->splt_palettes_num; i++)
|
||||||
@ -485,7 +485,7 @@ if (mask & PNG_FREE_SPLT)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
|
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
|
||||||
if(png_ptr->unknown_chunk.data)
|
if (png_ptr->unknown_chunk.data)
|
||||||
{
|
{
|
||||||
png_free(png_ptr, png_ptr->unknown_chunk.data);
|
png_free(png_ptr, png_ptr->unknown_chunk.data);
|
||||||
png_ptr->unknown_chunk.data = NULL;
|
png_ptr->unknown_chunk.data = NULL;
|
||||||
@ -498,7 +498,7 @@ if (mask & PNG_FREE_UNKN)
|
|||||||
{
|
{
|
||||||
if (num != -1)
|
if (num != -1)
|
||||||
{
|
{
|
||||||
if(info_ptr->unknown_chunks)
|
if (info_ptr->unknown_chunks)
|
||||||
{
|
{
|
||||||
png_free(png_ptr, info_ptr->unknown_chunks[num].data);
|
png_free(png_ptr, info_ptr->unknown_chunks[num].data);
|
||||||
info_ptr->unknown_chunks[num].data = NULL;
|
info_ptr->unknown_chunks[num].data = NULL;
|
||||||
@ -508,7 +508,7 @@ if (mask & PNG_FREE_UNKN)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if(info_ptr->unknown_chunks_num)
|
if (info_ptr->unknown_chunks_num)
|
||||||
{
|
{
|
||||||
for (i = 0; i < (int)info_ptr->unknown_chunks_num; i++)
|
for (i = 0; i < (int)info_ptr->unknown_chunks_num; i++)
|
||||||
png_free_data(png_ptr, info_ptr, PNG_FREE_UNKN, i);
|
png_free_data(png_ptr, info_ptr, PNG_FREE_UNKN, i);
|
||||||
@ -562,7 +562,7 @@ if ((mask & PNG_FREE_ROWS) & info_ptr->free_me)
|
|||||||
if (mask & PNG_FREE_ROWS)
|
if (mask & PNG_FREE_ROWS)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
if(info_ptr->row_pointers)
|
if (info_ptr->row_pointers)
|
||||||
{
|
{
|
||||||
int row;
|
int row;
|
||||||
for (row = 0; row < (int)info_ptr->height; row++)
|
for (row = 0; row < (int)info_ptr->height; row++)
|
||||||
@ -578,7 +578,7 @@ if (mask & PNG_FREE_ROWS)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef PNG_FREE_ME_SUPPORTED
|
#ifdef PNG_FREE_ME_SUPPORTED
|
||||||
if(num == -1)
|
if (num == -1)
|
||||||
info_ptr->free_me &= ~mask;
|
info_ptr->free_me &= ~mask;
|
||||||
else
|
else
|
||||||
info_ptr->free_me &= ~(mask & ~PNG_FREE_MUL);
|
info_ptr->free_me &= ~(mask & ~PNG_FREE_MUL);
|
||||||
@ -616,7 +616,7 @@ png_info_destroy(png_structp png_ptr, png_infop info_ptr)
|
|||||||
png_voidp PNGAPI
|
png_voidp PNGAPI
|
||||||
png_get_io_ptr(png_structp png_ptr)
|
png_get_io_ptr(png_structp png_ptr)
|
||||||
{
|
{
|
||||||
if(png_ptr == NULL) return (NULL);
|
if (png_ptr == NULL) return (NULL);
|
||||||
return (png_ptr->io_ptr);
|
return (png_ptr->io_ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -632,7 +632,7 @@ void PNGAPI
|
|||||||
png_init_io(png_structp png_ptr, png_FILE_p fp)
|
png_init_io(png_structp png_ptr, png_FILE_p fp)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_init_io\n");
|
png_debug(1, "in png_init_io\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_ptr->io_ptr = (png_voidp)fp;
|
png_ptr->io_ptr = (png_voidp)fp;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -648,7 +648,7 @@ png_convert_to_rfc1123(png_structp png_ptr, png_timep ptime)
|
|||||||
{"Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
{"Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
||||||
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
|
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
|
||||||
|
|
||||||
if(png_ptr == NULL) return (NULL);
|
if (png_ptr == NULL) return (NULL);
|
||||||
if (png_ptr->time_buffer == NULL)
|
if (png_ptr->time_buffer == NULL)
|
||||||
{
|
{
|
||||||
png_ptr->time_buffer = (png_charp)png_malloc(png_ptr, (png_uint_32)(29*
|
png_ptr->time_buffer = (png_charp)png_malloc(png_ptr, (png_uint_32)(29*
|
||||||
@ -693,7 +693,7 @@ png_charp PNGAPI
|
|||||||
png_get_copyright(png_structp png_ptr)
|
png_get_copyright(png_structp png_ptr)
|
||||||
{
|
{
|
||||||
png_ptr = png_ptr; /* silence compiler warning about unused png_ptr */
|
png_ptr = png_ptr; /* silence compiler warning about unused png_ptr */
|
||||||
return ((png_charp) "\n libpng version 1.2.30beta03 - July 6, 2008\n\
|
return ((png_charp) "\n libpng version 1.2.30beta04 - July 10, 2008\n\
|
||||||
Copyright (c) 1998-2008 Glenn Randers-Pehrson\n\
|
Copyright (c) 1998-2008 Glenn Randers-Pehrson\n\
|
||||||
Copyright (c) 1996-1997 Andreas Dilger\n\
|
Copyright (c) 1996-1997 Andreas Dilger\n\
|
||||||
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.\n");
|
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.\n");
|
||||||
@ -743,12 +743,12 @@ png_handle_as_unknown(png_structp png_ptr, png_bytep chunk_name)
|
|||||||
/* check chunk_name and return "keep" value if it's on the list, else 0 */
|
/* check chunk_name and return "keep" value if it's on the list, else 0 */
|
||||||
int i;
|
int i;
|
||||||
png_bytep p;
|
png_bytep p;
|
||||||
if(png_ptr == NULL || chunk_name == NULL || png_ptr->num_chunk_list<=0)
|
if (png_ptr == NULL || chunk_name == NULL || png_ptr->num_chunk_list<=0)
|
||||||
return 0;
|
return 0;
|
||||||
p=png_ptr->chunk_list+png_ptr->num_chunk_list*5-5;
|
p = png_ptr->chunk_list + png_ptr->num_chunk_list*5 - 5;
|
||||||
for (i = png_ptr->num_chunk_list; i; i--, p-=5)
|
for (i = png_ptr->num_chunk_list; i; i--, p -= 5)
|
||||||
if (!png_memcmp(chunk_name, p, 4))
|
if (!png_memcmp(chunk_name, p, 4))
|
||||||
return ((int)*(p+4));
|
return ((int)*(p + 4));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
20
png.h
20
png.h
@ -1,6 +1,6 @@
|
|||||||
/* png.h - header file for PNG reference library
|
/* png.h - header file for PNG reference library
|
||||||
*
|
*
|
||||||
* libpng version 1.2.30beta03 - July 6, 2008
|
* libpng version 1.2.30beta04 - July 10, 2008
|
||||||
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2008 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.)
|
||||||
@ -8,7 +8,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.2.30beta03 - July 6, 2008: Glenn
|
* libpng versions 0.97, January 1998, through 1.2.30beta04 - July 10, 2008: Glenn
|
||||||
* See also "Contributing Authors", below.
|
* See also "Contributing Authors", below.
|
||||||
*
|
*
|
||||||
* Note about libpng version numbers:
|
* Note about libpng version numbers:
|
||||||
@ -193,7 +193,7 @@
|
|||||||
* 1.0.35 10 10035 10.so.0.35[.0]
|
* 1.0.35 10 10035 10.so.0.35[.0]
|
||||||
* 1.2.29 13 10229 12.so.0.29[.0]
|
* 1.2.29 13 10229 12.so.0.29[.0]
|
||||||
* 1.0.37 10 10037 10.so.0.37[.0]
|
* 1.0.37 10 10037 10.so.0.37[.0]
|
||||||
* 1.2.30beta01-03 13 10230 12.so.0.30[.0]
|
* 1.2.30beta01-04 13 10230 12.so.0.30[.0]
|
||||||
*
|
*
|
||||||
* Henceforth the source version will match the shared-library major
|
* Henceforth the source version will match the shared-library major
|
||||||
* and minor numbers; the shared-library major version number will be
|
* and minor numbers; the shared-library major version number will be
|
||||||
@ -223,7 +223,7 @@
|
|||||||
* If you modify libpng you may insert additional notices immediately following
|
* If you modify libpng you may insert additional notices immediately following
|
||||||
* this sentence.
|
* this sentence.
|
||||||
*
|
*
|
||||||
* libpng versions 1.2.6, August 15, 2004, through 1.2.30beta03, July 6, 2008, are
|
* libpng versions 1.2.6, August 15, 2004, through 1.2.30beta04, July 10, 2008, are
|
||||||
* Copyright (c) 2004, 2006-2008 Glenn Randers-Pehrson, and are
|
* Copyright (c) 2004, 2006-2008 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:
|
||||||
@ -335,13 +335,13 @@
|
|||||||
* Y2K compliance in libpng:
|
* Y2K compliance in libpng:
|
||||||
* =========================
|
* =========================
|
||||||
*
|
*
|
||||||
* July 6, 2008
|
* July 10, 2008
|
||||||
*
|
*
|
||||||
* 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.
|
||||||
*
|
*
|
||||||
* This is your unofficial assurance that libpng from version 0.71 and
|
* This is your unofficial assurance that libpng from version 0.71 and
|
||||||
* upward through 1.2.30beta03 are Y2K compliant. It is my belief that earlier
|
* upward through 1.2.30beta04 are Y2K compliant. It is my belief that earlier
|
||||||
* versions were also Y2K compliant.
|
* versions were also Y2K compliant.
|
||||||
*
|
*
|
||||||
* Libpng only has three year fields. One is a 2-byte unsigned integer
|
* Libpng only has three year fields. One is a 2-byte unsigned integer
|
||||||
@ -397,9 +397,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* 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.2.30beta03"
|
#define PNG_LIBPNG_VER_STRING "1.2.30beta04"
|
||||||
#define PNG_HEADER_VERSION_STRING \
|
#define PNG_HEADER_VERSION_STRING \
|
||||||
" libpng version 1.2.30beta03 - July 6, 2008\n"
|
" libpng version 1.2.30beta04 - July 10, 2008\n"
|
||||||
|
|
||||||
#define PNG_LIBPNG_VER_SONUM 0
|
#define PNG_LIBPNG_VER_SONUM 0
|
||||||
#define PNG_LIBPNG_VER_DLLNUM 13
|
#define PNG_LIBPNG_VER_DLLNUM 13
|
||||||
@ -411,7 +411,7 @@
|
|||||||
/* This should match the numeric part of the final component of
|
/* This should match the numeric part of the final component of
|
||||||
* PNG_LIBPNG_VER_STRING, omitting any leading zero: */
|
* PNG_LIBPNG_VER_STRING, omitting any leading zero: */
|
||||||
|
|
||||||
#define PNG_LIBPNG_VER_BUILD 03
|
#define PNG_LIBPNG_VER_BUILD 04
|
||||||
|
|
||||||
/* Release Status */
|
/* Release Status */
|
||||||
#define PNG_LIBPNG_BUILD_ALPHA 1
|
#define PNG_LIBPNG_BUILD_ALPHA 1
|
||||||
@ -1453,7 +1453,7 @@ struct png_struct_def
|
|||||||
/* This triggers a compiler error in png.c, if png.c and png.h
|
/* This triggers a compiler error in png.c, if png.c and png.h
|
||||||
* do not agree upon the version number.
|
* do not agree upon the version number.
|
||||||
*/
|
*/
|
||||||
typedef png_structp version_1_2_30beta03;
|
typedef png_structp version_1_2_30beta04;
|
||||||
|
|
||||||
typedef png_struct FAR * FAR * png_structpp;
|
typedef png_struct FAR * FAR * png_structpp;
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/* pngconf.h - machine configurable file for libpng
|
/* pngconf.h - machine configurable file for libpng
|
||||||
*
|
*
|
||||||
* libpng version 1.2.30beta03 - July 6, 2008
|
* libpng version 1.2.30beta04 - July 10, 2008
|
||||||
* For conditions of distribution and use, see copyright notice in png.h
|
* For conditions of distribution and use, see copyright notice in png.h
|
||||||
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
|
46
pngerror.c
46
pngerror.c
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/* pngerror.c - stub functions for i/o and memory allocation
|
/* pngerror.c - stub functions for i/o and memory allocation
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.2.30 [July 6, 2008]
|
* Last changed in libpng 1.2.30 [July 10, 2008]
|
||||||
* For conditions of distribution and use, see copyright notice in png.h
|
* For conditions of distribution and use, see copyright notice in png.h
|
||||||
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
@ -45,19 +45,19 @@ png_error(png_structp png_ptr, png_const_charp error_message)
|
|||||||
if (*error_message == '#')
|
if (*error_message == '#')
|
||||||
{
|
{
|
||||||
int offset;
|
int offset;
|
||||||
for (offset=1; offset<15; offset++)
|
for (offset = 1; offset<15; offset++)
|
||||||
if (*(error_message+offset) == ' ')
|
if (*(error_message + offset) == ' ')
|
||||||
break;
|
break;
|
||||||
if (png_ptr->flags&PNG_FLAG_STRIP_ERROR_TEXT)
|
if (png_ptr->flags&PNG_FLAG_STRIP_ERROR_TEXT)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i=0; i<offset-1; i++)
|
for (i=0; i<offset - 1; i++)
|
||||||
msg[i]=error_message[i+1];
|
msg[i]=error_message[i+1];
|
||||||
msg[i]='\0';
|
msg[i]='\0';
|
||||||
error_message=msg;
|
error_message = msg;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
error_message+=offset;
|
error_message += offset;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -110,16 +110,16 @@ png_warning(png_structp png_ptr, png_const_charp warning_message)
|
|||||||
{
|
{
|
||||||
if (*warning_message == '#')
|
if (*warning_message == '#')
|
||||||
{
|
{
|
||||||
for (offset=1; offset<15; offset++)
|
for (offset = 1; offset<15; offset++)
|
||||||
if (*(warning_message+offset) == ' ')
|
if (*(warning_message + offset) == ' ')
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (png_ptr != NULL && png_ptr->warning_fn != NULL)
|
if (png_ptr != NULL && png_ptr->warning_fn != NULL)
|
||||||
(*(png_ptr->warning_fn))(png_ptr, warning_message+offset);
|
(*(png_ptr->warning_fn))(png_ptr, warning_message + offset);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
png_default_warning(png_ptr, warning_message+offset);
|
png_default_warning(png_ptr, warning_message + offset);
|
||||||
}
|
}
|
||||||
#endif /* PNG_NO_WARNINGS */
|
#endif /* PNG_NO_WARNINGS */
|
||||||
|
|
||||||
@ -167,8 +167,8 @@ png_format_buffer(png_structp png_ptr, png_charp buffer, png_const_charp
|
|||||||
{
|
{
|
||||||
buffer[iout++] = ':';
|
buffer[iout++] = ':';
|
||||||
buffer[iout++] = ' ';
|
buffer[iout++] = ' ';
|
||||||
png_memcpy(buffer+iout, error_message, PNG_MAX_ERROR_TEXT);
|
png_memcpy(buffer + iout, error_message, PNG_MAX_ERROR_TEXT);
|
||||||
buffer[iout+PNG_MAX_ERROR_TEXT-1] = '\0';
|
buffer[iout + PNG_MAX_ERROR_TEXT - 1] = '\0';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -220,15 +220,15 @@ png_default_error(png_structp png_ptr, png_const_charp error_message)
|
|||||||
char error_number[16];
|
char error_number[16];
|
||||||
for (offset=0; offset<15; offset++)
|
for (offset=0; offset<15; offset++)
|
||||||
{
|
{
|
||||||
error_number[offset] = *(error_message+offset+1);
|
error_number[offset] = *(error_message + offset + 1);
|
||||||
if (*(error_message+offset) == ' ')
|
if (*(error_message + offset) == ' ')
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if((offset > 1) && (offset < 15))
|
if ((offset > 1) && (offset < 15))
|
||||||
{
|
{
|
||||||
error_number[offset-1]='\0';
|
error_number[offset - 1]='\0';
|
||||||
fprintf(stderr, "libpng error no. %s: %s\n", error_number,
|
fprintf(stderr, "libpng error no. %s: %s\n", error_number,
|
||||||
error_message+offset);
|
error_message + offset);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
fprintf(stderr, "libpng error: %s, offset=%d\n", error_message, offset);
|
fprintf(stderr, "libpng error: %s, offset=%d\n", error_message, offset);
|
||||||
@ -276,15 +276,15 @@ png_default_warning(png_structp png_ptr, png_const_charp warning_message)
|
|||||||
char warning_number[16];
|
char warning_number[16];
|
||||||
for (offset=0; offset<15; offset++)
|
for (offset=0; offset<15; offset++)
|
||||||
{
|
{
|
||||||
warning_number[offset]=*(warning_message+offset+1);
|
warning_number[offset]=*(warning_message + offset + 1);
|
||||||
if (*(warning_message+offset) == ' ')
|
if (*(warning_message + offset) == ' ')
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if((offset > 1) && (offset < 15))
|
if ((offset > 1) && (offset < 15))
|
||||||
{
|
{
|
||||||
warning_number[offset-1]='\0';
|
warning_number[offset + 1]='\0';
|
||||||
fprintf(stderr, "libpng warning no. %s: %s\n", warning_number,
|
fprintf(stderr, "libpng warning no. %s: %s\n", warning_number,
|
||||||
warning_message+offset);
|
warning_message + offset);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
fprintf(stderr, "libpng warning: %s\n", warning_message);
|
fprintf(stderr, "libpng warning: %s\n", warning_message);
|
||||||
@ -333,7 +333,7 @@ png_get_error_ptr(png_structp png_ptr)
|
|||||||
void PNGAPI
|
void PNGAPI
|
||||||
png_set_strip_error_numbers(png_structp png_ptr, png_uint_32 strip_mode)
|
png_set_strip_error_numbers(png_structp png_ptr, png_uint_32 strip_mode)
|
||||||
{
|
{
|
||||||
if(png_ptr != NULL)
|
if (png_ptr != NULL)
|
||||||
{
|
{
|
||||||
png_ptr->flags &=
|
png_ptr->flags &=
|
||||||
((~(PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT))&strip_mode);
|
((~(PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT))&strip_mode);
|
||||||
|
22
pngget.c
22
pngget.c
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/* pngget.c - retrieval of values from info struct
|
/* pngget.c - retrieval of values from info struct
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.2.30 [July 6, 2008]
|
* Last changed in libpng 1.2.30 [July 10, 2008]
|
||||||
* For conditions of distribution and use, see copyright notice in png.h
|
* For conditions of distribution and use, see copyright notice in png.h
|
||||||
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
@ -121,7 +121,7 @@ png_get_x_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
|
|||||||
if (info_ptr->valid & PNG_INFO_pHYs)
|
if (info_ptr->valid & PNG_INFO_pHYs)
|
||||||
{
|
{
|
||||||
png_debug1(1, "in %s retrieval function\n", "png_get_x_pixels_per_meter");
|
png_debug1(1, "in %s retrieval function\n", "png_get_x_pixels_per_meter");
|
||||||
if(info_ptr->phys_unit_type != PNG_RESOLUTION_METER)
|
if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER)
|
||||||
return (0);
|
return (0);
|
||||||
else return (info_ptr->x_pixels_per_unit);
|
else return (info_ptr->x_pixels_per_unit);
|
||||||
}
|
}
|
||||||
@ -139,7 +139,7 @@ png_get_y_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
|
|||||||
if (info_ptr->valid & PNG_INFO_pHYs)
|
if (info_ptr->valid & PNG_INFO_pHYs)
|
||||||
{
|
{
|
||||||
png_debug1(1, "in %s retrieval function\n", "png_get_y_pixels_per_meter");
|
png_debug1(1, "in %s retrieval function\n", "png_get_y_pixels_per_meter");
|
||||||
if(info_ptr->phys_unit_type != PNG_RESOLUTION_METER)
|
if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER)
|
||||||
return (0);
|
return (0);
|
||||||
else return (info_ptr->y_pixels_per_unit);
|
else return (info_ptr->y_pixels_per_unit);
|
||||||
}
|
}
|
||||||
@ -157,7 +157,7 @@ png_get_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
|
|||||||
if (info_ptr->valid & PNG_INFO_pHYs)
|
if (info_ptr->valid & PNG_INFO_pHYs)
|
||||||
{
|
{
|
||||||
png_debug1(1, "in %s retrieval function\n", "png_get_pixels_per_meter");
|
png_debug1(1, "in %s retrieval function\n", "png_get_pixels_per_meter");
|
||||||
if(info_ptr->phys_unit_type != PNG_RESOLUTION_METER ||
|
if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER ||
|
||||||
info_ptr->x_pixels_per_unit != info_ptr->y_pixels_per_unit)
|
info_ptr->x_pixels_per_unit != info_ptr->y_pixels_per_unit)
|
||||||
return (0);
|
return (0);
|
||||||
else return (info_ptr->x_pixels_per_unit);
|
else return (info_ptr->x_pixels_per_unit);
|
||||||
@ -198,7 +198,7 @@ png_get_x_offset_microns(png_structp png_ptr, png_infop info_ptr)
|
|||||||
if (info_ptr->valid & PNG_INFO_oFFs)
|
if (info_ptr->valid & PNG_INFO_oFFs)
|
||||||
{
|
{
|
||||||
png_debug1(1, "in %s retrieval function\n", "png_get_x_offset_microns");
|
png_debug1(1, "in %s retrieval function\n", "png_get_x_offset_microns");
|
||||||
if(info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER)
|
if (info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER)
|
||||||
return (0);
|
return (0);
|
||||||
else return (info_ptr->x_offset);
|
else return (info_ptr->x_offset);
|
||||||
}
|
}
|
||||||
@ -216,7 +216,7 @@ png_get_y_offset_microns(png_structp png_ptr, png_infop info_ptr)
|
|||||||
if (info_ptr->valid & PNG_INFO_oFFs)
|
if (info_ptr->valid & PNG_INFO_oFFs)
|
||||||
{
|
{
|
||||||
png_debug1(1, "in %s retrieval function\n", "png_get_y_offset_microns");
|
png_debug1(1, "in %s retrieval function\n", "png_get_y_offset_microns");
|
||||||
if(info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER)
|
if (info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER)
|
||||||
return (0);
|
return (0);
|
||||||
else return (info_ptr->y_offset);
|
else return (info_ptr->y_offset);
|
||||||
}
|
}
|
||||||
@ -234,7 +234,7 @@ png_get_x_offset_pixels(png_structp png_ptr, png_infop info_ptr)
|
|||||||
if (info_ptr->valid & PNG_INFO_oFFs)
|
if (info_ptr->valid & PNG_INFO_oFFs)
|
||||||
{
|
{
|
||||||
png_debug1(1, "in %s retrieval function\n", "png_get_x_offset_microns");
|
png_debug1(1, "in %s retrieval function\n", "png_get_x_offset_microns");
|
||||||
if(info_ptr->offset_unit_type != PNG_OFFSET_PIXEL)
|
if (info_ptr->offset_unit_type != PNG_OFFSET_PIXEL)
|
||||||
return (0);
|
return (0);
|
||||||
else return (info_ptr->x_offset);
|
else return (info_ptr->x_offset);
|
||||||
}
|
}
|
||||||
@ -252,7 +252,7 @@ png_get_y_offset_pixels(png_structp png_ptr, png_infop info_ptr)
|
|||||||
if (info_ptr->valid & PNG_INFO_oFFs)
|
if (info_ptr->valid & PNG_INFO_oFFs)
|
||||||
{
|
{
|
||||||
png_debug1(1, "in %s retrieval function\n", "png_get_y_offset_microns");
|
png_debug1(1, "in %s retrieval function\n", "png_get_y_offset_microns");
|
||||||
if(info_ptr->offset_unit_type != PNG_OFFSET_PIXEL)
|
if (info_ptr->offset_unit_type != PNG_OFFSET_PIXEL)
|
||||||
return (0);
|
return (0);
|
||||||
else return (info_ptr->y_offset);
|
else return (info_ptr->y_offset);
|
||||||
}
|
}
|
||||||
@ -322,7 +322,7 @@ png_get_pHYs_dpi(png_structp png_ptr, png_infop info_ptr,
|
|||||||
{
|
{
|
||||||
*unit_type = (int)info_ptr->phys_unit_type;
|
*unit_type = (int)info_ptr->phys_unit_type;
|
||||||
retval |= PNG_INFO_pHYs;
|
retval |= PNG_INFO_pHYs;
|
||||||
if(*unit_type == 1)
|
if (*unit_type == 1)
|
||||||
{
|
{
|
||||||
if (res_x != NULL) *res_x = (png_uint_32)(*res_x * .0254 + .50);
|
if (res_x != NULL) *res_x = (png_uint_32)(*res_x * .0254 + .50);
|
||||||
if (res_y != NULL) *res_y = (png_uint_32)(*res_y * .0254 + .50);
|
if (res_y != NULL) *res_y = (png_uint_32)(*res_y * .0254 + .50);
|
||||||
@ -783,10 +783,10 @@ png_get_tRNS(png_structp png_ptr, png_infop info_ptr,
|
|||||||
*trans_values = &(info_ptr->trans_values);
|
*trans_values = &(info_ptr->trans_values);
|
||||||
retval |= PNG_INFO_tRNS;
|
retval |= PNG_INFO_tRNS;
|
||||||
}
|
}
|
||||||
if(trans != NULL)
|
if (trans != NULL)
|
||||||
*trans = NULL;
|
*trans = NULL;
|
||||||
}
|
}
|
||||||
if(num_trans != NULL)
|
if (num_trans != NULL)
|
||||||
{
|
{
|
||||||
*num_trans = info_ptr->num_trans;
|
*num_trans = info_ptr->num_trans;
|
||||||
retval |= PNG_INFO_tRNS;
|
retval |= PNG_INFO_tRNS;
|
||||||
|
24
pngmem.c
24
pngmem.c
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/* pngmem.c - stub functions for memory allocation
|
/* pngmem.c - stub functions for memory allocation
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.2.30 [July 6, 2008]
|
* Last changed in libpng 1.2.30 [July 10, 2008]
|
||||||
* For conditions of distribution and use, see copyright notice in png.h
|
* For conditions of distribution and use, see copyright notice in png.h
|
||||||
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
@ -47,7 +47,7 @@ png_create_struct_2(int type, png_malloc_ptr malloc_fn, png_voidp mem_ptr)
|
|||||||
return (png_get_copyright(NULL));
|
return (png_get_copyright(NULL));
|
||||||
|
|
||||||
#ifdef PNG_USER_MEM_SUPPORTED
|
#ifdef PNG_USER_MEM_SUPPORTED
|
||||||
if(malloc_fn != NULL)
|
if (malloc_fn != NULL)
|
||||||
{
|
{
|
||||||
png_struct dummy_struct;
|
png_struct dummy_struct;
|
||||||
png_structp png_ptr = &dummy_struct;
|
png_structp png_ptr = &dummy_struct;
|
||||||
@ -79,7 +79,7 @@ png_destroy_struct_2(png_voidp struct_ptr, png_free_ptr free_fn,
|
|||||||
if (struct_ptr != NULL)
|
if (struct_ptr != NULL)
|
||||||
{
|
{
|
||||||
#ifdef PNG_USER_MEM_SUPPORTED
|
#ifdef PNG_USER_MEM_SUPPORTED
|
||||||
if(free_fn != NULL)
|
if (free_fn != NULL)
|
||||||
{
|
{
|
||||||
png_struct dummy_struct;
|
png_struct dummy_struct;
|
||||||
png_structp png_ptr = &dummy_struct;
|
png_structp png_ptr = &dummy_struct;
|
||||||
@ -121,7 +121,7 @@ png_malloc(png_structp png_ptr, png_uint_32 size)
|
|||||||
return (NULL);
|
return (NULL);
|
||||||
|
|
||||||
#ifdef PNG_USER_MEM_SUPPORTED
|
#ifdef PNG_USER_MEM_SUPPORTED
|
||||||
if(png_ptr->malloc_fn != NULL)
|
if (png_ptr->malloc_fn != NULL)
|
||||||
ret = ((png_voidp)(*(png_ptr->malloc_fn))(png_ptr, (png_size_t)size));
|
ret = ((png_voidp)(*(png_ptr->malloc_fn))(png_ptr, (png_size_t)size));
|
||||||
else
|
else
|
||||||
ret = (png_malloc_default(png_ptr, size));
|
ret = (png_malloc_default(png_ptr, size));
|
||||||
@ -170,7 +170,7 @@ png_malloc_default(png_structp png_ptr, png_uint_32 size)
|
|||||||
ret = NULL;
|
ret = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(png_ptr->zlib_window_bits > 14)
|
if (png_ptr->zlib_window_bits > 14)
|
||||||
num_blocks = (int)(1 << (png_ptr->zlib_window_bits - 14));
|
num_blocks = (int)(1 << (png_ptr->zlib_window_bits - 14));
|
||||||
else
|
else
|
||||||
num_blocks = 1;
|
num_blocks = 1;
|
||||||
@ -292,7 +292,7 @@ png_free_default(png_structp png_ptr, png_voidp ptr)
|
|||||||
{
|
{
|
||||||
#endif /* PNG_USER_MEM_SUPPORTED */
|
#endif /* PNG_USER_MEM_SUPPORTED */
|
||||||
|
|
||||||
if(png_ptr == NULL || ptr == NULL) return;
|
if (png_ptr == NULL || ptr == NULL) return;
|
||||||
|
|
||||||
if (png_ptr->offset_table != NULL)
|
if (png_ptr->offset_table != NULL)
|
||||||
{
|
{
|
||||||
@ -352,7 +352,7 @@ png_create_struct_2(int type, png_malloc_ptr malloc_fn, png_voidp mem_ptr)
|
|||||||
return (NULL);
|
return (NULL);
|
||||||
|
|
||||||
#ifdef PNG_USER_MEM_SUPPORTED
|
#ifdef PNG_USER_MEM_SUPPORTED
|
||||||
if(malloc_fn != NULL)
|
if (malloc_fn != NULL)
|
||||||
{
|
{
|
||||||
png_struct dummy_struct;
|
png_struct dummy_struct;
|
||||||
png_structp png_ptr = &dummy_struct;
|
png_structp png_ptr = &dummy_struct;
|
||||||
@ -397,7 +397,7 @@ png_destroy_struct_2(png_voidp struct_ptr, png_free_ptr free_fn,
|
|||||||
if (struct_ptr != NULL)
|
if (struct_ptr != NULL)
|
||||||
{
|
{
|
||||||
#ifdef PNG_USER_MEM_SUPPORTED
|
#ifdef PNG_USER_MEM_SUPPORTED
|
||||||
if(free_fn != NULL)
|
if (free_fn != NULL)
|
||||||
{
|
{
|
||||||
png_struct dummy_struct;
|
png_struct dummy_struct;
|
||||||
png_structp png_ptr = &dummy_struct;
|
png_structp png_ptr = &dummy_struct;
|
||||||
@ -433,7 +433,7 @@ png_malloc(png_structp png_ptr, png_uint_32 size)
|
|||||||
if (png_ptr == NULL || size == 0)
|
if (png_ptr == NULL || size == 0)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
|
|
||||||
if(png_ptr->malloc_fn != NULL)
|
if (png_ptr->malloc_fn != NULL)
|
||||||
ret = ((png_voidp)(*(png_ptr->malloc_fn))(png_ptr, (png_size_t)size));
|
ret = ((png_voidp)(*(png_ptr->malloc_fn))(png_ptr, (png_size_t)size));
|
||||||
else
|
else
|
||||||
ret = (png_malloc_default(png_ptr, size));
|
ret = (png_malloc_default(png_ptr, size));
|
||||||
@ -541,7 +541,7 @@ png_malloc_warn(png_structp png_ptr, png_uint_32 size)
|
|||||||
{
|
{
|
||||||
png_voidp ptr;
|
png_voidp ptr;
|
||||||
png_uint_32 save_flags;
|
png_uint_32 save_flags;
|
||||||
if(png_ptr == NULL) return (NULL);
|
if (png_ptr == NULL) return (NULL);
|
||||||
|
|
||||||
save_flags=png_ptr->flags;
|
save_flags=png_ptr->flags;
|
||||||
png_ptr->flags|=PNG_FLAG_MALLOC_NULL_MEM_OK;
|
png_ptr->flags|=PNG_FLAG_MALLOC_NULL_MEM_OK;
|
||||||
@ -586,7 +586,7 @@ void PNGAPI
|
|||||||
png_set_mem_fn(png_structp png_ptr, png_voidp mem_ptr, png_malloc_ptr
|
png_set_mem_fn(png_structp png_ptr, png_voidp mem_ptr, png_malloc_ptr
|
||||||
malloc_fn, png_free_ptr free_fn)
|
malloc_fn, png_free_ptr free_fn)
|
||||||
{
|
{
|
||||||
if(png_ptr != NULL) {
|
if (png_ptr != NULL) {
|
||||||
png_ptr->mem_ptr = mem_ptr;
|
png_ptr->mem_ptr = mem_ptr;
|
||||||
png_ptr->malloc_fn = malloc_fn;
|
png_ptr->malloc_fn = malloc_fn;
|
||||||
png_ptr->free_fn = free_fn;
|
png_ptr->free_fn = free_fn;
|
||||||
@ -600,7 +600,7 @@ png_set_mem_fn(png_structp png_ptr, png_voidp mem_ptr, png_malloc_ptr
|
|||||||
png_voidp PNGAPI
|
png_voidp PNGAPI
|
||||||
png_get_mem_ptr(png_structp png_ptr)
|
png_get_mem_ptr(png_structp png_ptr)
|
||||||
{
|
{
|
||||||
if(png_ptr == NULL) return (NULL);
|
if (png_ptr == NULL) return (NULL);
|
||||||
return ((png_voidp)png_ptr->mem_ptr);
|
return ((png_voidp)png_ptr->mem_ptr);
|
||||||
}
|
}
|
||||||
#endif /* PNG_USER_MEM_SUPPORTED */
|
#endif /* PNG_USER_MEM_SUPPORTED */
|
||||||
|
45
pngpread.c
45
pngpread.c
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/* pngpread.c - read a png file in push mode
|
/* pngpread.c - read a png file in push mode
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.2.30 [July 6, 2008]
|
* Last changed in libpng 1.2.30 [July 10, 2008]
|
||||||
* For conditions of distribution and use, see copyright notice in png.h
|
* For conditions of distribution and use, see copyright notice in png.h
|
||||||
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
@ -27,7 +27,7 @@ void PNGAPI
|
|||||||
png_process_data(png_structp png_ptr, png_infop info_ptr,
|
png_process_data(png_structp png_ptr, png_infop info_ptr,
|
||||||
png_bytep buffer, png_size_t buffer_size)
|
png_bytep buffer, png_size_t buffer_size)
|
||||||
{
|
{
|
||||||
if(png_ptr == NULL || info_ptr == NULL) return;
|
if (png_ptr == NULL || info_ptr == NULL) return;
|
||||||
png_push_restore_buffer(png_ptr, buffer, buffer_size);
|
png_push_restore_buffer(png_ptr, buffer, buffer_size);
|
||||||
|
|
||||||
while (png_ptr->buffer_size)
|
while (png_ptr->buffer_size)
|
||||||
@ -42,7 +42,7 @@ png_process_data(png_structp png_ptr, png_infop info_ptr,
|
|||||||
void /* PRIVATE */
|
void /* PRIVATE */
|
||||||
png_process_some_data(png_structp png_ptr, png_infop info_ptr)
|
png_process_some_data(png_structp png_ptr, png_infop info_ptr)
|
||||||
{
|
{
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
switch (png_ptr->process_mode)
|
switch (png_ptr->process_mode)
|
||||||
{
|
{
|
||||||
case PNG_READ_SIG_MODE:
|
case PNG_READ_SIG_MODE:
|
||||||
@ -113,7 +113,7 @@ png_push_read_sig(png_structp png_ptr, png_infop info_ptr)
|
|||||||
|
|
||||||
png_push_fill_buffer(png_ptr, &(info_ptr->signature[num_checked]),
|
png_push_fill_buffer(png_ptr, &(info_ptr->signature[num_checked]),
|
||||||
num_to_check);
|
num_to_check);
|
||||||
png_ptr->sig_bytes = (png_byte)(png_ptr->sig_bytes+num_to_check);
|
png_ptr->sig_bytes = (png_byte)(png_ptr->sig_bytes + num_to_check);
|
||||||
|
|
||||||
if (png_sig_cmp(info_ptr->signature, num_checked, num_to_check))
|
if (png_sig_cmp(info_ptr->signature, num_checked, num_to_check))
|
||||||
{
|
{
|
||||||
@ -216,7 +216,7 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
|
if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
|
||||||
if(png_ptr->mode & PNG_AFTER_IDAT)
|
if (png_ptr->mode & PNG_AFTER_IDAT)
|
||||||
png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT;
|
png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT;
|
||||||
|
|
||||||
if (!png_memcmp(png_ptr->chunk_name, png_IHDR, 4))
|
if (!png_memcmp(png_ptr->chunk_name, png_IHDR, 4))
|
||||||
@ -564,7 +564,7 @@ png_push_fill_buffer(png_structp png_ptr, png_bytep buffer, png_size_t length)
|
|||||||
{
|
{
|
||||||
png_bytep ptr;
|
png_bytep ptr;
|
||||||
|
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
ptr = buffer;
|
ptr = buffer;
|
||||||
if (png_ptr->save_buffer_size)
|
if (png_ptr->save_buffer_size)
|
||||||
{
|
{
|
||||||
@ -697,7 +697,7 @@ png_push_read_IDAT(png_structp png_ptr)
|
|||||||
{
|
{
|
||||||
save_size = (png_size_t)png_ptr->idat_size;
|
save_size = (png_size_t)png_ptr->idat_size;
|
||||||
/* check for overflow */
|
/* check for overflow */
|
||||||
if((png_uint_32)save_size != png_ptr->idat_size)
|
if ((png_uint_32)save_size != png_ptr->idat_size)
|
||||||
png_error(png_ptr, "save_size overflowed in pngpread");
|
png_error(png_ptr, "save_size overflowed in pngpread");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -719,7 +719,7 @@ png_push_read_IDAT(png_structp png_ptr)
|
|||||||
{
|
{
|
||||||
save_size = (png_size_t)png_ptr->idat_size;
|
save_size = (png_size_t)png_ptr->idat_size;
|
||||||
/* check for overflow */
|
/* check for overflow */
|
||||||
if((png_uint_32)save_size != png_ptr->idat_size)
|
if ((png_uint_32)save_size != png_ptr->idat_size)
|
||||||
png_error(png_ptr, "save_size overflowed in pngpread");
|
png_error(png_ptr, "save_size overflowed in pngpread");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -759,7 +759,7 @@ png_process_IDAT_data(png_structp png_ptr, png_bytep buffer,
|
|||||||
|
|
||||||
png_ptr->zstream.next_in = buffer;
|
png_ptr->zstream.next_in = buffer;
|
||||||
png_ptr->zstream.avail_in = (uInt)buffer_length;
|
png_ptr->zstream.avail_in = (uInt)buffer_length;
|
||||||
for(;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH);
|
ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH);
|
||||||
if (ret != Z_OK)
|
if (ret != Z_OK)
|
||||||
@ -1058,8 +1058,7 @@ png_push_handle_tEXt(png_structp png_ptr, png_infop info_ptr, png_uint_32
|
|||||||
if (!(png_ptr->mode & PNG_HAVE_IHDR) || (png_ptr->mode & PNG_HAVE_IEND))
|
if (!(png_ptr->mode & PNG_HAVE_IHDR) || (png_ptr->mode & PNG_HAVE_IEND))
|
||||||
{
|
{
|
||||||
png_error(png_ptr, "Out of place tEXt");
|
png_error(png_ptr, "Out of place tEXt");
|
||||||
/* to quiet some compiler warnings */
|
info_ptr = info_ptr; /* to quiet some compiler warnings */
|
||||||
if(info_ptr == NULL) return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef PNG_MAX_MALLOC_64K
|
#ifdef PNG_MAX_MALLOC_64K
|
||||||
@ -1172,7 +1171,7 @@ png_push_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
png_ptr->current_text = (png_charp)png_malloc(png_ptr,
|
png_ptr->current_text = (png_charp)png_malloc(png_ptr,
|
||||||
(png_uint_32)(length+1));
|
(png_uint_32)(length + 1));
|
||||||
png_ptr->current_text[length] = '\0';
|
png_ptr->current_text[length] = '\0';
|
||||||
png_ptr->current_text_ptr = png_ptr->current_text;
|
png_ptr->current_text_ptr = png_ptr->current_text;
|
||||||
png_ptr->current_text_size = (png_size_t)length;
|
png_ptr->current_text_size = (png_size_t)length;
|
||||||
@ -1263,8 +1262,8 @@ png_push_read_zTXt(png_structp png_ptr, png_infop info_ptr)
|
|||||||
if (text == NULL)
|
if (text == NULL)
|
||||||
{
|
{
|
||||||
text = (png_charp)png_malloc(png_ptr,
|
text = (png_charp)png_malloc(png_ptr,
|
||||||
(png_uint_32)(png_ptr->zbuf_size - png_ptr->zstream.avail_out
|
(png_uint_32)(png_ptr->zbuf_size
|
||||||
+ key_size + 1));
|
- png_ptr->zstream.avail_out + key_size + 1));
|
||||||
png_memcpy(text + key_size, png_ptr->zbuf,
|
png_memcpy(text + key_size, png_ptr->zbuf,
|
||||||
png_ptr->zbuf_size - png_ptr->zstream.avail_out);
|
png_ptr->zbuf_size - png_ptr->zstream.avail_out);
|
||||||
png_memcpy(text, key, key_size);
|
png_memcpy(text, key, key_size);
|
||||||
@ -1278,8 +1277,8 @@ png_push_read_zTXt(png_structp png_ptr, png_infop info_ptr)
|
|||||||
|
|
||||||
tmp = text;
|
tmp = text;
|
||||||
text = (png_charp)png_malloc(png_ptr, text_size +
|
text = (png_charp)png_malloc(png_ptr, text_size +
|
||||||
(png_uint_32)(png_ptr->zbuf_size - png_ptr->zstream.avail_out
|
(png_uint_32)(png_ptr->zbuf_size
|
||||||
+ 1));
|
- png_ptr->zstream.avail_out));
|
||||||
png_memcpy(text, tmp, text_size);
|
png_memcpy(text, tmp, text_size);
|
||||||
png_free(png_ptr, tmp);
|
png_free(png_ptr, tmp);
|
||||||
png_memcpy(text + text_size, png_ptr->zbuf,
|
png_memcpy(text + text_size, png_ptr->zbuf,
|
||||||
@ -1362,7 +1361,7 @@ png_push_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
png_ptr->current_text = (png_charp)png_malloc(png_ptr,
|
png_ptr->current_text = (png_charp)png_malloc(png_ptr,
|
||||||
(png_uint_32)(length+1));
|
(png_uint_32)(length + 1));
|
||||||
png_ptr->current_text[length] = '\0';
|
png_ptr->current_text[length] = '\0';
|
||||||
png_ptr->current_text_ptr = png_ptr->current_text;
|
png_ptr->current_text_ptr = png_ptr->current_text;
|
||||||
png_ptr->current_text_size = (png_size_t)length;
|
png_ptr->current_text_size = (png_size_t)length;
|
||||||
@ -1469,7 +1468,7 @@ png_push_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32
|
|||||||
if (!(png_ptr->chunk_name[0] & 0x20))
|
if (!(png_ptr->chunk_name[0] & 0x20))
|
||||||
{
|
{
|
||||||
#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
|
#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
|
||||||
if(png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=
|
if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=
|
||||||
PNG_HANDLE_CHUNK_ALWAYS
|
PNG_HANDLE_CHUNK_ALWAYS
|
||||||
#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
|
#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
|
||||||
&& png_ptr->read_user_chunk_fn == NULL
|
&& png_ptr->read_user_chunk_fn == NULL
|
||||||
@ -1507,7 +1506,7 @@ png_push_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32
|
|||||||
png_crc_read(png_ptr, (png_bytep)png_ptr->unknown_chunk.data, length);
|
png_crc_read(png_ptr, (png_bytep)png_ptr->unknown_chunk.data, length);
|
||||||
}
|
}
|
||||||
#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
|
#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
|
||||||
if(png_ptr->read_user_chunk_fn != NULL)
|
if (png_ptr->read_user_chunk_fn != NULL)
|
||||||
{
|
{
|
||||||
/* callback to user unknown chunk handler */
|
/* callback to user unknown chunk handler */
|
||||||
int ret;
|
int ret;
|
||||||
@ -1518,7 +1517,7 @@ png_push_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32
|
|||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
{
|
{
|
||||||
if (!(png_ptr->chunk_name[0] & 0x20))
|
if (!(png_ptr->chunk_name[0] & 0x20))
|
||||||
if(png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=
|
if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=
|
||||||
PNG_HANDLE_CHUNK_ALWAYS)
|
PNG_HANDLE_CHUNK_ALWAYS)
|
||||||
png_chunk_error(png_ptr, "unknown critical chunk");
|
png_chunk_error(png_ptr, "unknown critical chunk");
|
||||||
png_set_unknown_chunks(png_ptr, info_ptr,
|
png_set_unknown_chunks(png_ptr, info_ptr,
|
||||||
@ -1567,7 +1566,7 @@ png_progressive_combine_row (png_structp png_ptr,
|
|||||||
PNG_CONST int FARDATA png_pass_dsp_mask[7] =
|
PNG_CONST int FARDATA png_pass_dsp_mask[7] =
|
||||||
{0xff, 0x0f, 0xff, 0x33, 0xff, 0x55, 0xff};
|
{0xff, 0x0f, 0xff, 0x33, 0xff, 0x55, 0xff};
|
||||||
#endif
|
#endif
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
if (new_row != NULL) /* new_row must == png_ptr->row_buf here. */
|
if (new_row != NULL) /* new_row must == png_ptr->row_buf here. */
|
||||||
png_combine_row(png_ptr, old_row, png_pass_dsp_mask[png_ptr->pass]);
|
png_combine_row(png_ptr, old_row, png_pass_dsp_mask[png_ptr->pass]);
|
||||||
}
|
}
|
||||||
@ -1577,7 +1576,7 @@ png_set_progressive_read_fn(png_structp png_ptr, png_voidp progressive_ptr,
|
|||||||
png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn,
|
png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn,
|
||||||
png_progressive_end_ptr end_fn)
|
png_progressive_end_ptr end_fn)
|
||||||
{
|
{
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_ptr->info_fn = info_fn;
|
png_ptr->info_fn = info_fn;
|
||||||
png_ptr->row_fn = row_fn;
|
png_ptr->row_fn = row_fn;
|
||||||
png_ptr->end_fn = end_fn;
|
png_ptr->end_fn = end_fn;
|
||||||
@ -1588,7 +1587,7 @@ png_set_progressive_read_fn(png_structp png_ptr, png_voidp progressive_ptr,
|
|||||||
png_voidp PNGAPI
|
png_voidp PNGAPI
|
||||||
png_get_progressive_ptr(png_structp png_ptr)
|
png_get_progressive_ptr(png_structp png_ptr)
|
||||||
{
|
{
|
||||||
if(png_ptr == NULL) return (NULL);
|
if (png_ptr == NULL) return (NULL);
|
||||||
return png_ptr->io_ptr;
|
return png_ptr->io_ptr;
|
||||||
}
|
}
|
||||||
#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
|
#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
|
||||||
|
71
pngread.c
71
pngread.c
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/* pngread.c - read a PNG file
|
/* pngread.c - read a PNG file
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.2.30 [July 6, 2008]
|
* Last changed in libpng 1.2.30 [July 10, 2008]
|
||||||
* For conditions of distribution and use, see copyright notice in png.h
|
* For conditions of distribution and use, see copyright notice in png.h
|
||||||
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
@ -88,12 +88,12 @@ png_create_read_struct_2(png_const_charp user_png_ver, png_voidp error_ptr,
|
|||||||
|
|
||||||
png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn);
|
png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn);
|
||||||
|
|
||||||
if(user_png_ver)
|
if (user_png_ver)
|
||||||
{
|
{
|
||||||
i=0;
|
i=0;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if(user_png_ver[i] != png_libpng_ver[i])
|
if (user_png_ver[i] != png_libpng_ver[i])
|
||||||
png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
|
png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
|
||||||
} while (png_libpng_ver[i++]);
|
} while (png_libpng_ver[i++]);
|
||||||
}
|
}
|
||||||
@ -189,9 +189,9 @@ png_read_init_2(png_structp png_ptr, png_const_charp user_png_ver,
|
|||||||
png_size_t png_struct_size, png_size_t png_info_size)
|
png_size_t png_struct_size, png_size_t png_info_size)
|
||||||
{
|
{
|
||||||
/* We only come here via pre-1.0.12-compiled applications */
|
/* We only come here via pre-1.0.12-compiled applications */
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
|
#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
|
||||||
if(png_sizeof(png_struct) > png_struct_size ||
|
if (png_sizeof(png_struct) > png_struct_size ||
|
||||||
png_sizeof(png_info) > png_info_size)
|
png_sizeof(png_info) > png_info_size)
|
||||||
{
|
{
|
||||||
char msg[80];
|
char msg[80];
|
||||||
@ -209,7 +209,7 @@ png_read_init_2(png_structp png_ptr, png_const_charp user_png_ver,
|
|||||||
png_warning(png_ptr, msg);
|
png_warning(png_ptr, msg);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if(png_sizeof(png_struct) > png_struct_size)
|
if (png_sizeof(png_struct) > png_struct_size)
|
||||||
{
|
{
|
||||||
png_ptr->error_fn=NULL;
|
png_ptr->error_fn=NULL;
|
||||||
#ifdef PNG_ERROR_NUMBERS_SUPPORTED
|
#ifdef PNG_ERROR_NUMBERS_SUPPORTED
|
||||||
@ -218,7 +218,7 @@ png_read_init_2(png_structp png_ptr, png_const_charp user_png_ver,
|
|||||||
png_error(png_ptr,
|
png_error(png_ptr,
|
||||||
"The png struct allocated by the application for reading is too small.");
|
"The png struct allocated by the application for reading is too small.");
|
||||||
}
|
}
|
||||||
if(png_sizeof(png_info) > png_info_size)
|
if (png_sizeof(png_info) > png_info_size)
|
||||||
{
|
{
|
||||||
png_ptr->error_fn=NULL;
|
png_ptr->error_fn=NULL;
|
||||||
#ifdef PNG_ERROR_NUMBERS_SUPPORTED
|
#ifdef PNG_ERROR_NUMBERS_SUPPORTED
|
||||||
@ -243,11 +243,11 @@ png_read_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
|
|||||||
|
|
||||||
png_structp png_ptr=*ptr_ptr;
|
png_structp png_ptr=*ptr_ptr;
|
||||||
|
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if(user_png_ver[i] != png_libpng_ver[i])
|
if (user_png_ver[i] != png_libpng_ver[i])
|
||||||
{
|
{
|
||||||
#ifdef PNG_LEGACY_SUPPORTED
|
#ifdef PNG_LEGACY_SUPPORTED
|
||||||
png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
|
png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
|
||||||
@ -267,7 +267,7 @@ png_read_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
|
|||||||
png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof(jmp_buf));
|
png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof(jmp_buf));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(png_sizeof(png_struct) > png_struct_size)
|
if (png_sizeof(png_struct) > png_struct_size)
|
||||||
{
|
{
|
||||||
png_destroy_struct(png_ptr);
|
png_destroy_struct(png_ptr);
|
||||||
*ptr_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG);
|
*ptr_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG);
|
||||||
@ -323,7 +323,7 @@ png_read_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
|
|||||||
void PNGAPI
|
void PNGAPI
|
||||||
png_read_info(png_structp png_ptr, png_infop info_ptr)
|
png_read_info(png_structp png_ptr, png_infop info_ptr)
|
||||||
{
|
{
|
||||||
if(png_ptr == NULL || info_ptr == NULL) return;
|
if (png_ptr == NULL || info_ptr == NULL) return;
|
||||||
png_debug(1, "in png_read_info\n");
|
png_debug(1, "in png_read_info\n");
|
||||||
/* If we haven't checked all of the PNG signature bytes, do so now. */
|
/* If we haven't checked all of the PNG signature bytes, do so now. */
|
||||||
if (png_ptr->sig_bytes < 8)
|
if (png_ptr->sig_bytes < 8)
|
||||||
@ -346,7 +346,7 @@ png_read_info(png_structp png_ptr, png_infop info_ptr)
|
|||||||
png_ptr->mode |= PNG_HAVE_PNG_SIGNATURE;
|
png_ptr->mode |= PNG_HAVE_PNG_SIGNATURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
#ifdef PNG_USE_LOCAL_ARRAYS
|
#ifdef PNG_USE_LOCAL_ARRAYS
|
||||||
PNG_CONST PNG_IHDR;
|
PNG_CONST PNG_IHDR;
|
||||||
@ -408,13 +408,11 @@ png_read_info(png_structp png_ptr, png_infop info_ptr)
|
|||||||
png_uint_32 length = png_read_chunk_header(png_ptr);
|
png_uint_32 length = png_read_chunk_header(png_ptr);
|
||||||
png_bytep chunk_name = png_ptr->chunk_name;
|
png_bytep chunk_name = png_ptr->chunk_name;
|
||||||
|
|
||||||
chunk_name = png_ptr->chunk_name;
|
|
||||||
|
|
||||||
/* This should be a binary subdivision search or a hash for
|
/* This should be a binary subdivision search or a hash for
|
||||||
* matching the chunk name rather than a linear search.
|
* matching the chunk name rather than a linear search.
|
||||||
*/
|
*/
|
||||||
if (!png_memcmp(chunk_name, png_IDAT, 4))
|
if (!png_memcmp(chunk_name, png_IDAT, 4))
|
||||||
if(png_ptr->mode & PNG_AFTER_IDAT)
|
if (png_ptr->mode & PNG_AFTER_IDAT)
|
||||||
png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT;
|
png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT;
|
||||||
|
|
||||||
if (!png_memcmp(chunk_name, png_IHDR, 4))
|
if (!png_memcmp(chunk_name, png_IHDR, 4))
|
||||||
@ -533,7 +531,7 @@ void PNGAPI
|
|||||||
png_read_update_info(png_structp png_ptr, png_infop info_ptr)
|
png_read_update_info(png_structp png_ptr, png_infop info_ptr)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_read_update_info\n");
|
png_debug(1, "in png_read_update_info\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
|
if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
|
||||||
png_read_start_row(png_ptr);
|
png_read_start_row(png_ptr);
|
||||||
else
|
else
|
||||||
@ -552,7 +550,7 @@ void PNGAPI
|
|||||||
png_start_read_image(png_structp png_ptr)
|
png_start_read_image(png_structp png_ptr)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_start_read_image\n");
|
png_debug(1, "in png_start_read_image\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
|
if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
|
||||||
png_read_start_row(png_ptr);
|
png_read_start_row(png_ptr);
|
||||||
}
|
}
|
||||||
@ -569,7 +567,7 @@ png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row)
|
|||||||
PNG_CONST int png_pass_mask[7] = {0x80, 0x08, 0x88, 0x22, 0xaa, 0x55, 0xff};
|
PNG_CONST int png_pass_mask[7] = {0x80, 0x08, 0x88, 0x22, 0xaa, 0x55, 0xff};
|
||||||
#endif
|
#endif
|
||||||
int ret;
|
int ret;
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_debug2(1, "in png_read_row (row %lu, pass %d)\n",
|
png_debug2(1, "in png_read_row (row %lu, pass %d)\n",
|
||||||
png_ptr->row_number, png_ptr->pass);
|
png_ptr->row_number, png_ptr->pass);
|
||||||
if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
|
if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
|
||||||
@ -733,7 +731,7 @@ png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row)
|
|||||||
png_ptr->row_info.rowbytes = PNG_ROWBYTES(png_ptr->row_info.pixel_depth,
|
png_ptr->row_info.rowbytes = PNG_ROWBYTES(png_ptr->row_info.pixel_depth,
|
||||||
png_ptr->row_info.width);
|
png_ptr->row_info.width);
|
||||||
|
|
||||||
if(png_ptr->row_buf[0])
|
if (png_ptr->row_buf[0])
|
||||||
png_read_filter_row(png_ptr, &(png_ptr->row_info),
|
png_read_filter_row(png_ptr, &(png_ptr->row_info),
|
||||||
png_ptr->row_buf + 1, png_ptr->prev_row + 1,
|
png_ptr->row_buf + 1, png_ptr->prev_row + 1,
|
||||||
(int)(png_ptr->row_buf[0]));
|
(int)(png_ptr->row_buf[0]));
|
||||||
@ -742,7 +740,7 @@ png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row)
|
|||||||
png_ptr->rowbytes + 1);
|
png_ptr->rowbytes + 1);
|
||||||
|
|
||||||
#if defined(PNG_MNG_FEATURES_SUPPORTED)
|
#if defined(PNG_MNG_FEATURES_SUPPORTED)
|
||||||
if((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
|
if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
|
||||||
(png_ptr->filter_type == PNG_INTRAPIXEL_DIFFERENCING))
|
(png_ptr->filter_type == PNG_INTRAPIXEL_DIFFERENCING))
|
||||||
{
|
{
|
||||||
/* Intrapixel differencing */
|
/* Intrapixel differencing */
|
||||||
@ -822,7 +820,7 @@ png_read_rows(png_structp png_ptr, png_bytepp row,
|
|||||||
png_bytepp dp;
|
png_bytepp dp;
|
||||||
|
|
||||||
png_debug(1, "in png_read_rows\n");
|
png_debug(1, "in png_read_rows\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
rp = row;
|
rp = row;
|
||||||
dp = display_row;
|
dp = display_row;
|
||||||
if (rp != NULL && dp != NULL)
|
if (rp != NULL && dp != NULL)
|
||||||
@ -833,14 +831,14 @@ png_read_rows(png_structp png_ptr, png_bytepp row,
|
|||||||
|
|
||||||
png_read_row(png_ptr, rptr, dptr);
|
png_read_row(png_ptr, rptr, dptr);
|
||||||
}
|
}
|
||||||
else if(rp != NULL)
|
else if (rp != NULL)
|
||||||
for (i = 0; i < num_rows; i++)
|
for (i = 0; i < num_rows; i++)
|
||||||
{
|
{
|
||||||
png_bytep rptr = *rp;
|
png_bytep rptr = *rp;
|
||||||
png_read_row(png_ptr, rptr, png_bytep_NULL);
|
png_read_row(png_ptr, rptr, png_bytep_NULL);
|
||||||
rp++;
|
rp++;
|
||||||
}
|
}
|
||||||
else if(dp != NULL)
|
else if (dp != NULL)
|
||||||
for (i = 0; i < num_rows; i++)
|
for (i = 0; i < num_rows; i++)
|
||||||
{
|
{
|
||||||
png_bytep dptr = *dp;
|
png_bytep dptr = *dp;
|
||||||
@ -871,7 +869,7 @@ png_read_image(png_structp png_ptr, png_bytepp image)
|
|||||||
png_bytepp rp;
|
png_bytepp rp;
|
||||||
|
|
||||||
png_debug(1, "in png_read_image\n");
|
png_debug(1, "in png_read_image\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
|
|
||||||
#ifdef PNG_READ_INTERLACING_SUPPORTED
|
#ifdef PNG_READ_INTERLACING_SUPPORTED
|
||||||
pass = png_set_interlace_handling(png_ptr);
|
pass = png_set_interlace_handling(png_ptr);
|
||||||
@ -906,11 +904,11 @@ png_read_image(png_structp png_ptr, png_bytepp image)
|
|||||||
void PNGAPI
|
void PNGAPI
|
||||||
png_read_end(png_structp png_ptr, png_infop info_ptr)
|
png_read_end(png_structp png_ptr, png_infop info_ptr)
|
||||||
{
|
{
|
||||||
png_byte chunk_length[4];
|
png_bytep chunk_name;
|
||||||
png_uint_32 length;
|
png_uint_32 length;
|
||||||
|
|
||||||
png_debug(1, "in png_read_end\n");
|
png_debug(1, "in png_read_end\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_crc_finish(png_ptr, 0); /* Finish off CRC from last IDAT chunk */
|
png_crc_finish(png_ptr, 0); /* Finish off CRC from last IDAT chunk */
|
||||||
|
|
||||||
do
|
do
|
||||||
@ -972,17 +970,9 @@ png_read_end(png_structp png_ptr, png_infop info_ptr)
|
|||||||
PNG_CONST PNG_zTXt;
|
PNG_CONST PNG_zTXt;
|
||||||
#endif
|
#endif
|
||||||
#endif /* PNG_USE_LOCAL_ARRAYS */
|
#endif /* PNG_USE_LOCAL_ARRAYS */
|
||||||
png_bytep chunk_name;
|
length = png_read_chunk_header(png_ptr);
|
||||||
|
|
||||||
png_read_data(png_ptr, chunk_length, 4);
|
|
||||||
length = png_get_uint_31(png_ptr, chunk_length);
|
|
||||||
|
|
||||||
png_reset_crc(png_ptr);
|
|
||||||
png_crc_read(png_ptr, png_ptr->chunk_name, 4);
|
|
||||||
chunk_name = png_ptr->chunk_name;
|
chunk_name = png_ptr->chunk_name;
|
||||||
|
|
||||||
png_debug1(0, "Reading %s chunk.\n", chunk_name);
|
|
||||||
|
|
||||||
if (!png_memcmp(chunk_name, png_IHDR, 4))
|
if (!png_memcmp(chunk_name, png_IHDR, 4))
|
||||||
png_handle_IHDR(png_ptr, info_ptr, length);
|
png_handle_IHDR(png_ptr, info_ptr, length);
|
||||||
else if (!png_memcmp(chunk_name, png_IEND, 4))
|
else if (!png_memcmp(chunk_name, png_IEND, 4))
|
||||||
@ -1099,9 +1089,7 @@ png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr,
|
|||||||
|
|
||||||
png_debug(1, "in png_destroy_read_struct\n");
|
png_debug(1, "in png_destroy_read_struct\n");
|
||||||
if (png_ptr_ptr != NULL)
|
if (png_ptr_ptr != NULL)
|
||||||
{
|
|
||||||
png_ptr = *png_ptr_ptr;
|
png_ptr = *png_ptr_ptr;
|
||||||
}
|
|
||||||
if (png_ptr == NULL)
|
if (png_ptr == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -1147,6 +1135,8 @@ png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr,
|
|||||||
*end_info_ptr_ptr = NULL;
|
*end_info_ptr_ptr = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (png_ptr != NULL)
|
||||||
|
{
|
||||||
#ifdef PNG_USER_MEM_SUPPORTED
|
#ifdef PNG_USER_MEM_SUPPORTED
|
||||||
png_destroy_struct_2((png_voidp)png_ptr, (png_free_ptr)free_fn,
|
png_destroy_struct_2((png_voidp)png_ptr, (png_free_ptr)free_fn,
|
||||||
(png_voidp)mem_ptr);
|
(png_voidp)mem_ptr);
|
||||||
@ -1154,6 +1144,7 @@ png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr,
|
|||||||
png_destroy_struct((png_voidp)png_ptr);
|
png_destroy_struct((png_voidp)png_ptr);
|
||||||
#endif
|
#endif
|
||||||
*png_ptr_ptr = NULL;
|
*png_ptr_ptr = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* free all memory used by the read (old method) */
|
/* free all memory used by the read (old method) */
|
||||||
@ -1304,7 +1295,7 @@ png_read_destroy(png_structp png_ptr, png_infop info_ptr, png_infop end_info_ptr
|
|||||||
void PNGAPI
|
void PNGAPI
|
||||||
png_set_read_status_fn(png_structp png_ptr, png_read_status_ptr read_row_fn)
|
png_set_read_status_fn(png_structp png_ptr, png_read_status_ptr read_row_fn)
|
||||||
{
|
{
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_ptr->read_row_fn = read_row_fn;
|
png_ptr->read_row_fn = read_row_fn;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1318,7 +1309,7 @@ png_read_png(png_structp png_ptr, png_infop info_ptr,
|
|||||||
{
|
{
|
||||||
int row;
|
int row;
|
||||||
|
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED)
|
#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED)
|
||||||
/* invert the alpha channel from opacity to transparency
|
/* invert the alpha channel from opacity to transparency
|
||||||
*/
|
*/
|
||||||
@ -1438,7 +1429,7 @@ png_read_png(png_structp png_ptr, png_infop info_ptr,
|
|||||||
#ifdef PNG_FREE_ME_SUPPORTED
|
#ifdef PNG_FREE_ME_SUPPORTED
|
||||||
png_free_data(png_ptr, info_ptr, PNG_FREE_ROWS, 0);
|
png_free_data(png_ptr, info_ptr, PNG_FREE_ROWS, 0);
|
||||||
#endif
|
#endif
|
||||||
if(info_ptr->row_pointers == NULL)
|
if (info_ptr->row_pointers == NULL)
|
||||||
{
|
{
|
||||||
info_ptr->row_pointers = (png_bytepp)png_malloc(png_ptr,
|
info_ptr->row_pointers = (png_bytepp)png_malloc(png_ptr,
|
||||||
info_ptr->height * png_sizeof(png_bytep));
|
info_ptr->height * png_sizeof(png_bytep));
|
||||||
|
10
pngrio.c
10
pngrio.c
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/* pngrio.c - functions for data input
|
/* pngrio.c - functions for data input
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.2.30 [July 6, 2008]
|
* Last changed in libpng 1.2.30 [July 10, 2008]
|
||||||
* For conditions of distribution and use, see copyright notice in png.h
|
* For conditions of distribution and use, see copyright notice in png.h
|
||||||
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
@ -45,7 +45,7 @@ png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
|||||||
{
|
{
|
||||||
png_size_t check;
|
png_size_t check;
|
||||||
|
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
/* fread() returns 0 on error, so it is OK to store this in a png_size_t
|
/* fread() returns 0 on error, so it is OK to store this in a png_size_t
|
||||||
* instead of an int, which is what fread() actually returns.
|
* instead of an int, which is what fread() actually returns.
|
||||||
*/
|
*/
|
||||||
@ -76,7 +76,7 @@ png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
|||||||
png_byte *n_data;
|
png_byte *n_data;
|
||||||
png_FILE_p io_ptr;
|
png_FILE_p io_ptr;
|
||||||
|
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
/* Check if data really is near. If so, use usual code. */
|
/* Check if data really is near. If so, use usual code. */
|
||||||
n_data = (png_byte *)CVT_PTR_NOCHECK(data);
|
n_data = (png_byte *)CVT_PTR_NOCHECK(data);
|
||||||
io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
|
io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
|
||||||
@ -105,7 +105,7 @@ png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
|||||||
err = fread(buf, (png_size_t)1, read, io_ptr);
|
err = fread(buf, (png_size_t)1, read, io_ptr);
|
||||||
#endif
|
#endif
|
||||||
png_memcpy(data, buf, read); /* copy far buffer to near buffer */
|
png_memcpy(data, buf, read); /* copy far buffer to near buffer */
|
||||||
if(err != read)
|
if (err != read)
|
||||||
break;
|
break;
|
||||||
else
|
else
|
||||||
check += err;
|
check += err;
|
||||||
@ -137,7 +137,7 @@ void PNGAPI
|
|||||||
png_set_read_fn(png_structp png_ptr, png_voidp io_ptr,
|
png_set_read_fn(png_structp png_ptr, png_voidp io_ptr,
|
||||||
png_rw_ptr read_data_fn)
|
png_rw_ptr read_data_fn)
|
||||||
{
|
{
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_ptr->io_ptr = io_ptr;
|
png_ptr->io_ptr = io_ptr;
|
||||||
|
|
||||||
#if !defined(PNG_NO_STDIO)
|
#if !defined(PNG_NO_STDIO)
|
||||||
|
111
pngrtran.c
111
pngrtran.c
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/* pngrtran.c - transforms the data in a row for PNG readers
|
/* pngrtran.c - transforms the data in a row for PNG readers
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.2.30 [July 6, 2008]
|
* Last changed in libpng 1.2.30 [July 10, 2008]
|
||||||
* For conditions of distribution and use, see copyright notice in png.h
|
* For conditions of distribution and use, see copyright notice in png.h
|
||||||
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
@ -23,7 +23,7 @@ png_set_crc_action(png_structp png_ptr, int crit_action, int ancil_action)
|
|||||||
{
|
{
|
||||||
png_debug(1, "in png_set_crc_action\n");
|
png_debug(1, "in png_set_crc_action\n");
|
||||||
/* Tell libpng how we react to CRC errors in critical chunks */
|
/* Tell libpng how we react to CRC errors in critical chunks */
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
switch (crit_action)
|
switch (crit_action)
|
||||||
{
|
{
|
||||||
case PNG_CRC_NO_CHANGE: /* leave setting as is */
|
case PNG_CRC_NO_CHANGE: /* leave setting as is */
|
||||||
@ -81,7 +81,7 @@ png_set_background(png_structp png_ptr,
|
|||||||
int need_expand, double background_gamma)
|
int need_expand, double background_gamma)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_background\n");
|
png_debug(1, "in png_set_background\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
if (background_gamma_code == PNG_BACKGROUND_GAMMA_UNKNOWN)
|
if (background_gamma_code == PNG_BACKGROUND_GAMMA_UNKNOWN)
|
||||||
{
|
{
|
||||||
png_warning(png_ptr, "Application must supply a known background gamma");
|
png_warning(png_ptr, "Application must supply a known background gamma");
|
||||||
@ -103,7 +103,7 @@ void PNGAPI
|
|||||||
png_set_strip_16(png_structp png_ptr)
|
png_set_strip_16(png_structp png_ptr)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_strip_16\n");
|
png_debug(1, "in png_set_strip_16\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_ptr->transformations |= PNG_16_TO_8;
|
png_ptr->transformations |= PNG_16_TO_8;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -113,7 +113,7 @@ void PNGAPI
|
|||||||
png_set_strip_alpha(png_structp png_ptr)
|
png_set_strip_alpha(png_structp png_ptr)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_strip_alpha\n");
|
png_debug(1, "in png_set_strip_alpha\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_ptr->flags |= PNG_FLAG_STRIP_ALPHA;
|
png_ptr->flags |= PNG_FLAG_STRIP_ALPHA;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -143,7 +143,7 @@ png_set_dither(png_structp png_ptr, png_colorp palette,
|
|||||||
int full_dither)
|
int full_dither)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_dither\n");
|
png_debug(1, "in png_set_dither\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_ptr->transformations |= PNG_DITHER;
|
png_ptr->transformations |= PNG_DITHER;
|
||||||
|
|
||||||
if (!full_dither)
|
if (!full_dither)
|
||||||
@ -527,7 +527,7 @@ void PNGAPI
|
|||||||
png_set_gamma(png_structp png_ptr, double scrn_gamma, double file_gamma)
|
png_set_gamma(png_structp png_ptr, double scrn_gamma, double file_gamma)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_gamma\n");
|
png_debug(1, "in png_set_gamma\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
if ((fabs(scrn_gamma * file_gamma - 1.0) > PNG_GAMMA_THRESHOLD) ||
|
if ((fabs(scrn_gamma * file_gamma - 1.0) > PNG_GAMMA_THRESHOLD) ||
|
||||||
(png_ptr->color_type & PNG_COLOR_MASK_ALPHA) ||
|
(png_ptr->color_type & PNG_COLOR_MASK_ALPHA) ||
|
||||||
(png_ptr->color_type == PNG_COLOR_TYPE_PALETTE))
|
(png_ptr->color_type == PNG_COLOR_TYPE_PALETTE))
|
||||||
@ -546,7 +546,7 @@ void PNGAPI
|
|||||||
png_set_expand(png_structp png_ptr)
|
png_set_expand(png_structp png_ptr)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_expand\n");
|
png_debug(1, "in png_set_expand\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
|
png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
|
||||||
png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
|
png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
|
||||||
}
|
}
|
||||||
@ -573,7 +573,7 @@ void PNGAPI
|
|||||||
png_set_palette_to_rgb(png_structp png_ptr)
|
png_set_palette_to_rgb(png_structp png_ptr)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_palette_to_rgb\n");
|
png_debug(1, "in png_set_palette_to_rgb\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
|
png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
|
||||||
png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
|
png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
|
||||||
}
|
}
|
||||||
@ -584,7 +584,7 @@ void PNGAPI
|
|||||||
png_set_expand_gray_1_2_4_to_8(png_structp png_ptr)
|
png_set_expand_gray_1_2_4_to_8(png_structp png_ptr)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_expand_gray_1_2_4_to_8\n");
|
png_debug(1, "in png_set_expand_gray_1_2_4_to_8\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_ptr->transformations |= PNG_EXPAND;
|
png_ptr->transformations |= PNG_EXPAND;
|
||||||
png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
|
png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
|
||||||
}
|
}
|
||||||
@ -597,7 +597,7 @@ void PNGAPI
|
|||||||
png_set_gray_1_2_4_to_8(png_structp png_ptr)
|
png_set_gray_1_2_4_to_8(png_structp png_ptr)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_gray_1_2_4_to_8\n");
|
png_debug(1, "in png_set_gray_1_2_4_to_8\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
|
png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -635,7 +635,7 @@ png_set_rgb_to_gray(png_structp png_ptr, int error_action, double red,
|
|||||||
{
|
{
|
||||||
int red_fixed = (int)((float)red*100000.0 + 0.5);
|
int red_fixed = (int)((float)red*100000.0 + 0.5);
|
||||||
int green_fixed = (int)((float)green*100000.0 + 0.5);
|
int green_fixed = (int)((float)green*100000.0 + 0.5);
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_set_rgb_to_gray_fixed(png_ptr, error_action, red_fixed, green_fixed);
|
png_set_rgb_to_gray_fixed(png_ptr, error_action, red_fixed, green_fixed);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -645,7 +645,7 @@ png_set_rgb_to_gray_fixed(png_structp png_ptr, int error_action,
|
|||||||
png_fixed_point red, png_fixed_point green)
|
png_fixed_point red, png_fixed_point green)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_rgb_to_gray\n");
|
png_debug(1, "in png_set_rgb_to_gray\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
switch(error_action)
|
switch(error_action)
|
||||||
{
|
{
|
||||||
case 1: png_ptr->transformations |= PNG_RGB_TO_GRAY;
|
case 1: png_ptr->transformations |= PNG_RGB_TO_GRAY;
|
||||||
@ -666,12 +666,12 @@ png_set_rgb_to_gray_fixed(png_structp png_ptr, int error_action,
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
png_uint_16 red_int, green_int;
|
png_uint_16 red_int, green_int;
|
||||||
if(red < 0 || green < 0)
|
if (red < 0 || green < 0)
|
||||||
{
|
{
|
||||||
red_int = 6968; /* .212671 * 32768 + .5 */
|
red_int = 6968; /* .212671 * 32768 + .5 */
|
||||||
green_int = 23434; /* .715160 * 32768 + .5 */
|
green_int = 23434; /* .715160 * 32768 + .5 */
|
||||||
}
|
}
|
||||||
else if(red + green < 100000L)
|
else if (red + green < 100000L)
|
||||||
{
|
{
|
||||||
red_int = (png_uint_16)(((png_uint_32)red*32768L)/100000L);
|
red_int = (png_uint_16)(((png_uint_32)red*32768L)/100000L);
|
||||||
green_int = (png_uint_16)(((png_uint_32)green*32768L)/100000L);
|
green_int = (png_uint_16)(((png_uint_32)green*32768L)/100000L);
|
||||||
@ -684,7 +684,8 @@ png_set_rgb_to_gray_fixed(png_structp png_ptr, int error_action,
|
|||||||
}
|
}
|
||||||
png_ptr->rgb_to_gray_red_coeff = red_int;
|
png_ptr->rgb_to_gray_red_coeff = red_int;
|
||||||
png_ptr->rgb_to_gray_green_coeff = green_int;
|
png_ptr->rgb_to_gray_green_coeff = green_int;
|
||||||
png_ptr->rgb_to_gray_blue_coeff = (png_uint_16)(32768-red_int-green_int);
|
png_ptr->rgb_to_gray_blue_coeff =
|
||||||
|
(png_uint_16)(32768 - red_int - green_int);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -697,13 +698,13 @@ png_set_read_user_transform_fn(png_structp png_ptr, png_user_transform_ptr
|
|||||||
read_user_transform_fn)
|
read_user_transform_fn)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_read_user_transform_fn\n");
|
png_debug(1, "in png_set_read_user_transform_fn\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
|
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
|
||||||
png_ptr->transformations |= PNG_USER_TRANSFORM;
|
png_ptr->transformations |= PNG_USER_TRANSFORM;
|
||||||
png_ptr->read_user_transform_fn = read_user_transform_fn;
|
png_ptr->read_user_transform_fn = read_user_transform_fn;
|
||||||
#endif
|
#endif
|
||||||
#ifdef PNG_LEGACY_SUPPORTED
|
#ifdef PNG_LEGACY_SUPPORTED
|
||||||
if(read_user_transform_fn)
|
if (read_user_transform_fn)
|
||||||
png_warning(png_ptr,
|
png_warning(png_ptr,
|
||||||
"This version of libpng does not support user transforms");
|
"This version of libpng does not support user transforms");
|
||||||
#endif
|
#endif
|
||||||
@ -718,7 +719,7 @@ png_init_read_transformations(png_structp png_ptr)
|
|||||||
{
|
{
|
||||||
png_debug(1, "in png_init_read_transformations\n");
|
png_debug(1, "in png_init_read_transformations\n");
|
||||||
#if defined(PNG_USELESS_TESTS_SUPPORTED)
|
#if defined(PNG_USELESS_TESTS_SUPPORTED)
|
||||||
if(png_ptr != NULL)
|
if (png_ptr != NULL)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#if defined(PNG_READ_BACKGROUND_SUPPORTED) || defined(PNG_READ_SHIFT_SUPPORTED) \
|
#if defined(PNG_READ_BACKGROUND_SUPPORTED) || defined(PNG_READ_SHIFT_SUPPORTED) \
|
||||||
@ -1111,7 +1112,7 @@ png_init_read_transformations(png_structp png_ptr)
|
|||||||
}
|
}
|
||||||
#if !defined(PNG_READ_GAMMA_SUPPORTED) && !defined(PNG_READ_SHIFT_SUPPORTED) \
|
#if !defined(PNG_READ_GAMMA_SUPPORTED) && !defined(PNG_READ_SHIFT_SUPPORTED) \
|
||||||
&& !defined(PNG_READ_BACKGROUND_SUPPORTED)
|
&& !defined(PNG_READ_BACKGROUND_SUPPORTED)
|
||||||
if(png_ptr)
|
if (png_ptr)
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -1240,11 +1241,11 @@ png_read_transform_info(png_structp png_ptr, png_infop info_ptr)
|
|||||||
|
|
||||||
#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED) && \
|
#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED) && \
|
||||||
defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
|
defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
|
||||||
if(png_ptr->transformations & PNG_USER_TRANSFORM)
|
if (png_ptr->transformations & PNG_USER_TRANSFORM)
|
||||||
{
|
{
|
||||||
if(info_ptr->bit_depth < png_ptr->user_transform_depth)
|
if (info_ptr->bit_depth < png_ptr->user_transform_depth)
|
||||||
info_ptr->bit_depth = png_ptr->user_transform_depth;
|
info_ptr->bit_depth = png_ptr->user_transform_depth;
|
||||||
if(info_ptr->channels < png_ptr->user_transform_channels)
|
if (info_ptr->channels < png_ptr->user_transform_channels)
|
||||||
info_ptr->channels = png_ptr->user_transform_channels;
|
info_ptr->channels = png_ptr->user_transform_channels;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -1255,7 +1256,7 @@ defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
|
|||||||
info_ptr->rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth, info_ptr->width);
|
info_ptr->rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth, info_ptr->width);
|
||||||
|
|
||||||
#if !defined(PNG_READ_EXPAND_SUPPORTED)
|
#if !defined(PNG_READ_EXPAND_SUPPORTED)
|
||||||
if(png_ptr)
|
if (png_ptr)
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -1325,13 +1326,13 @@ png_do_read_transformations(png_structp png_ptr)
|
|||||||
{
|
{
|
||||||
int rgb_error =
|
int rgb_error =
|
||||||
png_do_rgb_to_gray(png_ptr, &(png_ptr->row_info), png_ptr->row_buf + 1);
|
png_do_rgb_to_gray(png_ptr, &(png_ptr->row_info), png_ptr->row_buf + 1);
|
||||||
if(rgb_error)
|
if (rgb_error)
|
||||||
{
|
{
|
||||||
png_ptr->rgb_to_gray_status=1;
|
png_ptr->rgb_to_gray_status=1;
|
||||||
if((png_ptr->transformations & PNG_RGB_TO_GRAY) ==
|
if ((png_ptr->transformations & PNG_RGB_TO_GRAY) ==
|
||||||
PNG_RGB_TO_GRAY_WARN)
|
PNG_RGB_TO_GRAY_WARN)
|
||||||
png_warning(png_ptr, "png_do_rgb_to_gray found nongray pixel");
|
png_warning(png_ptr, "png_do_rgb_to_gray found nongray pixel");
|
||||||
if((png_ptr->transformations & PNG_RGB_TO_GRAY) ==
|
if ((png_ptr->transformations & PNG_RGB_TO_GRAY) ==
|
||||||
PNG_RGB_TO_GRAY_ERR)
|
PNG_RGB_TO_GRAY_ERR)
|
||||||
png_error(png_ptr, "png_do_rgb_to_gray found nongray pixel");
|
png_error(png_ptr, "png_do_rgb_to_gray found nongray pixel");
|
||||||
}
|
}
|
||||||
@ -1415,7 +1416,7 @@ From Andreas Dilger e-mail to png-implement, 26 March 1998:
|
|||||||
{
|
{
|
||||||
png_do_dither((png_row_infop)&(png_ptr->row_info), png_ptr->row_buf + 1,
|
png_do_dither((png_row_infop)&(png_ptr->row_info), png_ptr->row_buf + 1,
|
||||||
png_ptr->palette_lookup, png_ptr->dither_index);
|
png_ptr->palette_lookup, png_ptr->dither_index);
|
||||||
if(png_ptr->row_info.rowbytes == (png_uint_32)0)
|
if (png_ptr->row_info.rowbytes == (png_uint_32)0)
|
||||||
png_error(png_ptr, "png_do_dither returned rowbytes=0");
|
png_error(png_ptr, "png_do_dither returned rowbytes=0");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -1477,7 +1478,7 @@ From Andreas Dilger e-mail to png-implement, 26 March 1998:
|
|||||||
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
|
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
|
||||||
if (png_ptr->transformations & PNG_USER_TRANSFORM)
|
if (png_ptr->transformations & PNG_USER_TRANSFORM)
|
||||||
{
|
{
|
||||||
if(png_ptr->read_user_transform_fn != NULL)
|
if (png_ptr->read_user_transform_fn != NULL)
|
||||||
(*(png_ptr->read_user_transform_fn)) /* user read transform function */
|
(*(png_ptr->read_user_transform_fn)) /* user read transform function */
|
||||||
(png_ptr, /* png_ptr */
|
(png_ptr, /* png_ptr */
|
||||||
&(png_ptr->row_info), /* row_info: */
|
&(png_ptr->row_info), /* row_info: */
|
||||||
@ -1489,9 +1490,9 @@ From Andreas Dilger e-mail to png-implement, 26 March 1998:
|
|||||||
/* png_byte pixel_depth; bits per pixel (depth*channels) */
|
/* png_byte pixel_depth; bits per pixel (depth*channels) */
|
||||||
png_ptr->row_buf + 1); /* start of pixel data for row */
|
png_ptr->row_buf + 1); /* start of pixel data for row */
|
||||||
#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
|
#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
|
||||||
if(png_ptr->user_transform_depth)
|
if (png_ptr->user_transform_depth)
|
||||||
png_ptr->row_info.bit_depth = png_ptr->user_transform_depth;
|
png_ptr->row_info.bit_depth = png_ptr->user_transform_depth;
|
||||||
if(png_ptr->user_transform_channels)
|
if (png_ptr->user_transform_channels)
|
||||||
png_ptr->row_info.channels = png_ptr->user_transform_channels;
|
png_ptr->row_info.channels = png_ptr->user_transform_channels;
|
||||||
#endif
|
#endif
|
||||||
png_ptr->row_info.pixel_depth = (png_byte)(png_ptr->row_info.bit_depth *
|
png_ptr->row_info.pixel_depth = (png_byte)(png_ptr->row_info.bit_depth *
|
||||||
@ -1968,7 +1969,7 @@ png_do_read_filler(png_row_infop row_info, png_bytep row,
|
|||||||
#endif
|
#endif
|
||||||
row_info->color_type == PNG_COLOR_TYPE_GRAY)
|
row_info->color_type == PNG_COLOR_TYPE_GRAY)
|
||||||
{
|
{
|
||||||
if(row_info->bit_depth == 8)
|
if (row_info->bit_depth == 8)
|
||||||
{
|
{
|
||||||
/* This changes the data from G to GX */
|
/* This changes the data from G to GX */
|
||||||
if (flags & PNG_FLAG_FILLER_AFTER)
|
if (flags & PNG_FLAG_FILLER_AFTER)
|
||||||
@ -2000,7 +2001,7 @@ png_do_read_filler(png_row_infop row_info, png_bytep row,
|
|||||||
row_info->rowbytes = row_width * 2;
|
row_info->rowbytes = row_width * 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(row_info->bit_depth == 16)
|
else if (row_info->bit_depth == 16)
|
||||||
{
|
{
|
||||||
/* This changes the data from GG to GGXX */
|
/* This changes the data from GG to GGXX */
|
||||||
if (flags & PNG_FLAG_FILLER_AFTER)
|
if (flags & PNG_FLAG_FILLER_AFTER)
|
||||||
@ -2040,7 +2041,7 @@ png_do_read_filler(png_row_infop row_info, png_bytep row,
|
|||||||
} /* COLOR_TYPE == GRAY */
|
} /* COLOR_TYPE == GRAY */
|
||||||
else if (row_info->color_type == PNG_COLOR_TYPE_RGB)
|
else if (row_info->color_type == PNG_COLOR_TYPE_RGB)
|
||||||
{
|
{
|
||||||
if(row_info->bit_depth == 8)
|
if (row_info->bit_depth == 8)
|
||||||
{
|
{
|
||||||
/* This changes the data from RGB to RGBX */
|
/* This changes the data from RGB to RGBX */
|
||||||
if (flags & PNG_FLAG_FILLER_AFTER)
|
if (flags & PNG_FLAG_FILLER_AFTER)
|
||||||
@ -2076,7 +2077,7 @@ png_do_read_filler(png_row_infop row_info, png_bytep row,
|
|||||||
row_info->rowbytes = row_width * 4;
|
row_info->rowbytes = row_width * 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(row_info->bit_depth == 16)
|
else if (row_info->bit_depth == 16)
|
||||||
{
|
{
|
||||||
/* This changes the data from RRGGBB to RRGGBBXX */
|
/* This changes the data from RRGGBB to RRGGBBXX */
|
||||||
if (flags & PNG_FLAG_FILLER_AFTER)
|
if (flags & PNG_FLAG_FILLER_AFTER)
|
||||||
@ -2266,14 +2267,14 @@ png_do_rgb_to_gray(png_structp png_ptr, png_row_infop row_info, png_bytep row)
|
|||||||
png_byte red = png_ptr->gamma_to_1[*(sp++)];
|
png_byte red = png_ptr->gamma_to_1[*(sp++)];
|
||||||
png_byte green = png_ptr->gamma_to_1[*(sp++)];
|
png_byte green = png_ptr->gamma_to_1[*(sp++)];
|
||||||
png_byte blue = png_ptr->gamma_to_1[*(sp++)];
|
png_byte blue = png_ptr->gamma_to_1[*(sp++)];
|
||||||
if(red != green || red != blue)
|
if (red != green || red != blue)
|
||||||
{
|
{
|
||||||
rgb_error |= 1;
|
rgb_error |= 1;
|
||||||
*(dp++) = png_ptr->gamma_from_1[
|
*(dp++) = png_ptr->gamma_from_1[
|
||||||
(rc*red+gc*green+bc*blue)>>15];
|
(rc*red + gc*green + bc*blue)>>15];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
*(dp++) = *(sp-1);
|
*(dp++) = *(sp - 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -2286,13 +2287,13 @@ png_do_rgb_to_gray(png_structp png_ptr, png_row_infop row_info, png_bytep row)
|
|||||||
png_byte red = *(sp++);
|
png_byte red = *(sp++);
|
||||||
png_byte green = *(sp++);
|
png_byte green = *(sp++);
|
||||||
png_byte blue = *(sp++);
|
png_byte blue = *(sp++);
|
||||||
if(red != green || red != blue)
|
if (red != green || red != blue)
|
||||||
{
|
{
|
||||||
rgb_error |= 1;
|
rgb_error |= 1;
|
||||||
*(dp++) = (png_byte)((rc*red+gc*green+bc*blue)>>15);
|
*(dp++) = (png_byte)((rc*red + gc*green + bc*blue)>>15);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
*(dp++) = *(sp-1);
|
*(dp++) = *(sp - 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2313,7 +2314,7 @@ png_do_rgb_to_gray(png_structp png_ptr, png_row_infop row_info, png_bytep row)
|
|||||||
green = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
|
green = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
|
||||||
blue = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
|
blue = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
|
||||||
|
|
||||||
if(red == green && red == blue)
|
if (red == green && red == blue)
|
||||||
w = red;
|
w = red;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2347,7 +2348,7 @@ png_do_rgb_to_gray(png_structp png_ptr, png_row_infop row_info, png_bytep row)
|
|||||||
green = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
|
green = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
|
||||||
blue = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
|
blue = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
|
||||||
|
|
||||||
if(red != green || red != blue)
|
if (red != green || red != blue)
|
||||||
rgb_error |= 1;
|
rgb_error |= 1;
|
||||||
gray16 = (png_uint_16)((rc*red + gc*green + bc*blue)>>15);
|
gray16 = (png_uint_16)((rc*red + gc*green + bc*blue)>>15);
|
||||||
*(dp++) = (png_byte)((gray16>>8) & 0xff);
|
*(dp++) = (png_byte)((gray16>>8) & 0xff);
|
||||||
@ -2370,7 +2371,7 @@ png_do_rgb_to_gray(png_structp png_ptr, png_row_infop row_info, png_bytep row)
|
|||||||
png_byte red = png_ptr->gamma_to_1[*(sp++)];
|
png_byte red = png_ptr->gamma_to_1[*(sp++)];
|
||||||
png_byte green = png_ptr->gamma_to_1[*(sp++)];
|
png_byte green = png_ptr->gamma_to_1[*(sp++)];
|
||||||
png_byte blue = png_ptr->gamma_to_1[*(sp++)];
|
png_byte blue = png_ptr->gamma_to_1[*(sp++)];
|
||||||
if(red != green || red != blue)
|
if (red != green || red != blue)
|
||||||
rgb_error |= 1;
|
rgb_error |= 1;
|
||||||
*(dp++) = png_ptr->gamma_from_1
|
*(dp++) = png_ptr->gamma_from_1
|
||||||
[(rc*red + gc*green + bc*blue)>>15];
|
[(rc*red + gc*green + bc*blue)>>15];
|
||||||
@ -2387,7 +2388,7 @@ png_do_rgb_to_gray(png_structp png_ptr, png_row_infop row_info, png_bytep row)
|
|||||||
png_byte red = *(sp++);
|
png_byte red = *(sp++);
|
||||||
png_byte green = *(sp++);
|
png_byte green = *(sp++);
|
||||||
png_byte blue = *(sp++);
|
png_byte blue = *(sp++);
|
||||||
if(red != green || red != blue)
|
if (red != green || red != blue)
|
||||||
rgb_error |= 1;
|
rgb_error |= 1;
|
||||||
*(dp++) = (png_byte)((rc*red + gc*green + bc*blue)>>15);
|
*(dp++) = (png_byte)((rc*red + gc*green + bc*blue)>>15);
|
||||||
*(dp++) = *(sp++); /* alpha */
|
*(dp++) = *(sp++); /* alpha */
|
||||||
@ -2410,7 +2411,7 @@ png_do_rgb_to_gray(png_structp png_ptr, png_row_infop row_info, png_bytep row)
|
|||||||
green = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
|
green = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
|
||||||
blue = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
|
blue = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
|
||||||
|
|
||||||
if(red == green && red == blue)
|
if (red == green && red == blue)
|
||||||
w = red;
|
w = red;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2444,7 +2445,7 @@ png_do_rgb_to_gray(png_structp png_ptr, png_row_infop row_info, png_bytep row)
|
|||||||
red = (png_uint_16)((*(sp)<<8) | *(sp+1)); sp+=2;
|
red = (png_uint_16)((*(sp)<<8) | *(sp+1)); sp+=2;
|
||||||
green = (png_uint_16)((*(sp)<<8) | *(sp+1)); sp+=2;
|
green = (png_uint_16)((*(sp)<<8) | *(sp+1)); sp+=2;
|
||||||
blue = (png_uint_16)((*(sp)<<8) | *(sp+1)); sp+=2;
|
blue = (png_uint_16)((*(sp)<<8) | *(sp+1)); sp+=2;
|
||||||
if(red != green || red != blue)
|
if (red != green || red != blue)
|
||||||
rgb_error |= 1;
|
rgb_error |= 1;
|
||||||
gray16 = (png_uint_16)((rc*red + gc*green + bc*blue)>>15);
|
gray16 = (png_uint_16)((rc*red + gc*green + bc*blue)>>15);
|
||||||
*(dp++) = (png_byte)((gray16>>8) & 0xff);
|
*(dp++) = (png_byte)((gray16>>8) & 0xff);
|
||||||
@ -3836,7 +3837,7 @@ png_do_expand(png_row_infop row_info, png_bytep row,
|
|||||||
dp = row + (row_info->rowbytes << 1) - 1;
|
dp = row + (row_info->rowbytes << 1) - 1;
|
||||||
for (i = 0; i < row_width; i++)
|
for (i = 0; i < row_width; i++)
|
||||||
{
|
{
|
||||||
if (*(sp-1) == gray_high && *(sp) == gray_low)
|
if (*(sp - 1) == gray_high && *(sp) == gray_low)
|
||||||
{
|
{
|
||||||
*dp-- = 0;
|
*dp-- = 0;
|
||||||
*dp-- = 0;
|
*dp-- = 0;
|
||||||
@ -4066,7 +4067,7 @@ png_build_gamma_table(png_structp png_ptr)
|
|||||||
png_ptr->gamma_from_1 = (png_bytep)png_malloc(png_ptr,
|
png_ptr->gamma_from_1 = (png_bytep)png_malloc(png_ptr,
|
||||||
(png_uint_32)256);
|
(png_uint_32)256);
|
||||||
|
|
||||||
if(png_ptr->screen_gamma > 0.000001)
|
if (png_ptr->screen_gamma > 0.000001)
|
||||||
g = 1.0 / png_ptr->screen_gamma;
|
g = 1.0 / png_ptr->screen_gamma;
|
||||||
else
|
else
|
||||||
g = png_ptr->gamma; /* probably doing rgb_to_gray */
|
g = png_ptr->gamma; /* probably doing rgb_to_gray */
|
||||||
@ -4203,7 +4204,7 @@ png_build_gamma_table(png_structp png_ptr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(png_ptr->screen_gamma > 0.000001)
|
if (png_ptr->screen_gamma > 0.000001)
|
||||||
g = 1.0 / png_ptr->screen_gamma;
|
g = 1.0 / png_ptr->screen_gamma;
|
||||||
else
|
else
|
||||||
g = png_ptr->gamma; /* probably doing rgb_to_gray */
|
g = png_ptr->gamma; /* probably doing rgb_to_gray */
|
||||||
@ -4279,11 +4280,11 @@ png_do_read_intrapixel(png_row_infop row_info, png_bytep row)
|
|||||||
|
|
||||||
for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel)
|
for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel)
|
||||||
{
|
{
|
||||||
png_uint_32 s0 = (*(rp ) << 8) | *(rp+1);
|
png_uint_32 s0 = (*(rp ) << 8) | *(rp + 1);
|
||||||
png_uint_32 s1 = (*(rp+2) << 8) | *(rp+3);
|
png_uint_32 s1 = (*(rp + 2) << 8) | *(rp + 3);
|
||||||
png_uint_32 s2 = (*(rp+4) << 8) | *(rp+5);
|
png_uint_32 s2 = (*(rp + 4) << 8) | *(rp + 5);
|
||||||
png_uint_32 red = (png_uint_32)((s0+s1+65536L) & 0xffffL);
|
png_uint_32 red = (png_uint_32)((s0 + s1 + 65536L) & 0xffffL);
|
||||||
png_uint_32 blue = (png_uint_32)((s2+s1+65536L) & 0xffffL);
|
png_uint_32 blue = (png_uint_32)((s2 + s1 + 65536L) & 0xffffL);
|
||||||
*(rp ) = (png_byte)((red >> 8) & 0xff);
|
*(rp ) = (png_byte)((red >> 8) & 0xff);
|
||||||
*(rp+1) = (png_byte)(red & 0xff);
|
*(rp+1) = (png_byte)(red & 0xff);
|
||||||
*(rp+4) = (png_byte)((blue >> 8) & 0xff);
|
*(rp+4) = (png_byte)((blue >> 8) & 0xff);
|
||||||
|
124
pngrutil.c
124
pngrutil.c
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/* pngrutil.c - utilities to read a PNG file
|
/* pngrutil.c - utilities to read a PNG file
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.2.30 [July 6, 2008]
|
* Last changed in libpng 1.2.30 [July 10, 2008]
|
||||||
* For conditions of distribution and use, see copyright notice in png.h
|
* For conditions of distribution and use, see copyright notice in png.h
|
||||||
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
@ -129,7 +129,7 @@ png_read_chunk_header(png_structp png_ptr)
|
|||||||
void /* PRIVATE */
|
void /* PRIVATE */
|
||||||
png_crc_read(png_structp png_ptr, png_bytep buf, png_size_t length)
|
png_crc_read(png_structp png_ptr, png_bytep buf, png_size_t length)
|
||||||
{
|
{
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_read_data(png_ptr, buf, length);
|
png_read_data(png_ptr, buf, length);
|
||||||
png_calculate_crc(png_ptr, buf, length);
|
png_calculate_crc(png_ptr, buf, length);
|
||||||
}
|
}
|
||||||
@ -261,8 +261,8 @@ png_decompress_chunk(png_structp png_ptr, int comp_type,
|
|||||||
|
|
||||||
/* Copy what we can of the error message into the text chunk */
|
/* Copy what we can of the error message into the text chunk */
|
||||||
text_size = (png_size_t)(chunklength - (text - chunkdata) - 1);
|
text_size = (png_size_t)(chunklength - (text - chunkdata) - 1);
|
||||||
text_size = png_sizeof(msg) > text_size ? text_size :
|
if (text_size > png_sizeof(msg))
|
||||||
png_sizeof(msg);
|
text_size = png_sizeof(msg);
|
||||||
png_memcpy(text + prefix_size, msg, text_size);
|
png_memcpy(text + prefix_size, msg, text_size);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -337,7 +337,7 @@ png_decompress_chunk(png_structp png_ptr, int comp_type,
|
|||||||
png_warning(png_ptr,
|
png_warning(png_ptr,
|
||||||
"Incomplete compressed datastream in chunk other than IDAT");
|
"Incomplete compressed datastream in chunk other than IDAT");
|
||||||
#endif
|
#endif
|
||||||
text_size=prefix_size;
|
text_size = prefix_size;
|
||||||
if (text == NULL)
|
if (text == NULL)
|
||||||
{
|
{
|
||||||
text = (png_charp)png_malloc_warn(png_ptr, text_size+1);
|
text = (png_charp)png_malloc_warn(png_ptr, text_size+1);
|
||||||
@ -363,15 +363,14 @@ png_decompress_chunk(png_structp png_ptr, int comp_type,
|
|||||||
#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
|
#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
|
||||||
char umsg[50];
|
char umsg[50];
|
||||||
|
|
||||||
png_snprintf(umsg, 50,
|
png_snprintf(umsg, 50, "Unknown zTXt compression type %d", comp_type);
|
||||||
"Unknown zTXt compression type %d", comp_type);
|
|
||||||
png_warning(png_ptr, umsg);
|
png_warning(png_ptr, umsg);
|
||||||
#else
|
#else
|
||||||
png_warning(png_ptr, "Unknown zTXt compression type");
|
png_warning(png_ptr, "Unknown zTXt compression type");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
*(chunkdata + prefix_size) = 0x00;
|
*(chunkdata + prefix_size) = 0x00;
|
||||||
*newlength=prefix_size;
|
*newlength = prefix_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
return chunkdata;
|
return chunkdata;
|
||||||
@ -550,6 +549,7 @@ png_handle_PLTE(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
|||||||
if (png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN)
|
if (png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN)
|
||||||
{
|
{
|
||||||
png_chunk_error(png_ptr, "CRC error");
|
png_chunk_error(png_ptr, "CRC error");
|
||||||
|
%15+% png_chunk_benign_error(png_ptr, "CRC error");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -760,7 +760,7 @@ png_handle_sBIT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
|||||||
void /* PRIVATE */
|
void /* PRIVATE */
|
||||||
png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
||||||
{
|
{
|
||||||
png_byte buf[4];
|
png_byte buf[32];
|
||||||
#ifdef PNG_FLOATING_POINT_SUPPORTED
|
#ifdef PNG_FLOATING_POINT_SUPPORTED
|
||||||
float white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y;
|
float white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y;
|
||||||
#endif
|
#endif
|
||||||
@ -801,62 +801,46 @@ png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
png_crc_read(png_ptr, buf, 4);
|
png_crc_read(png_ptr, buf, 32);
|
||||||
|
if (png_crc_finish(png_ptr, 0))
|
||||||
|
return;
|
||||||
|
|
||||||
uint_x = png_get_uint_32(buf);
|
uint_x = png_get_uint_32(buf);
|
||||||
|
uint_y = png_get_uint_32(buf + 4);
|
||||||
png_crc_read(png_ptr, buf, 4);
|
|
||||||
uint_y = png_get_uint_32(buf);
|
|
||||||
|
|
||||||
if (uint_x > 80000L || uint_y > 80000L ||
|
if (uint_x > 80000L || uint_y > 80000L ||
|
||||||
uint_x + uint_y > 100000L)
|
uint_x + uint_y > 100000L)
|
||||||
{
|
{
|
||||||
png_warning(png_ptr, "Invalid cHRM white point");
|
png_warning(png_ptr, "Invalid cHRM white point");
|
||||||
png_crc_finish(png_ptr, 24);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int_x_white = (png_fixed_point)uint_x;
|
int_x_white = (png_fixed_point)uint_x;
|
||||||
int_y_white = (png_fixed_point)uint_y;
|
int_y_white = (png_fixed_point)uint_y;
|
||||||
|
|
||||||
png_crc_read(png_ptr, buf, 4);
|
uint_x = png_get_uint_32(buf + 8);
|
||||||
uint_x = png_get_uint_32(buf);
|
uint_y = png_get_uint_32(buf + 12);
|
||||||
|
|
||||||
png_crc_read(png_ptr, buf, 4);
|
|
||||||
uint_y = png_get_uint_32(buf);
|
|
||||||
|
|
||||||
if (uint_x + uint_y > 100000L)
|
if (uint_x + uint_y > 100000L)
|
||||||
{
|
{
|
||||||
png_warning(png_ptr, "Invalid cHRM red point");
|
png_warning(png_ptr, "Invalid cHRM red point");
|
||||||
png_crc_finish(png_ptr, 16);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int_x_red = (png_fixed_point)uint_x;
|
int_x_red = (png_fixed_point)uint_x;
|
||||||
int_y_red = (png_fixed_point)uint_y;
|
int_y_red = (png_fixed_point)uint_y;
|
||||||
|
|
||||||
png_crc_read(png_ptr, buf, 4);
|
uint_x = png_get_uint_32(buf + 16);
|
||||||
uint_x = png_get_uint_32(buf);
|
uint_y = png_get_uint_32(buf + 20);
|
||||||
|
|
||||||
png_crc_read(png_ptr, buf, 4);
|
|
||||||
uint_y = png_get_uint_32(buf);
|
|
||||||
|
|
||||||
if (uint_x + uint_y > 100000L)
|
if (uint_x + uint_y > 100000L)
|
||||||
{
|
{
|
||||||
png_warning(png_ptr, "Invalid cHRM green point");
|
png_warning(png_ptr, "Invalid cHRM green point");
|
||||||
png_crc_finish(png_ptr, 8);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int_x_green = (png_fixed_point)uint_x;
|
int_x_green = (png_fixed_point)uint_x;
|
||||||
int_y_green = (png_fixed_point)uint_y;
|
int_y_green = (png_fixed_point)uint_y;
|
||||||
|
|
||||||
png_crc_read(png_ptr, buf, 4);
|
uint_x = png_get_uint_32(buf + 24);
|
||||||
uint_x = png_get_uint_32(buf);
|
uint_y = png_get_uint_32(buf + 28);
|
||||||
|
|
||||||
png_crc_read(png_ptr, buf, 4);
|
|
||||||
uint_y = png_get_uint_32(buf);
|
|
||||||
|
|
||||||
if (uint_x + uint_y > 100000L)
|
if (uint_x + uint_y > 100000L)
|
||||||
{
|
{
|
||||||
png_warning(png_ptr, "Invalid cHRM blue point");
|
png_warning(png_ptr, "Invalid cHRM blue point");
|
||||||
png_crc_finish(png_ptr, 0);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int_x_blue = (png_fixed_point)uint_x;
|
int_x_blue = (png_fixed_point)uint_x;
|
||||||
@ -901,7 +885,6 @@ png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
|||||||
#endif
|
#endif
|
||||||
#endif /* PNG_NO_CONSOLE_IO */
|
#endif /* PNG_NO_CONSOLE_IO */
|
||||||
}
|
}
|
||||||
png_crc_finish(png_ptr, 0);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif /* PNG_READ_sRGB_SUPPORTED */
|
#endif /* PNG_READ_sRGB_SUPPORTED */
|
||||||
@ -1092,7 +1075,7 @@ png_handle_iCCP(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
|||||||
if (compression_type)
|
if (compression_type)
|
||||||
{
|
{
|
||||||
png_warning(png_ptr, "Ignoring nonzero compression type in iCCP chunk");
|
png_warning(png_ptr, "Ignoring nonzero compression type in iCCP chunk");
|
||||||
compression_type=0x00; /* Reset it to zero (libpng-1.0.6 through 1.0.8
|
compression_type = 0x00; /* Reset it to zero (libpng-1.0.6 through 1.0.8
|
||||||
wrote nonzero) */
|
wrote nonzero) */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1110,16 +1093,16 @@ png_handle_iCCP(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Check the profile_size recorded in the first 32 bits of the ICC profile */
|
/* Check the profile_size recorded in the first 32 bits of the ICC profile */
|
||||||
pC = (png_bytep)(chunkdata+prefix_length);
|
pC = (png_bytep)(chunkdata + prefix_length);
|
||||||
profile_size = ((*(pC ))<<24) |
|
profile_size = ((*(pC ))<<24) |
|
||||||
((*(pC+1))<<16) |
|
((*(pC + 1))<<16) |
|
||||||
((*(pC+2))<< 8) |
|
((*(pC + 2))<< 8) |
|
||||||
((*(pC+3)) );
|
((*(pC + 3)) );
|
||||||
|
|
||||||
if(profile_size < profile_length)
|
if (profile_size < profile_length)
|
||||||
profile_length = profile_size;
|
profile_length = profile_size;
|
||||||
|
|
||||||
if(profile_size > profile_length)
|
if (profile_size > profile_length)
|
||||||
{
|
{
|
||||||
png_free(png_ptr, chunkdata);
|
png_free(png_ptr, chunkdata);
|
||||||
png_warning(png_ptr, "Ignoring truncated iCCP profile.");
|
png_warning(png_ptr, "Ignoring truncated iCCP profile.");
|
||||||
@ -1204,8 +1187,8 @@ png_handle_sPLT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
|||||||
}
|
}
|
||||||
|
|
||||||
new_palette.nentries = (png_int_32) ( data_length / entry_size);
|
new_palette.nentries = (png_int_32) ( data_length / entry_size);
|
||||||
if ((png_uint_32) new_palette.nentries > (png_uint_32) (PNG_SIZE_MAX /
|
if ((png_uint_32) new_palette.nentries >
|
||||||
png_sizeof(png_sPLT_entry)))
|
(png_uint_32) (PNG_SIZE_MAX / png_sizeof(png_sPLT_entry)))
|
||||||
{
|
{
|
||||||
png_warning(png_ptr, "sPLT chunk too long");
|
png_warning(png_ptr, "sPLT chunk too long");
|
||||||
return;
|
return;
|
||||||
@ -1425,7 +1408,7 @@ png_handle_bKGD(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
|||||||
png_ptr->background.index = buf[0];
|
png_ptr->background.index = buf[0];
|
||||||
if (info_ptr && info_ptr->num_palette)
|
if (info_ptr && info_ptr->num_palette)
|
||||||
{
|
{
|
||||||
if(buf[0] > info_ptr->num_palette)
|
if (buf[0] > info_ptr->num_palette)
|
||||||
{
|
{
|
||||||
png_warning(png_ptr, "Incorrect bKGD chunk index value");
|
png_warning(png_ptr, "Incorrect bKGD chunk index value");
|
||||||
return;
|
return;
|
||||||
@ -1688,8 +1671,8 @@ png_handle_pCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
|||||||
/* Empty loop to move past the units string. */ ;
|
/* Empty loop to move past the units string. */ ;
|
||||||
|
|
||||||
png_debug(3, "Allocating pCAL parameters array\n");
|
png_debug(3, "Allocating pCAL parameters array\n");
|
||||||
params = (png_charpp)png_malloc_warn(png_ptr, (png_uint_32)(nparams
|
params = (png_charpp)png_malloc_warn(png_ptr,
|
||||||
*png_sizeof(png_charp))) ;
|
(png_uint_32)(nparams * png_sizeof(png_charp))) ;
|
||||||
if (params == NULL)
|
if (params == NULL)
|
||||||
{
|
{
|
||||||
png_free(png_ptr, purpose);
|
png_free(png_ptr, purpose);
|
||||||
@ -1976,7 +1959,7 @@ png_handle_tEXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
|||||||
text_ptr->text = text;
|
text_ptr->text = text;
|
||||||
text_ptr->text_length = png_strlen(text);
|
text_ptr->text_length = png_strlen(text);
|
||||||
|
|
||||||
ret=png_set_text_2(png_ptr, info_ptr, text_ptr, 1);
|
ret = png_set_text_2(png_ptr, info_ptr, text_ptr, 1);
|
||||||
|
|
||||||
png_free(png_ptr, key);
|
png_free(png_ptr, key);
|
||||||
png_free(png_ptr, text_ptr);
|
png_free(png_ptr, text_ptr);
|
||||||
@ -2074,7 +2057,7 @@ png_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
|||||||
text_ptr->text = chunkdata + prefix_len;
|
text_ptr->text = chunkdata + prefix_len;
|
||||||
text_ptr->text_length = data_len;
|
text_ptr->text_length = data_len;
|
||||||
|
|
||||||
ret=png_set_text_2(png_ptr, info_ptr, text_ptr, 1);
|
ret = png_set_text_2(png_ptr, info_ptr, text_ptr, 1);
|
||||||
|
|
||||||
png_free(png_ptr, text_ptr);
|
png_free(png_ptr, text_ptr);
|
||||||
png_free(png_ptr, chunkdata);
|
png_free(png_ptr, chunkdata);
|
||||||
@ -2179,7 +2162,7 @@ png_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
|||||||
chunkdata = png_decompress_chunk(png_ptr, comp_type, chunkdata,
|
chunkdata = png_decompress_chunk(png_ptr, comp_type, chunkdata,
|
||||||
(size_t)length, prefix_len, &data_len);
|
(size_t)length, prefix_len, &data_len);
|
||||||
else
|
else
|
||||||
data_len=png_strlen(chunkdata + prefix_len);
|
data_len = png_strlen(chunkdata + prefix_len);
|
||||||
text_ptr = (png_textp)png_malloc_warn(png_ptr,
|
text_ptr = (png_textp)png_malloc_warn(png_ptr,
|
||||||
(png_uint_32)png_sizeof(png_text));
|
(png_uint_32)png_sizeof(png_text));
|
||||||
if (text_ptr == NULL)
|
if (text_ptr == NULL)
|
||||||
@ -2189,14 +2172,14 @@ png_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
text_ptr->compression = (int)comp_flag + 1;
|
text_ptr->compression = (int)comp_flag + 1;
|
||||||
text_ptr->lang_key = chunkdata+(lang_key-key);
|
text_ptr->lang_key = chunkdata + (lang_key - key);
|
||||||
text_ptr->lang = chunkdata+(lang-key);
|
text_ptr->lang = chunkdata + (lang - key);
|
||||||
text_ptr->itxt_length = data_len;
|
text_ptr->itxt_length = data_len;
|
||||||
text_ptr->text_length = 0;
|
text_ptr->text_length = 0;
|
||||||
text_ptr->key = chunkdata;
|
text_ptr->key = chunkdata;
|
||||||
text_ptr->text = chunkdata + prefix_len;
|
text_ptr->text = chunkdata + prefix_len;
|
||||||
|
|
||||||
ret=png_set_text_2(png_ptr, info_ptr, text_ptr, 1);
|
ret = png_set_text_2(png_ptr, info_ptr, text_ptr, 1);
|
||||||
|
|
||||||
png_free(png_ptr, text_ptr);
|
png_free(png_ptr, text_ptr);
|
||||||
png_free(png_ptr, chunkdata);
|
png_free(png_ptr, chunkdata);
|
||||||
@ -2231,7 +2214,7 @@ png_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
|||||||
if (!(png_ptr->chunk_name[0] & 0x20))
|
if (!(png_ptr->chunk_name[0] & 0x20))
|
||||||
{
|
{
|
||||||
#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
|
#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
|
||||||
if(png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=
|
if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=
|
||||||
PNG_HANDLE_CHUNK_ALWAYS
|
PNG_HANDLE_CHUNK_ALWAYS
|
||||||
#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
|
#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
|
||||||
&& png_ptr->read_user_chunk_fn == NULL
|
&& png_ptr->read_user_chunk_fn == NULL
|
||||||
@ -2266,7 +2249,7 @@ png_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
|||||||
png_crc_read(png_ptr, (png_bytep)png_ptr->unknown_chunk.data, length);
|
png_crc_read(png_ptr, (png_bytep)png_ptr->unknown_chunk.data, length);
|
||||||
}
|
}
|
||||||
#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
|
#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
|
||||||
if(png_ptr->read_user_chunk_fn != NULL)
|
if (png_ptr->read_user_chunk_fn != NULL)
|
||||||
{
|
{
|
||||||
/* callback to user unknown chunk handler */
|
/* callback to user unknown chunk handler */
|
||||||
int ret;
|
int ret;
|
||||||
@ -2277,7 +2260,7 @@ png_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
|||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
{
|
{
|
||||||
if (!(png_ptr->chunk_name[0] & 0x20))
|
if (!(png_ptr->chunk_name[0] & 0x20))
|
||||||
if(png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=
|
if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=
|
||||||
PNG_HANDLE_CHUNK_ALWAYS)
|
PNG_HANDLE_CHUNK_ALWAYS)
|
||||||
png_chunk_error(png_ptr, "unknown critical chunk");
|
png_chunk_error(png_ptr, "unknown critical chunk");
|
||||||
png_set_unknown_chunks(png_ptr, info_ptr,
|
png_set_unknown_chunks(png_ptr, info_ptr,
|
||||||
@ -2868,7 +2851,7 @@ png_read_filter_row(png_structp png_ptr, png_row_infop row_info, png_bytep row,
|
|||||||
p = c;
|
p = c;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
p = (pa <= pb && pa <=pc) ? a : (pb <= pc) ? b : c;
|
p = (pa <= pb && pa <= pc) ? a : (pb <= pc) ? b : c;
|
||||||
|
|
||||||
*rp = (png_byte)(((int)(*rp) + p) & 0xff);
|
*rp = (png_byte)(((int)(*rp) + p) & 0xff);
|
||||||
rp++;
|
rp++;
|
||||||
@ -2877,7 +2860,7 @@ png_read_filter_row(png_structp png_ptr, png_row_infop row_info, png_bytep row,
|
|||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
png_warning(png_ptr, "Ignoring bad adaptive filter type");
|
png_warning(png_ptr, "Ignoring bad adaptive filter type");
|
||||||
*row=0;
|
*row = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2955,7 +2938,7 @@ png_read_finish_row(png_structp png_ptr)
|
|||||||
|
|
||||||
png_ptr->zstream.next_out = (Byte *)&extra;
|
png_ptr->zstream.next_out = (Byte *)&extra;
|
||||||
png_ptr->zstream.avail_out = (uInt)1;
|
png_ptr->zstream.avail_out = (uInt)1;
|
||||||
for(;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
if (!(png_ptr->zstream.avail_in))
|
if (!(png_ptr->zstream.avail_in))
|
||||||
{
|
{
|
||||||
@ -3036,7 +3019,7 @@ png_read_start_row(png_structp png_ptr)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
int max_pixel_depth;
|
int max_pixel_depth;
|
||||||
png_uint_32 row_bytes;
|
png_size_t row_bytes;
|
||||||
|
|
||||||
png_debug(1, "in png_read_start_row\n");
|
png_debug(1, "in png_read_start_row\n");
|
||||||
png_ptr->zstream.avail_in = 0;
|
png_ptr->zstream.avail_in = 0;
|
||||||
@ -3055,11 +3038,8 @@ png_read_start_row(png_structp png_ptr)
|
|||||||
png_pass_start[png_ptr->pass]) /
|
png_pass_start[png_ptr->pass]) /
|
||||||
png_pass_inc[png_ptr->pass];
|
png_pass_inc[png_ptr->pass];
|
||||||
|
|
||||||
row_bytes = PNG_ROWBYTES(png_ptr->pixel_depth, png_ptr->iwidth) + 1;
|
png_ptr->irowbytes =
|
||||||
|
PNG_ROWBYTES(png_ptr->pixel_depth, png_ptr->iwidth) + 1;
|
||||||
png_ptr->irowbytes = (png_size_t)row_bytes;
|
|
||||||
if((png_uint_32)png_ptr->irowbytes != row_bytes)
|
|
||||||
png_error(png_ptr, "Rowbytes overflow in png_read_start_row");
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif /* PNG_READ_INTERLACING_SUPPORTED */
|
#endif /* PNG_READ_INTERLACING_SUPPORTED */
|
||||||
@ -3161,11 +3141,11 @@ png_read_start_row(png_structp png_ptr)
|
|||||||
|
|
||||||
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) && \
|
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) && \
|
||||||
defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
|
defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
|
||||||
if(png_ptr->transformations & PNG_USER_TRANSFORM)
|
if (png_ptr->transformations & PNG_USER_TRANSFORM)
|
||||||
{
|
{
|
||||||
int user_pixel_depth=png_ptr->user_transform_depth*
|
int user_pixel_depth = png_ptr->user_transform_depth*
|
||||||
png_ptr->user_transform_channels;
|
png_ptr->user_transform_channels;
|
||||||
if(user_pixel_depth > max_pixel_depth)
|
if (user_pixel_depth > max_pixel_depth)
|
||||||
max_pixel_depth=user_pixel_depth;
|
max_pixel_depth=user_pixel_depth;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -3182,7 +3162,7 @@ defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
|
|||||||
png_error(png_ptr, "This image requires a row greater than 64KB");
|
png_error(png_ptr, "This image requires a row greater than 64KB");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(row_bytes + 64 > png_ptr->old_big_row_buf_size)
|
if (row_bytes + 64 > png_ptr->old_big_row_buf_size)
|
||||||
{
|
{
|
||||||
png_free(png_ptr, png_ptr->big_row_buf);
|
png_free(png_ptr, png_ptr->big_row_buf);
|
||||||
png_ptr->big_row_buf = (png_bytep)png_malloc(png_ptr, row_bytes+64);
|
png_ptr->big_row_buf = (png_bytep)png_malloc(png_ptr, row_bytes+64);
|
||||||
@ -3197,7 +3177,7 @@ defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
|
|||||||
if ((png_uint_32)png_ptr->rowbytes > (png_uint_32)(PNG_SIZE_MAX - 1))
|
if ((png_uint_32)png_ptr->rowbytes > (png_uint_32)(PNG_SIZE_MAX - 1))
|
||||||
png_error(png_ptr, "Row has too many bytes to allocate in memory.");
|
png_error(png_ptr, "Row has too many bytes to allocate in memory.");
|
||||||
|
|
||||||
if(png_ptr->rowbytes+1 > png_ptr->old_prev_row_size)
|
if (png_ptr->rowbytes+1 > png_ptr->old_prev_row_size)
|
||||||
{
|
{
|
||||||
png_free(png_ptr, png_ptr->prev_row);
|
png_free(png_ptr, png_ptr->prev_row);
|
||||||
png_ptr->prev_row = (png_bytep)png_malloc(png_ptr, (png_uint_32)(
|
png_ptr->prev_row = (png_bytep)png_malloc(png_ptr, (png_uint_32)(
|
||||||
|
111
pngset.c
111
pngset.c
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/* pngset.c - storage of image information into info struct
|
/* pngset.c - storage of image information into info struct
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.2.30 [July 6, 2008]
|
* Last changed in libpng 1.2.30 [July 10, 2008]
|
||||||
* For conditions of distribution and use, see copyright notice in png.h
|
* For conditions of distribution and use, see copyright notice in png.h
|
||||||
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
@ -173,7 +173,7 @@ png_set_gAMA(png_structp png_ptr, png_infop info_ptr, double file_gamma)
|
|||||||
info_ptr->int_gamma = (int)(gamma*100000.+.5);
|
info_ptr->int_gamma = (int)(gamma*100000.+.5);
|
||||||
#endif
|
#endif
|
||||||
info_ptr->valid |= PNG_INFO_gAMA;
|
info_ptr->valid |= PNG_INFO_gAMA;
|
||||||
if(gamma == 0.0)
|
if (gamma == 0.0)
|
||||||
png_warning(png_ptr, "Setting gamma=0");
|
png_warning(png_ptr, "Setting gamma=0");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -197,7 +197,7 @@ png_set_gAMA_fixed(png_structp png_ptr, png_infop info_ptr, png_fixed_point
|
|||||||
if (int_gamma < 0)
|
if (int_gamma < 0)
|
||||||
{
|
{
|
||||||
png_warning(png_ptr, "Setting negative gamma to zero");
|
png_warning(png_ptr, "Setting negative gamma to zero");
|
||||||
gamma=0;
|
gamma = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
gamma=int_gamma;
|
gamma=int_gamma;
|
||||||
@ -209,7 +209,7 @@ png_set_gAMA_fixed(png_structp png_ptr, png_infop info_ptr, png_fixed_point
|
|||||||
info_ptr->int_gamma = gamma;
|
info_ptr->int_gamma = gamma;
|
||||||
#endif
|
#endif
|
||||||
info_ptr->valid |= PNG_INFO_gAMA;
|
info_ptr->valid |= PNG_INFO_gAMA;
|
||||||
if(gamma == 0)
|
if (gamma == 0)
|
||||||
png_warning(png_ptr, "Setting gamma=0");
|
png_warning(png_ptr, "Setting gamma=0");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -318,21 +318,21 @@ png_set_IHDR(png_structp png_ptr, png_infop info_ptr,
|
|||||||
* 4. The filter_method is 64 and
|
* 4. The filter_method is 64 and
|
||||||
* 5. The color_type is RGB or RGBA
|
* 5. The color_type is RGB or RGBA
|
||||||
*/
|
*/
|
||||||
if((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE)&&png_ptr->mng_features_permitted)
|
if ((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE)&&png_ptr->mng_features_permitted)
|
||||||
png_warning(png_ptr, "MNG features are not allowed in a PNG datastream");
|
png_warning(png_ptr, "MNG features are not allowed in a PNG datastream");
|
||||||
if(filter_type != PNG_FILTER_TYPE_BASE)
|
if (filter_type != PNG_FILTER_TYPE_BASE)
|
||||||
{
|
{
|
||||||
if(!((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
|
if (!((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
|
||||||
(filter_type == PNG_INTRAPIXEL_DIFFERENCING) &&
|
(filter_type == PNG_INTRAPIXEL_DIFFERENCING) &&
|
||||||
((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE) == 0) &&
|
((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE) == 0) &&
|
||||||
(color_type == PNG_COLOR_TYPE_RGB ||
|
(color_type == PNG_COLOR_TYPE_RGB ||
|
||||||
color_type == PNG_COLOR_TYPE_RGB_ALPHA)))
|
color_type == PNG_COLOR_TYPE_RGB_ALPHA)))
|
||||||
png_error(png_ptr, "Unknown filter method in IHDR");
|
png_error(png_ptr, "Unknown filter method in IHDR");
|
||||||
if(png_ptr->mode&PNG_HAVE_PNG_SIGNATURE)
|
if (png_ptr->mode&PNG_HAVE_PNG_SIGNATURE)
|
||||||
png_warning(png_ptr, "Invalid filter method in IHDR");
|
png_warning(png_ptr, "Invalid filter method in IHDR");
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if(filter_type != PNG_FILTER_TYPE_BASE)
|
if (filter_type != PNG_FILTER_TYPE_BASE)
|
||||||
png_error(png_ptr, "Unknown filter method in IHDR");
|
png_error(png_ptr, "Unknown filter method in IHDR");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -395,7 +395,8 @@ png_set_pCAL(png_structp png_ptr, png_infop info_ptr,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
length = png_strlen(purpose) + 1;
|
length = png_strlen(purpose) + 1;
|
||||||
png_debug1(3, "allocating purpose for info (%lu bytes)\n", length);
|
png_debug1(3, "allocating purpose for info (%lu bytes)\n",
|
||||||
|
(unsigned long)length);
|
||||||
info_ptr->pcal_purpose = (png_charp)png_malloc_warn(png_ptr, length);
|
info_ptr->pcal_purpose = (png_charp)png_malloc_warn(png_ptr, length);
|
||||||
if (info_ptr->pcal_purpose == NULL)
|
if (info_ptr->pcal_purpose == NULL)
|
||||||
{
|
{
|
||||||
@ -411,7 +412,8 @@ png_set_pCAL(png_structp png_ptr, png_infop info_ptr,
|
|||||||
info_ptr->pcal_nparams = (png_byte)nparams;
|
info_ptr->pcal_nparams = (png_byte)nparams;
|
||||||
|
|
||||||
length = png_strlen(units) + 1;
|
length = png_strlen(units) + 1;
|
||||||
png_debug1(3, "allocating units for info (%lu bytes)\n", length);
|
png_debug1(3, "allocating units for info (%lu bytes)\n",
|
||||||
|
(unsigned long)length);
|
||||||
info_ptr->pcal_units = (png_charp)png_malloc_warn(png_ptr, length);
|
info_ptr->pcal_units = (png_charp)png_malloc_warn(png_ptr, length);
|
||||||
if (info_ptr->pcal_units == NULL)
|
if (info_ptr->pcal_units == NULL)
|
||||||
{
|
{
|
||||||
@ -433,7 +435,8 @@ png_set_pCAL(png_structp png_ptr, png_infop info_ptr,
|
|||||||
for (i = 0; i < nparams; i++)
|
for (i = 0; i < nparams; i++)
|
||||||
{
|
{
|
||||||
length = png_strlen(params[i]) + 1;
|
length = png_strlen(params[i]) + 1;
|
||||||
png_debug2(3, "allocating parameter %d for info (%lu bytes)\n", i, length);
|
png_debug2(3, "allocating parameter %d for info (%lu bytes)\n", i,
|
||||||
|
(unsigned long)length);
|
||||||
info_ptr->pcal_params[i] = (png_charp)png_malloc_warn(png_ptr, length);
|
info_ptr->pcal_params[i] = (png_charp)png_malloc_warn(png_ptr, length);
|
||||||
if (info_ptr->pcal_params[i] == NULL)
|
if (info_ptr->pcal_params[i] == NULL)
|
||||||
{
|
{
|
||||||
@ -481,7 +484,8 @@ png_set_sCAL_s(png_structp png_ptr, png_infop info_ptr,
|
|||||||
info_ptr->scal_unit = (png_byte)unit;
|
info_ptr->scal_unit = (png_byte)unit;
|
||||||
|
|
||||||
length = png_strlen(swidth) + 1;
|
length = png_strlen(swidth) + 1;
|
||||||
png_debug1(3, "allocating unit for info (%d bytes)\n", length);
|
png_debug1(3, "allocating unit for info (%u bytes)\n",
|
||||||
|
(unsigned int)length);
|
||||||
info_ptr->scal_s_width = (png_charp)png_malloc_warn(png_ptr, length);
|
info_ptr->scal_s_width = (png_charp)png_malloc_warn(png_ptr, length);
|
||||||
if (info_ptr->scal_s_width == NULL)
|
if (info_ptr->scal_s_width == NULL)
|
||||||
{
|
{
|
||||||
@ -492,7 +496,8 @@ png_set_sCAL_s(png_structp png_ptr, png_infop info_ptr,
|
|||||||
png_memcpy(info_ptr->scal_s_width, swidth, (png_size_t)length);
|
png_memcpy(info_ptr->scal_s_width, swidth, (png_size_t)length);
|
||||||
|
|
||||||
length = png_strlen(sheight) + 1;
|
length = png_strlen(sheight) + 1;
|
||||||
png_debug1(3, "allocating unit for info (%d bytes)\n", length);
|
png_debug1(3, "allocating unit for info (%u bytes)\n",
|
||||||
|
(unsigned int)length);
|
||||||
info_ptr->scal_s_height = (png_charp)png_malloc_warn(png_ptr, length);
|
info_ptr->scal_s_height = (png_charp)png_malloc_warn(png_ptr, length);
|
||||||
if (info_ptr->scal_s_height == NULL)
|
if (info_ptr->scal_s_height == NULL)
|
||||||
{
|
{
|
||||||
@ -699,7 +704,8 @@ png_set_iCCP(png_structp png_ptr, png_infop info_ptr,
|
|||||||
if (new_iccp_profile == NULL)
|
if (new_iccp_profile == NULL)
|
||||||
{
|
{
|
||||||
png_free (png_ptr, new_iccp_name);
|
png_free (png_ptr, new_iccp_name);
|
||||||
png_warning(png_ptr, "Insufficient memory to process iCCP profile.");
|
png_warning(png_ptr,
|
||||||
|
"Insufficient memory to process iCCP profile.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
png_memcpy(new_iccp_profile, profile, (png_size_t)proflen);
|
png_memcpy(new_iccp_profile, profile, (png_size_t)proflen);
|
||||||
@ -792,7 +798,7 @@ png_set_text_2(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr,
|
|||||||
|
|
||||||
key_len = png_strlen(text_ptr[i].key);
|
key_len = png_strlen(text_ptr[i].key);
|
||||||
|
|
||||||
if(text_ptr[i].compression <= 0)
|
if (text_ptr[i].compression <= 0)
|
||||||
{
|
{
|
||||||
lang_len = 0;
|
lang_len = 0;
|
||||||
lang_key_len = 0;
|
lang_key_len = 0;
|
||||||
@ -821,7 +827,7 @@ png_set_text_2(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr,
|
|||||||
{
|
{
|
||||||
text_length = 0;
|
text_length = 0;
|
||||||
#ifdef PNG_iTXt_SUPPORTED
|
#ifdef PNG_iTXt_SUPPORTED
|
||||||
if(text_ptr[i].compression > 0)
|
if (text_ptr[i].compression > 0)
|
||||||
textp->compression = PNG_ITXT_COMPRESSION_NONE;
|
textp->compression = PNG_ITXT_COMPRESSION_NONE;
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
@ -834,25 +840,27 @@ png_set_text_2(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
textp->key = (png_charp)png_malloc_warn(png_ptr,
|
textp->key = (png_charp)png_malloc_warn(png_ptr,
|
||||||
(png_uint_32)(key_len + text_length + lang_len + lang_key_len + 4));
|
(png_uint_32)
|
||||||
|
(key_len + text_length + lang_len + lang_key_len + 4));
|
||||||
if (textp->key == NULL)
|
if (textp->key == NULL)
|
||||||
return(1);
|
return(1);
|
||||||
png_debug2(2, "Allocated %lu bytes at %x in png_set_text\n",
|
png_debug2(2, "Allocated %lu bytes at %x in png_set_text\n",
|
||||||
(png_uint_32)(key_len + lang_len + lang_key_len + text_length + 4),
|
(png_uint_32)
|
||||||
|
(key_len + lang_len + lang_key_len + text_length + 4),
|
||||||
(int)textp->key);
|
(int)textp->key);
|
||||||
|
|
||||||
png_memcpy(textp->key, text_ptr[i].key,
|
png_memcpy(textp->key, text_ptr[i].key,
|
||||||
(png_size_t)(key_len));
|
(png_size_t)(key_len));
|
||||||
*(textp->key+key_len) = '\0';
|
*(textp->key + key_len) = '\0';
|
||||||
#ifdef PNG_iTXt_SUPPORTED
|
#ifdef PNG_iTXt_SUPPORTED
|
||||||
if (text_ptr[i].compression > 0)
|
if (text_ptr[i].compression > 0)
|
||||||
{
|
{
|
||||||
textp->lang=textp->key + key_len + 1;
|
textp->lang=textp->key + key_len + 1;
|
||||||
png_memcpy(textp->lang, text_ptr[i].lang, lang_len);
|
png_memcpy(textp->lang, text_ptr[i].lang, lang_len);
|
||||||
*(textp->lang+lang_len) = '\0';
|
*(textp->lang + lang_len) = '\0';
|
||||||
textp->lang_key=textp->lang + lang_len + 1;
|
textp->lang_key=textp->lang + lang_len + 1;
|
||||||
png_memcpy(textp->lang_key, text_ptr[i].lang_key, lang_key_len);
|
png_memcpy(textp->lang_key, text_ptr[i].lang_key, lang_key_len);
|
||||||
*(textp->lang_key+lang_key_len) = '\0';
|
*(textp->lang_key + lang_key_len) = '\0';
|
||||||
textp->text=textp->lang_key + lang_key_len + 1;
|
textp->text=textp->lang_key + lang_key_len + 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -864,13 +872,13 @@ png_set_text_2(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr,
|
|||||||
#endif
|
#endif
|
||||||
textp->text=textp->key + key_len + 1;
|
textp->text=textp->key + key_len + 1;
|
||||||
}
|
}
|
||||||
if(text_length)
|
if (text_length)
|
||||||
png_memcpy(textp->text, text_ptr[i].text,
|
png_memcpy(textp->text, text_ptr[i].text,
|
||||||
(png_size_t)(text_length));
|
(png_size_t)(text_length));
|
||||||
*(textp->text+text_length) = '\0';
|
*(textp->text + text_length) = '\0';
|
||||||
|
|
||||||
#ifdef PNG_iTXt_SUPPORTED
|
#ifdef PNG_iTXt_SUPPORTED
|
||||||
if(textp->compression > 0)
|
if (textp->compression > 0)
|
||||||
{
|
{
|
||||||
textp->text_length = 0;
|
textp->text_length = 0;
|
||||||
textp->itxt_length = text_length;
|
textp->itxt_length = text_length;
|
||||||
@ -913,8 +921,6 @@ png_set_tRNS(png_structp png_ptr, png_infop info_ptr,
|
|||||||
if (png_ptr == NULL || info_ptr == NULL)
|
if (png_ptr == NULL || info_ptr == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
png_free_data(png_ptr, info_ptr, PNG_FREE_TRNS, 0);
|
|
||||||
|
|
||||||
if (trans != NULL)
|
if (trans != NULL)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -923,6 +929,10 @@ png_set_tRNS(png_structp png_ptr, png_infop info_ptr,
|
|||||||
* function used to do the allocation.
|
* function used to do the allocation.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef PNG_FREE_ME_SUPPORTED
|
||||||
|
png_free_data(png_ptr, info_ptr, PNG_FREE_TRNS, 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Changed from num_trans to PNG_MAX_PALETTE_LENGTH in version 1.2.1 */
|
/* Changed from num_trans to PNG_MAX_PALETTE_LENGTH in version 1.2.1 */
|
||||||
png_ptr->trans = info_ptr->trans = (png_bytep)png_malloc(png_ptr,
|
png_ptr->trans = info_ptr->trans = (png_bytep)png_malloc(png_ptr,
|
||||||
(png_uint_32)PNG_MAX_PALETTE_LENGTH);
|
(png_uint_32)PNG_MAX_PALETTE_LENGTH);
|
||||||
@ -964,6 +974,13 @@ png_set_tRNS(png_structp png_ptr, png_infop info_ptr,
|
|||||||
void PNGAPI
|
void PNGAPI
|
||||||
png_set_sPLT(png_structp png_ptr,
|
png_set_sPLT(png_structp png_ptr,
|
||||||
png_infop info_ptr, png_sPLT_tp entries, int nentries)
|
png_infop info_ptr, png_sPLT_tp entries, int nentries)
|
||||||
|
/*
|
||||||
|
* entries - array of png_sPLT_t structures
|
||||||
|
* to be added to the list of palettes
|
||||||
|
* in the info structure.
|
||||||
|
* nentries - number of palette structures to be
|
||||||
|
* added.
|
||||||
|
*/
|
||||||
{
|
{
|
||||||
png_sPLT_tp np;
|
png_sPLT_tp np;
|
||||||
int i;
|
int i;
|
||||||
@ -972,7 +989,8 @@ png_set_sPLT(png_structp png_ptr,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
np = (png_sPLT_tp)png_malloc_warn(png_ptr,
|
np = (png_sPLT_tp)png_malloc_warn(png_ptr,
|
||||||
(info_ptr->splt_palettes_num + nentries) * png_sizeof(png_sPLT_t));
|
(info_ptr->splt_palettes_num + nentries) *
|
||||||
|
(png_uint_32)png_sizeof(png_sPLT_t));
|
||||||
if (np == NULL)
|
if (np == NULL)
|
||||||
{
|
{
|
||||||
png_warning(png_ptr, "No memory for sPLT palettes.");
|
png_warning(png_ptr, "No memory for sPLT palettes.");
|
||||||
@ -1000,7 +1018,7 @@ png_set_sPLT(png_structp png_ptr,
|
|||||||
}
|
}
|
||||||
png_memcpy(to->name, from->name, length);
|
png_memcpy(to->name, from->name, length);
|
||||||
to->entries = (png_sPLT_entryp)png_malloc_warn(png_ptr,
|
to->entries = (png_sPLT_entryp)png_malloc_warn(png_ptr,
|
||||||
from->nentries * png_sizeof(png_sPLT_entry));
|
(png_uint_32)(from->nentries * png_sizeof(png_sPLT_entry)));
|
||||||
if (to->entries == NULL)
|
if (to->entries == NULL)
|
||||||
{
|
{
|
||||||
png_warning(png_ptr,
|
png_warning(png_ptr,
|
||||||
@ -1036,8 +1054,8 @@ png_set_unknown_chunks(png_structp png_ptr,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
np = (png_unknown_chunkp)png_malloc_warn(png_ptr,
|
np = (png_unknown_chunkp)png_malloc_warn(png_ptr,
|
||||||
(info_ptr->unknown_chunks_num + num_unknowns) *
|
(png_uint_32)((info_ptr->unknown_chunks_num + num_unknowns) *
|
||||||
png_sizeof(png_unknown_chunk));
|
png_sizeof(png_unknown_chunk)));
|
||||||
if (np == NULL)
|
if (np == NULL)
|
||||||
{
|
{
|
||||||
png_warning(png_ptr,
|
png_warning(png_ptr,
|
||||||
@ -1067,12 +1085,13 @@ png_set_unknown_chunks(png_structp png_ptr,
|
|||||||
to->data=NULL;
|
to->data=NULL;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
to->data = (png_bytep)png_malloc_warn(png_ptr, from->size);
|
to->data = (png_bytep)png_malloc_warn(png_ptr,
|
||||||
|
(png_uint_32)from->size);
|
||||||
if (to->data == NULL)
|
if (to->data == NULL)
|
||||||
{
|
{
|
||||||
png_warning(png_ptr,
|
png_warning(png_ptr,
|
||||||
"Out of memory while processing unknown chunk.");
|
"Out of memory while processing unknown chunk.");
|
||||||
to->size=0;
|
to->size = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
png_memcpy(to->data, from->data, from->size);
|
png_memcpy(to->data, from->data, from->size);
|
||||||
@ -1089,7 +1108,7 @@ void PNGAPI
|
|||||||
png_set_unknown_chunk_location(png_structp png_ptr, png_infop info_ptr,
|
png_set_unknown_chunk_location(png_structp png_ptr, png_infop info_ptr,
|
||||||
int chunk, int location)
|
int chunk, int location)
|
||||||
{
|
{
|
||||||
if(png_ptr != NULL && info_ptr != NULL && chunk >= 0 && chunk <
|
if (png_ptr != NULL && info_ptr != NULL && chunk >= 0 && chunk <
|
||||||
(int)info_ptr->unknown_chunks_num)
|
(int)info_ptr->unknown_chunks_num)
|
||||||
info_ptr->unknown_chunks[chunk].location = (png_byte)location;
|
info_ptr->unknown_chunks[chunk].location = (png_byte)location;
|
||||||
}
|
}
|
||||||
@ -1137,12 +1156,12 @@ png_set_keep_unknown_chunks(png_structp png_ptr, int keep, png_bytep
|
|||||||
return;
|
return;
|
||||||
if (num_chunks == 0)
|
if (num_chunks == 0)
|
||||||
{
|
{
|
||||||
if(keep == PNG_HANDLE_CHUNK_ALWAYS || keep == PNG_HANDLE_CHUNK_IF_SAFE)
|
if (keep == PNG_HANDLE_CHUNK_ALWAYS || keep == PNG_HANDLE_CHUNK_IF_SAFE)
|
||||||
png_ptr->flags |= PNG_FLAG_KEEP_UNKNOWN_CHUNKS;
|
png_ptr->flags |= PNG_FLAG_KEEP_UNKNOWN_CHUNKS;
|
||||||
else
|
else
|
||||||
png_ptr->flags &= ~PNG_FLAG_KEEP_UNKNOWN_CHUNKS;
|
png_ptr->flags &= ~PNG_FLAG_KEEP_UNKNOWN_CHUNKS;
|
||||||
|
|
||||||
if(keep == PNG_HANDLE_CHUNK_ALWAYS)
|
if (keep == PNG_HANDLE_CHUNK_ALWAYS)
|
||||||
png_ptr->flags |= PNG_FLAG_KEEP_UNSAFE_CHUNKS;
|
png_ptr->flags |= PNG_FLAG_KEEP_UNSAFE_CHUNKS;
|
||||||
else
|
else
|
||||||
png_ptr->flags &= ~PNG_FLAG_KEEP_UNSAFE_CHUNKS;
|
png_ptr->flags &= ~PNG_FLAG_KEEP_UNSAFE_CHUNKS;
|
||||||
@ -1152,19 +1171,20 @@ png_set_keep_unknown_chunks(png_structp png_ptr, int keep, png_bytep
|
|||||||
return;
|
return;
|
||||||
old_num_chunks=png_ptr->num_chunk_list;
|
old_num_chunks=png_ptr->num_chunk_list;
|
||||||
new_list=(png_bytep)png_malloc(png_ptr,
|
new_list=(png_bytep)png_malloc(png_ptr,
|
||||||
(png_uint_32)(5*(num_chunks+old_num_chunks)));
|
(png_uint_32)
|
||||||
if(png_ptr->chunk_list != NULL)
|
(5*(num_chunks + old_num_chunks)));
|
||||||
|
if (png_ptr->chunk_list != NULL)
|
||||||
{
|
{
|
||||||
png_memcpy(new_list, png_ptr->chunk_list,
|
png_memcpy(new_list, png_ptr->chunk_list,
|
||||||
(png_size_t)(5*old_num_chunks));
|
(png_size_t)(5*old_num_chunks));
|
||||||
png_free(png_ptr, png_ptr->chunk_list);
|
png_free(png_ptr, png_ptr->chunk_list);
|
||||||
png_ptr->chunk_list=NULL;
|
png_ptr->chunk_list=NULL;
|
||||||
}
|
}
|
||||||
png_memcpy(new_list+5*old_num_chunks, chunk_list,
|
png_memcpy(new_list + 5*old_num_chunks, chunk_list,
|
||||||
(png_size_t)(5*num_chunks));
|
(png_size_t)(5*num_chunks));
|
||||||
for (p=new_list+5*old_num_chunks+4, i=0; i<num_chunks; i++, p+=5)
|
for (p=new_list + 5*old_num_chunks + 4, i = 0; i<num_chunks; i++, p += 5)
|
||||||
*p=(png_byte)keep;
|
*p=(png_byte)keep;
|
||||||
png_ptr->num_chunk_list=old_num_chunks+num_chunks;
|
png_ptr->num_chunk_list=old_num_chunks + num_chunks;
|
||||||
png_ptr->chunk_list=new_list;
|
png_ptr->chunk_list=new_list;
|
||||||
#ifdef PNG_FREE_ME_SUPPORTED
|
#ifdef PNG_FREE_ME_SUPPORTED
|
||||||
png_ptr->free_me |= PNG_FREE_LIST;
|
png_ptr->free_me |= PNG_FREE_LIST;
|
||||||
@ -1194,17 +1214,18 @@ png_set_rows(png_structp png_ptr, png_infop info_ptr, png_bytepp row_pointers)
|
|||||||
if (png_ptr == NULL || info_ptr == NULL)
|
if (png_ptr == NULL || info_ptr == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(info_ptr->row_pointers && (info_ptr->row_pointers != row_pointers))
|
if (info_ptr->row_pointers && (info_ptr->row_pointers != row_pointers))
|
||||||
png_free_data(png_ptr, info_ptr, PNG_FREE_ROWS, 0);
|
png_free_data(png_ptr, info_ptr, PNG_FREE_ROWS, 0);
|
||||||
info_ptr->row_pointers = row_pointers;
|
info_ptr->row_pointers = row_pointers;
|
||||||
if(row_pointers)
|
if (row_pointers)
|
||||||
info_ptr->valid |= PNG_INFO_IDAT;
|
info_ptr->valid |= PNG_INFO_IDAT;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef PNG_WRITE_SUPPORTED
|
#ifdef PNG_WRITE_SUPPORTED
|
||||||
void PNGAPI
|
void PNGAPI
|
||||||
png_set_compression_buffer_size(png_structp png_ptr, png_uint_32 size)
|
png_set_compression_buffer_size(png_structp png_ptr,
|
||||||
|
png_uint_32 size)
|
||||||
{
|
{
|
||||||
if (png_ptr == NULL)
|
if (png_ptr == NULL)
|
||||||
return;
|
return;
|
||||||
@ -1257,7 +1278,7 @@ png_set_user_limits (png_structp png_ptr, png_uint_32 user_width_max,
|
|||||||
* rejected by png_set_IHDR(). To accept any PNG datastream
|
* rejected by png_set_IHDR(). To accept any PNG datastream
|
||||||
* regardless of dimensions, set both limits to 0x7ffffffL.
|
* regardless of dimensions, set both limits to 0x7ffffffL.
|
||||||
*/
|
*/
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_ptr->user_width_max = user_width_max;
|
png_ptr->user_width_max = user_width_max;
|
||||||
png_ptr->user_height_max = user_height_max;
|
png_ptr->user_height_max = user_height_max;
|
||||||
}
|
}
|
||||||
|
184
pngtest.c
184
pngtest.c
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/* pngtest.c - a simple test program to test libpng
|
/* pngtest.c - a simple test program to test libpng
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.2.30 [July 6, 2008]
|
* Last changed in libpng 1.2.30 [July 10, 2008]
|
||||||
* For conditions of distribution and use, see copyright notice in png.h
|
* For conditions of distribution and use, see copyright notice in png.h
|
||||||
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
@ -83,7 +83,7 @@ static float t_start, t_stop, t_decode, t_encode, t_misc;
|
|||||||
|
|
||||||
#if defined(PNG_TIME_RFC1123_SUPPORTED)
|
#if defined(PNG_TIME_RFC1123_SUPPORTED)
|
||||||
#define PNG_tIME_STRING_LENGTH 30
|
#define PNG_tIME_STRING_LENGTH 30
|
||||||
static int tIME_chunk_present=0;
|
static int tIME_chunk_present = 0;
|
||||||
static char tIME_string[PNG_tIME_STRING_LENGTH] = "no tIME chunk present in file";
|
static char tIME_string[PNG_tIME_STRING_LENGTH] = "no tIME chunk present in file";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -110,9 +110,9 @@ int test_one_file PNGARG((PNG_CONST char *inname, PNG_CONST char *outname));
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* example of using row callbacks to make a simple progress meter */
|
/* example of using row callbacks to make a simple progress meter */
|
||||||
static int status_pass=1;
|
static int status_pass = 1;
|
||||||
static int status_dots_requested=0;
|
static int status_dots_requested = 0;
|
||||||
static int status_dots=1;
|
static int status_dots = 1;
|
||||||
|
|
||||||
void
|
void
|
||||||
#ifdef PNG_1_0_X
|
#ifdef PNG_1_0_X
|
||||||
@ -125,15 +125,15 @@ PNGAPI
|
|||||||
#endif
|
#endif
|
||||||
read_row_callback(png_structp png_ptr, png_uint_32 row_number, int pass)
|
read_row_callback(png_structp png_ptr, png_uint_32 row_number, int pass)
|
||||||
{
|
{
|
||||||
if(png_ptr == NULL || row_number > PNG_UINT_31_MAX) return;
|
if (png_ptr == NULL || row_number > PNG_UINT_31_MAX) return;
|
||||||
if(status_pass != pass)
|
if (status_pass != pass)
|
||||||
{
|
{
|
||||||
fprintf(stdout, "\n Pass %d: ", pass);
|
fprintf(stdout, "\n Pass %d: ", pass);
|
||||||
status_pass = pass;
|
status_pass = pass;
|
||||||
status_dots = 31;
|
status_dots = 31;
|
||||||
}
|
}
|
||||||
status_dots--;
|
status_dots--;
|
||||||
if(status_dots == 0)
|
if (status_dots == 0)
|
||||||
{
|
{
|
||||||
fprintf(stdout, "\n ");
|
fprintf(stdout, "\n ");
|
||||||
status_dots=30;
|
status_dots=30;
|
||||||
@ -152,7 +152,7 @@ PNGAPI
|
|||||||
#endif
|
#endif
|
||||||
write_row_callback(png_structp png_ptr, png_uint_32 row_number, int pass)
|
write_row_callback(png_structp png_ptr, png_uint_32 row_number, int pass)
|
||||||
{
|
{
|
||||||
if(png_ptr == NULL || row_number > PNG_UINT_31_MAX || pass > 7) return;
|
if (png_ptr == NULL || row_number > PNG_UINT_31_MAX || pass > 7) return;
|
||||||
fprintf(stdout, "w");
|
fprintf(stdout, "w");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -173,8 +173,8 @@ PNGAPI
|
|||||||
#endif
|
#endif
|
||||||
count_filters(png_structp png_ptr, png_row_infop row_info, png_bytep data)
|
count_filters(png_structp png_ptr, png_row_infop row_info, png_bytep data)
|
||||||
{
|
{
|
||||||
if(png_ptr != NULL && row_info != NULL)
|
if (png_ptr != NULL && row_info != NULL)
|
||||||
++filters_used[*(data-1)];
|
++filters_used[*(data - 1)];
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -196,7 +196,7 @@ PNGAPI
|
|||||||
count_zero_samples(png_structp png_ptr, png_row_infop row_info, png_bytep data)
|
count_zero_samples(png_structp png_ptr, png_row_infop row_info, png_bytep data)
|
||||||
{
|
{
|
||||||
png_bytep dp = data;
|
png_bytep dp = data;
|
||||||
if(png_ptr == NULL)return;
|
if (png_ptr == NULL)return;
|
||||||
|
|
||||||
/* contents of row_info:
|
/* contents of row_info:
|
||||||
* png_uint_32 width width of row
|
* png_uint_32 width width of row
|
||||||
@ -210,44 +210,44 @@ count_zero_samples(png_structp png_ptr, png_row_infop row_info, png_bytep data)
|
|||||||
|
|
||||||
/* counts the number of zero samples (or zero pixels if color_type is 3 */
|
/* counts the number of zero samples (or zero pixels if color_type is 3 */
|
||||||
|
|
||||||
if(row_info->color_type == 0 || row_info->color_type == 3)
|
if (row_info->color_type == 0 || row_info->color_type == 3)
|
||||||
{
|
{
|
||||||
int pos=0;
|
int pos = 0;
|
||||||
png_uint_32 n, nstop;
|
png_uint_32 n, nstop;
|
||||||
for (n=0, nstop=row_info->width; n<nstop; n++)
|
for (n = 0, nstop=row_info->width; n<nstop; n++)
|
||||||
{
|
{
|
||||||
if(row_info->bit_depth == 1)
|
if (row_info->bit_depth == 1)
|
||||||
{
|
{
|
||||||
if(((*dp << pos++ ) & 0x80) == 0) zero_samples++;
|
if (((*dp << pos++ ) & 0x80) == 0) zero_samples++;
|
||||||
if(pos == 8)
|
if (pos == 8)
|
||||||
{
|
{
|
||||||
pos = 0;
|
pos = 0;
|
||||||
dp++;
|
dp++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(row_info->bit_depth == 2)
|
if (row_info->bit_depth == 2)
|
||||||
{
|
{
|
||||||
if(((*dp << (pos+=2)) & 0xc0) == 0) zero_samples++;
|
if (((*dp << (pos+=2)) & 0xc0) == 0) zero_samples++;
|
||||||
if(pos == 8)
|
if (pos == 8)
|
||||||
{
|
{
|
||||||
pos = 0;
|
pos = 0;
|
||||||
dp++;
|
dp++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(row_info->bit_depth == 4)
|
if (row_info->bit_depth == 4)
|
||||||
{
|
{
|
||||||
if(((*dp << (pos+=4)) & 0xf0) == 0) zero_samples++;
|
if (((*dp << (pos+=4)) & 0xf0) == 0) zero_samples++;
|
||||||
if(pos == 8)
|
if (pos == 8)
|
||||||
{
|
{
|
||||||
pos = 0;
|
pos = 0;
|
||||||
dp++;
|
dp++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(row_info->bit_depth == 8)
|
if (row_info->bit_depth == 8)
|
||||||
if(*dp++ == 0) zero_samples++;
|
if (*dp++ == 0) zero_samples++;
|
||||||
if(row_info->bit_depth == 16)
|
if (row_info->bit_depth == 16)
|
||||||
{
|
{
|
||||||
if((*dp | *(dp+1)) == 0) zero_samples++;
|
if ((*dp | *(dp+1)) == 0) zero_samples++;
|
||||||
dp+=2;
|
dp+=2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -257,24 +257,24 @@ count_zero_samples(png_structp png_ptr, png_row_infop row_info, png_bytep data)
|
|||||||
png_uint_32 n, nstop;
|
png_uint_32 n, nstop;
|
||||||
int channel;
|
int channel;
|
||||||
int color_channels = row_info->channels;
|
int color_channels = row_info->channels;
|
||||||
if(row_info->color_type > 3)color_channels--;
|
if (row_info->color_type > 3)color_channels--;
|
||||||
|
|
||||||
for (n=0, nstop=row_info->width; n<nstop; n++)
|
for (n = 0, nstop=row_info->width; n<nstop; n++)
|
||||||
{
|
{
|
||||||
for (channel = 0; channel < color_channels; channel++)
|
for (channel = 0; channel < color_channels; channel++)
|
||||||
{
|
{
|
||||||
if(row_info->bit_depth == 8)
|
if (row_info->bit_depth == 8)
|
||||||
if(*dp++ == 0) zero_samples++;
|
if (*dp++ == 0) zero_samples++;
|
||||||
if(row_info->bit_depth == 16)
|
if (row_info->bit_depth == 16)
|
||||||
{
|
{
|
||||||
if((*dp | *(dp+1)) == 0) zero_samples++;
|
if ((*dp | *(dp+1)) == 0) zero_samples++;
|
||||||
dp+=2;
|
dp+=2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(row_info->color_type > 3)
|
if (row_info->color_type > 3)
|
||||||
{
|
{
|
||||||
dp++;
|
dp++;
|
||||||
if(row_info->bit_depth == 16)dp++;
|
if (row_info->bit_depth == 16)dp++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -342,7 +342,7 @@ pngtest_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
|||||||
read = MIN(NEAR_BUF_SIZE, remaining);
|
read = MIN(NEAR_BUF_SIZE, remaining);
|
||||||
READFILE(io_ptr, buf, 1, err);
|
READFILE(io_ptr, buf, 1, err);
|
||||||
png_memcpy(data, buf, read); /* copy far buffer to near buffer */
|
png_memcpy(data, buf, read); /* copy far buffer to near buffer */
|
||||||
if(err != read)
|
if (err != read)
|
||||||
break;
|
break;
|
||||||
else
|
else
|
||||||
check += err;
|
check += err;
|
||||||
@ -436,8 +436,6 @@ pngtest_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* USE_FAR_KEYWORD */
|
#endif /* USE_FAR_KEYWORD */
|
||||||
#endif /* PNG_NO_STDIO */
|
|
||||||
/* END of code to validate stdio-free compilation */
|
|
||||||
|
|
||||||
/* This function is called when there is a warning, but the library thinks
|
/* This function is called when there is a warning, but the library thinks
|
||||||
* it can continue anyway. Replacement functions don't have to do anything
|
* it can continue anyway. Replacement functions don't have to do anything
|
||||||
@ -465,6 +463,8 @@ pngtest_error(png_structp png_ptr, png_const_charp message)
|
|||||||
/* We can return because png_error calls the default handler, which is
|
/* We can return because png_error calls the default handler, which is
|
||||||
* actually OK in this case. */
|
* actually OK in this case. */
|
||||||
}
|
}
|
||||||
|
#endif /* PNG_NO_STDIO */
|
||||||
|
/* END of code to validate stdio-free compilation */
|
||||||
|
|
||||||
/* START of code to validate memory allocation and deallocation */
|
/* START of code to validate memory allocation and deallocation */
|
||||||
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
|
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
|
||||||
@ -520,7 +520,8 @@ png_debug_malloc(png_structp png_ptr, png_uint_32 size)
|
|||||||
maximum_allocation = current_allocation;
|
maximum_allocation = current_allocation;
|
||||||
pinfo->pointer = (png_voidp)png_malloc(png_ptr, size);
|
pinfo->pointer = (png_voidp)png_malloc(png_ptr, size);
|
||||||
/* Restore malloc_fn and free_fn */
|
/* Restore malloc_fn and free_fn */
|
||||||
png_set_mem_fn(png_ptr, png_voidp_NULL, (png_malloc_ptr)png_debug_malloc,
|
png_set_mem_fn(png_ptr,
|
||||||
|
png_voidp_NULL, (png_malloc_ptr)png_debug_malloc,
|
||||||
(png_free_ptr)png_debug_free);
|
(png_free_ptr)png_debug_free);
|
||||||
if (size != 0 && pinfo->pointer == NULL)
|
if (size != 0 && pinfo->pointer == NULL)
|
||||||
{
|
{
|
||||||
@ -533,7 +534,7 @@ png_debug_malloc(png_structp png_ptr, png_uint_32 size)
|
|||||||
pinformation = pinfo;
|
pinformation = pinfo;
|
||||||
/* Make sure the caller isn't assuming zeroed memory. */
|
/* Make sure the caller isn't assuming zeroed memory. */
|
||||||
png_memset(pinfo->pointer, 0xdd, pinfo->size);
|
png_memset(pinfo->pointer, 0xdd, pinfo->size);
|
||||||
if(verbose)
|
if (verbose)
|
||||||
printf("png_malloc %lu bytes at %x\n", (unsigned long)size,
|
printf("png_malloc %lu bytes at %x\n", (unsigned long)size,
|
||||||
pinfo->pointer);
|
pinfo->pointer);
|
||||||
return (png_voidp)(pinfo->pointer);
|
return (png_voidp)(pinfo->pointer);
|
||||||
@ -583,7 +584,7 @@ png_debug_free(png_structp png_ptr, png_voidp ptr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Finally free the data. */
|
/* Finally free the data. */
|
||||||
if(verbose)
|
if (verbose)
|
||||||
printf("Freeing %x\n", ptr);
|
printf("Freeing %x\n", ptr);
|
||||||
png_free_default(png_ptr, ptr);
|
png_free_default(png_ptr, ptr);
|
||||||
ptr=NULL;
|
ptr=NULL;
|
||||||
@ -718,36 +719,44 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
|
|
||||||
png_debug(0, "Allocating read and write structures\n");
|
png_debug(0, "Allocating read and write structures\n");
|
||||||
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
|
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
|
||||||
read_ptr = png_create_read_struct_2(PNG_LIBPNG_VER_STRING, png_voidp_NULL,
|
read_ptr =
|
||||||
|
png_create_read_struct_2(PNG_LIBPNG_VER_STRING, png_voidp_NULL,
|
||||||
png_error_ptr_NULL, png_error_ptr_NULL, png_voidp_NULL,
|
png_error_ptr_NULL, png_error_ptr_NULL, png_voidp_NULL,
|
||||||
(png_malloc_ptr)png_debug_malloc, (png_free_ptr)png_debug_free);
|
(png_malloc_ptr)png_debug_malloc, (png_free_ptr)png_debug_free);
|
||||||
#else
|
#else
|
||||||
read_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, png_voidp_NULL,
|
read_ptr =
|
||||||
|
png_create_read_struct(PNG_LIBPNG_VER_STRING, png_voidp_NULL,
|
||||||
png_error_ptr_NULL, png_error_ptr_NULL);
|
png_error_ptr_NULL, png_error_ptr_NULL);
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(PNG_NO_STDIO)
|
||||||
png_set_error_fn(read_ptr, (png_voidp)inname, pngtest_error,
|
png_set_error_fn(read_ptr, (png_voidp)inname, pngtest_error,
|
||||||
pngtest_warning);
|
pngtest_warning);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
|
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
|
||||||
user_chunk_data[0]=0;
|
user_chunk_data[0] = 0;
|
||||||
user_chunk_data[1]=0;
|
user_chunk_data[1] = 0;
|
||||||
user_chunk_data[2]=0;
|
user_chunk_data[2] = 0;
|
||||||
user_chunk_data[3]=0;
|
user_chunk_data[3] = 0;
|
||||||
png_set_read_user_chunk_fn(read_ptr, user_chunk_data,
|
png_set_read_user_chunk_fn(read_ptr, user_chunk_data,
|
||||||
read_user_chunk_callback);
|
read_user_chunk_callback);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef PNG_WRITE_SUPPORTED
|
#ifdef PNG_WRITE_SUPPORTED
|
||||||
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
|
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
|
||||||
write_ptr = png_create_write_struct_2(PNG_LIBPNG_VER_STRING, png_voidp_NULL,
|
write_ptr =
|
||||||
|
png_create_write_struct_2(PNG_LIBPNG_VER_STRING, png_voidp_NULL,
|
||||||
png_error_ptr_NULL, png_error_ptr_NULL, png_voidp_NULL,
|
png_error_ptr_NULL, png_error_ptr_NULL, png_voidp_NULL,
|
||||||
(png_malloc_ptr)png_debug_malloc, (png_free_ptr)png_debug_free);
|
(png_malloc_ptr)png_debug_malloc, (png_free_ptr)png_debug_free);
|
||||||
#else
|
#else
|
||||||
write_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, png_voidp_NULL,
|
write_ptr =
|
||||||
|
png_create_write_struct(PNG_LIBPNG_VER_STRING, png_voidp_NULL,
|
||||||
png_error_ptr_NULL, png_error_ptr_NULL);
|
png_error_ptr_NULL, png_error_ptr_NULL);
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(PNG_NO_STDIO)
|
||||||
png_set_error_fn(write_ptr, (png_voidp)inname, pngtest_error,
|
png_set_error_fn(write_ptr, (png_voidp)inname, pngtest_error,
|
||||||
pngtest_warning);
|
pngtest_warning);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
png_debug(0, "Allocating read_info, write_info and end_info structures\n");
|
png_debug(0, "Allocating read_info, write_info and end_info structures\n");
|
||||||
read_info_ptr = png_create_info_struct(read_ptr);
|
read_info_ptr = png_create_info_struct(read_ptr);
|
||||||
@ -766,6 +775,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
fprintf(STDERR, "%s -> %s: libpng read error\n", inname, outname);
|
fprintf(STDERR, "%s -> %s: libpng read error\n", inname, outname);
|
||||||
|
if (row_buf)
|
||||||
png_free(read_ptr, row_buf);
|
png_free(read_ptr, row_buf);
|
||||||
png_destroy_read_struct(&read_ptr, &read_info_ptr, &end_info_ptr);
|
png_destroy_read_struct(&read_ptr, &read_info_ptr, &end_info_ptr);
|
||||||
#ifdef PNG_WRITE_SUPPORTED
|
#ifdef PNG_WRITE_SUPPORTED
|
||||||
@ -821,7 +831,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
if(status_dots_requested == 1)
|
if (status_dots_requested == 1)
|
||||||
{
|
{
|
||||||
#ifdef PNG_WRITE_SUPPORTED
|
#ifdef PNG_WRITE_SUPPORTED
|
||||||
png_set_write_status_fn(write_ptr, write_row_callback);
|
png_set_write_status_fn(write_ptr, write_row_callback);
|
||||||
@ -839,13 +849,13 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
|
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for(i=0; i<256; i++)
|
for (i = 0; i<256; i++)
|
||||||
filters_used[i]=0;
|
filters_used[i] = 0;
|
||||||
png_set_read_user_transform_fn(read_ptr, count_filters);
|
png_set_read_user_transform_fn(read_ptr, count_filters);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
|
#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
|
||||||
zero_samples=0;
|
zero_samples = 0;
|
||||||
png_set_write_user_transform_fn(write_ptr, count_zero_samples);
|
png_set_write_user_transform_fn(write_ptr, count_zero_samples);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1086,7 +1096,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
png_memcpy(tIME_string,
|
png_memcpy(tIME_string,
|
||||||
png_convert_to_rfc1123(read_ptr, mod_time),
|
png_convert_to_rfc1123(read_ptr, mod_time),
|
||||||
png_sizeof(tIME_string));
|
png_sizeof(tIME_string));
|
||||||
tIME_string[png_sizeof(tIME_string)-1] = '\0';
|
tIME_string[png_sizeof(tIME_string) - 1] = '\0';
|
||||||
tIME_chunk_present++;
|
tIME_chunk_present++;
|
||||||
#endif /* PNG_TIME_RFC1123_SUPPORTED */
|
#endif /* PNG_TIME_RFC1123_SUPPORTED */
|
||||||
}
|
}
|
||||||
@ -1150,10 +1160,10 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
unsigned char
|
unsigned char
|
||||||
ster_chunk_data[1];
|
ster_chunk_data[1];
|
||||||
|
|
||||||
if(verbose)
|
if (verbose)
|
||||||
fprintf(STDERR, "stereo mode = %lu\n",
|
fprintf(STDERR, "stereo mode = %lu\n",
|
||||||
(unsigned long)(user_chunk_data[0]-1));
|
(unsigned long)(user_chunk_data[0] - 1));
|
||||||
ster_chunk_data[0]=(unsigned char)(user_chunk_data[0]-1);
|
ster_chunk_data[0]=(unsigned char)(user_chunk_data[0] - 1);
|
||||||
png_write_chunk(write_ptr, png_sTER, ster_chunk_data, 1);
|
png_write_chunk(write_ptr, png_sTER, ster_chunk_data, 1);
|
||||||
}
|
}
|
||||||
if (user_chunk_data[1] != 0 || user_chunk_data[2] != 0)
|
if (user_chunk_data[1] != 0 || user_chunk_data[2] != 0)
|
||||||
@ -1163,7 +1173,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
unsigned char
|
unsigned char
|
||||||
vpag_chunk_data[9];
|
vpag_chunk_data[9];
|
||||||
|
|
||||||
if(verbose)
|
if (verbose)
|
||||||
fprintf(STDERR, "vpAg = %lu x %lu, units=%lu\n",
|
fprintf(STDERR, "vpAg = %lu x %lu, units=%lu\n",
|
||||||
(unsigned long)user_chunk_data[1],
|
(unsigned long)user_chunk_data[1],
|
||||||
(unsigned long)user_chunk_data[2],
|
(unsigned long)user_chunk_data[2],
|
||||||
@ -1192,7 +1202,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
png_set_interlace_handling(write_ptr);
|
png_set_interlace_handling(write_ptr);
|
||||||
# endif
|
# endif
|
||||||
#else
|
#else
|
||||||
num_pass=1;
|
num_pass = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef PNGTEST_TIMING
|
#ifdef PNGTEST_TIMING
|
||||||
@ -1271,7 +1281,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
png_memcpy(tIME_string,
|
png_memcpy(tIME_string,
|
||||||
png_convert_to_rfc1123(read_ptr, mod_time),
|
png_convert_to_rfc1123(read_ptr, mod_time),
|
||||||
png_sizeof(tIME_string));
|
png_sizeof(tIME_string));
|
||||||
tIME_string[png_sizeof(tIME_string)-1] = '\0';
|
tIME_string[png_sizeof(tIME_string) - 1] = '\0';
|
||||||
tIME_chunk_present++;
|
tIME_chunk_present++;
|
||||||
#endif /* PNG_TIME_RFC1123_SUPPORTED */
|
#endif /* PNG_TIME_RFC1123_SUPPORTED */
|
||||||
}
|
}
|
||||||
@ -1302,7 +1312,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef PNG_EASY_ACCESS_SUPPORTED
|
#ifdef PNG_EASY_ACCESS_SUPPORTED
|
||||||
if(verbose)
|
if (verbose)
|
||||||
{
|
{
|
||||||
png_uint_32 iwidth, iheight;
|
png_uint_32 iwidth, iheight;
|
||||||
iwidth = png_get_image_width(write_ptr, write_info_ptr);
|
iwidth = png_get_image_width(write_ptr, write_info_ptr);
|
||||||
@ -1355,7 +1365,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
png_size_t num_in, num_out;
|
png_size_t num_in, num_out;
|
||||||
|
|
||||||
@ -1366,7 +1376,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
{
|
{
|
||||||
fprintf(STDERR, "\nFiles %s and %s are of a different size\n",
|
fprintf(STDERR, "\nFiles %s and %s are of a different size\n",
|
||||||
inname, outname);
|
inname, outname);
|
||||||
if(wrote_question == 0)
|
if (wrote_question == 0)
|
||||||
{
|
{
|
||||||
fprintf(STDERR,
|
fprintf(STDERR,
|
||||||
" Was %s written with the same maximum IDAT chunk size (%d bytes),",
|
" Was %s written with the same maximum IDAT chunk size (%d bytes),",
|
||||||
@ -1376,7 +1386,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
fprintf(STDERR,
|
fprintf(STDERR,
|
||||||
" level (zlib default),\n and zlib version (%s)?\n\n",
|
" level (zlib default),\n and zlib version (%s)?\n\n",
|
||||||
ZLIB_VERSION);
|
ZLIB_VERSION);
|
||||||
wrote_question=1;
|
wrote_question = 1;
|
||||||
}
|
}
|
||||||
FCLOSE(fpin);
|
FCLOSE(fpin);
|
||||||
FCLOSE(fpout);
|
FCLOSE(fpout);
|
||||||
@ -1389,7 +1399,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
if (png_memcmp(inbuf, outbuf, num_in))
|
if (png_memcmp(inbuf, outbuf, num_in))
|
||||||
{
|
{
|
||||||
fprintf(STDERR, "\nFiles %s and %s are different\n", inname, outname);
|
fprintf(STDERR, "\nFiles %s and %s are different\n", inname, outname);
|
||||||
if(wrote_question == 0)
|
if (wrote_question == 0)
|
||||||
{
|
{
|
||||||
fprintf(STDERR,
|
fprintf(STDERR,
|
||||||
" Was %s written with the same maximum IDAT chunk size (%d bytes),",
|
" Was %s written with the same maximum IDAT chunk size (%d bytes),",
|
||||||
@ -1399,7 +1409,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
fprintf(STDERR,
|
fprintf(STDERR,
|
||||||
" level (zlib default),\n and zlib version (%s)?\n\n",
|
" level (zlib default),\n and zlib version (%s)?\n\n",
|
||||||
ZLIB_VERSION);
|
ZLIB_VERSION);
|
||||||
wrote_question=1;
|
wrote_question = 1;
|
||||||
}
|
}
|
||||||
FCLOSE(fpin);
|
FCLOSE(fpin);
|
||||||
FCLOSE(fpout);
|
FCLOSE(fpout);
|
||||||
@ -1489,10 +1499,10 @@ main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!multiple && argc == 3+verbose)
|
if (!multiple && argc == 3 + verbose)
|
||||||
outname = argv[2+verbose];
|
outname = argv[2 + verbose];
|
||||||
|
|
||||||
if ((!multiple && argc > 3+verbose) || (multiple && argc < 2))
|
if ((!multiple && argc > 3 + verbose) || (multiple && argc < 2))
|
||||||
{
|
{
|
||||||
fprintf(STDERR,
|
fprintf(STDERR,
|
||||||
"usage: %s [infile.png] [outfile.png]\n\t%s -m {infile.png}\n",
|
"usage: %s [infile.png] [outfile.png]\n\t%s -m {infile.png}\n",
|
||||||
@ -1527,13 +1537,13 @@ main(int argc, char *argv[])
|
|||||||
fprintf(STDERR, " PASS\n");
|
fprintf(STDERR, " PASS\n");
|
||||||
#endif
|
#endif
|
||||||
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
|
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
|
||||||
for (k=0; k<256; k++)
|
for (k = 0; k<256; k++)
|
||||||
if(filters_used[k])
|
if (filters_used[k])
|
||||||
fprintf(STDERR, " Filter %d was used %lu times\n",
|
fprintf(STDERR, " Filter %d was used %lu times\n",
|
||||||
k, (unsigned long)filters_used[k]);
|
k, (unsigned long)filters_used[k]);
|
||||||
#endif
|
#endif
|
||||||
#if defined(PNG_TIME_RFC1123_SUPPORTED)
|
#if defined(PNG_TIME_RFC1123_SUPPORTED)
|
||||||
if(tIME_chunk_present != 0)
|
if (tIME_chunk_present != 0)
|
||||||
fprintf(STDERR, " tIME = %s\n", tIME_string);
|
fprintf(STDERR, " tIME = %s\n", tIME_string);
|
||||||
tIME_chunk_present = 0;
|
tIME_chunk_present = 0;
|
||||||
#endif /* PNG_TIME_RFC1123_SUPPORTED */
|
#endif /* PNG_TIME_RFC1123_SUPPORTED */
|
||||||
@ -1546,7 +1556,7 @@ main(int argc, char *argv[])
|
|||||||
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
|
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
|
||||||
if (allocation_now != current_allocation)
|
if (allocation_now != current_allocation)
|
||||||
fprintf(STDERR, "MEMORY ERROR: %d bytes lost\n",
|
fprintf(STDERR, "MEMORY ERROR: %d bytes lost\n",
|
||||||
current_allocation-allocation_now);
|
current_allocation - allocation_now);
|
||||||
if (current_allocation != 0)
|
if (current_allocation != 0)
|
||||||
{
|
{
|
||||||
memory_infop pinfo = pinformation;
|
memory_infop pinfo = pinformation;
|
||||||
@ -1555,7 +1565,8 @@ main(int argc, char *argv[])
|
|||||||
current_allocation);
|
current_allocation);
|
||||||
while (pinfo != NULL)
|
while (pinfo != NULL)
|
||||||
{
|
{
|
||||||
fprintf(STDERR, " %lu bytes at %x\n", (unsigned long)pinfo->size,
|
fprintf(STDERR, " %lu bytes at %x\n",
|
||||||
|
(unsigned long)pinfo->size,
|
||||||
(unsigned int) pinfo->pointer);
|
(unsigned int) pinfo->pointer);
|
||||||
pinfo = pinfo->next;
|
pinfo = pinfo->next;
|
||||||
}
|
}
|
||||||
@ -1576,20 +1587,20 @@ main(int argc, char *argv[])
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i=0; i<3; ++i)
|
for (i = 0; i<3; ++i)
|
||||||
{
|
{
|
||||||
int kerror;
|
int kerror;
|
||||||
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
|
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
|
||||||
int allocation_now = current_allocation;
|
int allocation_now = current_allocation;
|
||||||
#endif
|
#endif
|
||||||
if (i == 1) status_dots_requested = 1;
|
if (i == 1) status_dots_requested = 1;
|
||||||
else if(verbose == 0)status_dots_requested = 0;
|
else if (verbose == 0)status_dots_requested = 0;
|
||||||
if (i == 0 || verbose == 1 || ierror != 0)
|
if (i == 0 || verbose == 1 || ierror != 0)
|
||||||
fprintf(STDERR, "Testing %s:", inname);
|
fprintf(STDERR, "Testing %s:", inname);
|
||||||
kerror = test_one_file(inname, outname);
|
kerror = test_one_file(inname, outname);
|
||||||
if(kerror == 0)
|
if (kerror == 0)
|
||||||
{
|
{
|
||||||
if(verbose == 1 || i == 2)
|
if (verbose == 1 || i == 2)
|
||||||
{
|
{
|
||||||
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
|
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
|
||||||
int k;
|
int k;
|
||||||
@ -1601,20 +1612,21 @@ main(int argc, char *argv[])
|
|||||||
fprintf(STDERR, " PASS\n");
|
fprintf(STDERR, " PASS\n");
|
||||||
#endif
|
#endif
|
||||||
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
|
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
|
||||||
for (k=0; k<256; k++)
|
for (k = 0; k<256; k++)
|
||||||
if(filters_used[k])
|
if (filters_used[k])
|
||||||
fprintf(STDERR, " Filter %d was used %lu times\n",
|
fprintf(STDERR, " Filter %d was used %lu times\n",
|
||||||
k, (unsigned long)filters_used[k]);
|
k,
|
||||||
|
(unsigned long)filters_used[k]);
|
||||||
#endif
|
#endif
|
||||||
#if defined(PNG_TIME_RFC1123_SUPPORTED)
|
#if defined(PNG_TIME_RFC1123_SUPPORTED)
|
||||||
if(tIME_chunk_present != 0)
|
if (tIME_chunk_present != 0)
|
||||||
fprintf(STDERR, " tIME = %s\n", tIME_string);
|
fprintf(STDERR, " tIME = %s\n", tIME_string);
|
||||||
#endif /* PNG_TIME_RFC1123_SUPPORTED */
|
#endif /* PNG_TIME_RFC1123_SUPPORTED */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(verbose == 0 && i != 2)
|
if (verbose == 0 && i != 2)
|
||||||
fprintf(STDERR, "Testing %s:", inname);
|
fprintf(STDERR, "Testing %s:", inname);
|
||||||
fprintf(STDERR, " FAIL\n");
|
fprintf(STDERR, " FAIL\n");
|
||||||
ierror += kerror;
|
ierror += kerror;
|
||||||
@ -1622,7 +1634,7 @@ main(int argc, char *argv[])
|
|||||||
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
|
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
|
||||||
if (allocation_now != current_allocation)
|
if (allocation_now != current_allocation)
|
||||||
fprintf(STDERR, "MEMORY ERROR: %d bytes lost\n",
|
fprintf(STDERR, "MEMORY ERROR: %d bytes lost\n",
|
||||||
current_allocation-allocation_now);
|
current_allocation - allocation_now);
|
||||||
if (current_allocation != 0)
|
if (current_allocation != 0)
|
||||||
{
|
{
|
||||||
memory_infop pinfo = pinformation;
|
memory_infop pinfo = pinformation;
|
||||||
@ -1672,4 +1684,4 @@ main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Generate a compiler error if there is an old png.h in the search path. */
|
/* Generate a compiler error if there is an old png.h in the search path. */
|
||||||
typedef version_1_2_30beta03 your_png_h_is_not_version_1_2_30beta03;
|
typedef version_1_2_30beta04 your_png_h_is_not_version_1_2_30beta04;
|
||||||
|
26
pngtrans.c
26
pngtrans.c
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/* pngtrans.c - transforms the data in a row (used by both readers and writers)
|
/* pngtrans.c - transforms the data in a row (used by both readers and writers)
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.2.30 [July 6, 2008]
|
* Last changed in libpng 1.2.30 [July 10, 2008]
|
||||||
* For conditions of distribution and use, see copyright notice in png.h
|
* For conditions of distribution and use, see copyright notice in png.h
|
||||||
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
@ -18,7 +18,7 @@ void PNGAPI
|
|||||||
png_set_bgr(png_structp png_ptr)
|
png_set_bgr(png_structp png_ptr)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_bgr\n");
|
png_debug(1, "in png_set_bgr\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_ptr->transformations |= PNG_BGR;
|
png_ptr->transformations |= PNG_BGR;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -29,7 +29,7 @@ void PNGAPI
|
|||||||
png_set_swap(png_structp png_ptr)
|
png_set_swap(png_structp png_ptr)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_swap\n");
|
png_debug(1, "in png_set_swap\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
if (png_ptr->bit_depth == 16)
|
if (png_ptr->bit_depth == 16)
|
||||||
png_ptr->transformations |= PNG_SWAP_BYTES;
|
png_ptr->transformations |= PNG_SWAP_BYTES;
|
||||||
}
|
}
|
||||||
@ -41,7 +41,7 @@ void PNGAPI
|
|||||||
png_set_packing(png_structp png_ptr)
|
png_set_packing(png_structp png_ptr)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_packing\n");
|
png_debug(1, "in png_set_packing\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
if (png_ptr->bit_depth < 8)
|
if (png_ptr->bit_depth < 8)
|
||||||
{
|
{
|
||||||
png_ptr->transformations |= PNG_PACK;
|
png_ptr->transformations |= PNG_PACK;
|
||||||
@ -56,7 +56,7 @@ void PNGAPI
|
|||||||
png_set_packswap(png_structp png_ptr)
|
png_set_packswap(png_structp png_ptr)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_packswap\n");
|
png_debug(1, "in png_set_packswap\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
if (png_ptr->bit_depth < 8)
|
if (png_ptr->bit_depth < 8)
|
||||||
png_ptr->transformations |= PNG_PACKSWAP;
|
png_ptr->transformations |= PNG_PACKSWAP;
|
||||||
}
|
}
|
||||||
@ -67,7 +67,7 @@ void PNGAPI
|
|||||||
png_set_shift(png_structp png_ptr, png_color_8p true_bits)
|
png_set_shift(png_structp png_ptr, png_color_8p true_bits)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_shift\n");
|
png_debug(1, "in png_set_shift\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_ptr->transformations |= PNG_SHIFT;
|
png_ptr->transformations |= PNG_SHIFT;
|
||||||
png_ptr->shift = *true_bits;
|
png_ptr->shift = *true_bits;
|
||||||
}
|
}
|
||||||
@ -99,7 +99,7 @@ void PNGAPI
|
|||||||
png_set_filler(png_structp png_ptr, png_uint_32 filler, int filler_loc)
|
png_set_filler(png_structp png_ptr, png_uint_32 filler, int filler_loc)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_filler\n");
|
png_debug(1, "in png_set_filler\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_ptr->transformations |= PNG_FILLER;
|
png_ptr->transformations |= PNG_FILLER;
|
||||||
png_ptr->filler = (png_byte)filler;
|
png_ptr->filler = (png_byte)filler;
|
||||||
if (filler_loc == PNG_FILLER_AFTER)
|
if (filler_loc == PNG_FILLER_AFTER)
|
||||||
@ -132,7 +132,7 @@ void PNGAPI
|
|||||||
png_set_add_alpha(png_structp png_ptr, png_uint_32 filler, int filler_loc)
|
png_set_add_alpha(png_structp png_ptr, png_uint_32 filler, int filler_loc)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_add_alpha\n");
|
png_debug(1, "in png_set_add_alpha\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_set_filler(png_ptr, filler, filler_loc);
|
png_set_filler(png_ptr, filler, filler_loc);
|
||||||
png_ptr->transformations |= PNG_ADD_ALPHA;
|
png_ptr->transformations |= PNG_ADD_ALPHA;
|
||||||
}
|
}
|
||||||
@ -146,7 +146,7 @@ void PNGAPI
|
|||||||
png_set_swap_alpha(png_structp png_ptr)
|
png_set_swap_alpha(png_structp png_ptr)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_swap_alpha\n");
|
png_debug(1, "in png_set_swap_alpha\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_ptr->transformations |= PNG_SWAP_ALPHA;
|
png_ptr->transformations |= PNG_SWAP_ALPHA;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -157,7 +157,7 @@ void PNGAPI
|
|||||||
png_set_invert_alpha(png_structp png_ptr)
|
png_set_invert_alpha(png_structp png_ptr)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_invert_alpha\n");
|
png_debug(1, "in png_set_invert_alpha\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_ptr->transformations |= PNG_INVERT_ALPHA;
|
png_ptr->transformations |= PNG_INVERT_ALPHA;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -167,7 +167,7 @@ void PNGAPI
|
|||||||
png_set_invert_mono(png_structp png_ptr)
|
png_set_invert_mono(png_structp png_ptr)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_invert_mono\n");
|
png_debug(1, "in png_set_invert_mono\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_ptr->transformations |= PNG_INVERT_MONO;
|
png_ptr->transformations |= PNG_INVERT_MONO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -631,13 +631,13 @@ png_set_user_transform_info(png_structp png_ptr, png_voidp
|
|||||||
user_transform_ptr, int user_transform_depth, int user_transform_channels)
|
user_transform_ptr, int user_transform_depth, int user_transform_channels)
|
||||||
{
|
{
|
||||||
png_debug(1, "in png_set_user_transform_info\n");
|
png_debug(1, "in png_set_user_transform_info\n");
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
|
#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
|
||||||
png_ptr->user_transform_ptr = user_transform_ptr;
|
png_ptr->user_transform_ptr = user_transform_ptr;
|
||||||
png_ptr->user_transform_depth = (png_byte)user_transform_depth;
|
png_ptr->user_transform_depth = (png_byte)user_transform_depth;
|
||||||
png_ptr->user_transform_channels = (png_byte)user_transform_channels;
|
png_ptr->user_transform_channels = (png_byte)user_transform_channels;
|
||||||
#else
|
#else
|
||||||
if(user_transform_ptr || user_transform_depth || user_transform_channels)
|
if (user_transform_ptr || user_transform_depth || user_transform_channels)
|
||||||
png_warning(png_ptr,
|
png_warning(png_ptr,
|
||||||
"This version of libpng does not support user transform info");
|
"This version of libpng does not support user transform info");
|
||||||
#endif
|
#endif
|
||||||
|
18
pngwio.c
18
pngwio.c
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/* pngwio.c - functions for data output
|
/* pngwio.c - functions for data output
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.2.30 [July 6, 2008]
|
* Last changed in libpng 1.2.30 [July 10, 2008]
|
||||||
* For conditions of distribution and use, see copyright notice in png.h
|
* For conditions of distribution and use, see copyright notice in png.h
|
||||||
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
@ -45,7 +45,7 @@ png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
|||||||
{
|
{
|
||||||
png_uint_32 check;
|
png_uint_32 check;
|
||||||
|
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
#if defined(_WIN32_WCE)
|
#if defined(_WIN32_WCE)
|
||||||
if ( !WriteFile((HANDLE)(png_ptr->io_ptr), data, length, &check, NULL) )
|
if ( !WriteFile((HANDLE)(png_ptr->io_ptr), data, length, &check, NULL) )
|
||||||
check = 0;
|
check = 0;
|
||||||
@ -71,7 +71,7 @@ png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
|||||||
png_byte *near_data; /* Needs to be "png_byte *" instead of "png_bytep" */
|
png_byte *near_data; /* Needs to be "png_byte *" instead of "png_bytep" */
|
||||||
png_FILE_p io_ptr;
|
png_FILE_p io_ptr;
|
||||||
|
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
/* Check if data really is near. If so, use usual code. */
|
/* Check if data really is near. If so, use usual code. */
|
||||||
near_data = (png_byte *)CVT_PTR_NOCHECK(data);
|
near_data = (png_byte *)CVT_PTR_NOCHECK(data);
|
||||||
io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
|
io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
|
||||||
@ -134,7 +134,7 @@ png_default_flush(png_structp png_ptr)
|
|||||||
#if !defined(_WIN32_WCE)
|
#if !defined(_WIN32_WCE)
|
||||||
png_FILE_p io_ptr;
|
png_FILE_p io_ptr;
|
||||||
#endif
|
#endif
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
#if !defined(_WIN32_WCE)
|
#if !defined(_WIN32_WCE)
|
||||||
io_ptr = (png_FILE_p)CVT_PTR((png_ptr->io_ptr));
|
io_ptr = (png_FILE_p)CVT_PTR((png_ptr->io_ptr));
|
||||||
if (io_ptr != NULL)
|
if (io_ptr != NULL)
|
||||||
@ -170,7 +170,7 @@ void PNGAPI
|
|||||||
png_set_write_fn(png_structp png_ptr, png_voidp io_ptr,
|
png_set_write_fn(png_structp png_ptr, png_voidp io_ptr,
|
||||||
png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)
|
png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)
|
||||||
{
|
{
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_ptr->io_ptr = io_ptr;
|
png_ptr->io_ptr = io_ptr;
|
||||||
|
|
||||||
#if !defined(PNG_NO_STDIO)
|
#if !defined(PNG_NO_STDIO)
|
||||||
@ -212,8 +212,8 @@ void *png_far_to_near(png_structp png_ptr, png_voidp ptr, int check)
|
|||||||
void FAR *far_ptr;
|
void FAR *far_ptr;
|
||||||
FP_OFF(near_ptr) = FP_OFF(ptr);
|
FP_OFF(near_ptr) = FP_OFF(ptr);
|
||||||
far_ptr = (void FAR *)near_ptr;
|
far_ptr = (void FAR *)near_ptr;
|
||||||
if(check != 0)
|
if (check != 0)
|
||||||
if(FP_SEG(ptr) != FP_SEG(far_ptr))
|
if (FP_SEG(ptr) != FP_SEG(far_ptr))
|
||||||
png_error(png_ptr, "segment lost in conversion");
|
png_error(png_ptr, "segment lost in conversion");
|
||||||
return(near_ptr);
|
return(near_ptr);
|
||||||
}
|
}
|
||||||
@ -224,8 +224,8 @@ void *png_far_to_near(png_structp png_ptr, png_voidp ptr, int check)
|
|||||||
void FAR *far_ptr;
|
void FAR *far_ptr;
|
||||||
near_ptr = (void FAR *)ptr;
|
near_ptr = (void FAR *)ptr;
|
||||||
far_ptr = (void FAR *)near_ptr;
|
far_ptr = (void FAR *)near_ptr;
|
||||||
if(check != 0)
|
if (check != 0)
|
||||||
if(far_ptr != ptr)
|
if (far_ptr != ptr)
|
||||||
png_error(png_ptr, "segment lost in conversion");
|
png_error(png_ptr, "segment lost in conversion");
|
||||||
return(near_ptr);
|
return(near_ptr);
|
||||||
}
|
}
|
||||||
|
20
pngwrite.c
20
pngwrite.c
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/* pngwrite.c - general routines to write a PNG file
|
/* pngwrite.c - general routines to write a PNG file
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.2.30 [July 6, 2008]
|
* Last changed in libpng 1.2.30 [July 10, 2008]
|
||||||
* For conditions of distribution and use, see copyright notice in png.h
|
* For conditions of distribution and use, see copyright notice in png.h
|
||||||
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
@ -32,7 +32,7 @@ png_write_info_before_PLTE(png_structp png_ptr, png_infop info_ptr)
|
|||||||
{
|
{
|
||||||
png_write_sig(png_ptr); /* write PNG signature */
|
png_write_sig(png_ptr); /* write PNG signature */
|
||||||
#if defined(PNG_MNG_FEATURES_SUPPORTED)
|
#if defined(PNG_MNG_FEATURES_SUPPORTED)
|
||||||
if((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE)&&(png_ptr->mng_features_permitted))
|
if ((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE)&&(png_ptr->mng_features_permitted))
|
||||||
{
|
{
|
||||||
png_warning(png_ptr, "MNG features are not allowed in a PNG datastream");
|
png_warning(png_ptr, "MNG features are not allowed in a PNG datastream");
|
||||||
png_ptr->mng_features_permitted=0;
|
png_ptr->mng_features_permitted=0;
|
||||||
@ -491,12 +491,12 @@ png_create_write_struct_2(png_const_charp user_png_ver, png_voidp error_ptr,
|
|||||||
#endif /* PNG_USER_MEM_SUPPORTED */
|
#endif /* PNG_USER_MEM_SUPPORTED */
|
||||||
png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn);
|
png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn);
|
||||||
|
|
||||||
if(user_png_ver)
|
if (user_png_ver)
|
||||||
{
|
{
|
||||||
i=0;
|
i=0;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if(user_png_ver[i] != png_libpng_ver[i])
|
if (user_png_ver[i] != png_libpng_ver[i])
|
||||||
png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
|
png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
|
||||||
} while (png_libpng_ver[i++]);
|
} while (png_libpng_ver[i++]);
|
||||||
}
|
}
|
||||||
@ -579,9 +579,9 @@ png_write_init_2(png_structp png_ptr, png_const_charp user_png_ver,
|
|||||||
png_size_t png_struct_size, png_size_t png_info_size)
|
png_size_t png_struct_size, png_size_t png_info_size)
|
||||||
{
|
{
|
||||||
/* We only come here via pre-1.0.12-compiled applications */
|
/* We only come here via pre-1.0.12-compiled applications */
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
|
#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
|
||||||
if(png_sizeof(png_struct) > png_struct_size ||
|
if (png_sizeof(png_struct) > png_struct_size ||
|
||||||
png_sizeof(png_info) > png_info_size)
|
png_sizeof(png_info) > png_info_size)
|
||||||
{
|
{
|
||||||
char msg[80];
|
char msg[80];
|
||||||
@ -599,7 +599,7 @@ png_write_init_2(png_structp png_ptr, png_const_charp user_png_ver,
|
|||||||
png_warning(png_ptr, msg);
|
png_warning(png_ptr, msg);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if(png_sizeof(png_struct) > png_struct_size)
|
if (png_sizeof(png_struct) > png_struct_size)
|
||||||
{
|
{
|
||||||
png_ptr->error_fn=NULL;
|
png_ptr->error_fn=NULL;
|
||||||
#ifdef PNG_ERROR_NUMBERS_SUPPORTED
|
#ifdef PNG_ERROR_NUMBERS_SUPPORTED
|
||||||
@ -608,7 +608,7 @@ png_write_init_2(png_structp png_ptr, png_const_charp user_png_ver,
|
|||||||
png_error(png_ptr,
|
png_error(png_ptr,
|
||||||
"The png struct allocated by the application for writing is too small.");
|
"The png struct allocated by the application for writing is too small.");
|
||||||
}
|
}
|
||||||
if(png_sizeof(png_info) > png_info_size)
|
if (png_sizeof(png_info) > png_info_size)
|
||||||
{
|
{
|
||||||
png_ptr->error_fn=NULL;
|
png_ptr->error_fn=NULL;
|
||||||
#ifdef PNG_ERROR_NUMBERS_SUPPORTED
|
#ifdef PNG_ERROR_NUMBERS_SUPPORTED
|
||||||
@ -910,7 +910,7 @@ png_write_row(png_structp png_ptr, png_bytep row)
|
|||||||
* 4. The filter_method is 64 and
|
* 4. The filter_method is 64 and
|
||||||
* 5. The color_type is RGB or RGBA
|
* 5. The color_type is RGB or RGBA
|
||||||
*/
|
*/
|
||||||
if((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
|
if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
|
||||||
(png_ptr->filter_type == PNG_INTRAPIXEL_DIFFERENCING))
|
(png_ptr->filter_type == PNG_INTRAPIXEL_DIFFERENCING))
|
||||||
{
|
{
|
||||||
/* Intrapixel differencing */
|
/* Intrapixel differencing */
|
||||||
@ -1137,7 +1137,7 @@ png_set_filter(png_structp png_ptr, int method, int filters)
|
|||||||
if (png_ptr == NULL)
|
if (png_ptr == NULL)
|
||||||
return;
|
return;
|
||||||
#if defined(PNG_MNG_FEATURES_SUPPORTED)
|
#if defined(PNG_MNG_FEATURES_SUPPORTED)
|
||||||
if((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
|
if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
|
||||||
(method == PNG_INTRAPIXEL_DIFFERENCING))
|
(method == PNG_INTRAPIXEL_DIFFERENCING))
|
||||||
method = PNG_FILTER_TYPE_BASE;
|
method = PNG_FILTER_TYPE_BASE;
|
||||||
#endif
|
#endif
|
||||||
|
@ -25,7 +25,7 @@ png_do_write_transformations(png_structp png_ptr)
|
|||||||
|
|
||||||
#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
|
#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
|
||||||
if (png_ptr->transformations & PNG_USER_TRANSFORM)
|
if (png_ptr->transformations & PNG_USER_TRANSFORM)
|
||||||
if(png_ptr->write_user_transform_fn != NULL)
|
if (png_ptr->write_user_transform_fn != NULL)
|
||||||
(*(png_ptr->write_user_transform_fn)) /* user write transform function */
|
(*(png_ptr->write_user_transform_fn)) /* user write transform function */
|
||||||
(png_ptr, /* png_ptr */
|
(png_ptr, /* png_ptr */
|
||||||
&(png_ptr->row_info), /* row_info: */
|
&(png_ptr->row_info), /* row_info: */
|
||||||
@ -558,8 +558,8 @@ png_do_write_intrapixel(png_row_infop row_info, png_bytep row)
|
|||||||
png_uint_32 s0 = (*(rp ) << 8) | *(rp+1);
|
png_uint_32 s0 = (*(rp ) << 8) | *(rp+1);
|
||||||
png_uint_32 s1 = (*(rp+2) << 8) | *(rp+3);
|
png_uint_32 s1 = (*(rp+2) << 8) | *(rp+3);
|
||||||
png_uint_32 s2 = (*(rp+4) << 8) | *(rp+5);
|
png_uint_32 s2 = (*(rp+4) << 8) | *(rp+5);
|
||||||
png_uint_32 red = (png_uint_32)((s0-s1) & 0xffffL);
|
png_uint_32 red = (png_uint_32)((s0 - s1) & 0xffffL);
|
||||||
png_uint_32 blue = (png_uint_32)((s2-s1) & 0xffffL);
|
png_uint_32 blue = (png_uint_32)((s2 - s1) & 0xffffL);
|
||||||
*(rp ) = (png_byte)((red >> 8) & 0xff);
|
*(rp ) = (png_byte)((red >> 8) & 0xff);
|
||||||
*(rp+1) = (png_byte)(red & 0xff);
|
*(rp+1) = (png_byte)(red & 0xff);
|
||||||
*(rp+4) = (png_byte)((blue >> 8) & 0xff);
|
*(rp+4) = (png_byte)((blue >> 8) & 0xff);
|
||||||
|
189
pngwutil.c
189
pngwutil.c
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/* pngwutil.c - utilities to write a PNG file
|
/* pngwutil.c - utilities to write a PNG file
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.2.30 [July 6, 2008]
|
* Last changed in libpng 1.2.30 [July 10, 2008]
|
||||||
* For conditions of distribution and use, see copyright notice in png.h
|
* For conditions of distribution and use, see copyright notice in png.h
|
||||||
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
@ -63,7 +63,7 @@ png_write_sig(png_structp png_ptr)
|
|||||||
/* write the rest of the 8 byte signature */
|
/* write the rest of the 8 byte signature */
|
||||||
png_write_data(png_ptr, &png_signature[png_ptr->sig_bytes],
|
png_write_data(png_ptr, &png_signature[png_ptr->sig_bytes],
|
||||||
(png_size_t)(8 - png_ptr->sig_bytes));
|
(png_size_t)(8 - png_ptr->sig_bytes));
|
||||||
if(png_ptr->sig_bytes < 3)
|
if (png_ptr->sig_bytes < 3)
|
||||||
png_ptr->mode |= PNG_HAVE_PNG_SIGNATURE;
|
png_ptr->mode |= PNG_HAVE_PNG_SIGNATURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,9 +80,9 @@ void PNGAPI
|
|||||||
png_write_chunk(png_structp png_ptr, png_bytep chunk_name,
|
png_write_chunk(png_structp png_ptr, png_bytep chunk_name,
|
||||||
png_bytep data, png_size_t length)
|
png_bytep data, png_size_t length)
|
||||||
{
|
{
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
png_write_chunk_start(png_ptr, chunk_name, (png_uint_32)length);
|
png_write_chunk_start(png_ptr, chunk_name, (png_uint_32)length);
|
||||||
png_write_chunk_data(png_ptr, data, length);
|
png_write_chunk_data(png_ptr, data, (png_size_t)length);
|
||||||
png_write_chunk_end(png_ptr);
|
png_write_chunk_end(png_ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,12 +98,12 @@ png_write_chunk_start(png_structp png_ptr, png_bytep chunk_name,
|
|||||||
|
|
||||||
png_debug2(0, "Writing %s chunk, length = %lu\n", chunk_name,
|
png_debug2(0, "Writing %s chunk, length = %lu\n", chunk_name,
|
||||||
(unsigned long)length);
|
(unsigned long)length);
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
|
|
||||||
/* write the length and the chunk name */
|
/* write the length and the chunk name */
|
||||||
png_save_uint_32(buf, length);
|
png_save_uint_32(buf, length);
|
||||||
png_memcpy(buf + 4, chunk_name, 4);
|
png_memcpy(buf + 4, chunk_name, 4);
|
||||||
png_write_data(png_ptr, buf, 8);
|
png_write_data(png_ptr, buf, (png_size_t)8);
|
||||||
/* put the chunk name into png_ptr->chunk_name */
|
/* put the chunk name into png_ptr->chunk_name */
|
||||||
png_memcpy(png_ptr->chunk_name, chunk_name, 4);
|
png_memcpy(png_ptr->chunk_name, chunk_name, 4);
|
||||||
/* reset the crc and run it over the chunk name */
|
/* reset the crc and run it over the chunk name */
|
||||||
@ -120,14 +120,14 @@ void PNGAPI
|
|||||||
png_write_chunk_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
png_write_chunk_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||||
{
|
{
|
||||||
/* write the data, and run the CRC over it */
|
/* write the data, and run the CRC over it */
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
if (data != NULL && length > 0)
|
if (data != NULL && length > 0)
|
||||||
{
|
{
|
||||||
|
png_write_data(png_ptr, data, length);
|
||||||
/* update the CRC after writing the data,
|
/* update the CRC after writing the data,
|
||||||
* in case that the user I/O routine alters it.
|
* in case that the user I/O routine alters it.
|
||||||
*/
|
*/
|
||||||
png_calculate_crc(png_ptr, data, length);
|
png_calculate_crc(png_ptr, data, length);
|
||||||
png_write_data(png_ptr, data, length);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,7 +137,7 @@ png_write_chunk_end(png_structp png_ptr)
|
|||||||
{
|
{
|
||||||
png_byte buf[4];
|
png_byte buf[4];
|
||||||
|
|
||||||
if(png_ptr == NULL) return;
|
if (png_ptr == NULL) return;
|
||||||
|
|
||||||
/* write the crc in a single operation */
|
/* write the crc in a single operation */
|
||||||
png_save_uint_32(buf, png_ptr->crc);
|
png_save_uint_32(buf, png_ptr->crc);
|
||||||
@ -245,20 +245,21 @@ png_text_compress(png_structp png_ptr,
|
|||||||
|
|
||||||
old_ptr = comp->output_ptr;
|
old_ptr = comp->output_ptr;
|
||||||
comp->output_ptr = (png_charpp)png_malloc(png_ptr,
|
comp->output_ptr = (png_charpp)png_malloc(png_ptr,
|
||||||
(png_uint_32)(comp->max_output_ptr *
|
(png_uint_32)
|
||||||
png_sizeof(png_charpp)));
|
(comp->max_output_ptr * png_sizeof(png_charpp)));
|
||||||
png_memcpy(comp->output_ptr, old_ptr, old_max
|
png_memcpy(comp->output_ptr, old_ptr, old_max
|
||||||
* png_sizeof(png_charp));
|
* png_sizeof(png_charp));
|
||||||
png_free(png_ptr, old_ptr);
|
png_free(png_ptr, old_ptr);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
comp->output_ptr = (png_charpp)png_malloc(png_ptr,
|
comp->output_ptr = (png_charpp)png_malloc(png_ptr,
|
||||||
(png_uint_32)(comp->max_output_ptr *
|
(png_uint_32)
|
||||||
png_sizeof(png_charp)));
|
(comp->max_output_ptr * png_sizeof(png_charp)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* save the data */
|
/* save the data */
|
||||||
comp->output_ptr[comp->num_output_ptr] = (png_charp)png_malloc(png_ptr,
|
comp->output_ptr[comp->num_output_ptr] =
|
||||||
|
(png_charp)png_malloc(png_ptr,
|
||||||
(png_uint_32)png_ptr->zbuf_size);
|
(png_uint_32)png_ptr->zbuf_size);
|
||||||
png_memcpy(comp->output_ptr[comp->num_output_ptr], png_ptr->zbuf,
|
png_memcpy(comp->output_ptr[comp->num_output_ptr], png_ptr->zbuf,
|
||||||
png_ptr->zbuf_size);
|
png_ptr->zbuf_size);
|
||||||
@ -297,7 +298,7 @@ png_text_compress(png_structp png_ptr,
|
|||||||
/* This could be optimized to realloc() */
|
/* This could be optimized to realloc() */
|
||||||
comp->output_ptr = (png_charpp)png_malloc(png_ptr,
|
comp->output_ptr = (png_charpp)png_malloc(png_ptr,
|
||||||
(png_uint_32)(comp->max_output_ptr *
|
(png_uint_32)(comp->max_output_ptr *
|
||||||
png_sizeof(png_charpp)));
|
png_sizeof(png_charp)));
|
||||||
png_memcpy(comp->output_ptr, old_ptr,
|
png_memcpy(comp->output_ptr, old_ptr,
|
||||||
old_max * png_sizeof(png_charp));
|
old_max * png_sizeof(png_charp));
|
||||||
png_free(png_ptr, old_ptr);
|
png_free(png_ptr, old_ptr);
|
||||||
@ -310,7 +311,8 @@ png_text_compress(png_structp png_ptr,
|
|||||||
|
|
||||||
/* save off the data */
|
/* save off the data */
|
||||||
comp->output_ptr[comp->num_output_ptr] =
|
comp->output_ptr[comp->num_output_ptr] =
|
||||||
(png_charp)png_malloc(png_ptr, (png_uint_32)png_ptr->zbuf_size);
|
(png_charp)png_malloc(png_ptr,
|
||||||
|
(png_uint_32)png_ptr->zbuf_size);
|
||||||
png_memcpy(comp->output_ptr[comp->num_output_ptr], png_ptr->zbuf,
|
png_memcpy(comp->output_ptr[comp->num_output_ptr], png_ptr->zbuf,
|
||||||
png_ptr->zbuf_size);
|
png_ptr->zbuf_size);
|
||||||
comp->num_output_ptr++;
|
comp->num_output_ptr++;
|
||||||
@ -356,7 +358,7 @@ png_write_compressed_data_out(png_structp png_ptr, compression_state *comp)
|
|||||||
for (i = 0; i < comp->num_output_ptr; i++)
|
for (i = 0; i < comp->num_output_ptr; i++)
|
||||||
{
|
{
|
||||||
png_write_chunk_data(png_ptr, (png_bytep)comp->output_ptr[i],
|
png_write_chunk_data(png_ptr, (png_bytep)comp->output_ptr[i],
|
||||||
png_ptr->zbuf_size);
|
(png_size_t)png_ptr->zbuf_size);
|
||||||
png_free(png_ptr, comp->output_ptr[i]);
|
png_free(png_ptr, comp->output_ptr[i]);
|
||||||
comp->output_ptr[i]=NULL;
|
comp->output_ptr[i]=NULL;
|
||||||
}
|
}
|
||||||
@ -366,7 +368,7 @@ png_write_compressed_data_out(png_structp png_ptr, compression_state *comp)
|
|||||||
/* write anything left in zbuf */
|
/* write anything left in zbuf */
|
||||||
if (png_ptr->zstream.avail_out < (png_uint_32)png_ptr->zbuf_size)
|
if (png_ptr->zstream.avail_out < (png_uint_32)png_ptr->zbuf_size)
|
||||||
png_write_chunk_data(png_ptr, png_ptr->zbuf,
|
png_write_chunk_data(png_ptr, png_ptr->zbuf,
|
||||||
png_ptr->zbuf_size - png_ptr->zstream.avail_out);
|
(png_size_t)(png_ptr->zbuf_size - png_ptr->zstream.avail_out));
|
||||||
|
|
||||||
/* reset zlib for another zTXt/iTXt or image data */
|
/* reset zlib for another zTXt/iTXt or image data */
|
||||||
deflateReset(&png_ptr->zstream);
|
deflateReset(&png_ptr->zstream);
|
||||||
@ -502,7 +504,7 @@ png_write_IHDR(png_structp png_ptr, png_uint_32 width, png_uint_32 height,
|
|||||||
buf[12] = (png_byte)interlace_type;
|
buf[12] = (png_byte)interlace_type;
|
||||||
|
|
||||||
/* write the chunk */
|
/* write the chunk */
|
||||||
png_write_chunk(png_ptr, png_IHDR, buf, (png_size_t)13);
|
png_write_chunk(png_ptr, (png_bytep)png_IHDR, buf, (png_size_t)13);
|
||||||
|
|
||||||
/* initialize zlib with PNG info */
|
/* initialize zlib with PNG info */
|
||||||
png_ptr->zstream.zalloc = png_zalloc;
|
png_ptr->zstream.zalloc = png_zalloc;
|
||||||
@ -595,7 +597,8 @@ png_write_PLTE(png_structp png_ptr, png_colorp palette, png_uint_32 num_pal)
|
|||||||
png_ptr->num_palette = (png_uint_16)num_pal;
|
png_ptr->num_palette = (png_uint_16)num_pal;
|
||||||
png_debug1(3, "num_palette = %d\n", png_ptr->num_palette);
|
png_debug1(3, "num_palette = %d\n", png_ptr->num_palette);
|
||||||
|
|
||||||
png_write_chunk_start(png_ptr, png_PLTE, num_pal * 3);
|
png_write_chunk_start(png_ptr, (png_bytep)png_PLTE,
|
||||||
|
(png_uint_32)(num_pal * 3));
|
||||||
#ifndef PNG_NO_POINTER_INDEXING
|
#ifndef PNG_NO_POINTER_INDEXING
|
||||||
for (i = 0, pal_ptr = palette; i < num_pal; i++, pal_ptr++)
|
for (i = 0, pal_ptr = palette; i < num_pal; i++, pal_ptr++)
|
||||||
{
|
{
|
||||||
@ -667,7 +670,7 @@ png_write_IDAT(png_structp png_ptr, png_bytep data, png_size_t length)
|
|||||||
"Invalid zlib compression method or flags in IDAT");
|
"Invalid zlib compression method or flags in IDAT");
|
||||||
}
|
}
|
||||||
|
|
||||||
png_write_chunk(png_ptr, png_IDAT, data, length);
|
png_write_chunk(png_ptr, (png_bytep)png_IDAT, data, length);
|
||||||
png_ptr->mode |= PNG_HAVE_IDAT;
|
png_ptr->mode |= PNG_HAVE_IDAT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -679,7 +682,7 @@ png_write_IEND(png_structp png_ptr)
|
|||||||
PNG_IEND;
|
PNG_IEND;
|
||||||
#endif
|
#endif
|
||||||
png_debug(1, "in png_write_IEND\n");
|
png_debug(1, "in png_write_IEND\n");
|
||||||
png_write_chunk(png_ptr, png_IEND, png_bytep_NULL,
|
png_write_chunk(png_ptr, (png_bytep)png_IEND, png_bytep_NULL,
|
||||||
(png_size_t)0);
|
(png_size_t)0);
|
||||||
png_ptr->mode |= PNG_HAVE_IEND;
|
png_ptr->mode |= PNG_HAVE_IEND;
|
||||||
}
|
}
|
||||||
@ -700,7 +703,7 @@ png_write_gAMA(png_structp png_ptr, double file_gamma)
|
|||||||
/* file_gamma is saved in 1/100,000ths */
|
/* file_gamma is saved in 1/100,000ths */
|
||||||
igamma = (png_uint_32)(file_gamma * 100000.0 + 0.5);
|
igamma = (png_uint_32)(file_gamma * 100000.0 + 0.5);
|
||||||
png_save_uint_32(buf, igamma);
|
png_save_uint_32(buf, igamma);
|
||||||
png_write_chunk(png_ptr, png_gAMA, buf, (png_size_t)4);
|
png_write_chunk(png_ptr, (png_bytep)png_gAMA, buf, (png_size_t)4);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef PNG_FIXED_POINT_SUPPORTED
|
#ifdef PNG_FIXED_POINT_SUPPORTED
|
||||||
@ -715,7 +718,7 @@ png_write_gAMA_fixed(png_structp png_ptr, png_fixed_point file_gamma)
|
|||||||
png_debug(1, "in png_write_gAMA\n");
|
png_debug(1, "in png_write_gAMA\n");
|
||||||
/* file_gamma is saved in 1/100,000ths */
|
/* file_gamma is saved in 1/100,000ths */
|
||||||
png_save_uint_32(buf, (png_uint_32)file_gamma);
|
png_save_uint_32(buf, (png_uint_32)file_gamma);
|
||||||
png_write_chunk(png_ptr, png_gAMA, buf, (png_size_t)4);
|
png_write_chunk(png_ptr, (png_bytep)png_gAMA, buf, (png_size_t)4);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
@ -731,11 +734,11 @@ png_write_sRGB(png_structp png_ptr, int srgb_intent)
|
|||||||
png_byte buf[1];
|
png_byte buf[1];
|
||||||
|
|
||||||
png_debug(1, "in png_write_sRGB\n");
|
png_debug(1, "in png_write_sRGB\n");
|
||||||
if(srgb_intent >= PNG_sRGB_INTENT_LAST)
|
if (srgb_intent >= PNG_sRGB_INTENT_LAST)
|
||||||
png_warning(png_ptr,
|
png_warning(png_ptr,
|
||||||
"Invalid sRGB rendering intent specified");
|
"Invalid sRGB rendering intent specified");
|
||||||
buf[0]=(png_byte)srgb_intent;
|
buf[0]=(png_byte)srgb_intent;
|
||||||
png_write_chunk(png_ptr, png_sRGB, buf, (png_size_t)1);
|
png_write_chunk(png_ptr, (png_bytep)png_sRGB, buf, (png_size_t)1);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -777,9 +780,9 @@ png_write_iCCP(png_structp png_ptr, png_charp name, int compression_type,
|
|||||||
if (profile_len > 3)
|
if (profile_len > 3)
|
||||||
embedded_profile_len =
|
embedded_profile_len =
|
||||||
((*( (png_bytep)profile ))<<24) |
|
((*( (png_bytep)profile ))<<24) |
|
||||||
((*( (png_bytep)profile+1))<<16) |
|
((*( (png_bytep)profile + 1))<<16) |
|
||||||
((*( (png_bytep)profile+2))<< 8) |
|
((*( (png_bytep)profile + 2))<< 8) |
|
||||||
((*( (png_bytep)profile+3)) );
|
((*( (png_bytep)profile + 3)) );
|
||||||
|
|
||||||
if (profile_len < embedded_profile_len)
|
if (profile_len < embedded_profile_len)
|
||||||
{
|
{
|
||||||
@ -796,14 +799,15 @@ png_write_iCCP(png_structp png_ptr, png_charp name, int compression_type,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (profile_len)
|
if (profile_len)
|
||||||
profile_len = png_text_compress(png_ptr, profile, (png_size_t)profile_len,
|
profile_len = png_text_compress(png_ptr, profile,
|
||||||
PNG_COMPRESSION_TYPE_BASE, &comp);
|
(png_size_t)profile_len, PNG_COMPRESSION_TYPE_BASE, &comp);
|
||||||
|
|
||||||
/* make sure we include the NULL after the name and the compression type */
|
/* make sure we include the NULL after the name and the compression type */
|
||||||
png_write_chunk_start(png_ptr, png_iCCP,
|
png_write_chunk_start(png_ptr, (png_bytep)png_iCCP,
|
||||||
(png_uint_32)name_len+profile_len+2);
|
(png_uint_32)(name_len + profile_len + 2));
|
||||||
new_name[name_len+1]=0x00;
|
new_name[name_len + 1] = 0x00;
|
||||||
png_write_chunk_data(png_ptr, (png_bytep)new_name, name_len + 2);
|
png_write_chunk_data(png_ptr, (png_bytep)new_name,
|
||||||
|
(png_size_t)(name_len + 2));
|
||||||
|
|
||||||
if (profile_len)
|
if (profile_len)
|
||||||
png_write_compressed_data_out(png_ptr, &comp);
|
png_write_compressed_data_out(png_ptr, &comp);
|
||||||
@ -840,14 +844,15 @@ png_write_sPLT(png_structp png_ptr, png_sPLT_tp spalette)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* make sure we include the NULL after the name */
|
/* make sure we include the NULL after the name */
|
||||||
png_write_chunk_start(png_ptr, png_sPLT,
|
png_write_chunk_start(png_ptr, (png_bytep)png_sPLT,
|
||||||
(png_uint_32)(name_len + 2 + palette_size));
|
(png_uint_32)(name_len + 2 + palette_size));
|
||||||
png_write_chunk_data(png_ptr, (png_bytep)new_name, name_len + 1);
|
png_write_chunk_data(png_ptr, (png_bytep)new_name,
|
||||||
png_write_chunk_data(png_ptr, (png_bytep)&spalette->depth, 1);
|
(png_size_t)(name_len + 1));
|
||||||
|
png_write_chunk_data(png_ptr, (png_bytep)&spalette->depth, (png_size_t)1);
|
||||||
|
|
||||||
/* loop through each palette entry, writing appropriately */
|
/* loop through each palette entry, writing appropriately */
|
||||||
#ifndef PNG_NO_POINTER_INDEXING
|
#ifndef PNG_NO_POINTER_INDEXING
|
||||||
for (ep = spalette->entries; ep<spalette->entries+spalette->nentries; ep++)
|
for (ep = spalette->entries; ep<spalette->entries + spalette->nentries; ep++)
|
||||||
{
|
{
|
||||||
if (spalette->depth == 8)
|
if (spalette->depth == 8)
|
||||||
{
|
{
|
||||||
@ -887,7 +892,7 @@ png_write_sPLT(png_structp png_ptr, png_sPLT_tp spalette)
|
|||||||
png_save_uint_16(entrybuf + 6, ep[i].alpha);
|
png_save_uint_16(entrybuf + 6, ep[i].alpha);
|
||||||
png_save_uint_16(entrybuf + 8, ep[i].frequency);
|
png_save_uint_16(entrybuf + 8, ep[i].frequency);
|
||||||
}
|
}
|
||||||
png_write_chunk_data(png_ptr, entrybuf, entry_size);
|
png_write_chunk_data(png_ptr, entrybuf, (png_size_t)entry_size);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -948,7 +953,7 @@ png_write_sBIT(png_structp png_ptr, png_color_8p sbit, int color_type)
|
|||||||
buf[size++] = sbit->alpha;
|
buf[size++] = sbit->alpha;
|
||||||
}
|
}
|
||||||
|
|
||||||
png_write_chunk(png_ptr, png_sBIT, buf, size);
|
png_write_chunk(png_ptr, (png_bytep)png_sBIT, buf, size);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1012,7 +1017,7 @@ png_write_cHRM(png_structp png_ptr, double white_x, double white_y,
|
|||||||
itemp = (png_uint_32)(blue_y * 100000.0 + 0.5);
|
itemp = (png_uint_32)(blue_y * 100000.0 + 0.5);
|
||||||
png_save_uint_32(buf + 28, itemp);
|
png_save_uint_32(buf + 28, itemp);
|
||||||
|
|
||||||
png_write_chunk(png_ptr, png_cHRM, buf, (png_size_t)32);
|
png_write_chunk(png_ptr, (png_bytep)png_cHRM, buf, (png_size_t)32);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef PNG_FIXED_POINT_SUPPORTED
|
#ifdef PNG_FIXED_POINT_SUPPORTED
|
||||||
@ -1033,7 +1038,8 @@ png_write_cHRM_fixed(png_structp png_ptr, png_fixed_point white_x,
|
|||||||
{
|
{
|
||||||
png_warning(png_ptr, "Invalid fixed cHRM white point specified");
|
png_warning(png_ptr, "Invalid fixed cHRM white point specified");
|
||||||
#if !defined(PNG_NO_CONSOLE_IO)
|
#if !defined(PNG_NO_CONSOLE_IO)
|
||||||
fprintf(stderr, "white_x=%ld, white_y=%ld\n", white_x, white_y);
|
fprintf(stderr, "white_x=%ld, white_y=%ld\n", (unsigned long)white_x,
|
||||||
|
(unsigned long)white_y);
|
||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1064,7 +1070,7 @@ png_write_cHRM_fixed(png_structp png_ptr, png_fixed_point white_x,
|
|||||||
png_save_uint_32(buf + 24, (png_uint_32)blue_x);
|
png_save_uint_32(buf + 24, (png_uint_32)blue_x);
|
||||||
png_save_uint_32(buf + 28, (png_uint_32)blue_y);
|
png_save_uint_32(buf + 28, (png_uint_32)blue_y);
|
||||||
|
|
||||||
png_write_chunk(png_ptr, png_cHRM, buf, (png_size_t)32);
|
png_write_chunk(png_ptr, (png_bytep)png_cHRM, buf, (png_size_t)32);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
@ -1089,19 +1095,20 @@ png_write_tRNS(png_structp png_ptr, png_bytep trans, png_color_16p tran,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/* write the chunk out as it is */
|
/* write the chunk out as it is */
|
||||||
png_write_chunk(png_ptr, png_tRNS, trans, (png_size_t)num_trans);
|
png_write_chunk(png_ptr, (png_bytep)png_tRNS, trans,
|
||||||
|
(png_size_t)num_trans);
|
||||||
}
|
}
|
||||||
else if (color_type == PNG_COLOR_TYPE_GRAY)
|
else if (color_type == PNG_COLOR_TYPE_GRAY)
|
||||||
{
|
{
|
||||||
/* one 16 bit value */
|
/* one 16 bit value */
|
||||||
if(tran->gray >= (1 << png_ptr->bit_depth))
|
if (tran->gray >= (1 << png_ptr->bit_depth))
|
||||||
{
|
{
|
||||||
png_warning(png_ptr,
|
png_warning(png_ptr,
|
||||||
"Ignoring attempt to write tRNS chunk out-of-range for bit_depth");
|
"Ignoring attempt to write tRNS chunk out-of-range for bit_depth");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
png_save_uint_16(buf, tran->gray);
|
png_save_uint_16(buf, tran->gray);
|
||||||
png_write_chunk(png_ptr, png_tRNS, buf, (png_size_t)2);
|
png_write_chunk(png_ptr, (png_bytep)png_tRNS, buf, (png_size_t)2);
|
||||||
}
|
}
|
||||||
else if (color_type == PNG_COLOR_TYPE_RGB)
|
else if (color_type == PNG_COLOR_TYPE_RGB)
|
||||||
{
|
{
|
||||||
@ -1109,13 +1116,13 @@ png_write_tRNS(png_structp png_ptr, png_bytep trans, png_color_16p tran,
|
|||||||
png_save_uint_16(buf, tran->red);
|
png_save_uint_16(buf, tran->red);
|
||||||
png_save_uint_16(buf + 2, tran->green);
|
png_save_uint_16(buf + 2, tran->green);
|
||||||
png_save_uint_16(buf + 4, tran->blue);
|
png_save_uint_16(buf + 4, tran->blue);
|
||||||
if(png_ptr->bit_depth == 8 && (buf[0] | buf[2] | buf[4]))
|
if (png_ptr->bit_depth == 8 && (buf[0] | buf[2] | buf[4]))
|
||||||
{
|
{
|
||||||
png_warning(png_ptr,
|
png_warning(png_ptr,
|
||||||
"Ignoring attempt to write 16-bit tRNS chunk when bit_depth is 8");
|
"Ignoring attempt to write 16-bit tRNS chunk when bit_depth is 8");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
png_write_chunk(png_ptr, png_tRNS, buf, (png_size_t)6);
|
png_write_chunk(png_ptr, (png_bytep)png_tRNS, buf, (png_size_t)6);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1148,31 +1155,31 @@ png_write_bKGD(png_structp png_ptr, png_color_16p back, int color_type)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
buf[0] = back->index;
|
buf[0] = back->index;
|
||||||
png_write_chunk(png_ptr, png_bKGD, buf, (png_size_t)1);
|
png_write_chunk(png_ptr, (png_bytep)png_bKGD, buf, (png_size_t)1);
|
||||||
}
|
}
|
||||||
else if (color_type & PNG_COLOR_MASK_COLOR)
|
else if (color_type & PNG_COLOR_MASK_COLOR)
|
||||||
{
|
{
|
||||||
png_save_uint_16(buf, back->red);
|
png_save_uint_16(buf, back->red);
|
||||||
png_save_uint_16(buf + 2, back->green);
|
png_save_uint_16(buf + 2, back->green);
|
||||||
png_save_uint_16(buf + 4, back->blue);
|
png_save_uint_16(buf + 4, back->blue);
|
||||||
if(png_ptr->bit_depth == 8 && (buf[0] | buf[2] | buf[4]))
|
if (png_ptr->bit_depth == 8 && (buf[0] | buf[2] | buf[4]))
|
||||||
{
|
{
|
||||||
png_warning(png_ptr,
|
png_warning(png_ptr,
|
||||||
"Ignoring attempt to write 16-bit bKGD chunk when bit_depth is 8");
|
"Ignoring attempt to write 16-bit bKGD chunk when bit_depth is 8");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
png_write_chunk(png_ptr, png_bKGD, buf, (png_size_t)6);
|
png_write_chunk(png_ptr, (png_bytep)png_bKGD, buf, (png_size_t)6);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(back->gray >= (1 << png_ptr->bit_depth))
|
if (back->gray >= (1 << png_ptr->bit_depth))
|
||||||
{
|
{
|
||||||
png_warning(png_ptr,
|
png_warning(png_ptr,
|
||||||
"Ignoring attempt to write bKGD chunk out-of-range for bit_depth");
|
"Ignoring attempt to write bKGD chunk out-of-range for bit_depth");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
png_save_uint_16(buf, back->gray);
|
png_save_uint_16(buf, back->gray);
|
||||||
png_write_chunk(png_ptr, png_bKGD, buf, (png_size_t)2);
|
png_write_chunk(png_ptr, (png_bytep)png_bKGD, buf, (png_size_t)2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -1197,7 +1204,8 @@ png_write_hIST(png_structp png_ptr, png_uint_16p hist, int num_hist)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
png_write_chunk_start(png_ptr, png_hIST, (png_uint_32)(num_hist * 2));
|
png_write_chunk_start(png_ptr, (png_bytep)png_hIST,
|
||||||
|
(png_uint_32)(num_hist * 2));
|
||||||
for (i = 0; i < num_hist; i++)
|
for (i = 0; i < num_hist; i++)
|
||||||
{
|
{
|
||||||
png_save_uint_16(buf, hist[i]);
|
png_save_uint_16(buf, hist[i]);
|
||||||
@ -1317,7 +1325,7 @@ png_check_keyword(png_structp png_ptr, png_charp key, png_charpp new_key)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
*dp = '\0';
|
*dp = '\0';
|
||||||
if(kwarn)
|
if (kwarn)
|
||||||
png_warning(png_ptr, "extra interior spaces removed from keyword");
|
png_warning(png_ptr, "extra interior spaces removed from keyword");
|
||||||
|
|
||||||
if (key_len == 0)
|
if (key_len == 0)
|
||||||
@ -1363,16 +1371,18 @@ png_write_tEXt(png_structp png_ptr, png_charp key, png_charp text,
|
|||||||
text_len = png_strlen(text);
|
text_len = png_strlen(text);
|
||||||
|
|
||||||
/* make sure we include the 0 after the key */
|
/* make sure we include the 0 after the key */
|
||||||
png_write_chunk_start(png_ptr, png_tEXt, (png_uint_32)key_len+text_len+1);
|
png_write_chunk_start(png_ptr, (png_bytep)png_tEXt,
|
||||||
|
(png_uint_32)(key_len + text_len + 1));
|
||||||
/*
|
/*
|
||||||
* We leave it to the application to meet PNG-1.0 requirements on the
|
* We leave it to the application to meet PNG-1.0 requirements on the
|
||||||
* contents of the text. PNG-1.0 through PNG-1.2 discourage the use of
|
* contents of the text. PNG-1.0 through PNG-1.2 discourage the use of
|
||||||
* any non-Latin-1 characters except for NEWLINE. ISO PNG will forbid them.
|
* any non-Latin-1 characters except for NEWLINE. ISO PNG will forbid them.
|
||||||
* The NUL character is forbidden by PNG-1.0 through PNG-1.2 and ISO PNG.
|
* The NUL character is forbidden by PNG-1.0 through PNG-1.2 and ISO PNG.
|
||||||
*/
|
*/
|
||||||
png_write_chunk_data(png_ptr, (png_bytep)new_key, key_len + 1);
|
png_write_chunk_data(png_ptr, (png_bytep)new_key,
|
||||||
|
(png_size_t)(key_len + 1));
|
||||||
if (text_len)
|
if (text_len)
|
||||||
png_write_chunk_data(png_ptr, (png_bytep)text, text_len);
|
png_write_chunk_data(png_ptr, (png_bytep)text, (png_size_t)text_len);
|
||||||
|
|
||||||
png_write_chunk_end(png_ptr);
|
png_write_chunk_end(png_ptr);
|
||||||
png_free(png_ptr, new_key);
|
png_free(png_ptr, new_key);
|
||||||
@ -1404,6 +1414,7 @@ png_write_zTXt(png_structp png_ptr, png_charp key, png_charp text,
|
|||||||
if (key == NULL || (key_len = png_check_keyword(png_ptr, key, &new_key))==0)
|
if (key == NULL || (key_len = png_check_keyword(png_ptr, key, &new_key))==0)
|
||||||
{
|
{
|
||||||
png_warning(png_ptr, "Empty keyword in zTXt chunk");
|
png_warning(png_ptr, "Empty keyword in zTXt chunk");
|
||||||
|
png_free(png_ptr, new_key);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1421,10 +1432,11 @@ png_write_zTXt(png_structp png_ptr, png_charp key, png_charp text,
|
|||||||
&comp);
|
&comp);
|
||||||
|
|
||||||
/* write start of chunk */
|
/* write start of chunk */
|
||||||
png_write_chunk_start(png_ptr, png_zTXt, (png_uint_32)
|
png_write_chunk_start(png_ptr, (png_bytep)png_zTXt,
|
||||||
(key_len+text_len+2));
|
(png_uint_32)(key_len+text_len + 2));
|
||||||
/* write key */
|
/* write key */
|
||||||
png_write_chunk_data(png_ptr, (png_bytep)new_key, key_len + 1);
|
png_write_chunk_data(png_ptr, (png_bytep)new_key,
|
||||||
|
(png_size_t)(key_len + 1));
|
||||||
png_free(png_ptr, new_key);
|
png_free(png_ptr, new_key);
|
||||||
|
|
||||||
buf[0] = (png_byte)compression;
|
buf[0] = (png_byte)compression;
|
||||||
@ -1489,7 +1501,7 @@ png_write_iTXt(png_structp png_ptr, int compression, png_charp key,
|
|||||||
/* make sure we include the compression flag, the compression byte,
|
/* make sure we include the compression flag, the compression byte,
|
||||||
* and the NULs after the key, lang, and lang_key parts */
|
* and the NULs after the key, lang, and lang_key parts */
|
||||||
|
|
||||||
png_write_chunk_start(png_ptr, png_iTXt,
|
png_write_chunk_start(png_ptr, (png_bytep)png_iTXt,
|
||||||
(png_uint_32)(
|
(png_uint_32)(
|
||||||
5 /* comp byte, comp flag, terminators for key, lang and lang_key */
|
5 /* comp byte, comp flag, terminators for key, lang and lang_key */
|
||||||
+ key_len
|
+ key_len
|
||||||
@ -1503,7 +1515,8 @@ png_write_iTXt(png_structp png_ptr, int compression, png_charp key,
|
|||||||
* any non-Latin-1 characters except for NEWLINE. ISO PNG will forbid them.
|
* any non-Latin-1 characters except for NEWLINE. ISO PNG will forbid them.
|
||||||
* The NUL character is forbidden by PNG-1.0 through PNG-1.2 and ISO PNG.
|
* The NUL character is forbidden by PNG-1.0 through PNG-1.2 and ISO PNG.
|
||||||
*/
|
*/
|
||||||
png_write_chunk_data(png_ptr, (png_bytep)new_key, key_len + 1);
|
png_write_chunk_data(png_ptr, (png_bytep)new_key,
|
||||||
|
(png_size_t)(key_len + 1));
|
||||||
|
|
||||||
/* set the compression flag */
|
/* set the compression flag */
|
||||||
if (compression == PNG_ITXT_COMPRESSION_NONE || \
|
if (compression == PNG_ITXT_COMPRESSION_NONE || \
|
||||||
@ -1513,11 +1526,13 @@ png_write_iTXt(png_structp png_ptr, int compression, png_charp key,
|
|||||||
cbuf[0] = 1;
|
cbuf[0] = 1;
|
||||||
/* set the compression method */
|
/* set the compression method */
|
||||||
cbuf[1] = 0;
|
cbuf[1] = 0;
|
||||||
png_write_chunk_data(png_ptr, cbuf, 2);
|
png_write_chunk_data(png_ptr, cbuf, (png_size_t)2);
|
||||||
|
|
||||||
cbuf[0] = 0;
|
cbuf[0] = 0;
|
||||||
png_write_chunk_data(png_ptr, (new_lang ? (png_bytep)new_lang : cbuf), lang_len + 1);
|
png_write_chunk_data(png_ptr, (new_lang ? (png_bytep)new_lang : cbuf),
|
||||||
png_write_chunk_data(png_ptr, (lang_key ? (png_bytep)lang_key : cbuf), lang_key_len + 1);
|
(png_size_t)(lang_len + 1));
|
||||||
|
png_write_chunk_data(png_ptr, (lang_key ? (png_bytep)lang_key : cbuf),
|
||||||
|
(png_size_t)(lang_key_len + 1));
|
||||||
png_write_compressed_data_out(png_ptr, &comp);
|
png_write_compressed_data_out(png_ptr, &comp);
|
||||||
|
|
||||||
png_write_chunk_end(png_ptr);
|
png_write_chunk_end(png_ptr);
|
||||||
@ -1545,7 +1560,7 @@ png_write_oFFs(png_structp png_ptr, png_int_32 x_offset, png_int_32 y_offset,
|
|||||||
png_save_int_32(buf + 4, y_offset);
|
png_save_int_32(buf + 4, y_offset);
|
||||||
buf[8] = (png_byte)unit_type;
|
buf[8] = (png_byte)unit_type;
|
||||||
|
|
||||||
png_write_chunk(png_ptr, png_oFFs, buf, (png_size_t)9);
|
png_write_chunk(png_ptr, (png_bytep)png_oFFs, buf, (png_size_t)9);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(PNG_WRITE_pCAL_SUPPORTED)
|
#if defined(PNG_WRITE_pCAL_SUPPORTED)
|
||||||
@ -1573,21 +1588,23 @@ png_write_pCAL(png_structp png_ptr, png_charp purpose, png_int_32 X0,
|
|||||||
png_debug1(3, "pCAL units length = %d\n", (int)units_len);
|
png_debug1(3, "pCAL units length = %d\n", (int)units_len);
|
||||||
total_len = purpose_len + units_len + 10;
|
total_len = purpose_len + units_len + 10;
|
||||||
|
|
||||||
params_len = (png_uint_32p)png_malloc(png_ptr, (png_uint_32)(nparams
|
params_len = (png_uint_32p)png_malloc(png_ptr,
|
||||||
*png_sizeof(png_uint_32)));
|
(png_uint_32)(nparams * png_sizeof(png_uint_32)));
|
||||||
|
|
||||||
/* Find the length of each parameter, making sure we don't count the
|
/* Find the length of each parameter, making sure we don't count the
|
||||||
null terminator for the last parameter. */
|
null terminator for the last parameter. */
|
||||||
for (i = 0; i < nparams; i++)
|
for (i = 0; i < nparams; i++)
|
||||||
{
|
{
|
||||||
params_len[i] = png_strlen(params[i]) + (i == nparams - 1 ? 0 : 1);
|
params_len[i] = png_strlen(params[i]) + (i == nparams - 1 ? 0 : 1);
|
||||||
png_debug2(3, "pCAL parameter %d length = %lu\n", i, params_len[i]);
|
png_debug2(3, "pCAL parameter %d length = %lu\n", i,
|
||||||
|
(unsigned long) params_len[i]);
|
||||||
total_len += (png_size_t)params_len[i];
|
total_len += (png_size_t)params_len[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
png_debug1(3, "pCAL total length = %d\n", (int)total_len);
|
png_debug1(3, "pCAL total length = %d\n", (int)total_len);
|
||||||
png_write_chunk_start(png_ptr, png_pCAL, (png_uint_32)total_len);
|
png_write_chunk_start(png_ptr, (png_bytep)png_pCAL, (png_uint_32)total_len);
|
||||||
png_write_chunk_data(png_ptr, (png_bytep)new_purpose, purpose_len);
|
png_write_chunk_data(png_ptr, (png_bytep)new_purpose,
|
||||||
|
(png_size_t)purpose_len);
|
||||||
png_save_int_32(buf, X0);
|
png_save_int_32(buf, X0);
|
||||||
png_save_int_32(buf + 4, X1);
|
png_save_int_32(buf + 4, X1);
|
||||||
buf[8] = (png_byte)type;
|
buf[8] = (png_byte)type;
|
||||||
@ -1646,7 +1663,7 @@ png_write_sCAL(png_structp png_ptr, int unit, double width, double height)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
png_debug1(3, "sCAL total length = %u\n", (unsigned int)total_len);
|
png_debug1(3, "sCAL total length = %u\n", (unsigned int)total_len);
|
||||||
png_write_chunk(png_ptr, png_sCAL, (png_bytep)buf, total_len);
|
png_write_chunk(png_ptr, (png_bytep)png_sCAL, (png_bytep)buf, total_len);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#ifdef PNG_FIXED_POINT_SUPPORTED
|
#ifdef PNG_FIXED_POINT_SUPPORTED
|
||||||
@ -1676,7 +1693,7 @@ png_write_sCAL_s(png_structp png_ptr, int unit, png_charp width,
|
|||||||
png_memcpy(buf + wlen + 2, height, hlen); /* do NOT append the '\0' here */
|
png_memcpy(buf + wlen + 2, height, hlen); /* do NOT append the '\0' here */
|
||||||
|
|
||||||
png_debug1(3, "sCAL total length = %u\n", (unsigned int)total_len);
|
png_debug1(3, "sCAL total length = %u\n", (unsigned int)total_len);
|
||||||
png_write_chunk(png_ptr, png_sCAL, buf, total_len);
|
png_write_chunk(png_ptr, (png_bytep)png_sCAL, buf, total_len);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
@ -1702,7 +1719,7 @@ png_write_pHYs(png_structp png_ptr, png_uint_32 x_pixels_per_unit,
|
|||||||
png_save_uint_32(buf + 4, y_pixels_per_unit);
|
png_save_uint_32(buf + 4, y_pixels_per_unit);
|
||||||
buf[8] = (png_byte)unit_type;
|
buf[8] = (png_byte)unit_type;
|
||||||
|
|
||||||
png_write_chunk(png_ptr, png_pHYs, buf, (png_size_t)9);
|
png_write_chunk(png_ptr, (png_bytep)png_pHYs, buf, (png_size_t)9);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1734,7 +1751,7 @@ png_write_tIME(png_structp png_ptr, png_timep mod_time)
|
|||||||
buf[5] = mod_time->minute;
|
buf[5] = mod_time->minute;
|
||||||
buf[6] = mod_time->second;
|
buf[6] = mod_time->second;
|
||||||
|
|
||||||
png_write_chunk(png_ptr, png_tIME, buf, (png_size_t)7);
|
png_write_chunk(png_ptr, (png_bytep)png_tIME, buf, (png_size_t)7);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1764,10 +1781,11 @@ png_write_start_row(png_structp png_ptr)
|
|||||||
|
|
||||||
png_debug(1, "in png_write_start_row\n");
|
png_debug(1, "in png_write_start_row\n");
|
||||||
buf_size = (png_size_t)(PNG_ROWBYTES(
|
buf_size = (png_size_t)(PNG_ROWBYTES(
|
||||||
png_ptr->usr_channels*png_ptr->usr_bit_depth, png_ptr->width)+1);
|
png_ptr->usr_channels*png_ptr->usr_bit_depth, png_ptr->width) + 1);
|
||||||
|
|
||||||
/* set up row buffer */
|
/* set up row buffer */
|
||||||
png_ptr->row_buf = (png_bytep)png_malloc(png_ptr, (png_uint_32)buf_size);
|
png_ptr->row_buf = (png_bytep)png_malloc(png_ptr,
|
||||||
|
(png_uint_32)buf_size);
|
||||||
png_ptr->row_buf[0] = PNG_FILTER_VALUE_NONE;
|
png_ptr->row_buf[0] = PNG_FILTER_VALUE_NONE;
|
||||||
|
|
||||||
#ifndef PNG_NO_WRITE_FILTER
|
#ifndef PNG_NO_WRITE_FILTER
|
||||||
@ -1775,7 +1793,7 @@ png_write_start_row(png_structp png_ptr)
|
|||||||
if (png_ptr->do_filter & PNG_FILTER_SUB)
|
if (png_ptr->do_filter & PNG_FILTER_SUB)
|
||||||
{
|
{
|
||||||
png_ptr->sub_row = (png_bytep)png_malloc(png_ptr,
|
png_ptr->sub_row = (png_bytep)png_malloc(png_ptr,
|
||||||
(png_ptr->rowbytes + 1));
|
(png_uint_32)(png_ptr->rowbytes + 1));
|
||||||
png_ptr->sub_row[0] = PNG_FILTER_VALUE_SUB;
|
png_ptr->sub_row[0] = PNG_FILTER_VALUE_SUB;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1783,27 +1801,28 @@ png_write_start_row(png_structp png_ptr)
|
|||||||
if (png_ptr->do_filter & (PNG_FILTER_AVG | PNG_FILTER_UP | PNG_FILTER_PAETH))
|
if (png_ptr->do_filter & (PNG_FILTER_AVG | PNG_FILTER_UP | PNG_FILTER_PAETH))
|
||||||
{
|
{
|
||||||
/* set up previous row buffer */
|
/* set up previous row buffer */
|
||||||
png_ptr->prev_row = (png_bytep)png_malloc(png_ptr, (png_uint_32)buf_size);
|
png_ptr->prev_row = (png_bytep)png_malloc(png_ptr,
|
||||||
|
(png_uint_32)buf_size);
|
||||||
png_memset(png_ptr->prev_row, 0, buf_size);
|
png_memset(png_ptr->prev_row, 0, buf_size);
|
||||||
|
|
||||||
if (png_ptr->do_filter & PNG_FILTER_UP)
|
if (png_ptr->do_filter & PNG_FILTER_UP)
|
||||||
{
|
{
|
||||||
png_ptr->up_row = (png_bytep)png_malloc(png_ptr,
|
png_ptr->up_row = (png_bytep)png_malloc(png_ptr,
|
||||||
(png_ptr->rowbytes + 1));
|
(png_uint_32)(png_ptr->rowbytes + 1));
|
||||||
png_ptr->up_row[0] = PNG_FILTER_VALUE_UP;
|
png_ptr->up_row[0] = PNG_FILTER_VALUE_UP;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (png_ptr->do_filter & PNG_FILTER_AVG)
|
if (png_ptr->do_filter & PNG_FILTER_AVG)
|
||||||
{
|
{
|
||||||
png_ptr->avg_row = (png_bytep)png_malloc(png_ptr,
|
png_ptr->avg_row = (png_bytep)png_malloc(png_ptr,
|
||||||
(png_ptr->rowbytes + 1));
|
(png_uint_32)(png_ptr->rowbytes + 1));
|
||||||
png_ptr->avg_row[0] = PNG_FILTER_VALUE_AVG;
|
png_ptr->avg_row[0] = PNG_FILTER_VALUE_AVG;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (png_ptr->do_filter & PNG_FILTER_PAETH)
|
if (png_ptr->do_filter & PNG_FILTER_PAETH)
|
||||||
{
|
{
|
||||||
png_ptr->paeth_row = (png_bytep)png_malloc(png_ptr,
|
png_ptr->paeth_row = (png_bytep)png_malloc(png_ptr,
|
||||||
(png_ptr->rowbytes + 1));
|
(png_uint_32)(png_ptr->rowbytes + 1));
|
||||||
png_ptr->paeth_row[0] = PNG_FILTER_VALUE_PAETH;
|
png_ptr->paeth_row[0] = PNG_FILTER_VALUE_PAETH;
|
||||||
}
|
}
|
||||||
#endif /* PNG_NO_WRITE_FILTER */
|
#endif /* PNG_NO_WRITE_FILTER */
|
||||||
@ -1905,7 +1924,7 @@ png_write_finish_row(png_structp png_ptr)
|
|||||||
if (png_ptr->prev_row != NULL)
|
if (png_ptr->prev_row != NULL)
|
||||||
png_memset(png_ptr->prev_row, 0,
|
png_memset(png_ptr->prev_row, 0,
|
||||||
(png_size_t)(PNG_ROWBYTES(png_ptr->usr_channels*
|
(png_size_t)(PNG_ROWBYTES(png_ptr->usr_channels*
|
||||||
png_ptr->usr_bit_depth, png_ptr->width))+1);
|
png_ptr->usr_bit_depth, png_ptr->width)) + 1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -169,7 +169,7 @@ configure_file(${PNG_SOURCE_DIR}/scripts/libpng-config.in
|
|||||||
|
|
||||||
# SET UP LINKS
|
# SET UP LINKS
|
||||||
set_target_properties(${PNG_LIB_NAME} PROPERTIES
|
set_target_properties(${PNG_LIB_NAME} PROPERTIES
|
||||||
# VERSION 0.${PNGLIB_RELEASE}.1.2.30beta03
|
# VERSION 0.${PNGLIB_RELEASE}.1.2.30beta04
|
||||||
VERSION 0.${PNGLIB_RELEASE}.0
|
VERSION 0.${PNGLIB_RELEASE}.0
|
||||||
SOVERSION 0
|
SOVERSION 0
|
||||||
CLEAN_DIRECT_OUTPUT 1)
|
CLEAN_DIRECT_OUTPUT 1)
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
# Modeled after libxml-config.
|
# Modeled after libxml-config.
|
||||||
|
|
||||||
version=1.2.30beta03
|
version=1.2.30beta04
|
||||||
prefix=""
|
prefix=""
|
||||||
libdir=""
|
libdir=""
|
||||||
libs=""
|
libs=""
|
||||||
|
@ -5,6 +5,6 @@ includedir=@includedir@/libpng12
|
|||||||
|
|
||||||
Name: libpng
|
Name: libpng
|
||||||
Description: Loads and saves PNG files
|
Description: Loads and saves PNG files
|
||||||
Version: 1.2.30beta03
|
Version: 1.2.30beta04
|
||||||
Libs: -L${libdir} -lpng12
|
Libs: -L${libdir} -lpng12
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
# Library name:
|
# Library name:
|
||||||
LIBNAME=libpng12
|
LIBNAME=libpng12
|
||||||
PNGMAJ = 0
|
PNGMAJ = 0
|
||||||
PNGMIN = 1.2.30beta03
|
PNGMIN = 1.2.30beta04
|
||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||||
|
|
||||||
# Shared library names:
|
# Shared library names:
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
# Library name:
|
# Library name:
|
||||||
LIBNAME=libpng12
|
LIBNAME=libpng12
|
||||||
PNGMAJ = 0
|
PNGMAJ = 0
|
||||||
PNGMIN = 1.2.30beta03
|
PNGMIN = 1.2.30beta04
|
||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||||
|
|
||||||
# Shared library names:
|
# Shared library names:
|
||||||
|
@ -20,7 +20,7 @@ LN_SF = ln -f -s
|
|||||||
|
|
||||||
LIBNAME=libpng12
|
LIBNAME=libpng12
|
||||||
PNGMAJ = 0
|
PNGMAJ = 0
|
||||||
PNGMIN = 1.2.30beta03
|
PNGMIN = 1.2.30beta04
|
||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||||
|
|
||||||
prefix=/usr/local
|
prefix=/usr/local
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
# Library name:
|
# Library name:
|
||||||
LIBNAME=libpng12
|
LIBNAME=libpng12
|
||||||
PNGMAJ = 0
|
PNGMAJ = 0
|
||||||
PNGMIN = 1.2.30beta03
|
PNGMIN = 1.2.30beta04
|
||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||||
|
|
||||||
# Shared library names:
|
# Shared library names:
|
||||||
|
@ -74,7 +74,7 @@ CFLAGS= $(strip $(MINGW_CCFLAGS) $(addprefix -I,$(ZLIBINC)) \
|
|||||||
LIBNAME = libpng12
|
LIBNAME = libpng12
|
||||||
PNGMAJ = 0
|
PNGMAJ = 0
|
||||||
CYGDLL = 12
|
CYGDLL = 12
|
||||||
PNGMIN = 1.2.30beta03
|
PNGMIN = 1.2.30beta04
|
||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||||
|
|
||||||
SHAREDLIB=cygpng$(CYGDLL).dll
|
SHAREDLIB=cygpng$(CYGDLL).dll
|
||||||
|
@ -19,7 +19,7 @@ ZLIBINC=../zlib
|
|||||||
# Library name:
|
# Library name:
|
||||||
LIBNAME = libpng12
|
LIBNAME = libpng12
|
||||||
PNGMAJ = 12
|
PNGMAJ = 12
|
||||||
PNGMIN = 1.2.30beta03
|
PNGMIN = 1.2.30beta04
|
||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||||
|
|
||||||
# Shared library names:
|
# Shared library names:
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
# Library name:
|
# Library name:
|
||||||
PNGMAJ = 0
|
PNGMAJ = 0
|
||||||
PNGMIN = 1.2.30beta03
|
PNGMIN = 1.2.30beta04
|
||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||||
LIBNAME = libpng12
|
LIBNAME = libpng12
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
# Library name:
|
# Library name:
|
||||||
LIBNAME = libpng12
|
LIBNAME = libpng12
|
||||||
PNGMAJ = 0
|
PNGMAJ = 0
|
||||||
PNGMIN = 1.2.30beta03
|
PNGMIN = 1.2.30beta04
|
||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||||
|
|
||||||
# Shared library names:
|
# Shared library names:
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
# Library name:
|
# Library name:
|
||||||
LIBNAME = libpng12
|
LIBNAME = libpng12
|
||||||
PNGMAJ = 0
|
PNGMAJ = 0
|
||||||
PNGMIN = 1.2.30beta03
|
PNGMIN = 1.2.30beta04
|
||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||||
|
|
||||||
# Shared library names:
|
# Shared library names:
|
||||||
|
@ -18,7 +18,7 @@ ZLIBINC=/opt/zlib/include
|
|||||||
# Library name:
|
# Library name:
|
||||||
LIBNAME = libpng12
|
LIBNAME = libpng12
|
||||||
PNGMAJ = 0
|
PNGMAJ = 0
|
||||||
PNGMIN = 1.2.30beta03
|
PNGMIN = 1.2.30beta04
|
||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||||
|
|
||||||
# Shared library names:
|
# Shared library names:
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
# Library name:
|
# Library name:
|
||||||
LIBNAME = libpng12
|
LIBNAME = libpng12
|
||||||
PNGMAJ = 0
|
PNGMAJ = 0
|
||||||
PNGMIN = 1.2.30beta03
|
PNGMIN = 1.2.30beta04
|
||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||||
|
|
||||||
# Shared library names:
|
# Shared library names:
|
||||||
|
@ -18,7 +18,7 @@ ZLIBINC=/opt/zlib/include
|
|||||||
# Library name:
|
# Library name:
|
||||||
LIBNAME = libpng12
|
LIBNAME = libpng12
|
||||||
PNGMAJ = 0
|
PNGMAJ = 0
|
||||||
PNGMIN = 1.2.30beta03
|
PNGMIN = 1.2.30beta04
|
||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||||
|
|
||||||
# Shared library names:
|
# Shared library names:
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
# Library name:
|
# Library name:
|
||||||
LIBNAME = libpng12
|
LIBNAME = libpng12
|
||||||
PNGMAJ = 0
|
PNGMAJ = 0
|
||||||
PNGMIN = 1.2.30beta03
|
PNGMIN = 1.2.30beta04
|
||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||||
|
|
||||||
# Shared library names:
|
# Shared library names:
|
||||||
|
@ -74,7 +74,7 @@ CFLAGS= $(strip $(MINGW_CCFLAGS) $(addprefix -I,$(ZLIBINC)) \
|
|||||||
LIBNAME = libpng12
|
LIBNAME = libpng12
|
||||||
PNGMAJ = 0
|
PNGMAJ = 0
|
||||||
MINGDLL = 12
|
MINGDLL = 12
|
||||||
PNGMIN = 1.2.30beta03
|
PNGMIN = 1.2.30beta04
|
||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||||
|
|
||||||
SHAREDLIB=libpng$(MINGDLL).dll
|
SHAREDLIB=libpng$(MINGDLL).dll
|
||||||
|
@ -14,7 +14,7 @@ INCSDIR=${LOCALBASE}/include/libpng12
|
|||||||
|
|
||||||
LIB= png12
|
LIB= png12
|
||||||
SHLIB_MAJOR= 0
|
SHLIB_MAJOR= 0
|
||||||
SHLIB_MINOR= 1.2.30beta03
|
SHLIB_MINOR= 1.2.30beta04
|
||||||
SRCS= png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
|
SRCS= png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
|
||||||
pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
|
pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
|
||||||
pngwtran.c pngmem.c pngerror.c pngpread.c
|
pngwtran.c pngmem.c pngerror.c pngpread.c
|
||||||
|
@ -14,7 +14,7 @@ INCSDIR=${LOCALBASE}/include/libpng
|
|||||||
|
|
||||||
LIB= png
|
LIB= png
|
||||||
SHLIB_MAJOR= 3
|
SHLIB_MAJOR= 3
|
||||||
SHLIB_MINOR= 1.2.30beta03
|
SHLIB_MINOR= 1.2.30beta04
|
||||||
SRCS= png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
|
SRCS= png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
|
||||||
pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
|
pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
|
||||||
pngwtran.c pngmem.c pngerror.c pngpread.c
|
pngwtran.c pngmem.c pngerror.c pngpread.c
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
# Library name:
|
# Library name:
|
||||||
LIBNAME = libpng12
|
LIBNAME = libpng12
|
||||||
PNGMAJ = 0
|
PNGMAJ = 0
|
||||||
PNGMIN = 1.2.30beta03
|
PNGMIN = 1.2.30beta04
|
||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||||
|
|
||||||
# Shared library names:
|
# Shared library names:
|
||||||
|
@ -8,7 +8,7 @@ LIBDIR= ${PREFIX}/lib
|
|||||||
MANDIR= ${PREFIX}/man/cat
|
MANDIR= ${PREFIX}/man/cat
|
||||||
|
|
||||||
SHLIB_MAJOR= 0
|
SHLIB_MAJOR= 0
|
||||||
SHLIB_MINOR= 1.2.30beta03
|
SHLIB_MINOR= 1.2.30beta04
|
||||||
|
|
||||||
LIB= png
|
LIB= png
|
||||||
SRCS= png.c pngerror.c pngget.c pngmem.c pngpread.c \
|
SRCS= png.c pngerror.c pngget.c pngmem.c pngpread.c \
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
# Library name:
|
# Library name:
|
||||||
LIBNAME = libpng12
|
LIBNAME = libpng12
|
||||||
PNGMAJ = 0
|
PNGMAJ = 0
|
||||||
PNGMIN = 1.2.30beta03
|
PNGMIN = 1.2.30beta04
|
||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||||
|
|
||||||
# Shared library names:
|
# Shared library names:
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
# Library name:
|
# Library name:
|
||||||
LIBNAME=libpng12
|
LIBNAME=libpng12
|
||||||
PNGMAJ = 0
|
PNGMAJ = 0
|
||||||
PNGMIN = 1.2.30beta03
|
PNGMIN = 1.2.30beta04
|
||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||||
|
|
||||||
# Shared library names:
|
# Shared library names:
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
# Library name:
|
# Library name:
|
||||||
LIBNAME=libpng12
|
LIBNAME=libpng12
|
||||||
PNGMAJ = 0
|
PNGMAJ = 0
|
||||||
PNGMIN = 1.2.30beta03
|
PNGMIN = 1.2.30beta04
|
||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||||
|
|
||||||
# Shared library names:
|
# Shared library names:
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
# Library name:
|
# Library name:
|
||||||
PNGMAJ = 0
|
PNGMAJ = 0
|
||||||
PNGMIN = 1.2.30beta03
|
PNGMIN = 1.2.30beta04
|
||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||||
LIBNAME = libpng12
|
LIBNAME = libpng12
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
# Library name:
|
# Library name:
|
||||||
LIBNAME = libpng12
|
LIBNAME = libpng12
|
||||||
PNGMAJ = 0
|
PNGMAJ = 0
|
||||||
PNGMIN = 1.2.30beta03
|
PNGMIN = 1.2.30beta04
|
||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||||
|
|
||||||
# Shared library names:
|
# Shared library names:
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
# Library name:
|
# Library name:
|
||||||
LIBNAME = libpng12
|
LIBNAME = libpng12
|
||||||
PNGMAJ = 0
|
PNGMAJ = 0
|
||||||
PNGMIN = 1.2.30beta03
|
PNGMIN = 1.2.30beta04
|
||||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||||
|
|
||||||
# Shared library names:
|
# Shared library names:
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
; PNG.LIB module definition file for OS/2
|
; PNG.LIB module definition file for OS/2
|
||||||
;----------------------------------------
|
;----------------------------------------
|
||||||
|
|
||||||
; Version 1.2.30beta03
|
; Version 1.2.30beta04
|
||||||
|
|
||||||
LIBRARY PNG
|
LIBRARY PNG
|
||||||
DESCRIPTION "PNG image compression library for OS/2"
|
DESCRIPTION "PNG image compression library for OS/2"
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
LIBRARY
|
LIBRARY
|
||||||
|
|
||||||
EXPORTS
|
EXPORTS
|
||||||
;Version 1.2.30beta03
|
;Version 1.2.30beta04
|
||||||
png_build_grayscale_palette @1
|
png_build_grayscale_palette @1
|
||||||
png_check_sig @2
|
png_check_sig @2
|
||||||
png_chunk_error @3
|
png_chunk_error @3
|
||||||
|
Reference in New Issue
Block a user