Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Libpng
提交
4310a4d8
T
Third Party Libpng
项目概览
OpenHarmony
/
Third Party Libpng
12 个月 前同步成功
通知
4
Star
22
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Libpng
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
4310a4d8
编写于
7月 10, 2008
作者:
G
Glenn Randers-Pehrson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Imported from libpng-1.2.30beta04.tar
上级
b96b3425
变更
63
展开全部
隐藏空白更改
内联
并排
Showing
63 changed file
with
737 addition
and
708 deletion
+737
-708
ANNOUNCE
ANNOUNCE
+20
-17
CHANGES
CHANGES
+3
-0
INSTALL
INSTALL
+8
-8
KNOWNBUG
KNOWNBUG
+1
-1
LICENSE
LICENSE
+2
-2
Makefile.am
Makefile.am
+1
-1
Makefile.in
Makefile.in
+1
-1
README
README
+7
-7
Y2KINFO
Y2KINFO
+2
-2
configure
configure
+11
-11
configure.ac
configure.ac
+2
-2
example.c
example.c
+3
-3
libpng-1.2.30beta04.txt
libpng-1.2.30beta04.txt
+4
-4
libpng.3
libpng.3
+10
-10
libpngpf.3
libpngpf.3
+2
-2
png.5
png.5
+1
-1
png.c
png.c
+25
-25
png.h
png.h
+10
-10
pngconf.h
pngconf.h
+1
-1
pngerror.c
pngerror.c
+23
-23
pngget.c
pngget.c
+11
-11
pngmem.c
pngmem.c
+12
-12
pngpread.c
pngpread.c
+27
-28
pngread.c
pngread.c
+41
-50
pngrio.c
pngrio.c
+5
-5
pngrtran.c
pngrtran.c
+56
-55
pngrutil.c
pngrutil.c
+77
-97
pngset.c
pngset.c
+77
-56
pngtest.c
pngtest.c
+104
-92
pngtrans.c
pngtrans.c
+13
-13
pngwio.c
pngwio.c
+9
-9
pngwrite.c
pngwrite.c
+10
-10
pngwtran.c
pngwtran.c
+3
-3
pngwutil.c
pngwutil.c
+126
-107
scripts/CMakeLists.txt
scripts/CMakeLists.txt
+1
-1
scripts/libpng-config-head.in
scripts/libpng-config-head.in
+1
-1
scripts/libpng.pc.in
scripts/libpng.pc.in
+1
-1
scripts/makefile.32sunu
scripts/makefile.32sunu
+1
-1
scripts/makefile.64sunu
scripts/makefile.64sunu
+1
-1
scripts/makefile.aix
scripts/makefile.aix
+1
-1
scripts/makefile.beos
scripts/makefile.beos
+1
-1
scripts/makefile.cygwin
scripts/makefile.cygwin
+1
-1
scripts/makefile.darwin
scripts/makefile.darwin
+1
-1
scripts/makefile.dec
scripts/makefile.dec
+1
-1
scripts/makefile.elf
scripts/makefile.elf
+1
-1
scripts/makefile.gcmmx
scripts/makefile.gcmmx
+1
-1
scripts/makefile.hp64
scripts/makefile.hp64
+1
-1
scripts/makefile.hpgcc
scripts/makefile.hpgcc
+1
-1
scripts/makefile.hpux
scripts/makefile.hpux
+1
-1
scripts/makefile.linux
scripts/makefile.linux
+1
-1
scripts/makefile.mingw
scripts/makefile.mingw
+1
-1
scripts/makefile.ne12bsd
scripts/makefile.ne12bsd
+1
-1
scripts/makefile.netbsd
scripts/makefile.netbsd
+1
-1
scripts/makefile.nommx
scripts/makefile.nommx
+1
-1
scripts/makefile.openbsd
scripts/makefile.openbsd
+1
-1
scripts/makefile.sco
scripts/makefile.sco
+1
-1
scripts/makefile.sggcc
scripts/makefile.sggcc
+1
-1
scripts/makefile.sgi
scripts/makefile.sgi
+1
-1
scripts/makefile.so9
scripts/makefile.so9
+1
-1
scripts/makefile.solaris
scripts/makefile.solaris
+1
-1
scripts/makefile.solaris-x86
scripts/makefile.solaris-x86
+1
-1
scripts/pngos2.def
scripts/pngos2.def
+1
-1
scripts/pngw32.def
scripts/pngw32.def
+1
-1
未找到文件。
ANNOUNCE
浏览文件 @
4310a4d8
Libpng 1.2.30beta0
3 - July 6
, 2008
Libpng 1.2.30beta0
4 - July 10
, 2008
This is not intended to be a public release. It will be replaced
within a few weeks by a public version or by another test version.
...
...
@@ -9,37 +9,37 @@ Files available for download:
Source files with LF line endings (for Unix/Linux) and with a
"configure" script
libpng-1.2.30beta0
3
.tar.gz
libpng-1.2.30beta0
3
.tar.lzma
libpng-1.2.30beta0
4
.tar.gz
libpng-1.2.30beta0
4
.tar.lzma
(Get the lzma codec from <http://tukaani.org/lzma>).
libpng-1.2.30beta0
3
.tar.bz2
libpng-1.2.30beta0
4
.tar.bz2
Source files with LF line endings (for Unix/Linux) without the
"configure" script
libpng-1.2.30beta0
3
-no-config.tar.gz
libpng-1.2.30beta0
3
-no-config.tar.lzma
libpng-1.2.30beta0
3
-no-config.tar.bz2
libpng-1.2.30beta0
4
-no-config.tar.gz
libpng-1.2.30beta0
4
-no-config.tar.lzma
libpng-1.2.30beta0
4
-no-config.tar.bz2
Source files with CRLF line endings (for Windows), without the
"configure" script
lp1230b0
3
.zip
lp1230b0
3
.7z
lp1230b0
3
.tar.bz2
lp1230b0
4
.zip
lp1230b0
4
.7z
lp1230b0
4
.tar.bz2
Project files
libpng-1.2.30beta0
3
-project-netware.zip
libpng-1.2.30beta0
3
-project-wince.zip
libpng-1.2.30beta0
4
-project-netware.zip
libpng-1.2.30beta0
4
-project-wince.zip
Other information:
libpng-1.2.30beta0
3
-README.txt
libpng-1.2.30beta0
3
-KNOWNBUGS.txt
libpng-1.2.30beta0
3
-LICENSE.txt
libpng-1.2.30beta0
3
-Y2K-compliance.txt
libpng-1.2.30beta0
3
-[previous version]-diff.txt
libpng-1.2.30beta0
4
-README.txt
libpng-1.2.30beta0
4
-KNOWNBUGS.txt
libpng-1.2.30beta0
4
-LICENSE.txt
libpng-1.2.30beta0
4
-Y2K-compliance.txt
libpng-1.2.30beta0
4
-[previous version]-diff.txt
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 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
(subscription required; visit
...
...
CHANGES
浏览文件 @
4310a4d8
...
...
@@ -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 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
(subscription required; visit
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
...
...
INSTALL
浏览文件 @
4310a4d8
Installing libpng version 1.2.30beta0
3 - July 6
, 2008
Installing libpng version 1.2.30beta0
4 - July 10
, 2008
On Unix/Linux and similar systems, you can simply type
...
...
@@ -44,7 +44,7 @@ to have access to the zlib.h and zconf.h include files that
correspond to the version of zlib that's installed.
You can rename the directories that you downloaded (they
might be called "libpng-1.2.30beta0
3
" or "lpng109" and "zlib-1.2.1"
might be called "libpng-1.2.30beta0
4
" or "lpng109" and "zlib-1.2.1"
or "zlib121") so that you have directories called "zlib" and "libpng".
Your directory structure should look like this:
...
...
@@ -101,9 +101,9 @@ include
CMakeLists.txt => "cmake" script
makefile.std => Generic UNIX makefile (cc, creates static libpng.a)
makefile.elf => Linux/ELF makefile symbol versioning,
gcc, creates libpng12.so.0.1.2.30beta0
3
)
gcc, creates libpng12.so.0.1.2.30beta0
4
)
makefile.linux => Linux/ELF makefile
(gcc, creates libpng12.so.0.1.2.30beta0
3
)
(gcc, creates libpng12.so.0.1.2.30beta0
4
)
makefile.gcc => Generic makefile (gcc, creates static libpng.a)
makefile.knr => Archaic UNIX Makefile that converts files with
ansi2knr (Requires ansi2knr.c from
...
...
@@ -125,14 +125,14 @@ include
makefile.openbsd => OpenBSD makefile
makefile.sgi => Silicon Graphics IRIX makefile (cc, creates static lib)
makefile.sggcc => Silicon Graphics (gcc,
creates libpng12.so.0.1.2.30beta0
3
)
creates libpng12.so.0.1.2.30beta0
4
)
makefile.sunos => Sun makefile
makefile.solaris => Solaris 2.X makefile (gcc,
creates libpng12.so.0.1.2.30beta0
3
)
creates libpng12.so.0.1.2.30beta0
4
)
makefile.solaris-x86 => Solaris/intelMMX 2.X makefile (gcc,
creates libpng12.so.0.1.2.30beta0
3
)
creates libpng12.so.0.1.2.30beta0
4
)
makefile.so9 => Solaris 9 makefile (gcc,
creates libpng12.so.0.1.2.30beta0
3
)
creates libpng12.so.0.1.2.30beta0
4
)
makefile.32sunu => Sun Ultra 32-bit makefile
makefile.64sunu => Sun Ultra 64-bit makefile
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
...
...
KNOWNBUG
浏览文件 @
4310a4d8
Known bugs in libpng version 1.2.30beta0
3
Known bugs in libpng version 1.2.30beta0
4
1. February 23, 2006: The custom makefiles don't build libpng with -lz.
...
...
LICENSE
浏览文件 @
4310a4d8
...
...
@@ -8,7 +8,7 @@ COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
If you modify libpng you may insert additional notices immediately following
this sentence.
libpng versions 1.2.6, August 15, 2004, through 1.2.30beta0
3, July 6
, 2008, are
libpng versions 1.2.6, August 15, 2004, through 1.2.30beta0
4, July 10
, 2008, are
Copyright (c) 2004, 2006-2008 Glenn Randers-Pehrson, and are
distributed according to the same disclaimer and license as libpng-1.2.5
with the following individual added to the list of Contributing Authors
...
...
@@ -106,4 +106,4 @@ certification mark of the Open Source Initiative.
Glenn Randers-Pehrson
glennrp at users.sourceforge.net
July
6
, 2008
July
10
, 2008
Makefile.am
浏览文件 @
4310a4d8
...
...
@@ -86,7 +86,7 @@ EXTRA_DIST= \
${srcdir}
/contrib/pngsuite/
*
\
${srcdir}
/contrib/visupng/
*
\
$(TESTS)
\
example.c libpng-1.2.30beta0
3
.txt pngvcrd.c
example.c libpng-1.2.30beta0
4
.txt pngvcrd.c
CLEANFILES
=
pngout.png libpng12.pc libpng12-config libpng.vers
\
libpng.sym
...
...
Makefile.in
浏览文件 @
4310a4d8
...
...
@@ -331,7 +331,7 @@ EXTRA_DIST = \
${srcdir}
/contrib/pngsuite/
*
\
${srcdir}
/contrib/visupng/
*
\
$(TESTS)
\
example.c libpng-1.2.30beta0
3
.txt pngvcrd.c
example.c libpng-1.2.30beta0
4
.txt pngvcrd.c
CLEANFILES
=
pngout.png libpng12.pc libpng12-config libpng.vers
\
libpng.sym
...
...
README
浏览文件 @
4310a4d8
README for libpng version 1.2.30beta0
3 - July 6
, 2008 (shared library 12.0)
README for libpng version 1.2.30beta0
4 - July 10
, 2008 (shared library 12.0)
See the note about version numbers near the top of png.h
See INSTALL for instructions on how to install libpng.
...
...
@@ -194,11 +194,11 @@ Files in this distribution:
descrip.mms => VMS makefile for MMS or MMK
makefile.std => Generic UNIX makefile (cc, creates static libpng.a)
makefile.elf => Linux/ELF makefile symbol versioning,
gcc, creates libpng12.so.0.1.2.30beta0
3
)
gcc, creates libpng12.so.0.1.2.30beta0
4
)
makefile.linux => Linux/ELF makefile
(gcc, creates libpng12.so.0.1.2.30beta0
3
)
(gcc, creates libpng12.so.0.1.2.30beta0
4
)
makefile.gcmmx => Linux/ELF makefile
(gcc, creates libpng12.so.0.1.2.30beta0
3
,
(gcc, creates libpng12.so.0.1.2.30beta0
4
,
uses assembler code tuned for Intel MMX platform)
makefile.gcc => Generic makefile (gcc, creates static libpng.a)
makefile.knr => Archaic UNIX Makefile that converts files with
...
...
@@ -220,12 +220,12 @@ Files in this distribution:
makefile.openbsd => OpenBSD makefile
makefile.sgi => Silicon Graphics IRIX (cc, creates static lib)
makefile.sggcc => Silicon Graphics
(gcc, creates libpng12.so.0.1.2.30beta0
3
)
(gcc, creates libpng12.so.0.1.2.30beta0
4
)
makefile.sunos => Sun makefile
makefile.solaris => Solaris 2.X makefile
(gcc, creates libpng12.so.0.1.2.30beta0
3
)
(gcc, creates libpng12.so.0.1.2.30beta0
4
)
makefile.so9 => Solaris 9 makefile
(gcc, creates libpng12.so.0.1.2.30beta0
3
)
(gcc, creates libpng12.so.0.1.2.30beta0
4
)
makefile.32sunu => Sun Ultra 32-bit makefile
makefile.64sunu => Sun Ultra 64-bit makefile
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
...
...
Y2KINFO
浏览文件 @
4310a4d8
Y2K compliance in libpng:
=========================
July
6
, 2008
July
10
, 2008
Since the PNG Development group is an ad-hoc body, we can't make
an official declaration.
This is your unofficial assurance that libpng from version 0.71 and
upward through 1.2.30beta0
3
are Y2K compliant. It is my belief that earlier
upward through 1.2.30beta0
4
are Y2K compliant. It is my belief that earlier
versions were also Y2K compliant.
Libpng only has three year fields. One is a 2-byte unsigned integer
...
...
configure
浏览文件 @
4310a4d8
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.62 for libpng 1.2.30beta0
3
.
# Generated by GNU Autoconf 2.62 for libpng 1.2.30beta0
4
.
#
# Report bugs to <png-mng-implement@lists.sourceforge.net>.
#
...
...
@@ -745,8 +745,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME
=
'libpng'
PACKAGE_TARNAME
=
'libpng'
PACKAGE_VERSION
=
'1.2.30beta0
3
'
PACKAGE_STRING
=
'libpng 1.2.30beta0
3
'
PACKAGE_VERSION
=
'1.2.30beta0
4
'
PACKAGE_STRING
=
'libpng 1.2.30beta0
4
'
PACKAGE_BUGREPORT
=
'png-mng-implement@lists.sourceforge.net'
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.
# This message is too long to be a string in the A/UX 3.1 sh.
cat
<<
_ACEOF
\`
configure' configures libpng 1.2.30beta0
3
to adapt to many kinds of systems.
\`
configure' configures libpng 1.2.30beta0
4
to adapt to many kinds of systems.
Usage:
$0
[OPTION]... [VAR=VALUE]...
...
...
@@ -1554,7 +1554,7 @@ fi
if
test
-n
"
$ac_init_help
"
;
then
case
$ac_init_help
in
short
|
recursive
)
echo
"Configuration of libpng 1.2.30beta0
3
:"
;;
short
|
recursive
)
echo
"Configuration of libpng 1.2.30beta0
4
:"
;;
esac
cat
<<
\
_ACEOF
...
...
@@ -1661,7 +1661,7 @@ fi
test
-n
"
$ac_init_help
"
&&
exit
$ac_status
if
$ac_init_version
;
then
cat
<<
\
_ACEOF
libpng configure 1.2.30beta0
3
libpng configure 1.2.30beta0
4
generated by GNU Autoconf 2.62
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
running configure, to aid debugging if configure makes a mistake.
It was created by libpng
$as_me
1.2.30beta0
3
, which was
It was created by libpng
$as_me
1.2.30beta0
4
, which was
generated by GNU Autoconf 2.62. Invocation command line was
$ $0
$@
...
...
@@ -2389,7 +2389,7 @@ fi
# Define the identity of the package.
PACKAGE
=
'libpng'
VERSION
=
'1.2.30beta0
3
'
VERSION
=
'1.2.30beta0
4
'
cat
>>
confdefs.h
<<
_ACEOF
...
...
@@ -2558,7 +2558,7 @@ fi
PNGLIB_VERSION
=
1.2.30beta0
3
PNGLIB_VERSION
=
1.2.30beta0
4
PNGLIB_MAJOR
=
1
PNGLIB_MINOR
=
2
PNGLIB_RELEASE
=
30
...
...
@@ -13125,7 +13125,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by libpng
$as_me
1.2.30beta0
3
, which was
This file was extended by libpng
$as_me
1.2.30beta0
4
, which was
generated by GNU Autoconf 2.62. Invocation command line was
CONFIG_FILES =
$CONFIG_FILES
...
...
@@ -13178,7 +13178,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat
>>
$CONFIG_STATUS
<<
_ACEOF
|| ac_write_fail=1
ac_cs_version="
\\
libpng config.status 1.2.30beta0
3
libpng config.status 1.2.30beta0
4
configured by
$0
, generated by GNU Autoconf 2.62,
with options
\\
"`
$as_echo
"
$ac_configure_args
" | sed 's/^ //; s/[
\\
""
\`\$
]/
\\\\
&/g'`
\\
"
...
...
configure.ac
浏览文件 @
4310a4d8
...
...
@@ -18,12 +18,12 @@ AC_PREREQ(2.59)
dnl Version number stuff here:
AC_INIT([libpng], [1.2.30beta0
3
], [png-mng-implement@lists.sourceforge.net])
AC_INIT([libpng], [1.2.30beta0
4
], [png-mng-implement@lists.sourceforge.net])
AM_INIT_AUTOMAKE
dnl stop configure from automagically running automake
AM_MAINTAINER_MODE
PNGLIB_VERSION=1.2.30beta0
3
PNGLIB_VERSION=1.2.30beta0
4
PNGLIB_MAJOR=1
PNGLIB_MINOR=2
PNGLIB_RELEASE=30
...
...
example.c
浏览文件 @
4310a4d8
...
...
@@ -2,7 +2,7 @@
#if 0 /* in case someone actually tries to compile this */
/* 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.
* Maintained 1998-2008 Glenn Randers-Pehrson
* Maintained 1996, 1997 Andreas Dilger)
...
...
@@ -505,7 +505,7 @@ row_callback(png_structp png_ptr, png_bytep new_row,
* shown below:
*/
/* 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
* 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
* 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
);
}
/*
...
...
libpng-1.2.30beta0
3
.txt
→
libpng-1.2.30beta0
4
.txt
浏览文件 @
4310a4d8
libpng.txt - A description on how to use and modify libpng
libpng version 1.2.30beta0
3 - July 6
, 2008
libpng version 1.2.30beta0
4 - July 10
, 2008
Updated and distributed by Glenn Randers-Pehrson
<glennrp at users.sourceforge.net>
Copyright (c) 1998-2008 Glenn Randers-Pehrson
...
...
@@ -9,7 +9,7 @@ libpng.txt - A description on how to use and modify libpng
Based on:
libpng versions 0.97, January 1998, through 1.2.30beta0
3 - July 6
, 2008
libpng versions 0.97, January 1998, through 1.2.30beta0
4 - July 10
, 2008
Updated and distributed by Glenn Randers-Pehrson
Copyright (c) 1998-2008 Glenn Randers-Pehrson
...
...
@@ -2851,13 +2851,13 @@ application:
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
an official declaration.
This is your unofficial assurance that libpng from version 0.71 and
upward through 1.2.30beta0
3
are Y2K compliant. It is my belief that earlier
upward through 1.2.30beta0
4
are Y2K compliant. It is my belief that earlier
versions were also Y2K compliant.
Libpng only has three year fields. One is a 2-byte unsigned integer that
...
...
libpng.3
浏览文件 @
4310a4d8
.TH LIBPNG 3 "July
6
, 2008"
.TH LIBPNG 3 "July
10
, 2008"
.SH NAME
libpng \- Portable Network Graphics (PNG) Reference Library 1.2.30beta0
3
libpng \- Portable Network Graphics (PNG) Reference Library 1.2.30beta0
4
.SH SYNOPSIS
\fI\fB
...
...
@@ -821,7 +821,7 @@ Following is a copy of the libpng.txt file that accompanies libpng.
.SH LIBPNG.TXT
libpng.txt - A description on how to use and modify libpng
libpng version 1.2.30beta0
3 - July 6
, 2008
libpng version 1.2.30beta0
4 - July 10
, 2008
Updated and distributed by Glenn Randers-Pehrson
<glennrp at users.sourceforge.net>
Copyright (c) 1998-2008 Glenn Randers-Pehrson
...
...
@@ -830,7 +830,7 @@ libpng.txt - A description on how to use and modify libpng
Based on:
libpng versions 0.97, January 1998, through 1.2.30beta0
3 - July 6
, 2008
libpng versions 0.97, January 1998, through 1.2.30beta0
4 - July 10
, 2008
Updated and distributed by Glenn Randers-Pehrson
Copyright (c) 1998-2008 Glenn Randers-Pehrson
...
...
@@ -3672,13 +3672,13 @@ application:
.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
an official declaration.
This is your unofficial assurance that libpng from version 0.71 and
upward through 1.2.30beta0
3
are Y2K compliant. It is my belief that earlier
upward through 1.2.30beta0
4
are Y2K compliant. It is my belief that earlier
versions were also Y2K compliant.
Libpng only has three year fields. One is a 2-byte unsigned integer that
...
...
@@ -3911,7 +3911,7 @@ the first widely used release:
1.0.35 10 10035 10.so.0.35[.0]
1.2.29 13 10229 12.so.0.29[.0]
1.0.37 10 10037 10.so.0.37[.0]
1.2.30beta01-0
3
13 10230 12.so.0.30[.0]
1.2.30beta01-0
4
13 10230 12.so.0.30[.0]
Henceforth the source version will match the shared-library minor
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.
Libpng version 1.2.30beta0
3 - July 6
, 2008:
Libpng version 1.2.30beta0
4 - July 10
, 2008:
Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
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
this sentence.
libpng versions 1.2.6, August 15, 2004, through 1.2.30beta0
3, July 6
, 2008, are
libpng versions 1.2.6, August 15, 2004, through 1.2.30beta0
4, July 10
, 2008, are
Copyright (c) 2004,2006-2008 Glenn Randers-Pehrson, and are
distributed according to the same disclaimer and license as libpng-1.2.5
with the following individual added to the list of Contributing Authors
...
...
@@ -4087,7 +4087,7 @@ certification mark of the Open Source Initiative.
Glenn Randers-Pehrson
glennrp at users.sourceforge.net
July
6
, 2008
July
10
, 2008
.\" end of man page
libpngpf.3
浏览文件 @
4310a4d8
.TH LIBPNGPF 3 "July
6
, 2008"
.TH LIBPNGPF 3 "July
10
, 2008"
.SH NAME
libpng \- Portable Network Graphics (PNG) Reference Library 1.2.30beta0
3
libpng \- Portable Network Graphics (PNG) Reference Library 1.2.30beta0
4
(private functions)
.SH SYNOPSIS
\fB#include <png.h>\fP
...
...
png.5
浏览文件 @
4310a4d8
.TH PNG 5 "July
6
, 2008"
.TH PNG 5 "July
10
, 2008"
.SH NAME
png \- Portable Network Graphics (PNG) format
.SH DESCRIPTION
...
...
png.c
浏览文件 @
4310a4d8
/* 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
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
...
...
@@ -13,7 +13,7 @@
#include "png.h"
/* Generate a compiler error if there is an old png.h in the search path. */
typedef
version_1_2_30beta0
3
Your_png_h_is_not_version_1_2_30beta03
;
typedef
version_1_2_30beta0
4
Your_png_h_is_not_version_1_2_30beta04
;
/* Version information for C files. This had better match the version
* string defined in png.h. */
...
...
@@ -92,7 +92,7 @@ PNG_CONST int FARDATA png_pass_dsp_mask[]
void
PNGAPI
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
"
);
if
(
num_bytes
>
8
)
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
num_bytes
;
if
(
png_ptr
==
NULL
)
return
(
NULL
);
if
(
png_ptr
==
NULL
)
return
(
NULL
);
if
(
items
>
PNG_UINT_32_MAX
/
size
)
{
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_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
info_ptr
=
(
png_infop
)
png_create_struct_2
(
PNG_STRUCT_INFO
,
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_infop
info_ptr
=
NULL
;
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
==
NULL
)
return
;
png_debug
(
1
,
"in png_destroy_info_struct
\n
"
);
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
;
if
(
info_ptr
==
NULL
)
return
;
if
(
info_ptr
==
NULL
)
return
;
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
);
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
"
);
if
(
png_ptr
==
NULL
||
info_ptr
==
NULL
)
return
;
if
(
freer
==
PNG_DESTROY_WILL_FREE_DATA
)
if
(
freer
==
PNG_DESTROY_WILL_FREE_DATA
)
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
;
else
png_warning
(
png_ptr
,
...
...
@@ -459,7 +459,7 @@ if (mask & PNG_FREE_SPLT)
{
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
].
entries
);
...
...
@@ -469,7 +469,7 @@ if (mask & PNG_FREE_SPLT)
}
else
{
if
(
info_ptr
->
splt_palettes_num
)
if
(
info_ptr
->
splt_palettes_num
)
{
int
i
;
for
(
i
=
0
;
i
<
(
int
)
info_ptr
->
splt_palettes_num
;
i
++
)
...
...
@@ -485,7 +485,7 @@ if (mask & PNG_FREE_SPLT)
#endif
#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_ptr
->
unknown_chunk
.
data
=
NULL
;
...
...
@@ -498,7 +498,7 @@ if (mask & PNG_FREE_UNKN)
{
if
(
num
!=
-
1
)
{
if
(
info_ptr
->
unknown_chunks
)
if
(
info_ptr
->
unknown_chunks
)
{
png_free
(
png_ptr
,
info_ptr
->
unknown_chunks
[
num
].
data
);
info_ptr
->
unknown_chunks
[
num
].
data
=
NULL
;
...
...
@@ -508,7 +508,7 @@ if (mask & PNG_FREE_UNKN)
{
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
++
)
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
)
#endif
{
if
(
info_ptr
->
row_pointers
)
if
(
info_ptr
->
row_pointers
)
{
int
row
;
for
(
row
=
0
;
row
<
(
int
)
info_ptr
->
height
;
row
++
)
...
...
@@ -578,7 +578,7 @@ if (mask & PNG_FREE_ROWS)
#endif
#ifdef PNG_FREE_ME_SUPPORTED
if
(
num
==
-
1
)
if
(
num
==
-
1
)
info_ptr
->
free_me
&=
~
mask
;
else
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_get_io_ptr
(
png_structp
png_ptr
)
{
if
(
png_ptr
==
NULL
)
return
(
NULL
);
if
(
png_ptr
==
NULL
)
return
(
NULL
);
return
(
png_ptr
->
io_ptr
);
}
...
...
@@ -632,7 +632,7 @@ void PNGAPI
png_init_io
(
png_structp
png_ptr
,
png_FILE_p
fp
)
{
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
;
}
#endif
...
...
@@ -648,7 +648,7 @@ png_convert_to_rfc1123(png_structp png_ptr, png_timep ptime)
{
"Jan"
,
"Feb"
,
"Mar"
,
"Apr"
,
"May"
,
"Jun"
,
"Jul"
,
"Aug"
,
"Sep"
,
"Oct"
,
"Nov"
,
"Dec"
};
if
(
png_ptr
==
NULL
)
return
(
NULL
);
if
(
png_ptr
==
NULL
)
return
(
NULL
);
if
(
png_ptr
->
time_buffer
==
NULL
)
{
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_ptr
=
png_ptr
;
/* silence compiler warning about unused png_ptr */
return
((
png_charp
)
"
\n
libpng version 1.2.30beta0
3 - July 6
, 2008
\n
\
return
((
png_charp
)
"
\n
libpng version 1.2.30beta0
4 - July 10
, 2008
\n
\
Copyright (c) 1998-2008 Glenn Randers-Pehrson
\n
\
Copyright (c) 1996-1997 Andreas Dilger
\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 */
int
i
;
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
;
p
=
png_ptr
->
chunk_list
+
png_ptr
->
num_chunk_list
*
5
-
5
;
for
(
i
=
png_ptr
->
num_chunk_list
;
i
;
i
--
,
p
-=
5
)
p
=
png_ptr
->
chunk_list
+
png_ptr
->
num_chunk_list
*
5
-
5
;
for
(
i
=
png_ptr
->
num_chunk_list
;
i
;
i
--
,
p
-=
5
)
if
(
!
png_memcmp
(
chunk_name
,
p
,
4
))
return
((
int
)
*
(
p
+
4
));
return
((
int
)
*
(
p
+
4
));
return
0
;
}
#endif
...
...
png.h
浏览文件 @
4310a4d8
/* png.h - header file for PNG reference library
*
* libpng version 1.2.30beta0
3 - July 6
, 2008
* libpng version 1.2.30beta0
4 - July 10
, 2008
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
...
...
@@ -8,7 +8,7 @@
* Authors and maintainers:
* libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
* libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger
* libpng versions 0.97, January 1998, through 1.2.30beta0
3 - July 6
, 2008: Glenn
* libpng versions 0.97, January 1998, through 1.2.30beta0
4 - July 10
, 2008: Glenn
* See also "Contributing Authors", below.
*
* Note about libpng version numbers:
...
...
@@ -193,7 +193,7 @@
* 1.0.35 10 10035 10.so.0.35[.0]
* 1.2.29 13 10229 12.so.0.29[.0]
* 1.0.37 10 10037 10.so.0.37[.0]
* 1.2.30beta01-0
3
13 10230 12.so.0.30[.0]
* 1.2.30beta01-0
4
13 10230 12.so.0.30[.0]
*
* Henceforth the source version will match the shared-library major
* 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
* this sentence.
*
* libpng versions 1.2.6, August 15, 2004, through 1.2.30beta0
3, July 6
, 2008, are
* libpng versions 1.2.6, August 15, 2004, through 1.2.30beta0
4, July 10
, 2008, are
* Copyright (c) 2004, 2006-2008 Glenn Randers-Pehrson, and are
* distributed according to the same disclaimer and license as libpng-1.2.5
* with the following individual added to the list of Contributing Authors:
...
...
@@ -335,13 +335,13 @@
* Y2K compliance in libpng:
* =========================
*
* July
6
, 2008
* July
10
, 2008
*
* Since the PNG Development group is an ad-hoc body, we can't make
* an official declaration.
*
* This is your unofficial assurance that libpng from version 0.71 and
* upward through 1.2.30beta0
3
are Y2K compliant. It is my belief that earlier
* upward through 1.2.30beta0
4
are Y2K compliant. It is my belief that earlier
* versions were also Y2K compliant.
*
* Libpng only has three year fields. One is a 2-byte unsigned integer
...
...
@@ -397,9 +397,9 @@
*/
/* Version information for png.h - this should match the version in png.c */
#define PNG_LIBPNG_VER_STRING "1.2.30beta0
3
"
#define PNG_LIBPNG_VER_STRING "1.2.30beta0
4
"
#define PNG_HEADER_VERSION_STRING \
" libpng version 1.2.30beta0
3 - July 6
, 2008\n"
" libpng version 1.2.30beta0
4 - July 10
, 2008\n"
#define PNG_LIBPNG_VER_SONUM 0
#define PNG_LIBPNG_VER_DLLNUM 13
...
...
@@ -411,7 +411,7 @@
/* This should match the numeric part of the final component of
* PNG_LIBPNG_VER_STRING, omitting any leading zero: */
#define PNG_LIBPNG_VER_BUILD 0
3
#define PNG_LIBPNG_VER_BUILD 0
4
/* Release Status */
#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
* do not agree upon the version number.
*/
typedef
png_structp
version_1_2_30beta0
3
;
typedef
png_structp
version_1_2_30beta0
4
;
typedef
png_struct
FAR
*
FAR
*
png_structpp
;
...
...
pngconf.h
浏览文件 @
4310a4d8
/* pngconf.h - machine configurable file for libpng
*
* libpng version 1.2.30beta0
3 - July 6
, 2008
* libpng version 1.2.30beta0
4 - July 10
, 2008
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
...
...
pngerror.c
浏览文件 @
4310a4d8
/* 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
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* (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
==
'#'
)
{
int
offset
;
for
(
offset
=
1
;
offset
<
15
;
offset
++
)
if
(
*
(
error_message
+
offset
)
==
' '
)
for
(
offset
=
1
;
offset
<
15
;
offset
++
)
if
(
*
(
error_message
+
offset
)
==
' '
)
break
;
if
(
png_ptr
->
flags
&
PNG_FLAG_STRIP_ERROR_TEXT
)
{
int
i
;
for
(
i
=
0
;
i
<
offset
-
1
;
i
++
)
for
(
i
=
0
;
i
<
offset
-
1
;
i
++
)
msg
[
i
]
=
error_message
[
i
+
1
];
msg
[
i
]
=
'\0'
;
error_message
=
msg
;
error_message
=
msg
;
}
else
error_message
+=
offset
;
error_message
+=
offset
;
}
else
{
...
...
@@ -110,16 +110,16 @@ png_warning(png_structp png_ptr, png_const_charp warning_message)
{
if
(
*
warning_message
==
'#'
)
{
for
(
offset
=
1
;
offset
<
15
;
offset
++
)
if
(
*
(
warning_message
+
offset
)
==
' '
)
for
(
offset
=
1
;
offset
<
15
;
offset
++
)
if
(
*
(
warning_message
+
offset
)
==
' '
)
break
;
}
}
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
png_default_warning
(
png_ptr
,
warning_message
+
offset
);
png_default_warning
(
png_ptr
,
warning_message
+
offset
);
}
#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
++
]
=
' '
;
png_memcpy
(
buffer
+
iout
,
error_message
,
PNG_MAX_ERROR_TEXT
);
buffer
[
iout
+
PNG_MAX_ERROR_TEXT
-
1
]
=
'\0'
;
png_memcpy
(
buffer
+
iout
,
error_message
,
PNG_MAX_ERROR_TEXT
);
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
];
for
(
offset
=
0
;
offset
<
15
;
offset
++
)
{
error_number
[
offset
]
=
*
(
error_message
+
offset
+
1
);
if
(
*
(
error_message
+
offset
)
==
' '
)
error_number
[
offset
]
=
*
(
error_message
+
offset
+
1
);
if
(
*
(
error_message
+
offset
)
==
' '
)
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
,
error_message
+
offset
);
error_message
+
offset
);
}
else
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
];
for
(
offset
=
0
;
offset
<
15
;
offset
++
)
{
warning_number
[
offset
]
=*
(
warning_message
+
offset
+
1
);
if
(
*
(
warning_message
+
offset
)
==
' '
)
warning_number
[
offset
]
=*
(
warning_message
+
offset
+
1
);
if
(
*
(
warning_message
+
offset
)
==
' '
)
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
,
warning_message
+
offset
);
warning_message
+
offset
);
}
else
fprintf
(
stderr
,
"libpng warning: %s
\n
"
,
warning_message
);
...
...
@@ -333,7 +333,7 @@ png_get_error_ptr(png_structp png_ptr)
void
PNGAPI
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_FLAG_STRIP_ERROR_NUMBERS
|
PNG_FLAG_STRIP_ERROR_TEXT
))
&
strip_mode
);
...
...
pngget.c
浏览文件 @
4310a4d8
/* 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
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* (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
)
{
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
);
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
)
{
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
);
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
)
{
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
)
return
(
0
);
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
)
{
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
);
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
)
{
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
);
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
)
{
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
);
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
)
{
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
);
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
;
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_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
);
retval
|=
PNG_INFO_tRNS
;
}
if
(
trans
!=
NULL
)
if
(
trans
!=
NULL
)
*
trans
=
NULL
;
}
if
(
num_trans
!=
NULL
)
if
(
num_trans
!=
NULL
)
{
*
num_trans
=
info_ptr
->
num_trans
;
retval
|=
PNG_INFO_tRNS
;
...
...
pngmem.c
浏览文件 @
4310a4d8
/* 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
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* (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
));
#ifdef PNG_USER_MEM_SUPPORTED
if
(
malloc_fn
!=
NULL
)
if
(
malloc_fn
!=
NULL
)
{
png_struct
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
)
{
#ifdef PNG_USER_MEM_SUPPORTED
if
(
free_fn
!=
NULL
)
if
(
free_fn
!=
NULL
)
{
png_struct
dummy_struct
;
png_structp
png_ptr
=
&
dummy_struct
;
...
...
@@ -121,7 +121,7 @@ png_malloc(png_structp png_ptr, png_uint_32 size)
return
(
NULL
);
#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
));
else
ret
=
(
png_malloc_default
(
png_ptr
,
size
));
...
...
@@ -170,7 +170,7 @@ png_malloc_default(png_structp png_ptr, png_uint_32 size)
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
));
else
num_blocks
=
1
;
...
...
@@ -292,7 +292,7 @@ png_free_default(png_structp png_ptr, png_voidp ptr)
{
#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
)
{
...
...
@@ -352,7 +352,7 @@ png_create_struct_2(int type, png_malloc_ptr malloc_fn, png_voidp mem_ptr)
return
(
NULL
);
#ifdef PNG_USER_MEM_SUPPORTED
if
(
malloc_fn
!=
NULL
)
if
(
malloc_fn
!=
NULL
)
{
png_struct
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
)
{
#ifdef PNG_USER_MEM_SUPPORTED
if
(
free_fn
!=
NULL
)
if
(
free_fn
!=
NULL
)
{
png_struct
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
)
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
));
else
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_uint_32
save_flags
;
if
(
png_ptr
==
NULL
)
return
(
NULL
);
if
(
png_ptr
==
NULL
)
return
(
NULL
);
save_flags
=
png_ptr
->
flags
;
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
malloc_fn
,
png_free_ptr
free_fn
)
{
if
(
png_ptr
!=
NULL
)
{
if
(
png_ptr
!=
NULL
)
{
png_ptr
->
mem_ptr
=
mem_ptr
;
png_ptr
->
malloc_fn
=
malloc_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_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
);
}
#endif
/* PNG_USER_MEM_SUPPORTED */
...
...
pngpread.c
浏览文件 @
4310a4d8
/* 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
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* (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_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
);
while
(
png_ptr
->
buffer_size
)
...
...
@@ -42,7 +42,7 @@ png_process_data(png_structp png_ptr, png_infop info_ptr,
void
/* PRIVATE */
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
)
{
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
]),
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
))
{
...
...
@@ -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_ptr
->
mode
&
PNG_AFTER_IDAT
)
if
(
png_ptr
->
mode
&
PNG_AFTER_IDAT
)
png_ptr
->
mode
|=
PNG_HAVE_CHUNK_AFTER_IDAT
;
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
;
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
==
NULL
)
return
;
ptr
=
buffer
;
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
;
/* 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"
);
}
else
...
...
@@ -719,7 +719,7 @@ png_push_read_IDAT(png_structp png_ptr)
{
save_size
=
(
png_size_t
)
png_ptr
->
idat_size
;
/* 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"
);
}
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
.
avail_in
=
(
uInt
)
buffer_length
;
for
(;;)
for
(;;)
{
ret
=
inflate
(
&
png_ptr
->
zstream
,
Z_PARTIAL_FLUSH
);
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
))
{
png_error
(
png_ptr
,
"Out of place tEXt"
);
/* to quiet some compiler warnings */
if
(
info_ptr
==
NULL
)
return
;
info_ptr
=
info_ptr
;
/* to quiet some compiler warnings */
}
#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
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_ptr
=
png_ptr
->
current_text
;
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
)
{
text
=
(
png_charp
)
png_malloc
(
png_ptr
,
(
png_uint_32
)(
png_ptr
->
zbuf_size
-
png_ptr
->
zstream
.
avail_out
+
key_size
+
1
));
(
png_uint_32
)(
png_ptr
->
zbuf_size
-
png_ptr
->
zstream
.
avail_out
+
key_size
+
1
));
png_memcpy
(
text
+
key_size
,
png_ptr
->
zbuf
,
png_ptr
->
zbuf_size
-
png_ptr
->
zstream
.
avail_out
);
png_memcpy
(
text
,
key
,
key_size
);
...
...
@@ -1278,8 +1277,8 @@ png_push_read_zTXt(png_structp png_ptr, png_infop info_ptr)
tmp
=
text
;
text
=
(
png_charp
)
png_malloc
(
png_ptr
,
text_size
+
(
png_uint_32
)(
png_ptr
->
zbuf_size
-
png_ptr
->
zstream
.
avail_out
+
1
));
(
png_uint_32
)(
png_ptr
->
zbuf_size
-
png_ptr
->
zstream
.
avail_out
));
png_memcpy
(
text
,
tmp
,
text_size
);
png_free
(
png_ptr
,
tmp
);
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
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_ptr
=
png_ptr
->
current_text
;
png_ptr
->
current_text_size
=
(
png_size_t
)
length
;
...
...
@@ -1469,16 +1468,16 @@ png_push_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32
if
(
!
(
png_ptr
->
chunk_name
[
0
]
&
0x20
))
{
#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
if
(
png_handle_as_unknown
(
png_ptr
,
png_ptr
->
chunk_name
)
!=
PNG_HANDLE_CHUNK_ALWAYS
if
(
png_handle_as_unknown
(
png_ptr
,
png_ptr
->
chunk_name
)
!=
PNG_HANDLE_CHUNK_ALWAYS
#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
&&
png_ptr
->
read_user_chunk_fn
==
NULL
&&
png_ptr
->
read_user_chunk_fn
==
NULL
#endif
)
)
#endif
png_chunk_error
(
png_ptr
,
"unknown critical chunk"
);
png_chunk_error
(
png_ptr
,
"unknown critical chunk"
);
info_ptr
=
info_ptr
;
/* to quiet some compiler warnings */
info_ptr
=
info_ptr
;
/* to quiet some compiler warnings */
}
#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
...
...
@@ -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
);
}
#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 */
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
(
!
(
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_chunk_error
(
png_ptr
,
"unknown critical chunk"
);
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
]
=
{
0xff
,
0x0f
,
0xff
,
0x33
,
0xff
,
0x55
,
0xff
};
#endif
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
==
NULL
)
return
;
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
]);
}
...
...
@@ -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_end_ptr
end_fn
)
{
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
==
NULL
)
return
;
png_ptr
->
info_fn
=
info_fn
;
png_ptr
->
row_fn
=
row_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_get_progressive_ptr
(
png_structp
png_ptr
)
{
if
(
png_ptr
==
NULL
)
return
(
NULL
);
if
(
png_ptr
==
NULL
)
return
(
NULL
);
return
png_ptr
->
io_ptr
;
}
#endif
/* PNG_PROGRESSIVE_READ_SUPPORTED */
pngread.c
浏览文件 @
4310a4d8
/* 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
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* (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
);
if
(
user_png_ver
)
if
(
user_png_ver
)
{
i
=
0
;
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
;
}
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
)
{
/* 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
(
png_sizeof
(
png_struct
)
>
png_struct_size
||
if
(
png_sizeof
(
png_struct
)
>
png_struct_size
||
png_sizeof
(
png_info
)
>
png_info_size
)
{
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
);
}
#endif
if
(
png_sizeof
(
png_struct
)
>
png_struct_size
)
if
(
png_sizeof
(
png_struct
)
>
png_struct_size
)
{
png_ptr
->
error_fn
=
NULL
;
#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
,
"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
;
#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
;
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
==
NULL
)
return
;
do
{
if
(
user_png_ver
[
i
]
!=
png_libpng_ver
[
i
])
if
(
user_png_ver
[
i
]
!=
png_libpng_ver
[
i
])
{
#ifdef PNG_LEGACY_SUPPORTED
png_ptr
->
flags
|=
PNG_FLAG_LIBRARY_MISMATCH
;
...
...
@@ -267,12 +267,12 @@ 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
));
#endif
if
(
png_sizeof
(
png_struct
)
>
png_struct_size
)
{
png_destroy_struct
(
png_ptr
);
*
ptr_ptr
=
(
png_structp
)
png_create_struct
(
PNG_STRUCT_PNG
);
png_ptr
=
*
ptr_ptr
;
}
if
(
png_sizeof
(
png_struct
)
>
png_struct_size
)
{
png_destroy_struct
(
png_ptr
);
*
ptr_ptr
=
(
png_structp
)
png_create_struct
(
PNG_STRUCT_PNG
);
png_ptr
=
*
ptr_ptr
;
}
/* reset all variables to 0 */
png_memset
(
png_ptr
,
0
,
png_sizeof
(
png_struct
));
...
...
@@ -323,7 +323,7 @@ png_read_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
void
PNGAPI
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
"
);
/* If we haven't checked all of the PNG signature bytes, do so now. */
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
;
}
for
(;;)
for
(;;)
{
#ifdef PNG_USE_LOCAL_ARRAYS
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_bytep
chunk_name
=
png_ptr
->
chunk_name
;
chunk_name
=
png_ptr
->
chunk_name
;
/* This should be a binary subdivision search or a hash for
* matching the chunk name rather than a linear search.
*/
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
;
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_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
))
png_read_start_row
(
png_ptr
);
else
...
...
@@ -552,7 +550,7 @@ void PNGAPI
png_start_read_image
(
png_structp
png_ptr
)
{
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
))
png_read_start_row
(
png_ptr
);
}
...
...
@@ -565,11 +563,11 @@ png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row)
#ifdef PNG_USE_LOCAL_ARRAYS
PNG_CONST
PNG_IDAT
;
PNG_CONST
int
png_pass_dsp_mask
[
7
]
=
{
0xff
,
0x0f
,
0xff
,
0x33
,
0xff
,
0x55
,
0xff
};
0xff
};
PNG_CONST
int
png_pass_mask
[
7
]
=
{
0x80
,
0x08
,
0x88
,
0x22
,
0xaa
,
0x55
,
0xff
};
#endif
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_ptr
->
row_number
,
png_ptr
->
pass
);
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
.
width
);
if
(
png_ptr
->
row_buf
[
0
])
if
(
png_ptr
->
row_buf
[
0
])
png_read_filter_row
(
png_ptr
,
&
(
png_ptr
->
row_info
),
png_ptr
->
row_buf
+
1
,
png_ptr
->
prev_row
+
1
,
(
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
);
#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
))
{
/* Intrapixel differencing */
...
...
@@ -822,7 +820,7 @@ png_read_rows(png_structp png_ptr, png_bytepp row,
png_bytepp
dp
;
png_debug
(
1
,
"in png_read_rows
\n
"
);
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
==
NULL
)
return
;
rp
=
row
;
dp
=
display_row
;
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
);
}
else
if
(
rp
!=
NULL
)
else
if
(
rp
!=
NULL
)
for
(
i
=
0
;
i
<
num_rows
;
i
++
)
{
png_bytep
rptr
=
*
rp
;
png_read_row
(
png_ptr
,
rptr
,
png_bytep_NULL
);
rp
++
;
}
else
if
(
dp
!=
NULL
)
else
if
(
dp
!=
NULL
)
for
(
i
=
0
;
i
<
num_rows
;
i
++
)
{
png_bytep
dptr
=
*
dp
;
...
...
@@ -871,7 +869,7 @@ png_read_image(png_structp png_ptr, png_bytepp image)
png_bytepp
rp
;
png_debug
(
1
,
"in png_read_image
\n
"
);
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
==
NULL
)
return
;
#ifdef PNG_READ_INTERLACING_SUPPORTED
pass
=
png_set_interlace_handling
(
png_ptr
);
...
...
@@ -906,11 +904,11 @@ png_read_image(png_structp png_ptr, png_bytepp image)
void
PNGAPI
png_read_end
(
png_structp
png_ptr
,
png_infop
info_ptr
)
{
png_byte
chunk_length
[
4
]
;
png_byte
p
chunk_name
;
png_uint_32
length
;
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 */
do
...
...
@@ -972,17 +970,9 @@ png_read_end(png_structp png_ptr, png_infop info_ptr)
PNG_CONST
PNG_zTXt
;
#endif
#endif
/* PNG_USE_LOCAL_ARRAYS */
png_bytep
chunk_name
;
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
);
length
=
png_read_chunk_header
(
png_ptr
);
chunk_name
=
png_ptr
->
chunk_name
;
png_debug1
(
0
,
"Reading %s chunk.
\n
"
,
chunk_name
);
if
(
!
png_memcmp
(
chunk_name
,
png_IHDR
,
4
))
png_handle_IHDR
(
png_ptr
,
info_ptr
,
length
);
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
"
);
if
(
png_ptr_ptr
!=
NULL
)
{
png_ptr
=
*
png_ptr_ptr
;
}
if
(
png_ptr
==
NULL
)
return
;
...
...
@@ -1147,13 +1135,16 @@ png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr,
*
end_info_ptr_ptr
=
NULL
;
}
if
(
png_ptr
!=
NULL
)
{
#ifdef PNG_USER_MEM_SUPPORTED
png_destroy_struct_2
((
png_voidp
)
png_ptr
,
(
png_free_ptr
)
free_fn
,
(
png_voidp
)
mem_ptr
);
png_destroy_struct_2
((
png_voidp
)
png_ptr
,
(
png_free_ptr
)
free_fn
,
(
png_voidp
)
mem_ptr
);
#else
png_destroy_struct
((
png_voidp
)
png_ptr
);
png_destroy_struct
((
png_voidp
)
png_ptr
);
#endif
*
png_ptr_ptr
=
NULL
;
*
png_ptr_ptr
=
NULL
;
}
}
/* 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
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
;
}
...
...
@@ -1318,7 +1309,7 @@ png_read_png(png_structp png_ptr, png_infop info_ptr,
{
int
row
;
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
==
NULL
)
return
;
#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED)
/* 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
png_free_data
(
png_ptr
,
info_ptr
,
PNG_FREE_ROWS
,
0
);
#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
->
height
*
png_sizeof
(
png_bytep
));
...
...
pngrio.c
浏览文件 @
4310a4d8
/* 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
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* (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
;
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
* 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_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. */
n_data
=
(
png_byte
*
)
CVT_PTR_NOCHECK
(
data
);
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
);
#endif
png_memcpy
(
data
,
buf
,
read
);
/* copy far buffer to near buffer */
if
(
err
!=
read
)
if
(
err
!=
read
)
break
;
else
check
+=
err
;
...
...
@@ -137,7 +137,7 @@ void PNGAPI
png_set_read_fn
(
png_structp
png_ptr
,
png_voidp
io_ptr
,
png_rw_ptr
read_data_fn
)
{
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
==
NULL
)
return
;
png_ptr
->
io_ptr
=
io_ptr
;
#if !defined(PNG_NO_STDIO)
...
...
pngrtran.c
浏览文件 @
4310a4d8
/* 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
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* (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
"
);
/* Tell libpng how we react to CRC errors in critical chunks */
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
==
NULL
)
return
;
switch
(
crit_action
)
{
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
)
{
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
)
{
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_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
;
}
#endif
...
...
@@ -113,7 +113,7 @@ void PNGAPI
png_set_strip_alpha
(
png_structp
png_ptr
)
{
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
;
}
#endif
...
...
@@ -143,7 +143,7 @@ png_set_dither(png_structp png_ptr, png_colorp palette,
int
full_dither
)
{
png_debug
(
1
,
"in png_set_dither
\n
"
);
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
==
NULL
)
return
;
png_ptr
->
transformations
|=
PNG_DITHER
;
if
(
!
full_dither
)
...
...
@@ -527,7 +527,7 @@ void PNGAPI
png_set_gamma
(
png_structp
png_ptr
,
double
scrn_gamma
,
double
file_gamma
)
{
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
)
||
(
png_ptr
->
color_type
&
PNG_COLOR_MASK_ALPHA
)
||
(
png_ptr
->
color_type
==
PNG_COLOR_TYPE_PALETTE
))
...
...
@@ -546,7 +546,7 @@ void PNGAPI
png_set_expand
(
png_structp
png_ptr
)
{
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
->
flags
&=
~
PNG_FLAG_ROW_INIT
;
}
...
...
@@ -573,7 +573,7 @@ void PNGAPI
png_set_palette_to_rgb
(
png_structp
png_ptr
)
{
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
->
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_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
->
flags
&=
~
PNG_FLAG_ROW_INIT
;
}
...
...
@@ -597,7 +597,7 @@ void PNGAPI
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
"
);
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
==
NULL
)
return
;
png_ptr
->
transformations
|=
(
PNG_EXPAND
|
PNG_EXPAND_tRNS
);
}
#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
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
);
}
#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_debug
(
1
,
"in png_set_rgb_to_gray
\n
"
);
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
==
NULL
)
return
;
switch
(
error_action
)
{
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
{
png_uint_16
red_int
,
green_int
;
if
(
red
<
0
||
green
<
0
)
if
(
red
<
0
||
green
<
0
)
{
red_int
=
6968
;
/* .212671 * 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
);
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_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
...
...
@@ -697,13 +698,13 @@ png_set_read_user_transform_fn(png_structp png_ptr, png_user_transform_ptr
read_user_transform_fn
)
{
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)
png_ptr
->
transformations
|=
PNG_USER_TRANSFORM
;
png_ptr
->
read_user_transform_fn
=
read_user_transform_fn
;
#endif
#ifdef PNG_LEGACY_SUPPORTED
if
(
read_user_transform_fn
)
if
(
read_user_transform_fn
)
png_warning
(
png_ptr
,
"This version of libpng does not support user transforms"
);
#endif
...
...
@@ -718,7 +719,7 @@ png_init_read_transformations(png_structp png_ptr)
{
png_debug
(
1
,
"in png_init_read_transformations
\n
"
);
#if defined(PNG_USELESS_TESTS_SUPPORTED)
if
(
png_ptr
!=
NULL
)
if
(
png_ptr
!=
NULL
)
#endif
{
#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) \
&& !defined(PNG_READ_BACKGROUND_SUPPORTED)
if
(
png_ptr
)
if
(
png_ptr
)
return
;
#endif
}
...
...
@@ -1240,11 +1241,11 @@ png_read_transform_info(png_structp png_ptr, png_infop info_ptr)
#if defined(PNG_USER_TRANSFORM_PTR_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
;
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
;
}
#endif
...
...
@@ -1255,7 +1256,7 @@ defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
info_ptr
->
rowbytes
=
PNG_ROWBYTES
(
info_ptr
->
pixel_depth
,
info_ptr
->
width
);
#if !defined(PNG_READ_EXPAND_SUPPORTED)
if
(
png_ptr
)
if
(
png_ptr
)
return
;
#endif
}
...
...
@@ -1325,13 +1326,13 @@ png_do_read_transformations(png_structp png_ptr)
{
int
rgb_error
=
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
;
if
((
png_ptr
->
transformations
&
PNG_RGB_TO_GRAY
)
==
if
((
png_ptr
->
transformations
&
PNG_RGB_TO_GRAY
)
==
PNG_RGB_TO_GRAY_WARN
)
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_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_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"
);
}
#endif
...
...
@@ -1477,7 +1478,7 @@ From Andreas Dilger e-mail to png-implement, 26 March 1998:
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
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
,
/* png_ptr */
&
(
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_ptr
->
row_buf
+
1
);
/* start of pixel data for row */
#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
;
if
(
png_ptr
->
user_transform_channels
)
if
(
png_ptr
->
user_transform_channels
)
png_ptr
->
row_info
.
channels
=
png_ptr
->
user_transform_channels
;
#endif
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
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 */
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
;
}
}
else
if
(
row_info
->
bit_depth
==
16
)
else
if
(
row_info
->
bit_depth
==
16
)
{
/* This changes the data from GG to GGXX */
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 */
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 */
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
;
}
}
else
if
(
row_info
->
bit_depth
==
16
)
else
if
(
row_info
->
bit_depth
==
16
)
{
/* This changes the data from RRGGBB to RRGGBBXX */
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
green
=
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
;
*
(
dp
++
)
=
png_ptr
->
gamma_from_1
[
(
rc
*
red
+
gc
*
green
+
bc
*
blue
)
>>
15
];
(
rc
*
red
+
gc
*
green
+
bc
*
blue
)
>>
15
];
}
else
*
(
dp
++
)
=
*
(
sp
-
1
);
*
(
dp
++
)
=
*
(
sp
-
1
);
}
}
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
green
=
*
(
sp
++
);
png_byte
blue
=
*
(
sp
++
);
if
(
red
!=
green
||
red
!=
blue
)
if
(
red
!=
green
||
red
!=
blue
)
{
rgb_error
|=
1
;
*
(
dp
++
)
=
(
png_byte
)((
rc
*
red
+
gc
*
green
+
bc
*
blue
)
>>
15
);
*
(
dp
++
)
=
(
png_byte
)((
rc
*
red
+
gc
*
green
+
bc
*
blue
)
>>
15
);
}
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
;
blue
=
(
png_uint_16
)(((
*
(
sp
))
<<
8
)
|
*
(
sp
+
1
));
sp
+=
2
;
if
(
red
==
green
&&
red
==
blue
)
if
(
red
==
green
&&
red
==
blue
)
w
=
red
;
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
;
blue
=
(
png_uint_16
)(((
*
(
sp
))
<<
8
)
|
*
(
sp
+
1
));
sp
+=
2
;
if
(
red
!=
green
||
red
!=
blue
)
if
(
red
!=
green
||
red
!=
blue
)
rgb_error
|=
1
;
gray16
=
(
png_uint_16
)((
rc
*
red
+
gc
*
green
+
bc
*
blue
)
>>
15
);
*
(
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
green
=
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
;
*
(
dp
++
)
=
png_ptr
->
gamma_from_1
[(
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
green
=
*
(
sp
++
);
png_byte
blue
=
*
(
sp
++
);
if
(
red
!=
green
||
red
!=
blue
)
if
(
red
!=
green
||
red
!=
blue
)
rgb_error
|=
1
;
*
(
dp
++
)
=
(
png_byte
)((
rc
*
red
+
gc
*
green
+
bc
*
blue
)
>>
15
);
*
(
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
;
blue
=
(
png_uint_16
)(((
*
(
sp
))
<<
8
)
|
*
(
sp
+
1
));
sp
+=
2
;
if
(
red
==
green
&&
red
==
blue
)
if
(
red
==
green
&&
red
==
blue
)
w
=
red
;
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
;
green
=
(
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
;
gray16
=
(
png_uint_16
)((
rc
*
red
+
gc
*
green
+
bc
*
blue
)
>>
15
);
*
(
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
;
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
;
...
...
@@ -4066,7 +4067,7 @@ png_build_gamma_table(png_structp png_ptr)
png_ptr
->
gamma_from_1
=
(
png_bytep
)
png_malloc
(
png_ptr
,
(
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
;
else
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
;
else
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
)
{
png_uint_32
s0
=
(
*
(
rp
)
<<
8
)
|
*
(
rp
+
1
);
png_uint_32
s1
=
(
*
(
rp
+
2
)
<<
8
)
|
*
(
rp
+
3
);
png_uint_32
s2
=
(
*
(
rp
+
4
)
<<
8
)
|
*
(
rp
+
5
);
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
s0
=
(
*
(
rp
)
<<
8
)
|
*
(
rp
+
1
);
png_uint_32
s1
=
(
*
(
rp
+
2
)
<<
8
)
|
*
(
rp
+
3
);
png_uint_32
s2
=
(
*
(
rp
+
4
)
<<
8
)
|
*
(
rp
+
5
);
png_uint_32
red
=
(
png_uint_32
)((
s0
+
s1
+
65536L
)
&
0xffffL
);
png_uint_32
blue
=
(
png_uint_32
)((
s2
+
s1
+
65536L
)
&
0xffffL
);
*
(
rp
)
=
(
png_byte
)((
red
>>
8
)
&
0xff
);
*
(
rp
+
1
)
=
(
png_byte
)(
red
&
0xff
);
*
(
rp
+
4
)
=
(
png_byte
)((
blue
>>
8
)
&
0xff
);
...
...
pngrutil.c
浏览文件 @
4310a4d8
/* 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
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
...
...
@@ -129,7 +129,7 @@ png_read_chunk_header(png_structp png_ptr)
void
/* PRIVATE */
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_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 */
text_size
=
(
png_size_t
)(
chunklength
-
(
text
-
chunkdata
)
-
1
);
text_size
=
png_sizeof
(
msg
)
>
text_size
?
text_size
:
png_sizeof
(
msg
);
if
(
text_size
>
png_sizeof
(
msg
))
text_size
=
png_sizeof
(
msg
);
png_memcpy
(
text
+
prefix_size
,
msg
,
text_size
);
break
;
}
...
...
@@ -274,11 +274,11 @@ png_decompress_chunk(png_structp png_ptr, int comp_type,
png_ptr
->
zbuf_size
-
png_ptr
->
zstream
.
avail_out
;
text
=
(
png_charp
)
png_malloc_warn
(
png_ptr
,
text_size
+
1
);
if
(
text
==
NULL
)
{
png_free
(
png_ptr
,
chunkdata
);
png_error
(
png_ptr
,
"Not enough memory to decompress chunk."
);
}
{
png_free
(
png_ptr
,
chunkdata
);
png_error
(
png_ptr
,
"Not enough memory to decompress chunk."
);
}
png_memcpy
(
text
+
prefix_size
,
png_ptr
->
zbuf
,
text_size
-
prefix_size
);
png_memcpy
(
text
,
chunkdata
,
prefix_size
);
...
...
@@ -337,7 +337,7 @@ png_decompress_chunk(png_structp png_ptr, int comp_type,
png_warning
(
png_ptr
,
"Incomplete compressed datastream in chunk other than IDAT"
);
#endif
text_size
=
prefix_size
;
text_size
=
prefix_size
;
if
(
text
==
NULL
)
{
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)
char
umsg
[
50
];
png_snprintf
(
umsg
,
50
,
"Unknown zTXt compression type %d"
,
comp_type
);
png_snprintf
(
umsg
,
50
,
"Unknown zTXt compression type %d"
,
comp_type
);
png_warning
(
png_ptr
,
umsg
);
#else
png_warning
(
png_ptr
,
"Unknown zTXt compression type"
);
#endif
*
(
chunkdata
+
prefix_size
)
=
0x00
;
*
newlength
=
prefix_size
;
*
newlength
=
prefix_size
;
}
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
)
{
png_chunk_error
(
png_ptr
,
"CRC error"
);
%
15
+%
png_chunk_benign_error
(
png_ptr
,
"CRC error"
);
}
else
{
...
...
@@ -760,7 +760,7 @@ png_handle_sBIT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
void
/* PRIVATE */
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
float
white_x
,
white_y
,
red_x
,
red_y
,
green_x
,
green_y
,
blue_x
,
blue_y
;
#endif
...
...
@@ -801,62 +801,46 @@ png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
return
;
}
png_crc_read
(
png_ptr
,
buf
,
4
);
uint_x
=
png_get_uint_32
(
buf
);
png_crc_read
(
png_ptr
,
buf
,
4
);
uint_y
=
png_get_uint_32
(
buf
);
png_crc_read
(
png_ptr
,
buf
,
32
);
if
(
png_crc_finish
(
png_ptr
,
0
))
return
;
uint_x
=
png_get_uint_32
(
buf
);
uint_y
=
png_get_uint_32
(
buf
+
4
);
if
(
uint_x
>
80000L
||
uint_y
>
80000L
||
uint_x
+
uint_y
>
100000L
)
{
png_warning
(
png_ptr
,
"Invalid cHRM white point"
);
png_crc_finish
(
png_ptr
,
24
);
return
;
}
int_x_white
=
(
png_fixed_point
)
uint_x
;
int_y_white
=
(
png_fixed_point
)
uint_y
;
png_crc_read
(
png_ptr
,
buf
,
4
);
uint_x
=
png_get_uint_32
(
buf
);
png_crc_read
(
png_ptr
,
buf
,
4
);
uint_y
=
png_get_uint_32
(
buf
);
uint_x
=
png_get_uint_32
(
buf
+
8
);
uint_y
=
png_get_uint_32
(
buf
+
12
);
if
(
uint_x
+
uint_y
>
100000L
)
{
png_warning
(
png_ptr
,
"Invalid cHRM red point"
);
png_crc_finish
(
png_ptr
,
16
);
return
;
}
int_x_red
=
(
png_fixed_point
)
uint_x
;
int_y_red
=
(
png_fixed_point
)
uint_y
;
png_crc_read
(
png_ptr
,
buf
,
4
);
uint_x
=
png_get_uint_32
(
buf
);
png_crc_read
(
png_ptr
,
buf
,
4
);
uint_y
=
png_get_uint_32
(
buf
);
uint_x
=
png_get_uint_32
(
buf
+
16
);
uint_y
=
png_get_uint_32
(
buf
+
20
);
if
(
uint_x
+
uint_y
>
100000L
)
{
png_warning
(
png_ptr
,
"Invalid cHRM green point"
);
png_crc_finish
(
png_ptr
,
8
);
return
;
}
int_x_green
=
(
png_fixed_point
)
uint_x
;
int_y_green
=
(
png_fixed_point
)
uint_y
;
png_crc_read
(
png_ptr
,
buf
,
4
);
uint_x
=
png_get_uint_32
(
buf
);
png_crc_read
(
png_ptr
,
buf
,
4
);
uint_y
=
png_get_uint_32
(
buf
);
uint_x
=
png_get_uint_32
(
buf
+
24
);
uint_y
=
png_get_uint_32
(
buf
+
28
);
if
(
uint_x
+
uint_y
>
100000L
)
{
png_warning
(
png_ptr
,
"Invalid cHRM blue point"
);
png_crc_finish
(
png_ptr
,
0
);
return
;
}
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
/* PNG_NO_CONSOLE_IO */
}
png_crc_finish
(
png_ptr
,
0
);
return
;
}
#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
)
{
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) */
}
...
...
@@ -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 */
pC
=
(
png_bytep
)(
chunkdata
+
prefix_length
);
pC
=
(
png_bytep
)(
chunkdata
+
prefix_length
);
profile_size
=
((
*
(
pC
))
<<
24
)
|
((
*
(
pC
+
1
))
<<
16
)
|
((
*
(
pC
+
2
))
<<
8
)
|
((
*
(
pC
+
3
))
);
((
*
(
pC
+
1
))
<<
16
)
|
((
*
(
pC
+
2
))
<<
8
)
|
((
*
(
pC
+
3
))
);
if
(
profile_size
<
profile_length
)
if
(
profile_size
<
profile_length
)
profile_length
=
profile_size
;
if
(
profile_size
>
profile_length
)
if
(
profile_size
>
profile_length
)
{
png_free
(
png_ptr
,
chunkdata
);
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
);
if
((
png_uint_32
)
new_palette
.
nentries
>
(
png_uint_32
)
(
PNG_SIZE_MAX
/
png_sizeof
(
png_sPLT_entry
)))
if
((
png_uint_32
)
new_palette
.
nentries
>
(
png_uint_32
)
(
PNG_SIZE_MAX
/
png_sizeof
(
png_sPLT_entry
)))
{
png_warning
(
png_ptr
,
"sPLT chunk too long"
);
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
];
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"
);
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. */
;
png_debug
(
3
,
"Allocating pCAL parameters array
\n
"
);
params
=
(
png_charpp
)
png_malloc_warn
(
png_ptr
,
(
png_uint_32
)(
nparams
*
png_sizeof
(
png_charp
)))
;
params
=
(
png_charpp
)
png_malloc_warn
(
png_ptr
,
(
png_uint_32
)(
nparams
*
png_sizeof
(
png_charp
)))
;
if
(
params
==
NULL
)
{
png_free
(
png_ptr
,
purpose
);
...
...
@@ -1761,10 +1744,10 @@ png_handle_sCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
length
+
1
);
buffer
=
(
png_charp
)
png_malloc_warn
(
png_ptr
,
length
+
1
);
if
(
buffer
==
NULL
)
{
png_warning
(
png_ptr
,
"Out of memory while processing sCAL chunk"
);
return
;
}
{
png_warning
(
png_ptr
,
"Out of memory while processing sCAL chunk"
);
return
;
}
slength
=
(
png_size_t
)
length
;
png_crc_read
(
png_ptr
,
(
png_bytep
)
buffer
,
slength
);
...
...
@@ -1782,17 +1765,17 @@ png_handle_sCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
width
=
png_strtod
(
png_ptr
,
ep
,
&
vp
);
if
(
*
vp
)
{
png_warning
(
png_ptr
,
"malformed width string in sCAL chunk"
);
return
;
png_warning
(
png_ptr
,
"malformed width string in sCAL chunk"
);
return
;
}
#else
#ifdef PNG_FIXED_POINT_SUPPORTED
swidth
=
(
png_charp
)
png_malloc_warn
(
png_ptr
,
png_strlen
(
ep
)
+
1
);
if
(
swidth
==
NULL
)
{
png_warning
(
png_ptr
,
"Out of memory while processing sCAL chunk width"
);
return
;
}
{
png_warning
(
png_ptr
,
"Out of memory while processing sCAL chunk width"
);
return
;
}
png_memcpy
(
swidth
,
ep
,
(
png_size_t
)
png_strlen
(
ep
));
#endif
#endif
...
...
@@ -1803,30 +1786,30 @@ png_handle_sCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
if
(
buffer
+
slength
<
ep
)
{
png_warning
(
png_ptr
,
"Truncated sCAL chunk"
);
png_warning
(
png_ptr
,
"Truncated sCAL chunk"
);
#if defined(PNG_FIXED_POINT_SUPPORTED) && \
!defined(PNG_FLOATING_POINT_SUPPORTED)
png_free
(
png_ptr
,
swidth
);
png_free
(
png_ptr
,
swidth
);
#endif
png_free
(
png_ptr
,
buffer
);
return
;
return
;
}
#ifdef PNG_FLOATING_POINT_SUPPORTED
height
=
png_strtod
(
png_ptr
,
ep
,
&
vp
);
if
(
*
vp
)
{
png_warning
(
png_ptr
,
"malformed height string in sCAL chunk"
);
return
;
png_warning
(
png_ptr
,
"malformed height string in sCAL chunk"
);
return
;
}
#else
#ifdef PNG_FIXED_POINT_SUPPORTED
sheight
=
(
png_charp
)
png_malloc_warn
(
png_ptr
,
png_strlen
(
ep
)
+
1
);
if
(
sheight
==
NULL
)
{
png_warning
(
png_ptr
,
"Out of memory while processing sCAL chunk height"
);
return
;
}
{
png_warning
(
png_ptr
,
"Out of memory while processing sCAL chunk height"
);
return
;
}
png_memcpy
(
sheight
,
ep
,
(
png_size_t
)
png_strlen
(
ep
));
#endif
#endif
...
...
@@ -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_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
,
text_ptr
);
...
...
@@ -2057,7 +2040,7 @@ png_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
(
png_size_t
)
length
,
prefix_len
,
&
data_len
);
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
)
{
png_warning
(
png_ptr
,
"Not enough memory to process zTXt chunk."
);
...
...
@@ -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_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
,
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
,
(
size_t
)
length
,
prefix_len
,
&
data_len
);
else
data_len
=
png_strlen
(
chunkdata
+
prefix_len
);
data_len
=
png_strlen
(
chunkdata
+
prefix_len
);
text_ptr
=
(
png_textp
)
png_malloc_warn
(
png_ptr
,
(
png_uint_32
)
png_sizeof
(
png_text
));
if
(
text_ptr
==
NULL
)
...
...
@@ -2189,14 +2172,14 @@ png_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
return
;
}
text_ptr
->
compression
=
(
int
)
comp_flag
+
1
;
text_ptr
->
lang_key
=
chunkdata
+
(
lang_key
-
key
);
text_ptr
->
lang
=
chunkdata
+
(
lang
-
key
);
text_ptr
->
lang_key
=
chunkdata
+
(
lang_key
-
key
);
text_ptr
->
lang
=
chunkdata
+
(
lang
-
key
);
text_ptr
->
itxt_length
=
data_len
;
text_ptr
->
text_length
=
0
;
text_ptr
->
key
=
chunkdata
;
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
,
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 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
#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
&&
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
);
}
#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 */
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
(
!
(
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_chunk_error
(
png_ptr
,
"unknown critical chunk"
);
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
=
(
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
++
;
...
...
@@ -2877,7 +2860,7 @@ png_read_filter_row(png_structp png_ptr, png_row_infop row_info, png_bytep row,
}
default:
png_warning
(
png_ptr
,
"Ignoring bad adaptive filter type"
);
*
row
=
0
;
*
row
=
0
;
break
;
}
}
...
...
@@ -2955,7 +2938,7 @@ png_read_finish_row(png_structp png_ptr)
png_ptr
->
zstream
.
next_out
=
(
Byte
*
)
&
extra
;
png_ptr
->
zstream
.
avail_out
=
(
uInt
)
1
;
for
(;;)
for
(;;)
{
if
(
!
(
png_ptr
->
zstream
.
avail_in
))
{
...
...
@@ -3036,7 +3019,7 @@ png_read_start_row(png_structp png_ptr)
#endif
int
max_pixel_depth
;
png_
uint_32
row_bytes
;
png_
size_t
row_bytes
;
png_debug
(
1
,
"in png_read_start_row
\n
"
);
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_inc
[
png_ptr
->
pass
];
row_bytes
=
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"
);
png_ptr
->
irowbytes
=
PNG_ROWBYTES
(
png_ptr
->
pixel_depth
,
png_ptr
->
iwidth
)
+
1
;
}
else
#endif
/* PNG_READ_INTERLACING_SUPPORTED */
...
...
@@ -3161,11 +3141,11 @@ png_read_start_row(png_structp png_ptr)
#if defined(PNG_READ_USER_TRANSFORM_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
;
if
(
user_pixel_depth
>
max_pixel_depth
)
if
(
user_pixel_depth
>
max_pixel_depth
)
max_pixel_depth
=
user_pixel_depth
;
}
#endif
...
...
@@ -3182,7 +3162,7 @@ defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
png_error
(
png_ptr
,
"This image requires a row greater than 64KB"
);
#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_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
))
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_ptr
->
prev_row
=
(
png_bytep
)
png_malloc
(
png_ptr
,
(
png_uint_32
)(
...
...
pngset.c
浏览文件 @
4310a4d8
/* 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
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* (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
);
#endif
info_ptr
->
valid
|=
PNG_INFO_gAMA
;
if
(
gamma
==
0
.
0
)
if
(
gamma
==
0
.
0
)
png_warning
(
png_ptr
,
"Setting gamma=0"
);
}
#endif
...
...
@@ -197,7 +197,7 @@ png_set_gAMA_fixed(png_structp png_ptr, png_infop info_ptr, png_fixed_point
if
(
int_gamma
<
0
)
{
png_warning
(
png_ptr
,
"Setting negative gamma to zero"
);
gamma
=
0
;
gamma
=
0
;
}
else
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
;
#endif
info_ptr
->
valid
|=
PNG_INFO_gAMA
;
if
(
gamma
==
0
)
if
(
gamma
==
0
)
png_warning
(
png_ptr
,
"Setting gamma=0"
);
}
#endif
...
...
@@ -318,21 +318,21 @@ png_set_IHDR(png_structp png_ptr, png_infop info_ptr,
* 4. The filter_method is 64 and
* 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"
);
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
)
&&
((
png_ptr
->
mode
&
PNG_HAVE_PNG_SIGNATURE
)
==
0
)
&&
(
color_type
==
PNG_COLOR_TYPE_RGB
||
color_type
==
PNG_COLOR_TYPE_RGB_ALPHA
)))
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"
);
}
#else
if
(
filter_type
!=
PNG_FILTER_TYPE_BASE
)
if
(
filter_type
!=
PNG_FILTER_TYPE_BASE
)
png_error
(
png_ptr
,
"Unknown filter method in IHDR"
);
#endif
...
...
@@ -395,13 +395,14 @@ png_set_pCAL(png_structp png_ptr, png_infop info_ptr,
return
;
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
);
if
(
info_ptr
->
pcal_purpose
==
NULL
)
{
{
png_warning
(
png_ptr
,
"Insufficient memory for pCAL purpose."
);
return
;
}
return
;
}
png_memcpy
(
info_ptr
->
pcal_purpose
,
purpose
,
(
png_size_t
)
length
);
png_debug
(
3
,
"storing X0, X1, type, and nparams in info
\n
"
);
...
...
@@ -411,35 +412,37 @@ png_set_pCAL(png_structp png_ptr, png_infop info_ptr,
info_ptr
->
pcal_nparams
=
(
png_byte
)
nparams
;
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
);
if
(
info_ptr
->
pcal_units
==
NULL
)
{
{
png_warning
(
png_ptr
,
"Insufficient memory for pCAL units."
);
return
;
}
return
;
}
png_memcpy
(
info_ptr
->
pcal_units
,
units
,
(
png_size_t
)
length
);
info_ptr
->
pcal_params
=
(
png_charpp
)
png_malloc_warn
(
png_ptr
,
(
png_uint_32
)((
nparams
+
1
)
*
png_sizeof
(
png_charp
)));
if
(
info_ptr
->
pcal_params
==
NULL
)
{
{
png_warning
(
png_ptr
,
"Insufficient memory for pCAL params."
);
return
;
}
return
;
}
info_ptr
->
pcal_params
[
nparams
]
=
NULL
;
for
(
i
=
0
;
i
<
nparams
;
i
++
)
{
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
);
if
(
info_ptr
->
pcal_params
[
i
]
==
NULL
)
{
{
png_warning
(
png_ptr
,
"Insufficient memory for pCAL parameter."
);
return
;
}
}
png_memcpy
(
info_ptr
->
pcal_params
[
i
],
params
[
i
],
(
png_size_t
)
length
);
}
...
...
@@ -481,7 +484,8 @@ png_set_sCAL_s(png_structp png_ptr, png_infop info_ptr,
info_ptr
->
scal_unit
=
(
png_byte
)
unit
;
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
);
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
);
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
);
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
)
{
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
;
}
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
);
if
(
text_ptr
[
i
].
compression
<=
0
)
if
(
text_ptr
[
i
].
compression
<=
0
)
{
lang_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
;
#ifdef PNG_iTXt_SUPPORTED
if
(
text_ptr
[
i
].
compression
>
0
)
if
(
text_ptr
[
i
].
compression
>
0
)
textp
->
compression
=
PNG_ITXT_COMPRESSION_NONE
;
else
#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
,
(
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
)
return
(
1
);
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
);
png_memcpy
(
textp
->
key
,
text_ptr
[
i
].
key
,
(
png_size_t
)(
key_len
));
*
(
textp
->
key
+
key_len
)
=
'\0'
;
*
(
textp
->
key
+
key_len
)
=
'\0'
;
#ifdef PNG_iTXt_SUPPORTED
if
(
text_ptr
[
i
].
compression
>
0
)
{
textp
->
lang
=
textp
->
key
+
key_len
+
1
;
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
;
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
;
}
else
...
...
@@ -864,13 +872,13 @@ png_set_text_2(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr,
#endif
textp
->
text
=
textp
->
key
+
key_len
+
1
;
}
if
(
text_length
)
if
(
text_length
)
png_memcpy
(
textp
->
text
,
text_ptr
[
i
].
text
,
(
png_size_t
)(
text_length
));
*
(
textp
->
text
+
text_length
)
=
'\0'
;
*
(
textp
->
text
+
text_length
)
=
'\0'
;
#ifdef PNG_iTXt_SUPPORTED
if
(
textp
->
compression
>
0
)
if
(
textp
->
compression
>
0
)
{
textp
->
text_length
=
0
;
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
)
return
;
png_free_data
(
png_ptr
,
info_ptr
,
PNG_FREE_TRNS
,
0
);
if
(
trans
!=
NULL
)
{
/*
...
...
@@ -923,6 +929,10 @@ png_set_tRNS(png_structp png_ptr, png_infop info_ptr,
* 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 */
png_ptr
->
trans
=
info_ptr
->
trans
=
(
png_bytep
)
png_malloc
(
png_ptr
,
(
png_uint_32
)
PNG_MAX_PALETTE_LENGTH
);
...
...
@@ -964,6 +974,13 @@ png_set_tRNS(png_structp png_ptr, png_infop info_ptr,
void
PNGAPI
png_set_sPLT
(
png_structp
png_ptr
,
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
;
int
i
;
...
...
@@ -972,7 +989,8 @@ png_set_sPLT(png_structp png_ptr,
return
;
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
)
{
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
);
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
)
{
png_warning
(
png_ptr
,
...
...
@@ -1036,8 +1054,8 @@ png_set_unknown_chunks(png_structp png_ptr,
return
;
np
=
(
png_unknown_chunkp
)
png_malloc_warn
(
png_ptr
,
(
info_ptr
->
unknown_chunks_num
+
num_unknowns
)
*
png_sizeof
(
png_unknown_chunk
));
(
png_uint_32
)((
info_ptr
->
unknown_chunks_num
+
num_unknowns
)
*
png_sizeof
(
png_unknown_chunk
))
)
;
if
(
np
==
NULL
)
{
png_warning
(
png_ptr
,
...
...
@@ -1067,12 +1085,13 @@ png_set_unknown_chunks(png_structp png_ptr,
to
->
data
=
NULL
;
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
)
{
png_warning
(
png_ptr
,
"Out of memory while processing unknown chunk."
);
to
->
size
=
0
;
to
->
size
=
0
;
}
else
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
,
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
)
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
;
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
;
else
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
;
else
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
;
old_num_chunks
=
png_ptr
->
num_chunk_list
;
new_list
=
(
png_bytep
)
png_malloc
(
png_ptr
,
(
png_uint_32
)(
5
*
(
num_chunks
+
old_num_chunks
)));
if
(
png_ptr
->
chunk_list
!=
NULL
)
(
png_uint_32
)
(
5
*
(
num_chunks
+
old_num_chunks
)));
if
(
png_ptr
->
chunk_list
!=
NULL
)
{
png_memcpy
(
new_list
,
png_ptr
->
chunk_list
,
(
png_size_t
)(
5
*
old_num_chunks
));
png_free
(
png_ptr
,
png_ptr
->
chunk_list
);
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
));
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
;
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
;
#ifdef PNG_FREE_ME_SUPPORTED
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
)
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
);
info_ptr
->
row_pointers
=
row_pointers
;
if
(
row_pointers
)
if
(
row_pointers
)
info_ptr
->
valid
|=
PNG_INFO_IDAT
;
}
#endif
#ifdef PNG_WRITE_SUPPORTED
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
)
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
* 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_height_max
=
user_height_max
;
}
...
...
pngtest.c
浏览文件 @
4310a4d8
/* 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
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* (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)
#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"
;
#endif
...
...
@@ -110,9 +110,9 @@ int test_one_file PNGARG((PNG_CONST char *inname, PNG_CONST char *outname));
#endif
/* example of using row callbacks to make a simple progress meter */
static
int
status_pass
=
1
;
static
int
status_dots_requested
=
0
;
static
int
status_dots
=
1
;
static
int
status_pass
=
1
;
static
int
status_dots_requested
=
0
;
static
int
status_dots
=
1
;
void
#ifdef PNG_1_0_X
...
...
@@ -125,15 +125,15 @@ PNGAPI
#endif
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
(
status_pass
!=
pass
)
if
(
png_ptr
==
NULL
||
row_number
>
PNG_UINT_31_MAX
)
return
;
if
(
status_pass
!=
pass
)
{
fprintf
(
stdout
,
"
\n
Pass %d: "
,
pass
);
status_pass
=
pass
;
status_dots
=
31
;
}
status_dots
--
;
if
(
status_dots
==
0
)
if
(
status_dots
==
0
)
{
fprintf
(
stdout
,
"
\n
"
);
status_dots
=
30
;
...
...
@@ -152,7 +152,7 @@ PNGAPI
#endif
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"
);
}
...
...
@@ -173,8 +173,8 @@ PNGAPI
#endif
count_filters
(
png_structp
png_ptr
,
png_row_infop
row_info
,
png_bytep
data
)
{
if
(
png_ptr
!=
NULL
&&
row_info
!=
NULL
)
++
filters_used
[
*
(
data
-
1
)];
if
(
png_ptr
!=
NULL
&&
row_info
!=
NULL
)
++
filters_used
[
*
(
data
-
1
)];
}
#endif
...
...
@@ -196,7 +196,7 @@ PNGAPI
count_zero_samples
(
png_structp
png_ptr
,
png_row_infop
row_info
,
png_bytep
data
)
{
png_bytep
dp
=
data
;
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
==
NULL
)
return
;
/* contents of row_info:
* 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 */
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
;
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
(
pos
==
8
)
if
(((
*
dp
<<
pos
++
)
&
0x80
)
==
0
)
zero_samples
++
;
if
(
pos
==
8
)
{
pos
=
0
;
dp
++
;
}
}
if
(
row_info
->
bit_depth
==
2
)
if
(
row_info
->
bit_depth
==
2
)
{
if
(((
*
dp
<<
(
pos
+=
2
))
&
0xc0
)
==
0
)
zero_samples
++
;
if
(
pos
==
8
)
if
(((
*
dp
<<
(
pos
+=
2
))
&
0xc0
)
==
0
)
zero_samples
++
;
if
(
pos
==
8
)
{
pos
=
0
;
dp
++
;
}
}
if
(
row_info
->
bit_depth
==
4
)
if
(
row_info
->
bit_depth
==
4
)
{
if
(((
*
dp
<<
(
pos
+=
4
))
&
0xf0
)
==
0
)
zero_samples
++
;
if
(
pos
==
8
)
if
(((
*
dp
<<
(
pos
+=
4
))
&
0xf0
)
==
0
)
zero_samples
++
;
if
(
pos
==
8
)
{
pos
=
0
;
dp
++
;
}
}
if
(
row_info
->
bit_depth
==
8
)
if
(
*
dp
++
==
0
)
zero_samples
++
;
if
(
row_info
->
bit_depth
==
16
)
if
(
row_info
->
bit_depth
==
8
)
if
(
*
dp
++
==
0
)
zero_samples
++
;
if
(
row_info
->
bit_depth
==
16
)
{
if
((
*
dp
|
*
(
dp
+
1
))
==
0
)
zero_samples
++
;
if
((
*
dp
|
*
(
dp
+
1
))
==
0
)
zero_samples
++
;
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
;
int
channel
;
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
++
)
{
if
(
row_info
->
bit_depth
==
8
)
if
(
*
dp
++
==
0
)
zero_samples
++
;
if
(
row_info
->
bit_depth
==
16
)
if
(
row_info
->
bit_depth
==
8
)
if
(
*
dp
++
==
0
)
zero_samples
++
;
if
(
row_info
->
bit_depth
==
16
)
{
if
((
*
dp
|
*
(
dp
+
1
))
==
0
)
zero_samples
++
;
if
((
*
dp
|
*
(
dp
+
1
))
==
0
)
zero_samples
++
;
dp
+=
2
;
}
}
if
(
row_info
->
color_type
>
3
)
if
(
row_info
->
color_type
>
3
)
{
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
);
READFILE
(
io_ptr
,
buf
,
1
,
err
);
png_memcpy
(
data
,
buf
,
read
);
/* copy far buffer to near buffer */
if
(
err
!=
read
)
if
(
err
!=
read
)
break
;
else
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
/* PNG_NO_STDIO */
/* END of code to validate stdio-free compilation */
/* 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
...
...
@@ -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
* 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 */
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
...
...
@@ -520,8 +520,9 @@ png_debug_malloc(png_structp png_ptr, png_uint_32 size)
maximum_allocation
=
current_allocation
;
pinfo
->
pointer
=
(
png_voidp
)
png_malloc
(
png_ptr
,
size
);
/* Restore malloc_fn and free_fn */
png_set_mem_fn
(
png_ptr
,
png_voidp_NULL
,
(
png_malloc_ptr
)
png_debug_malloc
,
(
png_free_ptr
)
png_debug_free
);
png_set_mem_fn
(
png_ptr
,
png_voidp_NULL
,
(
png_malloc_ptr
)
png_debug_malloc
,
(
png_free_ptr
)
png_debug_free
);
if
(
size
!=
0
&&
pinfo
->
pointer
==
NULL
)
{
current_allocation
-=
size
;
...
...
@@ -533,9 +534,9 @@ png_debug_malloc(png_structp png_ptr, png_uint_32 size)
pinformation
=
pinfo
;
/* Make sure the caller isn't assuming zeroed memory. */
png_memset
(
pinfo
->
pointer
,
0xdd
,
pinfo
->
size
);
if
(
verbose
)
if
(
verbose
)
printf
(
"png_malloc %lu bytes at %x
\n
"
,
(
unsigned
long
)
size
,
pinfo
->
pointer
);
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. */
if
(
verbose
)
if
(
verbose
)
printf
(
"Freeing %x
\n
"
,
ptr
);
png_free_default
(
png_ptr
,
ptr
);
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
"
);
#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_malloc_ptr
)
png_debug_malloc
,
(
png_free_ptr
)
png_debug_free
);
#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
);
#endif
#if defined(PNG_NO_STDIO)
png_set_error_fn
(
read_ptr
,
(
png_voidp
)
inname
,
pngtest_error
,
pngtest_warning
);
#endif
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
user_chunk_data
[
0
]
=
0
;
user_chunk_data
[
1
]
=
0
;
user_chunk_data
[
2
]
=
0
;
user_chunk_data
[
3
]
=
0
;
user_chunk_data
[
0
]
=
0
;
user_chunk_data
[
1
]
=
0
;
user_chunk_data
[
2
]
=
0
;
user_chunk_data
[
3
]
=
0
;
png_set_read_user_chunk_fn
(
read_ptr
,
user_chunk_data
,
read_user_chunk_callback
);
#endif
#ifdef PNG_WRITE_SUPPORTED
#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_malloc_ptr
)
png_debug_malloc
,
(
png_free_ptr
)
png_debug_free
);
#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
);
#endif
#if defined(PNG_NO_STDIO)
png_set_error_fn
(
write_ptr
,
(
png_voidp
)
inname
,
pngtest_error
,
pngtest_warning
);
#endif
#endif
png_debug
(
0
,
"Allocating read_info, write_info and end_info structures
\n
"
);
read_info_ptr
=
png_create_info_struct
(
read_ptr
);
...
...
@@ -766,7 +775,8 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
#endif
{
fprintf
(
STDERR
,
"%s -> %s: libpng read error
\n
"
,
inname
,
outname
);
png_free
(
read_ptr
,
row_buf
);
if
(
row_buf
)
png_free
(
read_ptr
,
row_buf
);
png_destroy_read_struct
(
&
read_ptr
,
&
read_info_ptr
,
&
end_info_ptr
);
#ifdef PNG_WRITE_SUPPORTED
png_destroy_info_struct
(
write_ptr
,
&
write_end_info_ptr
);
...
...
@@ -821,7 +831,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
# endif
# endif
#endif
if
(
status_dots_requested
==
1
)
if
(
status_dots_requested
==
1
)
{
#ifdef PNG_WRITE_SUPPORTED
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)
{
int
i
;
for
(
i
=
0
;
i
<
256
;
i
++
)
filters_used
[
i
]
=
0
;
for
(
i
=
0
;
i
<
256
;
i
++
)
filters_used
[
i
]
=
0
;
png_set_read_user_transform_fn
(
read_ptr
,
count_filters
);
}
#endif
#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
zero_samples
=
0
;
zero_samples
=
0
;
png_set_write_user_transform_fn
(
write_ptr
,
count_zero_samples
);
#endif
...
...
@@ -1084,9 +1094,9 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
pointed to by png_convert_to_rfc1123() gets free'ed before
we use it */
png_memcpy
(
tIME_string
,
png_convert_to_rfc1123
(
read_ptr
,
mod_time
),
png_convert_to_rfc1123
(
read_ptr
,
mod_time
),
png_sizeof
(
tIME_string
));
tIME_string
[
png_sizeof
(
tIME_string
)
-
1
]
=
'\0'
;
tIME_string
[
png_sizeof
(
tIME_string
)
-
1
]
=
'\0'
;
tIME_chunk_present
++
;
#endif
/* PNG_TIME_RFC1123_SUPPORTED */
}
...
...
@@ -1150,10 +1160,10 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
unsigned
char
ster_chunk_data
[
1
];
if
(
verbose
)
if
(
verbose
)
fprintf
(
STDERR
,
"stereo mode = %lu
\n
"
,
(
unsigned
long
)(
user_chunk_data
[
0
]
-
1
));
ster_chunk_data
[
0
]
=
(
unsigned
char
)(
user_chunk_data
[
0
]
-
1
);
(
unsigned
long
)(
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
);
}
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
vpag_chunk_data
[
9
];
if
(
verbose
)
if
(
verbose
)
fprintf
(
STDERR
,
"vpAg = %lu x %lu, units=%lu
\n
"
,
(
unsigned
long
)
user_chunk_data
[
1
],
(
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
);
# endif
#else
num_pass
=
1
;
num_pass
=
1
;
#endif
#ifdef PNGTEST_TIMING
...
...
@@ -1271,7 +1281,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
png_memcpy
(
tIME_string
,
png_convert_to_rfc1123
(
read_ptr
,
mod_time
),
png_sizeof
(
tIME_string
));
tIME_string
[
png_sizeof
(
tIME_string
)
-
1
]
=
'\0'
;
tIME_string
[
png_sizeof
(
tIME_string
)
-
1
]
=
'\0'
;
tIME_chunk_present
++
;
#endif
/* PNG_TIME_RFC1123_SUPPORTED */
}
...
...
@@ -1302,7 +1312,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
#endif
#ifdef PNG_EASY_ACCESS_SUPPORTED
if
(
verbose
)
if
(
verbose
)
{
png_uint_32
iwidth
,
iheight
;
iwidth
=
png_get_image_width
(
write_ptr
,
write_info_ptr
);
...
...
@@ -1355,18 +1365,18 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
return
(
1
);
}
for
(;;)
for
(;;)
{
png_size_t
num_in
,
num_out
;
READFILE
(
fpin
,
inbuf
,
1
,
num_in
);
READFILE
(
fpout
,
outbuf
,
1
,
num_out
);
READFILE
(
fpin
,
inbuf
,
1
,
num_in
);
READFILE
(
fpout
,
outbuf
,
1
,
num_out
);
if
(
num_in
!=
num_out
)
{
fprintf
(
STDERR
,
"
\n
Files %s and %s are of a different size
\n
"
,
inname
,
outname
);
if
(
wrote_question
==
0
)
if
(
wrote_question
==
0
)
{
fprintf
(
STDERR
,
" 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
,
" level (zlib default),
\n
and zlib version (%s)?
\n\n
"
,
ZLIB_VERSION
);
wrote_question
=
1
;
wrote_question
=
1
;
}
FCLOSE
(
fpin
);
FCLOSE
(
fpout
);
...
...
@@ -1389,7 +1399,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
if
(
png_memcmp
(
inbuf
,
outbuf
,
num_in
))
{
fprintf
(
STDERR
,
"
\n
Files %s and %s are different
\n
"
,
inname
,
outname
);
if
(
wrote_question
==
0
)
if
(
wrote_question
==
0
)
{
fprintf
(
STDERR
,
" 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
,
" level (zlib default),
\n
and zlib version (%s)?
\n\n
"
,
ZLIB_VERSION
);
wrote_question
=
1
;
wrote_question
=
1
;
}
FCLOSE
(
fpin
);
FCLOSE
(
fpout
);
...
...
@@ -1489,10 +1499,10 @@ main(int argc, char *argv[])
}
}
if
(
!
multiple
&&
argc
==
3
+
verbose
)
outname
=
argv
[
2
+
verbose
];
if
(
!
multiple
&&
argc
==
3
+
verbose
)
outname
=
argv
[
2
+
verbose
];
if
((
!
multiple
&&
argc
>
3
+
verbose
)
||
(
multiple
&&
argc
<
2
))
if
((
!
multiple
&&
argc
>
3
+
verbose
)
||
(
multiple
&&
argc
<
2
))
{
fprintf
(
STDERR
,
"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
"
);
#endif
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
for
(
k
=
0
;
k
<
256
;
k
++
)
if
(
filters_used
[
k
])
for
(
k
=
0
;
k
<
256
;
k
++
)
if
(
filters_used
[
k
])
fprintf
(
STDERR
,
" Filter %d was used %lu times
\n
"
,
k
,
(
unsigned
long
)
filters_used
[
k
]);
#endif
#if defined(PNG_TIME_RFC1123_SUPPORTED)
if
(
tIME_chunk_present
!=
0
)
if
(
tIME_chunk_present
!=
0
)
fprintf
(
STDERR
,
" tIME = %s
\n
"
,
tIME_string
);
tIME_chunk_present
=
0
;
#endif
/* PNG_TIME_RFC1123_SUPPORTED */
...
...
@@ -1546,7 +1556,7 @@ main(int argc, char *argv[])
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
if
(
allocation_now
!=
current_allocation
)
fprintf
(
STDERR
,
"MEMORY ERROR: %d bytes lost
\n
"
,
current_allocation
-
allocation_now
);
current_allocation
-
allocation_now
);
if
(
current_allocation
!=
0
)
{
memory_infop
pinfo
=
pinformation
;
...
...
@@ -1555,7 +1565,8 @@ main(int argc, char *argv[])
current_allocation
);
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
);
pinfo
=
pinfo
->
next
;
}
...
...
@@ -1576,20 +1587,20 @@ main(int argc, char *argv[])
else
{
int
i
;
for
(
i
=
0
;
i
<
3
;
++
i
)
for
(
i
=
0
;
i
<
3
;
++
i
)
{
int
kerror
;
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
int
allocation_now
=
current_allocation
;
#endif
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
)
fprintf
(
STDERR
,
"Testing %s:"
,
inname
);
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)
int
k
;
...
...
@@ -1601,20 +1612,21 @@ main(int argc, char *argv[])
fprintf
(
STDERR
,
" PASS
\n
"
);
#endif
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
for
(
k
=
0
;
k
<
256
;
k
++
)
if
(
filters_used
[
k
])
for
(
k
=
0
;
k
<
256
;
k
++
)
if
(
filters_used
[
k
])
fprintf
(
STDERR
,
" Filter %d was used %lu times
\n
"
,
k
,
(
unsigned
long
)
filters_used
[
k
]);
k
,
(
unsigned
long
)
filters_used
[
k
]);
#endif
#if defined(PNG_TIME_RFC1123_SUPPORTED)
if
(
tIME_chunk_present
!=
0
)
if
(
tIME_chunk_present
!=
0
)
fprintf
(
STDERR
,
" tIME = %s
\n
"
,
tIME_string
);
#endif
/* PNG_TIME_RFC1123_SUPPORTED */
}
}
else
{
if
(
verbose
==
0
&&
i
!=
2
)
if
(
verbose
==
0
&&
i
!=
2
)
fprintf
(
STDERR
,
"Testing %s:"
,
inname
);
fprintf
(
STDERR
,
" FAIL
\n
"
);
ierror
+=
kerror
;
...
...
@@ -1622,7 +1634,7 @@ main(int argc, char *argv[])
#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
if
(
allocation_now
!=
current_allocation
)
fprintf
(
STDERR
,
"MEMORY ERROR: %d bytes lost
\n
"
,
current_allocation
-
allocation_now
);
current_allocation
-
allocation_now
);
if
(
current_allocation
!=
0
)
{
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. */
typedef
version_1_2_30beta0
3
your_png_h_is_not_version_1_2_30beta03
;
typedef
version_1_2_30beta0
4
your_png_h_is_not_version_1_2_30beta04
;
pngtrans.c
浏览文件 @
4310a4d8
/* 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
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
...
...
@@ -18,7 +18,7 @@ void PNGAPI
png_set_bgr
(
png_structp
png_ptr
)
{
png_debug
(
1
,
"in png_set_bgr
\n
"
);
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
==
NULL
)
return
;
png_ptr
->
transformations
|=
PNG_BGR
;
}
#endif
...
...
@@ -29,7 +29,7 @@ void PNGAPI
png_set_swap
(
png_structp
png_ptr
)
{
png_debug
(
1
,
"in png_set_swap
\n
"
);
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
->
bit_depth
==
16
)
png_ptr
->
transformations
|=
PNG_SWAP_BYTES
;
}
...
...
@@ -41,7 +41,7 @@ void PNGAPI
png_set_packing
(
png_structp
png_ptr
)
{
png_debug
(
1
,
"in png_set_packing
\n
"
);
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
->
bit_depth
<
8
)
{
png_ptr
->
transformations
|=
PNG_PACK
;
...
...
@@ -56,7 +56,7 @@ void PNGAPI
png_set_packswap
(
png_structp
png_ptr
)
{
png_debug
(
1
,
"in png_set_packswap
\n
"
);
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
->
bit_depth
<
8
)
png_ptr
->
transformations
|=
PNG_PACKSWAP
;
}
...
...
@@ -67,7 +67,7 @@ void PNGAPI
png_set_shift
(
png_structp
png_ptr
,
png_color_8p
true_bits
)
{
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
->
shift
=
*
true_bits
;
}
...
...
@@ -99,7 +99,7 @@ void PNGAPI
png_set_filler
(
png_structp
png_ptr
,
png_uint_32
filler
,
int
filler_loc
)
{
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
->
filler
=
(
png_byte
)
filler
;
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_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_ptr
->
transformations
|=
PNG_ADD_ALPHA
;
}
...
...
@@ -146,7 +146,7 @@ void PNGAPI
png_set_swap_alpha
(
png_structp
png_ptr
)
{
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
;
}
#endif
...
...
@@ -157,7 +157,7 @@ void PNGAPI
png_set_invert_alpha
(
png_structp
png_ptr
)
{
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
;
}
#endif
...
...
@@ -167,7 +167,7 @@ void PNGAPI
png_set_invert_mono
(
png_structp
png_ptr
)
{
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
;
}
...
...
@@ -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
)
{
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)
png_ptr
->
user_transform_ptr
=
user_transform_ptr
;
png_ptr
->
user_transform_depth
=
(
png_byte
)
user_transform_depth
;
png_ptr
->
user_transform_channels
=
(
png_byte
)
user_transform_channels
;
#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
,
"This version of libpng does not support user transform info"
);
#endif
...
...
pngwio.c
浏览文件 @
4310a4d8
/* 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
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* (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
;
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
==
NULL
)
return
;
#if defined(_WIN32_WCE)
if
(
!
WriteFile
((
HANDLE
)(
png_ptr
->
io_ptr
),
data
,
length
,
&
check
,
NULL
)
)
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_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. */
near_data
=
(
png_byte
*
)
CVT_PTR_NOCHECK
(
data
);
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)
png_FILE_p
io_ptr
;
#endif
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
==
NULL
)
return
;
#if !defined(_WIN32_WCE)
io_ptr
=
(
png_FILE_p
)
CVT_PTR
((
png_ptr
->
io_ptr
));
if
(
io_ptr
!=
NULL
)
...
...
@@ -170,7 +170,7 @@ void PNGAPI
png_set_write_fn
(
png_structp
png_ptr
,
png_voidp
io_ptr
,
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
;
#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
;
FP_OFF
(
near_ptr
)
=
FP_OFF
(
ptr
);
far_ptr
=
(
void
FAR
*
)
near_ptr
;
if
(
check
!=
0
)
if
(
FP_SEG
(
ptr
)
!=
FP_SEG
(
far_ptr
))
if
(
check
!=
0
)
if
(
FP_SEG
(
ptr
)
!=
FP_SEG
(
far_ptr
))
png_error
(
png_ptr
,
"segment lost in conversion"
);
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
;
near_ptr
=
(
void
FAR
*
)
ptr
;
far_ptr
=
(
void
FAR
*
)
near_ptr
;
if
(
check
!=
0
)
if
(
far_ptr
!=
ptr
)
if
(
check
!=
0
)
if
(
far_ptr
!=
ptr
)
png_error
(
png_ptr
,
"segment lost in conversion"
);
return
(
near_ptr
);
}
...
...
pngwrite.c
浏览文件 @
4310a4d8
/* 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
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* (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 */
#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_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 */
png_set_error_fn
(
png_ptr
,
error_ptr
,
error_fn
,
warn_fn
);
if
(
user_png_ver
)
if
(
user_png_ver
)
{
i
=
0
;
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
;
}
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
)
{
/* 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
(
png_sizeof
(
png_struct
)
>
png_struct_size
||
if
(
png_sizeof
(
png_struct
)
>
png_struct_size
||
png_sizeof
(
png_info
)
>
png_info_size
)
{
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
);
}
#endif
if
(
png_sizeof
(
png_struct
)
>
png_struct_size
)
if
(
png_sizeof
(
png_struct
)
>
png_struct_size
)
{
png_ptr
->
error_fn
=
NULL
;
#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
,
"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
;
#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
* 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
))
{
/* Intrapixel differencing */
...
...
@@ -1137,7 +1137,7 @@ png_set_filter(png_structp png_ptr, int method, int filters)
if
(
png_ptr
==
NULL
)
return
;
#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_FILTER_TYPE_BASE
;
#endif
...
...
pngwtran.c
浏览文件 @
4310a4d8
...
...
@@ -25,7 +25,7 @@ png_do_write_transformations(png_structp png_ptr)
#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
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
,
/* png_ptr */
&
(
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
s1
=
(
*
(
rp
+
2
)
<<
8
)
|
*
(
rp
+
3
);
png_uint_32
s2
=
(
*
(
rp
+
4
)
<<
8
)
|
*
(
rp
+
5
);
png_uint_32
red
=
(
png_uint_32
)((
s0
-
s1
)
&
0xffffL
);
png_uint_32
blue
=
(
png_uint_32
)((
s2
-
s1
)
&
0xffffL
);
png_uint_32
red
=
(
png_uint_32
)((
s0
-
s1
)
&
0xffffL
);
png_uint_32
blue
=
(
png_uint_32
)((
s2
-
s1
)
&
0xffffL
);
*
(
rp
)
=
(
png_byte
)((
red
>>
8
)
&
0xff
);
*
(
rp
+
1
)
=
(
png_byte
)(
red
&
0xff
);
*
(
rp
+
4
)
=
(
png_byte
)((
blue
>>
8
)
&
0xff
);
...
...
pngwutil.c
浏览文件 @
4310a4d8
此差异已折叠。
点击以展开。
scripts/CMakeLists.txt
浏览文件 @
4310a4d8
...
...
@@ -169,7 +169,7 @@ configure_file(${PNG_SOURCE_DIR}/scripts/libpng-config.in
# SET UP LINKS
set_target_properties
(
${
PNG_LIB_NAME
}
PROPERTIES
# VERSION 0.${PNGLIB_RELEASE}.1.2.30beta0
3
# VERSION 0.${PNGLIB_RELEASE}.1.2.30beta0
4
VERSION 0.
${
PNGLIB_RELEASE
}
.0
SOVERSION 0
CLEAN_DIRECT_OUTPUT 1
)
...
...
scripts/libpng-config-head.in
浏览文件 @
4310a4d8
...
...
@@ -8,7 +8,7 @@
# Modeled after libxml-config.
version
=
1.2.30beta0
3
version
=
1.2.30beta0
4
prefix
=
""
libdir
=
""
libs
=
""
...
...
scripts/libpng.pc.in
浏览文件 @
4310a4d8
...
...
@@ -5,6 +5,6 @@ includedir=@includedir@/libpng12
Name: libpng
Description: Loads and saves PNG files
Version: 1.2.30beta0
3
Version: 1.2.30beta0
4
Libs: -L${libdir} -lpng12
Cflags: -I${includedir}
scripts/makefile.32sunu
浏览文件 @
4310a4d8
...
...
@@ -8,7 +8,7 @@
# Library name:
LIBNAME
=
libpng12
PNGMAJ
=
0
PNGMIN
=
1.2.30beta0
3
PNGMIN
=
1.2.30beta0
4
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
# Shared library names:
...
...
scripts/makefile.64sunu
浏览文件 @
4310a4d8
...
...
@@ -8,7 +8,7 @@
# Library name:
LIBNAME
=
libpng12
PNGMAJ
=
0
PNGMIN
=
1.2.30beta0
3
PNGMIN
=
1.2.30beta0
4
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
# Shared library names:
...
...
scripts/makefile.aix
浏览文件 @
4310a4d8
...
...
@@ -20,7 +20,7 @@ LN_SF = ln -f -s
LIBNAME
=
libpng12
PNGMAJ
=
0
PNGMIN
=
1.2.30beta0
3
PNGMIN
=
1.2.30beta0
4
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
prefix
=
/usr/local
...
...
scripts/makefile.beos
浏览文件 @
4310a4d8
...
...
@@ -8,7 +8,7 @@
# Library name:
LIBNAME
=
libpng12
PNGMAJ
=
0
PNGMIN
=
1.2.30beta0
3
PNGMIN
=
1.2.30beta0
4
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
# Shared library names:
...
...
scripts/makefile.cygwin
浏览文件 @
4310a4d8
...
...
@@ -74,7 +74,7 @@ CFLAGS= $(strip $(MINGW_CCFLAGS) $(addprefix -I,$(ZLIBINC)) \
LIBNAME
=
libpng12
PNGMAJ
=
0
CYGDLL
=
12
PNGMIN
=
1.2.30beta0
3
PNGMIN
=
1.2.30beta0
4
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
SHAREDLIB
=
cygpng
$(CYGDLL)
.dll
...
...
scripts/makefile.darwin
浏览文件 @
4310a4d8
...
...
@@ -19,7 +19,7 @@ ZLIBINC=../zlib
# Library name:
LIBNAME
=
libpng12
PNGMAJ
=
12
PNGMIN
=
1.2.30beta0
3
PNGMIN
=
1.2.30beta0
4
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
# Shared library names:
...
...
scripts/makefile.dec
浏览文件 @
4310a4d8
...
...
@@ -5,7 +5,7 @@
# Library name:
PNGMAJ
=
0
PNGMIN
=
1.2.30beta0
3
PNGMIN
=
1.2.30beta0
4
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
LIBNAME
=
libpng12
...
...
scripts/makefile.elf
浏览文件 @
4310a4d8
...
...
@@ -12,7 +12,7 @@
# Library name:
LIBNAME
=
libpng12
PNGMAJ
=
0
PNGMIN
=
1.2.30beta0
3
PNGMIN
=
1.2.30beta0
4
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
# Shared library names:
...
...
scripts/makefile.gcmmx
浏览文件 @
4310a4d8
...
...
@@ -14,7 +14,7 @@
# Library name:
LIBNAME
=
libpng12
PNGMAJ
=
0
PNGMIN
=
1.2.30beta0
3
PNGMIN
=
1.2.30beta0
4
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
# Shared library names:
...
...
scripts/makefile.hp64
浏览文件 @
4310a4d8
...
...
@@ -18,7 +18,7 @@ ZLIBINC=/opt/zlib/include
# Library name:
LIBNAME
=
libpng12
PNGMAJ
=
0
PNGMIN
=
1.2.30beta0
3
PNGMIN
=
1.2.30beta0
4
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
# Shared library names:
...
...
scripts/makefile.hpgcc
浏览文件 @
4310a4d8
...
...
@@ -8,7 +8,7 @@
# Library name:
LIBNAME
=
libpng12
PNGMAJ
=
0
PNGMIN
=
1.2.30beta0
3
PNGMIN
=
1.2.30beta0
4
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
# Shared library names:
...
...
scripts/makefile.hpux
浏览文件 @
4310a4d8
...
...
@@ -18,7 +18,7 @@ ZLIBINC=/opt/zlib/include
# Library name:
LIBNAME
=
libpng12
PNGMAJ
=
0
PNGMIN
=
1.2.30beta0
3
PNGMIN
=
1.2.30beta0
4
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
# Shared library names:
...
...
scripts/makefile.linux
浏览文件 @
4310a4d8
...
...
@@ -6,7 +6,7 @@
# Library name:
LIBNAME
=
libpng12
PNGMAJ
=
0
PNGMIN
=
1.2.30beta0
3
PNGMIN
=
1.2.30beta0
4
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
# Shared library names:
...
...
scripts/makefile.mingw
浏览文件 @
4310a4d8
...
...
@@ -74,7 +74,7 @@ CFLAGS= $(strip $(MINGW_CCFLAGS) $(addprefix -I,$(ZLIBINC)) \
LIBNAME
=
libpng12
PNGMAJ
=
0
MINGDLL
=
12
PNGMIN
=
1.2.30beta0
3
PNGMIN
=
1.2.30beta0
4
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
SHAREDLIB
=
libpng
$(MINGDLL)
.dll
...
...
scripts/makefile.ne12bsd
浏览文件 @
4310a4d8
...
...
@@ -14,7 +14,7 @@ INCSDIR=${LOCALBASE}/include/libpng12
LIB
=
png12
SHLIB_MAJOR
=
0
SHLIB_MINOR
=
1.2.30beta0
3
SHLIB_MINOR
=
1.2.30beta0
4
SRCS
=
png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c
\
pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c
\
pngwtran.c pngmem.c pngerror.c pngpread.c
...
...
scripts/makefile.netbsd
浏览文件 @
4310a4d8
...
...
@@ -14,7 +14,7 @@ INCSDIR=${LOCALBASE}/include/libpng
LIB
=
png
SHLIB_MAJOR
=
3
SHLIB_MINOR
=
1.2.30beta0
3
SHLIB_MINOR
=
1.2.30beta0
4
SRCS
=
png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c
\
pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c
\
pngwtran.c pngmem.c pngerror.c pngpread.c
...
...
scripts/makefile.nommx
浏览文件 @
4310a4d8
...
...
@@ -7,7 +7,7 @@
# Library name:
LIBNAME
=
libpng12
PNGMAJ
=
0
PNGMIN
=
1.2.30beta0
3
PNGMIN
=
1.2.30beta0
4
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
# Shared library names:
...
...
scripts/makefile.openbsd
浏览文件 @
4310a4d8
...
...
@@ -8,7 +8,7 @@ LIBDIR= ${PREFIX}/lib
MANDIR
=
${PREFIX}
/man/cat
SHLIB_MAJOR
=
0
SHLIB_MINOR
=
1.2.30beta0
3
SHLIB_MINOR
=
1.2.30beta0
4
LIB
=
png
SRCS
=
png.c pngerror.c pngget.c pngmem.c pngpread.c
\
...
...
scripts/makefile.sco
浏览文件 @
4310a4d8
...
...
@@ -9,7 +9,7 @@
# Library name:
LIBNAME
=
libpng12
PNGMAJ
=
0
PNGMIN
=
1.2.30beta0
3
PNGMIN
=
1.2.30beta0
4
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
# Shared library names:
...
...
scripts/makefile.sggcc
浏览文件 @
4310a4d8
...
...
@@ -6,7 +6,7 @@
# Library name:
LIBNAME
=
libpng12
PNGMAJ
=
0
PNGMIN
=
1.2.30beta0
3
PNGMIN
=
1.2.30beta0
4
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
# Shared library names:
...
...
scripts/makefile.sgi
浏览文件 @
4310a4d8
...
...
@@ -6,7 +6,7 @@
# Library name:
LIBNAME
=
libpng12
PNGMAJ
=
0
PNGMIN
=
1.2.30beta0
3
PNGMIN
=
1.2.30beta0
4
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
# Shared library names:
...
...
scripts/makefile.so9
浏览文件 @
4310a4d8
...
...
@@ -8,7 +8,7 @@
# Library name:
PNGMAJ
=
0
PNGMIN
=
1.2.30beta0
3
PNGMIN
=
1.2.30beta0
4
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
LIBNAME
=
libpng12
...
...
scripts/makefile.solaris
浏览文件 @
4310a4d8
...
...
@@ -8,7 +8,7 @@
# Library name:
LIBNAME
=
libpng12
PNGMAJ
=
0
PNGMIN
=
1.2.30beta0
3
PNGMIN
=
1.2.30beta0
4
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
# Shared library names:
...
...
scripts/makefile.solaris-x86
浏览文件 @
4310a4d8
...
...
@@ -8,7 +8,7 @@
# Library name:
LIBNAME
=
libpng12
PNGMAJ
=
0
PNGMIN
=
1.2.30beta0
3
PNGMIN
=
1.2.30beta0
4
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
# Shared library names:
...
...
scripts/pngos2.def
浏览文件 @
4310a4d8
...
...
@@ -2,7 +2,7 @@
; PNG.LIB module definition file for OS/2
;----------------------------------------
; Version 1.2.30beta0
3
; Version 1.2.30beta0
4
LIBRARY PNG
DESCRIPTION "PNG image compression library for OS/2"
...
...
scripts/pngw32.def
浏览文件 @
4310a4d8
...
...
@@ -5,7 +5,7 @@
LIBRARY
EXPORTS
;Version 1.2.30beta0
3
;Version 1.2.30beta0
4
png_build_grayscale_palette @1
png_check_sig @2
png_chunk_error @3
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录