Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Libpng
提交
a77ef625
T
Third Party Libpng
项目概览
OpenHarmony
/
Third Party Libpng
1 年多 前同步成功
通知
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看板
“c6d09b666de11eb272326a6eb6cd3246da571014”上不存在“README.md”
提交
a77ef625
编写于
25年前
作者:
G
Glenn Randers-Pehrson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Imported from libpng-1.0.5s.tar
上级
61c32d9e
无相关合并请求
变更
47
隐藏空白更改
内联
并排
Showing
47 changed file
with
534 addition
and
546 deletion
+534
-546
ANNOUNCE
ANNOUNCE
+26
-1
CHANGES
CHANGES
+23
-0
INSTALL
INSTALL
+5
-5
KNOWNBUG
KNOWNBUG
+7
-0
LICENSE
LICENSE
+2
-2
README
README
+4
-4
Y2KINFO
Y2KINFO
+2
-2
contrib/gregbook/readpng.c
contrib/gregbook/readpng.c
+3
-3
contrib/gregbook/readpng2.c
contrib/gregbook/readpng2.c
+2
-2
contrib/gregbook/writepng.c
contrib/gregbook/writepng.c
+4
-4
contrib/pngminus/png2pnm.c
contrib/pngminus/png2pnm.c
+1
-1
contrib/pngminus/pnm2png.c
contrib/pngminus/pnm2png.c
+1
-1
example.c
example.c
+20
-15
libpng.3
libpng.3
+61
-93
libpng.txt
libpng.txt
+46
-46
libpngpf.3
libpngpf.3
+2
-2
png.5
png.5
+1
-1
png.c
png.c
+68
-121
png.h
png.h
+70
-71
pngasmrd.h
pngasmrd.h
+15
-12
pngconf.h
pngconf.h
+19
-6
pngerror.c
pngerror.c
+3
-1
pnggccrd.c
pnggccrd.c
+1
-1
pngget.c
pngget.c
+22
-9
pngmem.c
pngmem.c
+1
-1
pngpread.c
pngpread.c
+1
-1
pngread.c
pngread.c
+21
-12
pngrio.c
pngrio.c
+1
-1
pngrtran.c
pngrtran.c
+3
-2
pngrutil.c
pngrutil.c
+15
-11
pngset.c
pngset.c
+25
-18
pngtest.c
pngtest.c
+14
-14
pngtrans.c
pngtrans.c
+1
-1
pngtypes.h
pngtypes.h
+1
-1
pngvcrd.c
pngvcrd.c
+1
-1
pngwio.c
pngwio.c
+1
-1
pngwrite.c
pngwrite.c
+8
-30
pngwtran.c
pngwtran.c
+1
-1
pngwutil.c
pngwutil.c
+1
-1
scripts/makefile.beos
scripts/makefile.beos
+1
-1
scripts/makefile.dec
scripts/makefile.dec
+1
-1
scripts/makefile.gcmmx
scripts/makefile.gcmmx
+5
-4
scripts/makefile.linux
scripts/makefile.linux
+3
-2
scripts/makefile.sco
scripts/makefile.sco
+1
-1
scripts/makefile.solaris
scripts/makefile.solaris
+1
-1
scripts/pngdef.pas
scripts/pngdef.pas
+14
-27
scripts/pngos2.def
scripts/pngos2.def
+5
-10
未找到文件。
ANNOUNCE
浏览文件 @
a77ef625
Libpng 1.0.5
q - February 5
, 2000
Libpng 1.0.5
s - February 18
, 2000
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.
...
...
@@ -139,6 +139,31 @@ version 1.0.5q [February 5, 2000]
Relocated the makefile.solaris warning about PATH problems.
Fixed pngvcrd.c bug by pushing/popping registers in mmxsupport (Bruce Oberg)
Revised makefile.gcmmx
Added PNG_SETJMP_SUPPORTED, PNG_SETJMP_NOT_SUPPORTED, and PNG_ABORT() macros
version 1.0.5r [February 7, 2000]
Removed superfluous prototype for png_get_itxt from png.h
Fixed a bug in pngrtran.c that improperly expanded the background color.
Return *num_text=0 from png_get_text() when appropriate, and fix documentation
of png_get_text() in libpng.txt/libpng.3.
version 1.0.5s [February 18, 2000]
Added "png_jmpbuf()" macro to pngconf.h, to help people migrate to the
new error handler that's planned for the next libpng release, and changed
example.c, pngtest.c, and contrib programs to use this macro.
Revised some of the DLL-export macros in pngconf.h (Greg Roelofs)
Fixed a bug in png_read_png() that caused it to fail to expand some images
that it should have expanded.
Fixed some mistakes in the unused and undocumented INCH_CONVERSIONS functions
in pngget.c
Changed the allocation of palette, history, and trans arrays back to
the version 1.0.5 method (linking instead of copying) which restores
backward compatibility with version 1.0.5. Added some remarks about
that in example.c
Updated makefile.linux and makefile.gccmmx to make directories conditionally.
Made cosmetic changes to pngasmrd.h
Added png_set_rows() and png_get_rows(), for use with png_read|write_png().
Modified png_read_png() to allocate info_ptr->row_pointers only if it
hasn't already been allocated.
Send comments/corrections/commendations to
png-implement@ccrc.wustl.edu or to randeg@alum.rpi.edu
...
...
This diff is collapsed.
Click to expand it.
CHANGES
浏览文件 @
a77ef625
...
...
@@ -611,3 +611,26 @@ version 1.0.5q [February 5, 2000]
Fixed pngvcrd.c bug by pushing/popping registers in mmxsupport (Bruce Oberg)
Revised makefile.gcmmx
Added PNG_SETJMP_SUPPORTED, PNG_SETJMP_NOT_SUPPORTED, and PNG_ABORT() macros
version 1.0.5r [February 7, 2000]
Removed superfluous prototype for png_get_itxt from png.h
Fixed a bug in pngrtran.c that improperly expanded the background color.
Return *num_text=0 from png_get_text() when appropriate, and fix documentation
of png_get_text() in libpng.txt/libpng.3.
version 1.0.5s [February 18, 2000]
Added "png_jmp_env()" macro to pngconf.h, to help people migrate to the
new error handler that's planned for the next libpng release, and changed
example.c, pngtest.c, and contrib programs to use this macro.
Revised some of the DLL-export macros in pngconf.h (Greg Roelofs)
Fixed a bug in png_read_png() that caused it to fail to expand some images
that it should have expanded.
Fixed some mistakes in the unused and undocumented INCH_CONVERSIONS functions
in pngget.c
Changed the allocation of palette, history, and trans arrays back to
the version 1.0.5 method (linking instead of copying) which restores
backward compatibility with version 1.0.5. Added some remarks about
that in example.c. Added "free_me" member to info_ptr and png_ptr.
Updated makefile.linux and makefile.gccmmx to make directories conditionally.
Made cosmetic changes to pngasmrd.h
Added png_set_rows() and png_get_rows(), for use with png_read|write_png().
Modified png_read_png() to allocate info_ptr->row_pointers only if it
hasn't already been allocated.
This diff is collapsed.
Click to expand it.
INSTALL
浏览文件 @
a77ef625
Installing libpng version 1.0.5
q - February 5
, 2000
Installing libpng version 1.0.5
s - February 18
, 2000
Before installing libpng, you must first install zlib. zlib
can usually be found wherever you got libpng. zlib can be
...
...
@@ -10,7 +10,7 @@ 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.0.5
q
" or "lpng103" and "zlib-1.1.3"
might be called "libpng-1.0.5
s
" or "lpng103" and "zlib-1.1.3"
or "zlib113") so that you have directories called "zlib" and "libpng".
Your directory structure should look like this:
...
...
@@ -55,9 +55,9 @@ include
makefile.hpux => HPUX (10.20 and 11.00) makefile
makefile.sgi => Silicon Graphics IRIX makefile
makefile.sunos => Sun makefile
makefile.solaris => Solaris 2.X makefile (gcc, creates libpng.so.2.1.0.5
q
)
makefile.linux => Linux/ELF makefile (gcc, creates libpng.so.2.1.0.5
q
)
makefile.gcmmx => Linux/ELF makefile (gcc, creates libpng.so.2.1.0.5
q
,
makefile.solaris => Solaris 2.X makefile (gcc, creates libpng.so.2.1.0.5
s
)
makefile.linux => Linux/ELF makefile (gcc, creates libpng.so.2.1.0.5
s
)
makefile.gcmmx => Linux/ELF makefile (gcc, creates libpng.so.2.1.0.5
s
,
uses assembler code tuned for Intel MMX platform)
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
makefile.mips => MIPS makefile
...
...
This diff is collapsed.
Click to expand it.
KNOWNBUG
浏览文件 @
a77ef625
...
...
@@ -74,3 +74,10 @@ Known bugs and suggested enhancements in libpng-1.0.5
The new pnggccrd.c has syntax errors when compiled with gcc.
STATUS: Under investigation.
8. February 2000 -- BUG
When an RGBA file is expanded, only 24 or 48 bits per pixel are reserved
in rowbytes.
STATUS: Fixed in libpng-1.0.5s
This diff is collapsed.
Click to expand it.
LICENSE
浏览文件 @
a77ef625
...
...
@@ -5,7 +5,7 @@ Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
Copyright (c) 1996, 1997 Andreas Dilger
(libpng versions 0.90, December 1996, through 0.96, May 1997)
Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
(libpng versions 0.97, January 1998, through 1.0.5
q, February 5
, 2000)
(libpng versions 0.97, January 1998, through 1.0.5
s, February 18
, 2000)
For the purposes of this copyright and license, "Contributing Authors"
is defined as the following set of individuals:
...
...
@@ -68,4 +68,4 @@ certification mark of the Open Source Initiative.
Glenn Randers-Pehrson
randeg@alum.rpi.edu
February
5
, 2000
February
18
, 2000
This diff is collapsed.
Click to expand it.
README
浏览文件 @
a77ef625
README for libpng 1.0.5
q - February 5
, 2000 (shared library 2.1)
README for libpng 1.0.5
s - February 18
, 2000 (shared library 2.1)
See the note about version numbers near the top of png.h
See INSTALL for instructions on how to install libpng.
...
...
@@ -175,11 +175,11 @@ Files in this distribution:
makefile.sgi => Silicon Graphics IRIX makefile
makefile.sunos => Sun makefile
makefile.solaris => Solaris 2.X makefile
(gcc, creates libpng.so.2.1.0.5
q
)
(gcc, creates libpng.so.2.1.0.5
s
)
makefile.linux => Linux/ELF makefile
(gcc, creates libpng.so.2.1.0.5
q
)
(gcc, creates libpng.so.2.1.0.5
s
)
makefile.gcmmx => Linux/ELF makefile (gcc, creates
libpng.so.2.1.0.5
q
, uses assembler code
libpng.so.2.1.0.5
s
, uses assembler code
tuned for Intel MMX platform)
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
makefile.mips => MIPS makefile
...
...
This diff is collapsed.
Click to expand it.
Y2KINFO
浏览文件 @
a77ef625
Y2K compliance in libpng:
=========================
February
5
, 2000
February
18
, 2000
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.0.5
q
are Y2K compliant. It is my belief that earlier
upward through 1.0.5
s
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
...
...
This diff is collapsed.
Click to expand it.
contrib/gregbook/readpng.c
浏览文件 @
a77ef625
...
...
@@ -89,7 +89,7 @@ int readpng_init(FILE *infile, long *pWidth, long *pHeight)
/* setjmp() must be called in every function that calls a PNG-reading
* libpng function */
if
(
setjmp
(
png_
ptr
->
jmpbuf
))
{
if
(
setjmp
(
png_
jmp_env
(
png_ptr
)
))
{
png_destroy_read_struct
(
&
png_ptr
,
&
info_ptr
,
NULL
);
return
2
;
}
...
...
@@ -130,7 +130,7 @@ int readpng_get_bgcolor(uch *red, uch *green, uch *blue)
/* setjmp() must be called in every function that calls a PNG-reading
* libpng function */
if
(
setjmp
(
png_
ptr
->
jmpbuf
))
{
if
(
setjmp
(
png_
jmp_env
(
png_ptr
)
))
{
png_destroy_read_struct
(
&
png_ptr
,
&
info_ptr
,
NULL
);
return
2
;
}
...
...
@@ -184,7 +184,7 @@ uch *readpng_get_image(double display_exponent, int *pChannels, ulg *pRowbytes)
/* setjmp() must be called in every function that calls a PNG-reading
* libpng function */
if
(
setjmp
(
png_
ptr
->
jmpbuf
))
{
if
(
setjmp
(
png_
jmp_env
(
png_ptr
)
))
{
png_destroy_read_struct
(
&
png_ptr
,
&
info_ptr
,
NULL
);
return
NULL
;
}
...
...
This diff is collapsed.
Click to expand it.
contrib/gregbook/readpng2.c
浏览文件 @
a77ef625
...
...
@@ -98,7 +98,7 @@ int readpng2_init(mainprog_info *mainprog_ptr)
* but compatible error handlers must either use longjmp() themselves
* (as in this program) or exit immediately, so here we are: */
if
(
setjmp
(
mainprog_ptr
->
jmpbuf
))
{
if
(
setjmp
(
png_jmp_env
(
mainprog_ptr
)
))
{
png_destroy_read_struct
(
&
png_ptr
,
&
info_ptr
,
NULL
);
return
2
;
}
...
...
@@ -136,7 +136,7 @@ int readpng2_decode_data(mainprog_info *mainprog_ptr, uch *rawbuf, ulg length)
/* setjmp() must be called in every function that calls a PNG-reading
* libpng function */
if
(
setjmp
(
mainprog_ptr
->
jmpbuf
))
{
if
(
setjmp
(
png_jmp_env
(
mainprog_ptr
)
))
{
png_destroy_read_struct
(
&
png_ptr
,
&
info_ptr
,
NULL
);
mainprog_ptr
->
png_ptr
=
NULL
;
mainprog_ptr
->
info_ptr
=
NULL
;
...
...
This diff is collapsed.
Click to expand it.
contrib/gregbook/writepng.c
浏览文件 @
a77ef625
...
...
@@ -82,7 +82,7 @@ int writepng_init(mainprog_info *mainprog_ptr)
* but compatible error handlers must either use longjmp() themselves
* (as in this program) or exit immediately, so here we go: */
if
(
setjmp
(
mainprog_ptr
->
jmpbuf
))
{
if
(
setjmp
(
png_jmp_env
(
mainprog_ptr
)
))
{
png_destroy_write_struct
(
&
png_ptr
,
&
info_ptr
);
return
2
;
}
...
...
@@ -239,7 +239,7 @@ int writepng_encode_image(mainprog_info *mainprog_ptr)
/* as always, setjmp() must be called in every function that calls a
* PNG-writing libpng function */
if
(
setjmp
(
mainprog_ptr
->
jmpbuf
))
{
if
(
setjmp
(
png_jmp_env
(
mainprog_ptr
)
))
{
png_destroy_write_struct
(
&
png_ptr
,
&
info_ptr
);
mainprog_ptr
->
png_ptr
=
NULL
;
mainprog_ptr
->
info_ptr
=
NULL
;
...
...
@@ -277,7 +277,7 @@ int writepng_encode_row(mainprog_info *mainprog_ptr) /* NON-interlaced only! */
/* as always, setjmp() must be called in every function that calls a
* PNG-writing libpng function */
if
(
setjmp
(
mainprog_ptr
->
jmpbuf
))
{
if
(
setjmp
(
png_jmp_env
(
mainprog_ptr
)
))
{
png_destroy_write_struct
(
&
png_ptr
,
&
info_ptr
);
mainprog_ptr
->
png_ptr
=
NULL
;
mainprog_ptr
->
info_ptr
=
NULL
;
...
...
@@ -307,7 +307,7 @@ int writepng_encode_finish(mainprog_info *mainprog_ptr) /* NON-interlaced! */
/* as always, setjmp() must be called in every function that calls a
* PNG-writing libpng function */
if
(
setjmp
(
mainprog_ptr
->
jmpbuf
))
{
if
(
setjmp
(
png_jmp_env
(
mainprog_ptr
)
))
{
png_destroy_write_struct
(
&
png_ptr
,
&
info_ptr
);
mainprog_ptr
->
png_ptr
=
NULL
;
mainprog_ptr
->
info_ptr
=
NULL
;
...
...
This diff is collapsed.
Click to expand it.
contrib/pngminus/png2pnm.c
浏览文件 @
a77ef625
...
...
@@ -223,7 +223,7 @@ BOOL png2pnm (FILE *png_file, FILE *pnm_file, FILE *alpha_file, BOOL raw, BOOL a
return
FALSE
;
/* out of memory */
}
if
(
setjmp
(
png_
ptr
->
jmpbuf
))
if
(
setjmp
(
png_
jmp_env
(
png_ptr
)
))
{
png_destroy_read_struct
(
&
png_ptr
,
&
info_ptr
,
NULL
);
return
FALSE
;
...
...
This diff is collapsed.
Click to expand it.
contrib/pngminus/pnm2png.c
浏览文件 @
a77ef625
...
...
@@ -386,7 +386,7 @@ BOOL pnm2png (FILE *pnm_file, FILE *png_file, FILE *alpha_file, BOOL interlace,
}
/* setjmp() must be called in every function that calls a PNG-reading libpng function */
if
(
setjmp
(
png_
ptr
->
jmpbuf
))
if
(
setjmp
(
png_
jmp_env
(
png_ptr
)
))
{
png_destroy_write_struct
(
&
png_ptr
,
(
png_infopp
)
NULL
);
return
FALSE
;
...
...
This diff is collapsed.
Click to expand it.
example.c
浏览文件 @
a77ef625
...
...
@@ -111,7 +111,7 @@ void read_png(FILE *fp, unsigned int sig_read) /* file is already open */
* the normal method of doing things with libpng). REQUIRED unless you
* set up your own error handlers in the png_create_read_struct() earlier.
*/
if
(
setjmp
(
png_
ptr
->
jmpbuf
))
if
(
setjmp
(
png_
jmp_env
(
png_ptr
)
))
{
/* Free all of the memory associated with the png_ptr and info_ptr */
png_destroy_read_struct
(
&
png_ptr
,
&
info_ptr
,
(
png_infopp
)
NULL
);
...
...
@@ -405,7 +405,7 @@ initialize_png_reader(png_structp *png_ptr, png_infop *info_ptr)
return
ERROR
;
}
if
(
setjmp
(
(
*
png_ptr
)
->
jmpbuf
))
if
(
setjmp
(
png_jmp_env
((
*
png_ptr
))
))
{
png_destroy_read_struct
(
png_ptr
,
info_ptr
,
(
png_infopp
)
NULL
);
return
ERROR
;
...
...
@@ -433,7 +433,7 @@ int
process_data
(
png_structp
*
png_ptr
,
png_infop
*
info_ptr
,
png_bytep
buffer
,
png_uint_32
length
)
{
if
(
setjmp
(
(
*
png_ptr
)
->
jmpbuf
))
if
(
setjmp
(
png_jmp_env
((
*
png_ptr
))
))
{
/* Free the png_ptr and info_ptr memory on error */
png_destroy_read_struct
(
png_ptr
,
info_ptr
,
(
png_infopp
)
NULL
);
...
...
@@ -515,6 +515,7 @@ void write_png(char *file_name /* , ... other image information ... */)
FILE
*
fp
;
png_structp
png_ptr
;
png_infop
info_ptr
;
png_colorp
palette
;
/* open the file */
fp
=
fopen
(
file_name
,
"wb"
);
...
...
@@ -592,11 +593,9 @@ void write_png(char *file_name /* , ... other image information ... */)
palette
=
(
png_colorp
)
png_malloc
(
png_ptr
,
256
*
sizeof
(
png_color
));
/* ... set palette colors ... */
png_set_PLTE
(
png_ptr
,
info_ptr
,
palette
,
256
);
/* You can free the palette here if you like, since libpng has made its
own copy. In versions of libpng earlier than version 1.0.5n, it was
necessary to keep the palette until after png_write_end(), because
libpng was using the caller's copy. */
free
(
palette
);
/* You must not free palette here, because png_set_PLTE only makes a link to
the palette that you malloced. Wait until you are about to destroy
the png structure. */
/* optional significant bit chunk */
/* if we are dealing with a grayscale image then */
...
...
@@ -699,10 +698,10 @@ void write_png(char *file_name /* , ... other image information ... */)
* use the first method if you aren't handling interlacing yourself.
*/
png_uint_32
k
,
height
,
width
;
png_byte
image
[
height
][
width
];
png_byte
image
[
height
][
width
*
bytes_per_pixel
];
png_bytep
row_pointers
[
height
];
for
(
k
=
0
;
k
<
height
;
k
++
)
row_pointers
[
k
]
=
image
+
k
*
width
;
row_pointers
[
k
]
=
image
+
k
*
width
*
bytes_per_pixel
;
/* One of the following output methods is REQUIRED */
#ifdef entire
/* write out the entire image data in one call */
...
...
@@ -737,11 +736,17 @@ void write_png(char *file_name /* , ... other image information ... */)
png_write_end
(
png_ptr
,
info_ptr
);
#endif hilevel
/* if you malloced a palette and have not already freed it, free it
here (do *not* free libpng's copy of the palette in info_ptr->palette,
as recommended in versions 1.0.5m and earlier of this example; libpng
now takes care of that automatically). */
free
(
palette
);
/* If you png_malloced a palette, free it here (don't free info_ptr->palette,
as recommended in versions 1.0.5m and earlier of this example; if
libpng mallocs info_ptr->palette, libpng will free it). If you
allocated it with malloc() instead of png_malloc(), use free() instead
of png_free(). */
png_free
(
png_ptr
,
palette
);
/* Similarly, if you png_malloced any data that you passed in with
png_set_something(), such as a hist or trans array, free it here,
when you can be sure that libpng is through with it. */
png_free
(
png_ptr
,
trans
);
/* clean up after the write, and free any memory allocated */
png_destroy_write_struct
(
&
png_ptr
,
(
png_infopp
)
NULL
);
...
...
This diff is collapsed.
Click to expand it.
libpng.3
浏览文件 @
a77ef625
.TH LIBPNG 3 "February
5
, 2000"
.TH LIBPNG 3 "February
18
, 2000"
.SH NAME
libpng \- Portable Network Graphics (PNG) Reference Library 1.0.5
q
libpng \- Portable Network Graphics (PNG) Reference Library 1.0.5
s
.SH SYNOPSIS
\fI\fB
...
...
@@ -92,47 +92,7 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.0.5q
\fI\fB
\fBvoid png_free_hIST (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fI\fP\fB);\fP
\fI\fB
\fBvoid png_free_iCCP (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fI\fP\fB);\fP
\fI\fB
\fBvoid png_free_pCAL (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
\fI\fB
\fBvoid png_free_pixels (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
\fI\fB
\fBvoid png_free_PLTE (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
\fI\fB
\fBvoid png_free_sCAL (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
\fI\fB
\fBvoid png_free_spalettes (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fInum_text\fP\fB);\fP
\fI\fB
\fBvoid png_free_sPLT (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
\fI\fB
\fBvoid png_free_text (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fInum_text\fP\fB);\fP
\fI\fB
\fBvoid png_free_tRNS (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
\fI\fB
\fBvoid png_free_unknown_chunks (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fInum_unknowns\fP\fB);\fP
\fBvoid png_free_data (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fInum\fP\fB);\fP
\fI\fB
...
...
@@ -262,6 +222,10 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.0.5q
\fI\fB
\fBpng_bytepp png_get_rows (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
\fI\fB
\fBpng_uint_32 png_get_sBIT (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_color_8p \fI*sig_bit\fP\fB);\fP
\fI\fB
...
...
@@ -270,7 +234,7 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.0.5q
\fI\fB
\fBpng_uint_32 png_get_s
palettes
(png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_spalette_p \fP\fI*splt_ptr\fP\fB, int \fInum\fP\fB);\fP
\fBpng_uint_32 png_get_s
PLT
(png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_spalette_p \fP\fI*splt_ptr\fP\fB, int \fInum\fP\fB);\fP
\fI\fB
...
...
@@ -578,6 +542,10 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.0.5q
\fI\fB
\fBvoid png_set_rows (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_bytepp \fIrow_pointers\fP\fB);\fP
\fI\fB
\fBvoid png_set_sBIT (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_color_8p \fIsig_bit\fP\fB);\fP
\fI\fB
...
...
@@ -594,7 +562,7 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.0.5q
\fI\fB
\fBvoid png_set_s
palettes
(png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_spalette_p \fP\fIsplt_ptr\fP\fB, int \fInum_spalettes\fP\fB);\fP
\fBvoid png_set_s
PLT
(png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_spalette_p \fP\fIsplt_ptr\fP\fB, int \fInum_spalettes\fP\fB);\fP
\fI\fB
...
...
@@ -741,7 +709,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.0.5
q - February 5
, 2000
libpng version 1.0.5
s - February 18
, 2000
Updated and distributed by Glenn Randers-Pehrson
<randeg@alum.rpi.edu>
Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
...
...
@@ -931,17 +899,18 @@ handling and memory alloc/free functions.
When libpng encounters an error, it expects to longjmp back
to your routine. Therefore, you will need to call setjmp and pass
your png_
ptr->jmpbuf
. If you read the file from different
your png_
jmp_env(png_ptr)
. If you read the file from different
routines, you will need to update the jmpbuf field every time you enter
a new routine that will call a png_ function.
See your documentation of setjmp/longjmp for your compiler for more
handling in the Customizing Libpng section below for more information on
the libpng error handling. If an error occurs, and libpng longjmp's
information on setjmp/longjmp. See the discussion on libpng error
handling in the Customizing Libpng section below for more information
on the libpng error handling. If an error occurs, and libpng longjmp's
back to your setjmp, you will want to call png_destroy_read_struct() to
free any memory.
if (setjmp(png_
ptr->jmpbuf
))
if (setjmp(png_
jmp_env(png_ptr)
))
{
png_destroy_read_struct(&png_ptr, &info_ptr,
&end_info);
...
...
@@ -1289,7 +1258,9 @@ into the info_ptr is returned for any complex types.
valid 16-bit red, green and blue
values, regardless of color_type
num_text = png_get_text(png_ptr, info_ptr, &text_ptr);
num_comments = png_get_text(png_ptr, info_ptr,
&text_ptr, &num_text);
num_comments - number of comments
text_ptr - array of png_text holding image
comments
text_ptr[i]->compression - type of compression used
...
...
@@ -1307,7 +1278,8 @@ into the info_ptr is returned for any complex types.
text_ptr[i]->lang - language of comment (NULL for unknown).
text_ptr[i]->translated_keyword - keyword in UTF-8 (NULL
for unknown).
num_text - number of comments
num_text - number of comments (same as num_comments;
you can put NULL here to avoid the duplication)
num_spalettes = png_get_spalettes(png_ptr, info_ptr, &palette_ptr);
palette_ptr - array of png_spalette structures holding contents
of one or more sPLT chunks read.
...
...
@@ -1850,32 +1822,26 @@ When you are done, you can free all memory allocated by libpng like this:
&end_info);
It is also possible to individually free the info_ptr members that
point to allocated storage with the following functions:
png_free_text(png_ptr, info_ptr, num)
num - number of text item to be freed (-1 for all items)
png_free_hIST(png_ptr, info_ptr)
png_free_iCCP(png_ptr, info_ptr)
png_free_pCAL(png_ptr, info_ptr)
png_free_sCAL(png_ptr, info_ptr)
png_free_spalettes(png_ptr, info_ptr, num)
num - number of suggested-paletted entry to be freed
(-1 for all suggested palettes)
png_free_pixels(png_ptr, info_ptr)
png_free_unknown_chunk(png_ptr, info_ptr, num)
num - number of unknown chunk to be freed
(-1 for all suggested palettes)
point to libpng-allocated storage with the following functions:
png_free_data(png_ptr, info_ptr, mask, n)
mask - identifies data to be freed, a mask
made up by the OR one or more of
PNG_FREE_PLTE, PNG_FREE_TRNS,
PNG_FREE_HIST, PNG_FREE_ICCP,
PNG_FREE_SPLT, PNG_FREE_ROWS,
PNG_FREE_PCAL, PNG_FREE_SCAL,
PNG_FREE_TEXT, PNG_FREE_UNKN,
or simply PNG_FREE_ALL
n - sequence number of item to be freed
(-1 for all items)
These functions may be safely called when the relevant storage has
already been freed, or has not yet been allocated, and will in that
case do nothing.
case do nothing. The "n" parameter is ignored if only one item
of the selected data type, such as PLTE, is allowed. If "n" is not
-1, and multiple items are allowed for the data type identified in
the mask, such as text or splt, only the n'th item is freed.
For a more compact example of reading a PNG image, see the file example.c.
...
...
@@ -1914,7 +1880,7 @@ png_infop info_ptr;
return -1;
}
if (setjmp(png_
ptr->jmpbuf
))
if (setjmp(png_
jmp_env(png_ptr)
))
{
png_destroy_read_struct(&png_ptr, &info_ptr,
(png_infopp)NULL);
...
...
@@ -1948,7 +1914,7 @@ png_infop info_ptr;
int
process_data(png_bytep buffer, png_uint_32 length)
{
if (setjmp(png_
ptr->jmpbuf
))
if (setjmp(png_
jmp_env(png_ptr)
))
{
png_destroy_read_struct(&png_ptr, &info_ptr,
(png_infopp)NULL);
...
...
@@ -2103,15 +2069,15 @@ png_create_write_struct_2() instead of png_create_read_struct():
After you have these structures, you will need to set up the
error handling. When libpng encounters an error, it expects to
longjmp() back to your routine. Therefore, you will need to call
setjmp() and pass the png_
ptr->jmpbuf
. If you
setjmp() and pass the png_
jmp_env(png_ptr)
. If you
write the file from different routines, you will need to update
the
jmpbuf field
every time you enter a new routine that will
the
png_jmp_env(png_ptr)
every time you enter a new routine that will
call a png_ function. See your documentation of setjmp/longjmp
for your compiler for more information on setjmp/longjmp. See
the discussion on libpng error handling in the Customizing Libpng
section below for more information on the libpng error handling.
if (setjmp(png_
ptr->jmpbuf
))
if (setjmp(png_
jmp_env(png_ptr)
))
{
png_destroy_write_struct(&png_ptr, &info_ptr);
fclose(fp);
...
...
@@ -2172,7 +2138,7 @@ types.
PNG_FILTER_NONE | PNG_FILTER_SUB |
PNG_FILTER_PAETH);
The png_set_compression_
???
() functions interface to the zlib compression
The png_set_compression_
*
() functions interface to the zlib compression
library, and should mostly be ignored unless you really know what you are
doing. The only generally useful call is png_set_compression_level()
which changes how much time zlib spends on trying to compress the image
...
...
@@ -2476,7 +2442,7 @@ At this point there are two ways to proceed; through the high-level
write interface, or through a sequence of low-level write operations.
You can use the high-level interface if your image data is present
on the rowpointers member of the info structure. All defined output
transformations are per
n
mitted, enabled by the following masks.
transformations are permitted, enabled by the following masks.
PNG_TRANSFORM_IDENTITY No transformation
PNG_TRANSFORM_PACKING Pack 1, 2 and 4-bit samples
...
...
@@ -2496,7 +2462,7 @@ If you have valid image data on the rowpointers member, simply do this:
where png_transforms is an integer containing the logical-or of some set of
transformation flags. This call is equivalent to png_write_info(),
followed by the set of transformations indicated by the transform
mask, followed by followed by a write of the image bytes
to
the info
mask, followed by followed by a write of the image bytes
from
the info
member `rowpointers', followed by png_write_end().
(The final parameter of this call is not yet used. Someday it
...
...
@@ -2746,7 +2712,7 @@ When you are done, you can free all memory used by libpng like this:
png_destroy_write_struct(&png_ptr, &info_ptr);
It is also possible to individually free the info_ptr members that
point to allocated storage with the following functions:
point to
libpng-
allocated storage with the following functions:
png_free_text(png_ptr, info_ptr, num)
num - number of text item to be freed (-1 for all items)
...
...
@@ -2759,7 +2725,7 @@ point to allocated storage with the following functions:
png_free_sCAL(png_ptr, info_ptr)
png_free_s
palettes
(png_ptr, info_ptr, num)
png_free_s
PLT
(png_ptr, info_ptr, num)
num - number of suggested-paletted entry to be freed
(-1 for all suggested palettes)
...
...
@@ -2773,7 +2739,9 @@ These functions may be safely called when the relevant storage has
already been freed, or has not yet been allocated, and will in that
case do nothing.
If you allocated palette data, you must free it before the call to png_destroy_write_struct();
If you allocated data such as a palette that you passed in to libpng with
png_set_*, you must not free it until just before the call to
png_destroy_write_struct().
For a more compact example of writing a PNG image, see the file example.c.
...
...
@@ -2787,7 +2755,7 @@ adding new transformations, and generally changing how libpng works.
All of the memory allocation, input/output, and error handling in libpng
goes through callbacks that are user settable. The default routines are
in pngmem.c, pngrio.c, pngwio.c, and pngerror.c respectively. To change
these functions, call the appropriate png_set_
???
_fn() function.
these functions, call the appropriate png_set_
*
_fn() function.
Memory allocation is done through the functions png_large_malloc(),
png_malloc(), png_realloc(), png_large_free(), and png_free(). These
...
...
@@ -2844,7 +2812,7 @@ fprintf() unless the library is compiled with PNG_NO_STDIO defined. If
you wish to change the behavior of the error functions, you will need to
set up your own message callbacks. These functions are normally supplied
at the time that the png_struct is created. It is also possible to change
these functions after png_create_
???
_struct() has been called by calling:
these functions after png_create_
*
_struct() has been called by calling:
png_set_error_fn(png_structp png_ptr,
png_voidp error_ptr, png_error_ptr error_fn,
...
...
@@ -2926,7 +2894,7 @@ unsigned char far * far *.
You will need to write new error and warning functions that use the GUI
interface, as described previously, and set them to be the error and
warning functions at the time that png_create_
???
_struct() is called,
warning functions at the time that png_create_
*
_struct() is called,
in order to have them available during the structure initialization.
They can be changed later via png_set_error_fn(). On some compilers,
you may also have to change the memory allocators (png_malloc, etc.).
...
...
@@ -3147,13 +3115,13 @@ the old method.
.SH VII. Y2K Compliance in libpng
February
5
, 2000
February
18
, 2000
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.0.5
q
are Y2K compliant. It is my belief that earlier
upward through 1.0.5
s
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
...
...
@@ -3279,7 +3247,7 @@ possible without all of you.
Thanks to Frank J. T. Wojcik for helping with the documentation.
Libpng version 1.0.5
q - February 5
, 2000:
Libpng version 1.0.5
s - February 18
, 2000:
Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
Currently maintained by Glenn Randers-Pehrson (randeg@alum.rpi.edu).
...
...
@@ -3294,7 +3262,7 @@ Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
Copyright (c) 1996, 1997 Andreas Dilger
(libpng versions 0.90, December 1996, through 0.96, May 1997)
Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
(libpng versions 0.97, January 1998, through 1.0.5
q, February 5
, 2000)
(libpng versions 0.97, January 1998, through 1.0.5
s, February 18
, 2000)
For the purposes of this copyright and license, "Contributing Authors"
is defined as the following set of individuals:
...
...
This diff is collapsed.
Click to expand it.
libpng.txt
浏览文件 @
a77ef625
libpng.txt - A description on how to use and modify libpng
libpng version 1.0.5
q - February 5
, 2000
libpng version 1.0.5
s - February 18
, 2000
Updated and distributed by Glenn Randers-Pehrson
<randeg@alum.rpi.edu>
Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
...
...
@@ -190,17 +190,18 @@ handling and memory alloc/free functions.
When libpng encounters an error, it expects to longjmp back
to your routine. Therefore, you will need to call setjmp and pass
your png_
ptr->jmpbuf
. If you read the file from different
your png_
jmp_env(png_ptr)
. If you read the file from different
routines, you will need to update the jmpbuf field every time you enter
a new routine that will call a png_ function.
See your documentation of setjmp/longjmp for your compiler for more
handling in the Customizing Libpng section below for more information on
the libpng error handling. If an error occurs, and libpng longjmp's
information on setjmp/longjmp. See the discussion on libpng error
handling in the Customizing Libpng section below for more information
on the libpng error handling. If an error occurs, and libpng longjmp's
back to your setjmp, you will want to call png_destroy_read_struct() to
free any memory.
if (setjmp(png_
ptr->jmpbuf
))
if (setjmp(png_
jmp_env(png_ptr)
))
{
png_destroy_read_struct(&png_ptr, &info_ptr,
&end_info);
...
...
@@ -548,7 +549,9 @@ into the info_ptr is returned for any complex types.
valid 16-bit red, green and blue
values, regardless of color_type
num_text = png_get_text(png_ptr, info_ptr, &text_ptr);
num_comments = png_get_text(png_ptr, info_ptr,
&text_ptr, &num_text);
num_comments - number of comments
text_ptr - array of png_text holding image
comments
text_ptr[i]->compression - type of compression used
...
...
@@ -566,7 +569,8 @@ into the info_ptr is returned for any complex types.
text_ptr[i]->lang - language of comment (NULL for unknown).
text_ptr[i]->translated_keyword - keyword in UTF-8 (NULL
for unknown).
num_text - number of comments
num_text - number of comments (same as num_comments;
you can put NULL here to avoid the duplication)
num_spalettes = png_get_spalettes(png_ptr, info_ptr, &palette_ptr);
palette_ptr - array of png_spalette structures holding contents
of one or more sPLT chunks read.
...
...
@@ -1109,32 +1113,26 @@ When you are done, you can free all memory allocated by libpng like this:
&end_info);
It is also possible to individually free the info_ptr members that
point to allocated storage with the following functions:
png_free_text(png_ptr, info_ptr, num)
num - number of text item to be freed (-1 for all items)
png_free_hIST(png_ptr, info_ptr)
png_free_iCCP(png_ptr, info_ptr)
png_free_pCAL(png_ptr, info_ptr)
png_free_sCAL(png_ptr, info_ptr)
png_free_spalettes(png_ptr, info_ptr, num)
num - number of suggested-paletted entry to be freed
(-1 for all suggested palettes)
png_free_pixels(png_ptr, info_ptr)
png_free_unknown_chunk(png_ptr, info_ptr, num)
num - number of unknown chunk to be freed
(-1 for all suggested palettes)
point to libpng-allocated storage with the following functions:
png_free_data(png_ptr, info_ptr, mask, n)
mask - identifies data to be freed, a mask
made up by the OR one or more of
PNG_FREE_PLTE, PNG_FREE_TRNS,
PNG_FREE_HIST, PNG_FREE_ICCP,
PNG_FREE_SPLT, PNG_FREE_ROWS,
PNG_FREE_PCAL, PNG_FREE_SCAL,
PNG_FREE_TEXT, PNG_FREE_UNKN,
or simply PNG_FREE_ALL
n - sequence number of item to be freed
(-1 for all items)
These functions may be safely called when the relevant storage has
already been freed, or has not yet been allocated, and will in that
case do nothing.
case do nothing. The "n" parameter is ignored if only one item
of the selected data type, such as PLTE, is allowed. If "n" is not
-1, and multiple items are allowed for the data type identified in
the mask, such as text or splt, only the n'th item is freed.
For a more compact example of reading a PNG image, see the file example.c.
...
...
@@ -1173,7 +1171,7 @@ png_infop info_ptr;
return -1;
}
if (setjmp(png_
ptr->jmpbuf
))
if (setjmp(png_
jmp_env(png_ptr)
))
{
png_destroy_read_struct(&png_ptr, &info_ptr,
(png_infopp)NULL);
...
...
@@ -1207,7 +1205,7 @@ png_infop info_ptr;
int
process_data(png_bytep buffer, png_uint_32 length)
{
if (setjmp(png_
ptr->jmpbuf
))
if (setjmp(png_
jmp_env(png_ptr)
))
{
png_destroy_read_struct(&png_ptr, &info_ptr,
(png_infopp)NULL);
...
...
@@ -1362,15 +1360,15 @@ png_create_write_struct_2() instead of png_create_read_struct():
After you have these structures, you will need to set up the
error handling. When libpng encounters an error, it expects to
longjmp() back to your routine. Therefore, you will need to call
setjmp() and pass the png_
ptr->jmpbuf
. If you
setjmp() and pass the png_
jmp_env(png_ptr)
. If you
write the file from different routines, you will need to update
the
jmpbuf field
every time you enter a new routine that will
the
png_jmp_env(png_ptr)
every time you enter a new routine that will
call a png_ function. See your documentation of setjmp/longjmp
for your compiler for more information on setjmp/longjmp. See
the discussion on libpng error handling in the Customizing Libpng
section below for more information on the libpng error handling.
if (setjmp(png_
ptr->jmpbuf
))
if (setjmp(png_
jmp_env(png_ptr)
))
{
png_destroy_write_struct(&png_ptr, &info_ptr);
fclose(fp);
...
...
@@ -1431,7 +1429,7 @@ types.
PNG_FILTER_NONE | PNG_FILTER_SUB |
PNG_FILTER_PAETH);
The png_set_compression_
???
() functions interface to the zlib compression
The png_set_compression_
*
() functions interface to the zlib compression
library, and should mostly be ignored unless you really know what you are
doing. The only generally useful call is png_set_compression_level()
which changes how much time zlib spends on trying to compress the image
...
...
@@ -1735,7 +1733,7 @@ At this point there are two ways to proceed; through the high-level
write interface, or through a sequence of low-level write operations.
You can use the high-level interface if your image data is present
on the rowpointers member of the info structure. All defined output
transformations are per
n
mitted, enabled by the following masks.
transformations are permitted, enabled by the following masks.
PNG_TRANSFORM_IDENTITY No transformation
PNG_TRANSFORM_PACKING Pack 1, 2 and 4-bit samples
...
...
@@ -1755,7 +1753,7 @@ If you have valid image data on the rowpointers member, simply do this:
where png_transforms is an integer containing the logical-or of some set of
transformation flags. This call is equivalent to png_write_info(),
followed by the set of transformations indicated by the transform
mask, followed by followed by a write of the image bytes
to
the info
mask, followed by followed by a write of the image bytes
from
the info
member `rowpointers', followed by png_write_end().
(The final parameter of this call is not yet used. Someday it
...
...
@@ -2005,7 +2003,7 @@ When you are done, you can free all memory used by libpng like this:
png_destroy_write_struct(&png_ptr, &info_ptr);
It is also possible to individually free the info_ptr members that
point to allocated storage with the following functions:
point to
libpng-
allocated storage with the following functions:
png_free_text(png_ptr, info_ptr, num)
num - number of text item to be freed (-1 for all items)
...
...
@@ -2018,7 +2016,7 @@ point to allocated storage with the following functions:
png_free_sCAL(png_ptr, info_ptr)
png_free_s
palettes
(png_ptr, info_ptr, num)
png_free_s
PLT
(png_ptr, info_ptr, num)
num - number of suggested-paletted entry to be freed
(-1 for all suggested palettes)
...
...
@@ -2032,7 +2030,9 @@ These functions may be safely called when the relevant storage has
already been freed, or has not yet been allocated, and will in that
case do nothing.
If you allocated palette data, you must free it before the call to png_destroy_write_struct();
If you allocated data such as a palette that you passed in to libpng with
png_set_*, you must not free it until just before the call to
png_destroy_write_struct().
For a more compact example of writing a PNG image, see the file example.c.
...
...
@@ -2046,7 +2046,7 @@ adding new transformations, and generally changing how libpng works.
All of the memory allocation, input/output, and error handling in libpng
goes through callbacks that are user settable. The default routines are
in pngmem.c, pngrio.c, pngwio.c, and pngerror.c respectively. To change
these functions, call the appropriate png_set_
???
_fn() function.
these functions, call the appropriate png_set_
*
_fn() function.
Memory allocation is done through the functions png_large_malloc(),
png_malloc(), png_realloc(), png_large_free(), and png_free(). These
...
...
@@ -2103,7 +2103,7 @@ fprintf() unless the library is compiled with PNG_NO_STDIO defined. If
you wish to change the behavior of the error functions, you will need to
set up your own message callbacks. These functions are normally supplied
at the time that the png_struct is created. It is also possible to change
these functions after png_create_
???
_struct() has been called by calling:
these functions after png_create_
*
_struct() has been called by calling:
png_set_error_fn(png_structp png_ptr,
png_voidp error_ptr, png_error_ptr error_fn,
...
...
@@ -2185,7 +2185,7 @@ Configuring for gui/windowing platforms:
You will need to write new error and warning functions that use the GUI
interface, as described previously, and set them to be the error and
warning functions at the time that png_create_
???
_struct() is called,
warning functions at the time that png_create_
*
_struct() is called,
in order to have them available during the structure initialization.
They can be changed later via png_set_error_fn(). On some compilers,
you may also have to change the memory allocators (png_malloc, etc.).
...
...
@@ -2406,13 +2406,13 @@ the old method.
VII. Y2K Compliance in libpng
February
5
, 2000
February
18
, 2000
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.0.5
q
are Y2K compliant. It is my belief that earlier
upward through 1.0.5
s
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
...
...
This diff is collapsed.
Click to expand it.
libpngpf.3
浏览文件 @
a77ef625
.TH LIBPNGPF 3 February
5
, 2000
.TH LIBPNGPF 3 February
18
, 2000
.SH NAME
libpng \- Portable Network Graphics (PNG) Reference Library 1.0.5
q
libpng \- Portable Network Graphics (PNG) Reference Library 1.0.5
s
(private functions)
.SH SYNOPSIS
\fB#include <png.h>\fP
...
...
This diff is collapsed.
Click to expand it.
png.5
浏览文件 @
a77ef625
.TH PNG 5 "February
5
, 2000"
.TH PNG 5 "February
18
, 2000"
.SH NAME
png \- Portable Network Graphics (PNG) format
.SH DESCRIPTION
...
...
This diff is collapsed.
Click to expand it.
png.c
浏览文件 @
a77ef625
/* png.c - location for general purpose libpng functions
*
* libpng version 1.0.5
q - February 5
, 2000
* libpng version 1.0.5
s - February 18
, 2000
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
* Copyright (c) 1996, 1997 Andreas Dilger
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
...
...
@@ -19,7 +19,7 @@
#ifdef PNG_USE_GLOBAL_ARRAYS
/* png_libpng_ver was changed to a function in version 1.0.5c */
char
png_libpng_ver
[
12
]
=
"1.0.5
q
"
;
char
png_libpng_ver
[
12
]
=
"1.0.5
s
"
;
/* png_sig was changed to a function in version 1.0.5c */
/* Place to hold the signature string for a PNG file. */
...
...
@@ -62,10 +62,10 @@ int FARDATA png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1};
/* offset to next interlace block in the y direction */
int
FARDATA
png_pass_yinc
[]
=
{
8
,
8
,
8
,
4
,
4
,
2
,
2
};
/*
Width of interlace block. This is not currently used - if you need
* it, uncomment it here and in png.h
/*
width of interlace block (used in assembler routines only) */
#ifdef PNG_HAVE_ASSEMBLER_COMBINE_ROW
int
FARDATA
png_pass_width
[]
=
{
8
,
4
,
4
,
2
,
2
,
1
,
1
};
*/
#endif
/* Height of interlace block. This is not currently used - if you need
* it, uncomment it here and in png.h
...
...
@@ -259,13 +259,16 @@ png_info_init(png_infop info_ptr)
png_memset
(
info_ptr
,
0
,
sizeof
(
png_info
));
}
#if defined(PNG_TEXT_SUPPORTED)
/* free text item num or (if num == -1) all text items */
void
png_free_
text
(
png_structp
png_ptr
,
png_infop
info_ptr
,
int
num
)
png_free_
data
(
png_structp
png_ptr
,
png_infop
info_ptr
,
png_uint_32
mask
,
int
num
)
{
if
(
png_ptr
==
NULL
||
info_ptr
==
NULL
)
return
;
#if defined(PNG_TEXT_SUPPORTED)
/* free text item num or (if num == -1) all text items */
if
(
mask
&
PNG_FREE_TEXT
)
{
if
(
num
!=
-
1
)
{
if
(
info_ptr
->
text
[
num
].
key
)
...
...
@@ -277,13 +280,10 @@ png_free_text(png_structp png_ptr, png_infop info_ptr, int num)
else
if
(
info_ptr
->
text
!=
NULL
)
{
int
i
;
if
(
info_ptr
->
text
!=
NULL
)
{
for
(
i
=
0
;
i
<
info_ptr
->
num_text
;
i
++
)
png_free_text
(
png_ptr
,
info_ptr
,
i
);
png_free
(
png_ptr
,
info_ptr
->
text
);
info_ptr
->
text
=
NULL
;
}
for
(
i
=
0
;
i
<
info_ptr
->
num_text
;
i
++
)
png_free_data
(
png_ptr
,
info_ptr
,
PNG_FREE_TEXT
,
i
);
png_free
(
png_ptr
,
info_ptr
->
text
);
info_ptr
->
text
=
NULL
;
info_ptr
->
num_text
=
0
;
}
}
...
...
@@ -291,14 +291,12 @@ png_free_text(png_structp png_ptr, png_infop info_ptr, int num)
#if defined(PNG_tRNS_SUPPORTED)
/* free any tRNS entry */
void
png_free_tRNS
(
png_structp
png_ptr
,
png_infop
info_ptr
)
if
(
mask
&
PNG_FREE_TRNS
)
{
if
(
png_ptr
==
NULL
||
info_ptr
==
NULL
)
return
;
if
(
info_ptr
->
valid
&
PNG_INFO_tRNS
)
{
png_free
(
png_ptr
,
info_ptr
->
trans
);
if
(
info_ptr
->
free_me
&
PNG_FREE_TRNS
)
png_free
(
png_ptr
,
info_ptr
->
trans
);
info_ptr
->
valid
&=
~
PNG_INFO_tRNS
;
}
}
...
...
@@ -306,19 +304,13 @@ png_free_tRNS(png_structp png_ptr, png_infop info_ptr)
#if defined(PNG_sCAL_SUPPORTED)
/* free any sCAL entry */
void
png_free_sCAL
(
png_structp
png_ptr
,
png_infop
info_ptr
)
if
(
mask
&
PNG_FREE_SCAL
)
{
if
(
png_ptr
==
NULL
||
info_ptr
==
NULL
)
return
;
if
(
info_ptr
->
valid
&
PNG_INFO_sCAL
)
{
#if defined(PNG_FIXED_POINT_SUPPORTED) && !defined(PNG_FLOATING_POINT_SUPPORTED)
png_free
(
png_ptr
,
info_ptr
->
scal_s_width
);
png_free
(
png_ptr
,
info_ptr
->
scal_s_height
);
#else
if
(
png_ptr
!=
NULL
)
/* silence a compiler warning */
;
#endif
info_ptr
->
valid
&=
~
PNG_INFO_sCAL
;
}
...
...
@@ -327,11 +319,8 @@ png_free_sCAL(png_structp png_ptr, png_infop info_ptr)
#if defined(PNG_pCAL_SUPPORTED)
/* free any pCAL entry */
void
png_free_pCAL
(
png_structp
png_ptr
,
png_infop
info_ptr
)
if
(
mask
&
PNG_FREE_PCAL
)
{
if
(
png_ptr
==
NULL
||
info_ptr
==
NULL
)
return
;
if
(
info_ptr
->
valid
&
PNG_INFO_pCAL
)
{
png_free
(
png_ptr
,
info_ptr
->
pcal_purpose
);
...
...
@@ -352,15 +341,15 @@ png_free_pCAL(png_structp png_ptr, png_infop info_ptr)
#if defined(PNG_iCCP_SUPPORTED)
/* free any iCCP entry */
void
png_free_iCCP
(
png_structp
png_ptr
,
png_infop
info_ptr
)
if
(
mask
&
PNG_FREE_ICCP
)
{
if
(
png_ptr
==
NULL
||
info_ptr
==
NULL
)
return
;
if
(
info_ptr
->
valid
&
PNG_INFO_iCCP
)
{
png_free
(
png_ptr
,
info_ptr
->
iccp_name
);
png_free
(
png_ptr
,
info_ptr
->
iccp_profile
);
if
(
info_ptr
->
free_me
&
PNG_FREE_ICCP
)
{
png_free
(
png_ptr
,
info_ptr
->
iccp_name
);
png_free
(
png_ptr
,
info_ptr
->
iccp_profile
);
}
info_ptr
->
valid
&=
~
PNG_INFO_iCCP
;
}
}
...
...
@@ -368,11 +357,8 @@ png_free_iCCP(png_structp png_ptr, png_infop info_ptr)
#if defined(PNG_sPLT_SUPPORTED)
/* free a given sPLT entry, or (if num == -1) all sPLT entries */
void
png_free_spalettes
(
png_structp
png_ptr
,
png_infop
info_ptr
,
int
num
)
if
(
mask
&
PNG_FREE_SPLT
)
{
if
(
png_ptr
==
NULL
||
info_ptr
==
NULL
)
return
;
if
(
num
!=
-
1
)
{
png_free
(
png_ptr
,
info_ptr
->
splt_palettes
[
num
].
name
);
...
...
@@ -381,26 +367,22 @@ png_free_spalettes(png_structp png_ptr, png_infop info_ptr, int num)
}
else
{
int
i
;
if
(
info_ptr
->
splt_palettes_num
==
0
)
return
;
for
(
i
=
0
;
i
<
(
int
)
info_ptr
->
splt_palettes_num
;
i
++
)
png_free_spalettes
(
png_ptr
,
info_ptr
,
i
);
if
(
info_ptr
->
splt_palettes_num
)
{
int
i
;
for
(
i
=
0
;
i
<
(
int
)
info_ptr
->
splt_palettes_num
;
i
++
)
png_free_data
(
png_ptr
,
info_ptr
,
PNG_FREE_SPLT
,
i
);
png_free
(
png_ptr
,
info_ptr
->
splt_palettes
);
info_ptr
->
splt_palettes_num
=
0
;
png_free
(
png_ptr
,
info_ptr
->
splt_palettes
);
info_ptr
->
splt_palettes_num
=
0
;
}
}
}
#endif
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
void
png_free_unknown_chunks
(
png_structp
png_ptr
,
png_infop
info_ptr
,
int
num
)
if
(
mask
&
PNG_FREE_UNKN
)
{
if
(
png_ptr
==
NULL
||
info_ptr
==
NULL
)
return
;
if
(
num
!=
-
1
)
{
png_free
(
png_ptr
,
info_ptr
->
unknown_chunks
[
num
].
data
);
...
...
@@ -410,77 +392,60 @@ png_free_unknown_chunks(png_structp png_ptr, png_infop info_ptr, int num)
{
int
i
;
if
(
info_ptr
->
unknown_chunks_num
==
0
)
return
;
for
(
i
=
0
;
i
<
(
int
)
info_ptr
->
unknown_chunks_num
;
i
++
)
png_free_unknown_chunks
(
png_ptr
,
info_ptr
,
i
);
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
);
png_free
(
png_ptr
,
info_ptr
->
unknown_chunks
);
info_ptr
->
unknown_chunks_num
=
0
;
}
}
void
png_free_chunk_list
(
png_structp
png_ptr
)
{
if
(
png_ptr
==
NULL
)
return
;
if
(
png_ptr
->
num_chunk_list
)
{
png_free
(
png_ptr
,
png_ptr
->
chunk_list
);
png_ptr
->
num_chunk_list
=
0
;
png_free
(
png_ptr
,
info_ptr
->
unknown_chunks
);
info_ptr
->
unknown_chunks_num
=
0
;
}
}
}
#endif
#if defined(PNG_hIST_SUPPORTED)
/* free any hIST entry */
void
png_free_hIST
(
png_structp
png_ptr
,
png_infop
info_ptr
)
if
(
mask
&
PNG_FREE_HIST
)
{
if
(
png_ptr
==
NULL
||
info_ptr
==
NULL
)
return
;
if
(
info_ptr
->
valid
&
PNG_INFO_hIST
)
{
png_free
(
png_ptr
,
info_ptr
->
hist
);
if
(
info_ptr
->
free_me
&
PNG_FREE_HIST
)
png_free
(
png_ptr
,
info_ptr
->
hist
);
info_ptr
->
valid
&=
~
PNG_INFO_hIST
;
}
}
#endif
/* free any PLTE entry that was internally allocated */
void
png_free_PLTE
(
png_structp
png_ptr
,
png_infop
info_ptr
)
if
(
mask
&
PNG_FREE_PLTE
)
{
if
(
png_ptr
==
NULL
||
info_ptr
==
NULL
)
return
;
if
(
info_ptr
->
valid
&
PNG_INFO_PLTE
)
{
if
(
info_ptr
->
valid
&
PNG_ALLOCATED_INFO
_PLTE
)
if
(
info_ptr
->
free_me
&
PNG_FREE
_PLTE
)
png_zfree
(
png_ptr
,
info_ptr
->
palette
);
info_ptr
->
valid
&=
~
(
PNG_INFO_PLTE
|
PNG_ALLOCATED_INFO_PLTE
);
info_ptr
->
valid
&=
~
(
PNG_INFO_PLTE
);
info_ptr
->
num_palette
=
0
;
}
}
#if defined(PNG_INFO_IMAGE_SUPPORTED)
/* free any image bits attached to the info structure */
void
png_free_pixels
(
png_structp
png_ptr
,
png_infop
info_ptr
)
if
(
mask
&
PNG_FREE_ROWS
)
{
if
(
png_ptr
==
NULL
||
info_ptr
==
NULL
)
return
;
if
(
info_ptr
->
valid
&
PNG_INFO_IDAT
)
if
(
info_ptr
->
free_me
&
PNG_FREE_ROWS
)
{
int
row
;
for
(
row
=
0
;
row
<
(
int
)
info_ptr
->
height
;
row
++
)
png_free
(
png_ptr
,
info_ptr
->
row_pointers
[
row
]);
png_free
(
png_ptr
,
info_ptr
->
row_pointers
);
info_ptr
->
valid
&=
~
PNG_INFO_IDAT
;
}
}
#endif
if
(
num
==
-
1
)
info_ptr
->
free_me
&=
~
mask
;
}
/* This is an internal routine to free any memory that the info struct is
* pointing to before re-using it or freeing the struct itself. Recall
...
...
@@ -490,35 +455,17 @@ void
png_info_destroy
(
png_structp
png_ptr
,
png_infop
info_ptr
)
{
png_debug
(
1
,
"in png_info_destroy
\n
"
);
#if defined(PNG_READ_TEXT_SUPPORTED)
png_free_text
(
png_ptr
,
info_ptr
,
-
1
);
#endif
#if defined(PNG_READ_tRNS_SUPPORTED)
png_free_tRNS
(
png_ptr
,
info_ptr
);
#endif
#if defined(PNG_READ_sCAL_SUPPORTED)
png_free_sCAL
(
png_ptr
,
info_ptr
);
#endif
#if defined(PNG_READ_pCAL_SUPPORTED)
png_free_pCAL
(
png_ptr
,
info_ptr
);
#endif
#if defined(PNG_READ_iCCP_SUPPORTED)
png_free_iCCP
(
png_ptr
,
info_ptr
);
#endif
#if defined(PNG_READ_sPLT_SUPPORTED)
png_free_spalettes
(
png_ptr
,
info_ptr
,
-
1
);
#endif
png_free_data
(
png_ptr
,
info_ptr
,
PNG_FREE_ALL
,
-
1
);
#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
png_free_unknown_chunks
(
png_ptr
,
info_ptr
,
-
1
);
png_free_chunk_list
(
png_ptr
);
#endif
#if defined(PNG_hIST_SUPPORTED)
png_free_hIST
(
png_ptr
,
info_ptr
);
#endif
png_free_PLTE
(
png_ptr
,
info_ptr
);
#if defined(PNG_INFO_IMAGE_SUPPORTED)
png_free_pixels
(
png_ptr
,
info_ptr
);
if
(
png_ptr
->
num_chunk_list
)
{
png_free
(
png_ptr
,
png_ptr
->
chunk_list
);
png_ptr
->
num_chunk_list
=
0
;
}
#endif
png_info_init
(
info_ptr
);
}
...
...
@@ -596,7 +543,7 @@ png_charp
png_get_copyright
(
png_structp
png_ptr
)
{
if
(
png_ptr
!=
NULL
||
png_ptr
==
NULL
)
/* silence compiler warning */
return
(
"
\n
libpng version 1.0.5
q - February 5
, 2000
\n
\
return
(
"
\n
libpng version 1.0.5
s - February 18
, 2000
\n
\
Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
\n
\
Copyright (c) 1996, 1997 Andreas Dilger
\n
\
Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
\n
"
);
...
...
@@ -614,8 +561,8 @@ png_get_libpng_ver(png_structp png_ptr)
{
/* Version of *.c files used when building libpng */
if
(
png_ptr
!=
NULL
)
/* silence compiler warning about unused png_ptr */
return
(
"1.0.5
q
"
);
return
(
"1.0.5
q
"
);
return
(
"1.0.5
s
"
);
return
(
"1.0.5
s
"
);
}
png_charp
...
...
@@ -639,9 +586,9 @@ png_get_header_version(png_structp png_ptr)
/* Generate a compiler error if there is an old png.h in the search path. */
void
png_check_version
(
version_1_0_5
q
png_h_is_not_version_1_0_5q
)
(
version_1_0_5
s
png_h_is_not_version_1_0_5s
)
{
if
(
png_h_is_not_version_1_0_5
q
==
NULL
)
if
(
png_h_is_not_version_1_0_5
s
==
NULL
)
return
;
}
...
...
This diff is collapsed.
Click to expand it.
png.h
浏览文件 @
a77ef625
/* png.h - header file for PNG reference library
*
* libpng version 1.0.5
q - February 5
, 2000
* libpng version 1.0.5
s - February 18
, 2000
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
* Copyright (c) 1996, 1997 Andreas Dilger
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
...
...
@@ -9,19 +9,19 @@
* Authors and maintainers:
* libpng versions 0.71, May 1995, through 0.89c, May 1996: Guy Schalnat
* libpng versions 0.90, December 1996, through 0.96, May 1997: Andreas Dilger
* libpng versions 0.97, January 1998, through 1.0.5
q - February 5
, 2000: Glenn
* libpng versions 0.97, January 1998, through 1.0.5
s - February 18
, 2000: Glenn
* See also "Contributing Authors", below.
*
* Y2K compliance in libpng:
* =========================
*
* February
5
, 2000
* February
18
, 2000
*
* 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.0.5
q
are Y2K compliant. It is my belief that earlier
* upward through 1.0.5
s
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
...
...
@@ -98,8 +98,9 @@
* 1.0.4a-f 1.0.4a-f 10005 2.1.0.4a-f
* 1.0.5 1.0.5 10005 2.1.0.5
* 1.0.5a-d 1.0.5a-d 10006 2.1.0.5a-d
* 1.0.5e-p 1.0.5e-p 10100 2.1.0.5e-p
* 1.1.0 1.1.0 10100 3.1.1.0
* 1.0.5e-r 1.0.5e-r 10100 2.1.0.5e-r (not compatible)
* 1.0.5s 1.0.5s 10006 2.1.0.5s (compatible)
* 1.3.0 1.3.0 10300 3.1.3.0
*
* Henceforth the source version will match the shared-library minor
* and patch numbers; the shared-library major version number will be
...
...
@@ -123,7 +124,7 @@
* Copyright (c) 1996, 1997 Andreas Dilger
* (libpng versions 0.90, December 1996, through 0.96, May 1997)
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
* (libpng versions 0.97, January 1998, through 1.0.5
q, February 5
, 2000)
* (libpng versions 0.97, January 1998, through 1.0.5
s, February 18
, 2000)
*
* For the purposes of this copyright and license, "Contributing Authors"
* is defined as the following set of individuals:
...
...
@@ -212,6 +213,11 @@
/* include all user configurable info */
#include "pngconf.h"
/* macros for optional assembler routines */
#if defined(PNG_INTERNAL) && defined(PNG_ASSEMBLER_CODE_SUPPORTED)
# include "pngasmrd.h"
#endif
/* Inhibit C++ name-mangling for libpng functions but not for system calls. */
#ifdef __cplusplus
extern
"C"
{
...
...
@@ -224,14 +230,14 @@ extern "C" {
*/
/* Version information for png.h - this should match the version in png.c */
#define PNG_LIBPNG_VER_STRING "1.0.5
q
"
#define PNG_LIBPNG_VER_STRING "1.0.5
s
"
/* Careful here. At one time, Guy wanted to use 082, but that would be octal.
* We must not include leading zeros.
* Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only
* version 1.0.0 was mis-numbered 100 instead of 10000). From
* version 1.0.1 it's xxyyzz, where x=major, y=minor, z=bugfix */
#define PNG_LIBPNG_VER 10
100
/* 1.1.0
*/
#define PNG_LIBPNG_VER 10
006
/* 1.0.6
*/
/* Note to maintainer: update this number in scripts/pngdef.pas as well */
...
...
@@ -255,9 +261,11 @@ PNG_EXPORT_VAR (int FARDATA) png_pass_ystart[7];
PNG_EXPORT_VAR
(
int
FARDATA
)
png_pass_yinc
[
7
];
PNG_EXPORT_VAR
(
int
FARDATA
)
png_pass_mask
[
7
];
PNG_EXPORT_VAR
(
int
FARDATA
)
png_pass_dsp_mask
[
7
];
/* These aren't currently used. If you need them, see png.c for more details
PNG_EXPORT_VAR (int FARDATA) png_pass_width[7];
PNG_EXPORT_VAR (int FARDATA) png_pass_height[7];
#ifdef PNG_HAVE_ASSEMBLER_COMBINE_ROW
extern
int
FARDATA
png_pass_width
[
7
];
/* now used in pngvcrd.c, pnggccrd.c */
#endif
/* This isn't currently used. If you need it, see png.c for more details.
extern int FARDATA png_pass_height[7];
*/
#endif
...
...
@@ -446,7 +454,7 @@ typedef struct png_info_struct
png_byte
interlace_type
;
/* One of PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */
/* The following is informational only on read, and not used on writes. */
png_byte
channels
;
/* number of data channels per pixel (1, 3, 4)*/
png_byte
channels
;
/* number of data channels per pixel (1,
2,
3, 4)*/
png_byte
pixel_depth
;
/* number of bits per pixel */
png_byte
spare_byte
;
/* to align the data, and for future use */
png_byte
signature
[
8
];
/* magic bytes read by libpng from start of file */
...
...
@@ -457,6 +465,8 @@ typedef struct png_info_struct
* and initialize the appropriate fields below.
*/
png_uint_32
free_me
;
/* flags items libpng is responsible for freeing */
#if defined(PNG_gAMA_SUPPORTED) || defined(PNG_READ_GAMMA_SUPPORTED)
/* The gAMA chunk describes the gamma characteristics of the system
* on which the image was created, normally in the range [1.0, 2.5].
...
...
@@ -656,6 +666,7 @@ defined(PNG_READ_BACKGROUND_SUPPORTED)
#endif
#if defined(PNG_INFO_IMAGE_SUPPORTED)
/* Memory has been allocated if (valid & PNG_ALLOCATED_INFO_ROWS) non-zero */
/* Data valid if (valid & PNG_INFO_IDAT) non-zero */
png_bytepp
row_pointers
;
/* the image bits */
#endif
...
...
@@ -747,8 +758,7 @@ typedef png_info FAR * FAR * png_infopp;
#define PNG_INFO_iCCP 0x1000
/* ESR, 1.0.6 */
#define PNG_INFO_sPLT 0x2000
/* ESR, 1.0.6 */
#define PNG_INFO_sCAL 0x4000
/* ESR, 1.0.6 */
#define PNG_INFO_IDAT 0x8000
/* ESR, 1.0.6 */
#define PNG_ALLOCATED_INFO_PLTE 0x10000L
/* GR-P, 1.0.6 */
#define PNG_INFO_IDAT 0x8000L
/* ESR, 1.0.6 */
/* This is used for the transformation routines, as some of them
* change these values for the row. It also should enable using
...
...
@@ -803,19 +813,19 @@ typedef void (*png_unknown_chunk_ptr) PNGARG((png_structp));
#endif
/* Transform masks for the high-level interface */
#define PNG_TRANSFORM_IDENTITY
0x0000
/* read and write */
#define PNG_TRANSFORM_STRIP_16
0x0001
/* read only */
#define PNG_TRANSFORM_IDENTITY 0x0000
/* read and write */
#define PNG_TRANSFORM_STRIP_16
0x0001
/* read only */
#define PNG_TRANSFORM_STRIP_ALPHA 0x0002
/* read only */
#define PNG_TRANSFORM_PACKING 0x0004
/* read and write */
#define PNG_TRANSFORM_PACKSWAP
0x0008
/* read and write */
#define PNG_TRANSFORM_EXPAND 0x0010
/* read only */
#define PNG_TRANSFORM_PACKSWAP 0x0008
/* read and write */
#define PNG_TRANSFORM_EXPAND
0x0010
/* read only */
#define PNG_TRANSFORM_INVERT_MONO 0x0020
/* read and write */
#define PNG_TRANSFORM_SHIFT 0x0040
/* read and write */
#define PNG_TRANSFORM_BGR 0x0080
/* read and write */
#define PNG_TRANSFORM_SWAP_ALPHA 0x0100
/* read and write */
#define PNG_TRANSFORM_SHIFT
0x0040
/* read and write */
#define PNG_TRANSFORM_BGR
0x0080
/* read and write */
#define PNG_TRANSFORM_SWAP_ALPHA
0x0100
/* read and write */
#define PNG_TRANSFORM_SWAP_ENDIAN 0x0200
/* read and write */
#define PNG_TRANSFORM_INVERT_ALPHA
0x0200
/* read and write */
#define PNG_TRANSFORM_STRIP_FILLER
0x0800
/* WRITE only */
#define PNG_TRANSFORM_INVERT_ALPHA 0x0200
/* read and write */
#define PNG_TRANSFORM_STRIP_FILLER 0x0800
/* WRITE only */
typedef
png_voidp
(
*
png_malloc_ptr
)
PNGARG
((
png_structp
,
png_size_t
));
typedef
void
(
*
png_free_ptr
)
PNGARG
((
png_structp
,
png_voidp
));
...
...
@@ -861,6 +871,7 @@ struct png_struct_def
png_uint_32
mode
;
/* tells us where we are in the PNG file */
png_uint_32
flags
;
/* flags indicating various things to libpng */
png_uint_32
free_me
;
/* flags items libpng is responsible for freeing */
png_uint_32
transformations
;
/* which transformations to perform */
z_stream
zstream
;
/* pointer to decompression structure (below) */
...
...
@@ -1045,9 +1056,9 @@ struct png_struct_def
};
/* This prevents a compiler error in png_get_copyright() in png.c if png.c
and png.h are both at * version 1.0.5
q
and png.h are both at * version 1.0.5
s
*/
typedef
png_structp
version_1_0_5
q
;
typedef
png_structp
version_1_0_5
s
;
typedef
png_struct
FAR
*
FAR
*
png_structpp
;
...
...
@@ -1577,6 +1588,23 @@ extern PNG_EXPORT(png_voidp,png_malloc) PNGARG((png_structp png_ptr,
/* frees a pointer allocated by png_malloc() */
extern
PNG_EXPORT
(
void
,
png_free
)
PNGARG
((
png_structp
png_ptr
,
png_voidp
ptr
));
/* free data that was allocated internally */
extern
PNG_EXPORT
(
void
,
png_free_data
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
,
png_uint_32
free_me
,
int
num
));
/* flags for png_ptr->free_me and info_ptr->free_me */
#define PNG_FREE_PLTE 0x0001
#define PNG_FREE_TRNS 0x0002
#define PNG_FREE_TEXT 0x0004
#define PNG_FREE_HIST 0x0008
#define PNG_FREE_ICCP 0x0010
#define PNG_FREE_SPLT 0x0020
#define PNG_FREE_ROWS 0x0040
#define PNG_FREE_PCAL 0x0080
#define PNG_FREE_SCAL 0x0100
#define PNG_FREE_UNKN 0x0200
#define PNG_FREE_LIST 0x0400
#define PNG_FREE_ALL 0x07ff
#ifdef PNG_USER_MEM_SUPPORTED
extern
PNG_EXPORT
(
png_voidp
,
png_malloc_default
)
PNGARG
((
png_structp
png_ptr
,
png_uint_32
size
));
...
...
@@ -1631,6 +1659,17 @@ png_infop info_ptr, png_uint_32 flag));
extern
PNG_EXPORT
(
png_uint_32
,
png_get_rowbytes
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
));
#if defined(PNG_INFO_IMAGE_SUPPORTED)
/* Returns row_pointers, which is an array of pointers to scanlines that was
returned from png_read_png(). */
extern
PNG_EXPORT
(
png_bytepp
,
png_get_rows
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
));
/* Set row_pointers, which is an array of pointers to scanlines for use
by png_write_png(). */
extern
PNG_EXPORT
(
void
,
png_set_rows
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
,
png_bytepp
row_pointers
));
#endif
/* Returns number of color channels in image. */
extern
PNG_EXPORT
(
png_byte
,
png_get_channels
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
));
...
...
@@ -1796,11 +1835,6 @@ extern PNG_EXPORT(void,png_set_pCAL) PNGARG((png_structp png_ptr,
int
type
,
int
nparams
,
png_charp
units
,
png_charpp
params
));
#endif
#if defined(PNG_pCAL_SUPPORTED)
extern
PNG_EXPORT
(
void
,
png_free_pCAL
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
));
#endif
#if defined(PNG_READ_pHYs_SUPPORTED)
extern
PNG_EXPORT
(
png_uint_32
,
png_get_pHYs
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
,
png_uint_32
*
res_x
,
png_uint_32
*
res_y
,
int
*
unit_type
));
...
...
@@ -1849,26 +1883,16 @@ extern PNG_EXPORT(png_uint_32,png_get_iCCP) PNGARG((png_structp png_ptr,
extern
PNG_EXPORT
(
void
,
png_set_iCCP
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
,
png_charp
name
,
int
compression_type
,
png_charp
profile
,
png_uint_32
proflen
));
extern
PNG_EXPORT
(
void
,
png_free_iCCP
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
));
#endif
#if defined(PNG_READ_sPLT_SUPPORTED)
extern
PNG_EXPORT
(
png_uint_32
,
png_get_s
palettes
)
PNGARG
((
png_structp
png_ptr
,
extern
PNG_EXPORT
(
png_uint_32
,
png_get_s
PLT
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
,
png_spalette_pp
entries
));
#endif
#if defined(PNG_sPLT_SUPPORTED)
extern
PNG_EXPORT
(
void
,
png_set_s
palettes
)
PNGARG
((
png_structp
png_ptr
,
extern
PNG_EXPORT
(
void
,
png_set_s
PLT
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
,
png_spalette_p
entries
,
int
nentries
));
extern
PNG_EXPORT
(
void
,
png_free_spalettes
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
,
int
num
));
#endif
#if defined(PNG_READ_iTXt_SUPPORTED)
/* png_get_itxt also returns the number of text chunks in *num_text */
extern
PNG_EXPORT
(
png_uint_32
,
png_get_itxt
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
,
png_textp
*
text_ptr
,
int
*
num_text
));
#endif
#if defined(PNG_TEXT_SUPPORTED)
...
...
@@ -1886,8 +1910,6 @@ extern PNG_EXPORT(png_uint_32,png_get_text) PNGARG((png_structp png_ptr,
#if defined(PNG_TEXT_SUPPORTED)
extern
PNG_EXPORT
(
void
,
png_set_text
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
,
png_textp
text_ptr
,
int
num_text
));
extern
PNG_EXPORT
(
void
,
png_free_text
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
,
int
num_text_old
));
#endif
#if defined(PNG_READ_tIME_SUPPORTED)
...
...
@@ -1913,8 +1935,6 @@ extern PNG_EXPORT(void,png_set_tRNS) PNGARG((png_structp png_ptr,
#endif
#if defined(PNG_tRNS_SUPPORTED)
extern
PNG_EXPORT
(
void
,
png_free_tRNS
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
));
#endif
#if defined(PNG_READ_sCAL_SUPPORTED)
...
...
@@ -1940,11 +1960,6 @@ extern PNG_EXPORT(void,png_set_sCAL_s) PNGARG((png_structp png_ptr,
#endif
#endif
/* PNG_READ_sCAL_SUPPORTED || PNG_WRITE_sCAL_SUPPORTED */
#if defined(PNG_READ_sCAL_SUPPORTED) || defined(PNG_WRITE_sCAL_SUPPORTED)
extern
PNG_EXPORT
(
void
,
png_free_sCAL
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
));
#endif
/* PNG_READ_sCAL_SUPPORTED || PNG_WRITE_sCAL_SUPPORTED */
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
/* provide a list of chunks and how they are to be handled, if the built-in
handling or default unknown chunk handling is not desired. Any chunks not
...
...
@@ -1959,11 +1974,8 @@ extern PNG_EXPORT(void, png_set_keep_unknown_chunks) PNGARG((png_structp
png_ptr
,
int
keep
,
png_bytep
chunk_list
,
int
num_chunks
));
extern
PNG_EXPORT
(
void
,
png_set_unknown_chunks
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
,
png_unknown_chunkp
unknowns
,
int
num_unknowns
));
extern
PNG_EXPORT
(
void
,
png_free_unknown_chunks
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
,
int
num
));
extern
PNG_EXPORT
(
png_uint_32
,
png_get_unknown_chunks
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
,
png_unknown_chunkpp
entries
));
extern
PNG_EXPORT
(
void
,
png_free_chunk_list
)
PNGARG
((
png_structp
png_ptr
));
#endif
#if defined(PNG_INFO_IMAGE_SUPPORTED)
...
...
@@ -1975,8 +1987,6 @@ extern PNG_EXPORT(void, png_write_png) PNGARG((png_structp png_ptr,
png_infop
info_ptr
,
int
transforms
,
voidp
params
));
extern
PNG_EXPORT
(
void
,
png_free_pixels
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
));
#endif
/* Define PNG_DEBUG at compile time for debugging information. Higher
...
...
@@ -2019,7 +2029,7 @@ extern PNG_EXPORT(png_charp,png_get_header_version) PNGARG((png_structp png_ptr)
extern
PNG_EXPORT
(
png_charp
,
png_get_libpng_ver
)
PNGARG
((
png_structp
png_ptr
));
#define PNG_HEADER_VERSION_STRING \
" libpng version 1.0.5
q - February 5
, 2000 (header)\n"
" libpng version 1.0.5
s - February 18
, 2000 (header)\n"
#ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED
/* With these routines we avoid an integer divide, which will be slower on
...
...
@@ -2136,11 +2146,8 @@ extern PNG_EXPORT(png_charp,png_get_libpng_ver) PNGARG((png_structp png_ptr));
#define PNG_FLAG_CRC_ANCILLARY_NOWARN 0x0200
#define PNG_FLAG_CRC_CRITICAL_USE 0x0400
#define PNG_FLAG_CRC_CRITICAL_IGNORE 0x0800
#define PNG_FLAG_FREE_PALETTE 0x1000
#define PNG_FLAG_FREE_TRANS 0x2000
#define PNG_FLAG_FREE_HIST 0x4000
#define PNG_FLAG_KEEP_UNKNOWN_CHUNKS 0x8000L
#define PNG_FLAG_KEEP_UNSAFE_CHUNKS 0x10000L
#define PNG_FLAG_KEEP_UNKNOWN_CHUNKS 0x1000
#define PNG_FLAG_KEEP_UNSAFE_CHUNKS 0x2000
/* For use in png_set_keep_unknown, png_handle_as_unknown */
#define HANDLE_CHUNK_AS_DEFAULT 0
...
...
@@ -2415,14 +2422,6 @@ PNG_EXTERN void png_write_hIST PNGARG((png_structp png_ptr, png_uint_16p hist,
int
num_hist
));
#endif
#if defined(PNG_hIST_SUPPORTED)
extern
PNG_EXPORT
(
void
,
png_free_hIST
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
));
#endif
extern
PNG_EXPORT
(
void
,
png_free_PLTE
)
PNGARG
((
png_structp
png_ptr
,
png_infop
info_ptr
));
#if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_pCAL_SUPPORTED) || \
defined(PNG_WRITE_iCCP_SUPPORTED) || defined(PNG_WRITE_sPLT_SUPPORTED)
PNG_EXTERN
png_size_t
png_check_keyword
PNGARG
((
png_structp
png_ptr
,
...
...
This diff is collapsed.
Click to expand it.
pngasmrd.h
浏览文件 @
a77ef625
/* pngasmrd.h - assembler version of utilities to read a PNG file
*
* libpng 1.0.5
q - February 5
, 2000
* libpng 1.0.5
s - February 18
, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1999, 2000 Glenn Randers-Pehrson
*
...
...
@@ -9,24 +9,27 @@
#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
/* Set this in the makefile for VC++ on Pentium, not in pngconf.h */
#ifdef PNG_USE_PNGVCRD
/* Platform must be Pentium. Makefile must assemble and load pngvcrd.c .
* MMX will be detected at run time and used if present.
*/
#define PNG_HAVE_ASSEMBLER_COMBINE_ROW
#define PNG_HAVE_ASSEMBLER_READ_INTERLACE
#define PNG_HAVE_ASSEMBLER_READ_FILTER_ROW
#ifdef PNG_USE_PNGVCRD
# define PNG_HAVE_ASSEMBLER_COMBINE_ROW
# define PNG_HAVE_ASSEMBLER_READ_INTERLACE
# define PNG_HAVE_ASSEMBLER_READ_FILTER_ROW
#endif
/* Set this in the makefile for gcc on Pentium, not in pngconf.h */
#ifdef PNG_USE_PNGGCCRD
/* Platform must be Pentium. Makefile must assemble and load pnggccrd.c
* (not available in libpng 1.0.5q).
/* Set this in the makefile for gcc/as on Pentium, not in pngconf.h */
/* Platform must be Pentium. Makefile must assemble and load pnggccrd.c .
* MMX will be detected at run time and used if present.
*/
#define PNG_HAVE_ASSEMBLER_COMBINE_ROW
#define PNG_HAVE_ASSEMBLER_READ_INTERLACE
#define PNG_HAVE_ASSEMBLER_READ_FILTER_ROW
#ifdef PNG_USE_PNGGCCRD
# define PNG_HAVE_ASSEMBLER_COMBINE_ROW
# define PNG_HAVE_ASSEMBLER_READ_INTERLACE
# define PNG_HAVE_ASSEMBLER_READ_FILTER_ROW
#endif
/*
GRR notes:
- see pnggccrd.c for info about what is currently enabled
*/
#endif
This diff is collapsed.
Click to expand it.
pngconf.h
浏览文件 @
a77ef625
/* pngconf.h - machine configurable file for libpng
*
* libpng 1.0.5
q - February 5
, 2000
* libpng 1.0.5
s - February 18
, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
* Copyright (c) 1996, 1997 Andreas Dilger
...
...
@@ -423,7 +423,8 @@
#define PNG_EASY_ACCESS_SUPPORTED
#endif
#ifndef PNG_NO_ASSEMBLER_CODE
#if defined(PNG_USE_PNGVCRD) || defined(PNG_USE_PNGGCCRD) && \
!defined(PNG_NO_ASSEMBLER_CODE)
#define PNG_ASSEMBLER_CODE_SUPPORTED
#endif
...
...
@@ -711,7 +712,7 @@
#endif
/* PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED */
/* Turn this off to disable png_read_png() and
* png_write_png() and leave the
image_bit
s member
* png_write_png() and leave the
row_pointer
s member
* out of the info structure.
*/
#ifndef PNG_NO_INFO_IMAGE
...
...
@@ -847,8 +848,13 @@ typedef z_stream FAR * png_zstreamp;
#ifndef PNG_EXPORT
/* allow for compilation as dll under MS Windows */
# ifdef __WIN32DLL__
/* GRR 20000206: based on zconf.h and MSVC 5.0 docs */
# if defined(_MSC_VER) && defined(_DLL)
# define PNG_EXPORT(type,symbol) type __declspec(dllexport) symbol
# endif
/* allow for compilation as a DLL under MS Windows */
# ifdef __WIN32DLL__
/* Borland? */
# define PNG_EXPORT(type,symbol) __declspec(dllexport) type symbol
# endif
...
...
@@ -857,7 +863,7 @@ typedef z_stream FAR * png_zstreamp;
# define PNG_EXPORT(type,symbol) type __attribute__((dllexport)) symbol
# endif
/* allow for compilation as
dll
with Borland C++ 5.0 */
/* allow for compilation as
a DLL
with Borland C++ 5.0 */
# if defined(__BORLANDC__) && defined(_Windows) && defined(__DLL__)
# define PNG_EXPORT(type,symbol) type _export symbol
# endif
...
...
@@ -877,6 +883,9 @@ typedef z_stream FAR * png_zstreamp;
#endif
#ifndef PNG_EXPORT_VAR
# if defined(_MSC_VER) && defined(_DLL)
/* GRR 20000206 */
# define PNG_EXPORT_VAR(type) extern type __declspec(dllexport)
# endif
# ifdef PNG_DECL_DLLEXP
# define PNG_EXPORT_VAR(type) extern __declspec(dllexport) type
# endif
...
...
@@ -903,6 +912,10 @@ typedef z_stream FAR * png_zstreamp;
# define PNG_ABORT() abort()
#endif
#ifdef PNG_SETJMP_SUPPORTED
# define png_jmp_env(png_ptr) png_ptr->jmpbuf
#endif
#if defined(USE_FAR_KEYWORD)
/* memory model independent fns */
/* use this to make far-to-near assignments */
# define CHECK 1
...
...
This diff is collapsed.
Click to expand it.
pngerror.c
浏览文件 @
a77ef625
/* pngerror.c - stub functions for i/o and memory allocation
*
* libpng 1.0.5
q - February 5
, 2000
* libpng 1.0.5
s - February 18
, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
* Copyright (c) 1996, 1997 Andreas Dilger
...
...
@@ -133,6 +133,8 @@ png_default_error(png_structp png_ptr, png_const_charp message)
longjmp
(
png_ptr
->
jmpbuf
,
1
);
# endif
#else
if
(
png_ptr
==
NULL
)
/* make compiler happy */
;
PNG_ABORT
();
#endif
}
...
...
This diff is collapsed.
Click to expand it.
pnggccrd.c
浏览文件 @
a77ef625
...
...
@@ -6,7 +6,7 @@
* and http://www.intel.com/drg/pentiumII/appnotes/923/923.htm
* for Intel's performance analysis of the MMX vs. non-MMX code.
*
* libpng 1.0.5
q - February 5
, 2000
* libpng 1.0.5
s - February 18
, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998, Intel Corporation
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
...
...
This diff is collapsed.
Click to expand it.
pngget.c
浏览文件 @
a77ef625
/* pngget.c - retrieval of values from info struct
*
* libpng 1.0.5
q - February 5
, 2000
* libpng 1.0.5
s - February 18
, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
* Copyright (c) 1996, 1997 Andreas Dilger
...
...
@@ -29,6 +29,17 @@ png_get_rowbytes(png_structp png_ptr, png_infop info_ptr)
return
(
0
);
}
#if defined(PNG_INFO_IMAGE_SUPPORTED)
png_bytepp
png_get_rows
(
png_structp
png_ptr
,
png_infop
info_ptr
)
{
if
(
png_ptr
!=
NULL
&&
info_ptr
!=
NULL
)
return
(
info_ptr
->
row_pointers
);
else
return
(
0
);
}
#endif
#ifdef PNG_EASY_ACCESS_SUPPORTED
/* easy access to info, added in libpng-0.99 */
png_uint_32
...
...
@@ -239,35 +250,35 @@ png_uint_32
png_get_pixels_per_inch
(
png_structp
png_ptr
,
png_infop
info_ptr
)
{
return
((
png_uint_32
)((
float
)
png_get_pixels_per_meter
(
png_ptr
,
info_ptr
)
*
.
0
3
937
+
.
5
)
*
.
0
254
+
.
5
);
}
png_uint_32
png_get_x_pixels_per_inch
(
png_structp
png_ptr
,
png_infop
info_ptr
)
{
return
((
png_uint_32
)((
float
)
png_get_x_pixels_per_meter
(
png_ptr
,
info_ptr
)
*
.
0
3
937
+
.
5
)
*
.
0
254
+
.
5
);
}
png_uint_32
png_get_y_pixels_per_inch
(
png_structp
png_ptr
,
png_infop
info_ptr
)
{
return
((
png_uint_32
)((
float
)
png_get_y_pixels_per_meter
(
png_ptr
,
info_ptr
)
*
.
0
3
937
+
.
5
)
*
.
0
254
+
.
5
);
}
float
png_get_x_offset_inches
(
png_structp
png_ptr
,
png_infop
info_ptr
)
{
return
((
float
)
png_get_x_offset_microns
(
png_ptr
,
info_ptr
)
*
.
0
3
937
/
1000000
.
+
.
5
)
*
.
0
0003
937
);
}
float
png_get_y_offset_inches
(
png_structp
png_ptr
,
png_infop
info_ptr
)
{
return
((
float
)
png_get_y_offset_microns
(
png_ptr
,
info_ptr
)
*
.
0
3
937
/
1000000
.
+
.
5
)
*
.
0
0003
937
)
}
#if defined(PNG_READ_pHYs_SUPPORTED)
...
...
@@ -296,8 +307,8 @@ png_get_pHYs_dpi(png_structp png_ptr, png_infop info_ptr,
retval
|=
PNG_INFO_pHYs
;
if
(
unit_type
==
1
)
{
if
(
res_x
!=
NULL
)
*
res_x
=
(
png_uint_32
)(
*
res_x
*
39
.
37
+
.
50
);
if
(
res_y
!=
NULL
)
*
res_y
=
(
png_uint_32
)(
*
res_y
*
39
.
37
+
.
50
);
if
(
res_x
!=
NULL
)
*
res_x
=
(
png_uint_32
)(
*
res_x
*
.
0254
+
.
50
);
if
(
res_y
!=
NULL
)
*
res_y
=
(
png_uint_32
)(
*
res_y
*
.
0254
+
.
50
);
}
}
}
...
...
@@ -477,7 +488,7 @@ png_get_iCCP(png_structp png_ptr, png_infop info_ptr,
#if defined(PNG_READ_sPLT_SUPPORTED)
png_uint_32
png_get_s
palettes
(
png_structp
png_ptr
,
png_infop
info_ptr
,
png_get_s
PLT
(
png_structp
png_ptr
,
png_infop
info_ptr
,
png_spalette_pp
spalettes
)
{
if
(
png_ptr
!=
NULL
&&
info_ptr
!=
NULL
&&
spalettes
!=
NULL
)
...
...
@@ -703,6 +714,8 @@ png_get_text(png_structp png_ptr, png_infop info_ptr, png_textp *text_ptr,
*
num_text
=
info_ptr
->
num_text
;
return
((
png_uint_32
)
info_ptr
->
num_text
);
}
if
(
num_text
!=
NULL
)
*
num_text
=
0
;
return
(
0
);
}
#endif
...
...
This diff is collapsed.
Click to expand it.
pngmem.c
浏览文件 @
a77ef625
/* pngmem.c - stub functions for memory allocation
*
* libpng 1.0.5
q - February 5
, 2000
* libpng 1.0.5
s - February 18
, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
* Copyright (c) 1996, 1997 Andreas Dilger
...
...
This diff is collapsed.
Click to expand it.
pngpread.c
浏览文件 @
a77ef625
/* pngpread.c - read a png file in push mode
*
* libpng 1.0.5
q - February 5
, 2000
* libpng 1.0.5
s - February 18
, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
* Copyright (c) 1996, 1997 Andreas Dilger
...
...
This diff is collapsed.
Click to expand it.
pngread.c
浏览文件 @
a77ef625
/* pngread.c - read a PNG file
*
* libpng 1.0.5
q - February 5
, 2000
* libpng 1.0.5
s - February 18
, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
* Copyright (c) 1996, 1997 Andreas Dilger
...
...
@@ -641,7 +641,7 @@ png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row)
* not called png_set_interlace_handling(), the display_row buffer will
* be ignored, so pass NULL to it.
*
* [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.5
q
.
* [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.5
s
.
*/
void
...
...
@@ -690,7 +690,7 @@ png_read_rows(png_structp png_ptr, png_bytepp row,
* only call this function once. If you desire to have an image for
* each pass of a interlaced image, use png_read_rows() instead.
*
* [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.5
q
.
* [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.5
s
.
*/
void
png_read_image
(
png_structp
png_ptr
,
png_bytepp
image
)
...
...
@@ -943,7 +943,7 @@ png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr,
if
(
info_ptr
!=
NULL
)
{
#if defined(PNG_TEXT_SUPPORTED)
png_free
(
png_ptr
,
info_ptr
->
text
);
png_free
_data
(
png_ptr
,
info_ptr
,
PNG_FREE_TEXT
,
-
1
);
#endif
#ifdef PNG_USER_MEM_SUPPORTED
...
...
@@ -957,7 +957,7 @@ png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr,
if
(
end_info_ptr
!=
NULL
)
{
#if defined(PNG_READ_TEXT_SUPPORTED)
png_free
(
png_ptr
,
end_info_ptr
->
text
);
png_free
_data
(
png_ptr
,
end_info_ptr
,
PNG_FREE_TEXT
,
-
1
);
#endif
#ifdef PNG_USER_MEM_SUPPORTED
png_destroy_struct_2
((
png_voidp
)
end_info_ptr
,
free_fn
);
...
...
@@ -1014,16 +1014,19 @@ png_read_destroy(png_structp png_ptr, png_infop info_ptr, png_infop end_info_ptr
png_free
(
png_ptr
,
png_ptr
->
gamma_from_1
);
png_free
(
png_ptr
,
png_ptr
->
gamma_to_1
);
#endif
if
(
png_ptr
->
f
lags
&
PNG_FLAG_FREE_PALET
TE
)
if
(
png_ptr
->
f
ree_me
&
PNG_FREE_PL
TE
)
png_zfree
(
png_ptr
,
png_ptr
->
palette
);
png_ptr
->
free_me
&=
~
PNG_FREE_PLTE
;
#if defined(PNG_tRNS_SUPPORTED) || \
defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
if
(
png_ptr
->
f
lags
&
PNG_FLAG_FREE_TRA
NS
)
if
(
png_ptr
->
f
ree_me
&
PNG_FREE_TR
NS
)
png_free
(
png_ptr
,
png_ptr
->
trans
);
png_ptr
->
free_me
&=
~
PNG_FREE_TRNS
;
#endif
#if defined(PNG_READ_hIST_SUPPORTED)
if
(
png_ptr
->
f
lags
&
PNG_FLA
G_FREE_HIST
)
if
(
png_ptr
->
f
ree_me
&
PN
G_FREE_HIST
)
png_free
(
png_ptr
,
png_ptr
->
hist
);
png_ptr
->
free_me
&=
~
PNG_FREE_HIST
;
#endif
#if defined(PNG_READ_GAMMA_SUPPORTED)
if
(
png_ptr
->
gamma_16_table
!=
NULL
)
...
...
@@ -1140,7 +1143,7 @@ void png_read_png(png_structp png_ptr, png_infop info_ptr,
png_set_strip_alpha
(
png_ptr
);
#endif
#if defined(PNG_READ_PACK_SUPPORTED)
#if defined(PNG_READ_PACK_SUPPORTED)
&& !defined(PNG_READ_EXPAND_SUPPORTED)
/* Extract multiple pixels with bit depths of 1, 2, and 4 from a single
* byte into separate bytes (useful for paletted and grayscale images).
*/
...
...
@@ -1162,8 +1165,10 @@ void png_read_png(png_structp png_ptr, png_infop info_ptr,
* channels so the data will be available as RGBA quartets.
*/
if
(
transforms
&
PNG_TRANSFORM_EXPAND
)
if
(
png_get_valid
(
png_ptr
,
info_ptr
,
PNG_INFO_tRNS
))
png_set_expand
(
png_ptr
);
if
((
png_ptr
->
bit_depth
<
8
)
||
(
png_ptr
->
color_type
==
PNG_COLOR_TYPE_PALETTE
)
||
(
png_get_valid
(
png_ptr
,
info_ptr
,
PNG_INFO_tRNS
)))
png_set_expand
(
png_ptr
);
#endif
/* We don't handle background color or gamma transformation or dithering. */
...
...
@@ -1217,8 +1222,12 @@ void png_read_png(png_structp png_ptr, png_infop info_ptr,
/* -------------- image transformations end here ------------------- */
info_ptr
->
row_pointers
=
(
png_bytepp
)
png_malloc
(
png_ptr
,
if
(
info_ptr
->
row_pointers
==
NULL
)
{
info_ptr
->
row_pointers
=
(
png_bytepp
)
png_malloc
(
png_ptr
,
info_ptr
->
height
*
sizeof
(
png_bytep
));
info_ptr
->
free_me
|=
PNG_FREE_ROWS
;
}
for
(
row
=
0
;
row
<
(
int
)
info_ptr
->
height
;
row
++
)
info_ptr
->
row_pointers
[
row
]
=
png_malloc
(
png_ptr
,
png_get_rowbytes
(
png_ptr
,
info_ptr
));
...
...
This diff is collapsed.
Click to expand it.
pngrio.c
浏览文件 @
a77ef625
/* pngrio.c - functions for data input
*
* libpng 1.0.5
q - February 5
, 2000
* libpng 1.0.5
s - February 18
, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
* Copyright (c) 1996, 1997 Andreas Dilger
...
...
This diff is collapsed.
Click to expand it.
pngrtran.c
浏览文件 @
a77ef625
/* pngrtran.c - transforms the data in a row for PNG readers
*
* libpng 1.0.5
q - February 5
, 2000
* libpng 1.0.5
s - February 18
, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
* Copyright (c) 1996, 1997 Andreas Dilger
...
...
@@ -658,7 +658,8 @@ png_init_read_transformations(png_structp png_ptr)
#endif
#if defined(PNG_READ_EXPAND_SUPPORTED) && defined(PNG_READ_BACKGROUND_SUPPORTED)
if
(
png_ptr
->
transformations
&
PNG_BACKGROUND_EXPAND
)
if
((
png_ptr
->
transformations
&
PNG_BACKGROUND_EXPAND
)
&&
(
png_ptr
->
transformations
&
PNG_EXPAND
))
{
if
(
!
(
color_type
&
PNG_COLOR_MASK_COLOR
))
/* i.e., GRAY or GRAY_ALPHA */
{
...
...
This diff is collapsed.
Click to expand it.
pngrutil.c
浏览文件 @
a77ef625
/* pngrutil.c - utilities to read a PNG file
*
* libpng 1.0.5
q - February 5
, 2000
* libpng 1.0.5
s - February 18
, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
* Copyright (c) 1996, 1997 Andreas Dilger
...
...
@@ -14,10 +14,6 @@
#define PNG_INTERNAL
#include "png.h"
#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
#include "pngasmrd.h"
#endif
#ifndef PNG_READ_BIG_ENDIAN_SUPPORTED
/* Grab an unsigned 32-bit integer from a buffer in big-endian format. */
png_uint_32
...
...
@@ -398,7 +394,7 @@ png_handle_PLTE(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
num
=
(
int
)
length
/
3
;
palette
=
(
png_colorp
)
png_zalloc
(
png_ptr
,
(
uInt
)
num
,
sizeof
(
png_color
));
png_ptr
->
f
lags
|=
PNG_FLAG_FREE_PALET
TE
;
png_ptr
->
f
ree_me
|=
PNG_FREE_PL
TE
;
for
(
i
=
0
;
i
<
num
;
i
++
)
{
png_byte
buf
[
3
];
...
...
@@ -436,7 +432,7 @@ png_handle_PLTE(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
else
{
png_chunk_warning
(
png_ptr
,
"CRC error"
);
png_ptr
->
f
lags
&=
~
PNG_FLAG_FREE_PALET
TE
;
png_ptr
->
f
ree_me
&=
~
PNG_FREE_PL
TE
;
png_zfree
(
png_ptr
,
palette
);
return
;
}
...
...
@@ -928,6 +924,7 @@ png_handle_iCCP(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
#endif
chunkdata
=
(
png_charp
)
png_malloc
(
png_ptr
,
length
+
1
);
png_ptr
->
free_me
|=
PNG_FREE_ICCP
;
slength
=
(
png_size_t
)
length
;
png_crc_read
(
png_ptr
,
(
png_bytep
)
chunkdata
,
slength
);
...
...
@@ -1058,7 +1055,7 @@ png_handle_sPLT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
/* discard all chunk data except the name and stash that */
new_palette
.
name
=
(
png_charp
)
chunkdata
;
png_set_s
palettes
(
png_ptr
,
info_ptr
,
&
new_palette
,
1
);
png_set_s
PLT
(
png_ptr
,
info_ptr
,
&
new_palette
,
1
);
png_free
(
png_ptr
,
chunkdata
);
png_free
(
png_ptr
,
new_palette
.
entries
);
...
...
@@ -1107,7 +1104,7 @@ png_handle_tRNS(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
}
png_ptr
->
trans
=
(
png_bytep
)
png_malloc
(
png_ptr
,
length
);
png_ptr
->
f
lags
|=
PNG_FLAG_FREE_TRA
NS
;
png_ptr
->
f
ree_me
|=
PNG_FREE_TR
NS
;
png_crc_read
(
png_ptr
,
png_ptr
->
trans
,
(
png_size_t
)
length
);
png_ptr
->
num_trans
=
(
png_uint_16
)
length
;
}
...
...
@@ -1287,7 +1284,7 @@ png_handle_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
num
=
(
int
)
length
/
2
;
png_ptr
->
hist
=
(
png_uint_16p
)
png_malloc
(
png_ptr
,
(
png_uint_32
)(
num
*
sizeof
(
png_uint_16
)));
png_ptr
->
f
lags
|=
PNG_FLA
G_FREE_HIST
;
png_ptr
->
f
ree_me
|=
PN
G_FREE_HIST
;
for
(
i
=
0
;
i
<
num
;
i
++
)
{
png_byte
buf
[
2
];
...
...
@@ -2802,7 +2799,14 @@ png_read_start_row(png_structp png_ptr)
else
{
if
(
max_pixel_depth
<=
8
)
max_pixel_depth
=
24
;
{
if
(
png_ptr
->
color_type
==
PNG_COLOR_TYPE_RGB_ALPHA
)
max_pixel_depth
=
32
;
else
max_pixel_depth
=
24
;
}
else
if
(
png_ptr
->
color_type
==
PNG_COLOR_TYPE_RGB_ALPHA
)
max_pixel_depth
=
64
;
else
max_pixel_depth
=
48
;
}
...
...
This diff is collapsed.
Click to expand it.
pngset.c
浏览文件 @
a77ef625
/* pngset.c - storage of image information into info struct
*
* libpng 1.0.5
q - February 5
, 2000
* libpng 1.0.5
s - February 18
, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
* Copyright (c) 1996, 1997 Andreas Dilger
...
...
@@ -135,9 +135,7 @@ png_set_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_16p hist)
if
(
png_ptr
==
NULL
||
info_ptr
==
NULL
)
return
;
info_ptr
->
hist
=
png_malloc
(
png_ptr
,
sizeof
(
png_uint_16
)
*
info_ptr
->
num_palette
);
png_memcpy
(
info_ptr
->
hist
,
hist
,
sizeof
(
png_uint_16
)
*
info_ptr
->
num_palette
);
info_ptr
->
hist
=
hist
;
info_ptr
->
valid
|=
PNG_INFO_hIST
;
}
#endif
...
...
@@ -309,7 +307,6 @@ void
png_set_PLTE
(
png_structp
png_ptr
,
png_infop
info_ptr
,
png_colorp
palette
,
int
num_palette
)
{
png_size_t
length
=
(
png_size_t
)(
3
*
num_palette
);
png_debug1
(
1
,
"in %s storage function
\n
"
,
"PLTE"
);
if
(
png_ptr
==
NULL
||
info_ptr
==
NULL
)
...
...
@@ -317,13 +314,10 @@ png_set_PLTE(png_structp png_ptr, png_infop info_ptr,
png_debug1
(
3
,
"allocating PLTE for info (%d bytes)
\n
"
,
length
);
info_ptr
->
palette
=
(
png_colorp
)
png_zalloc
(
png_ptr
,
(
uInt
)
num_palette
,
sizeof
(
png_color
));
png_memcpy
(
info_ptr
->
palette
,
palette
,
length
);
info_ptr
->
palette
=
palette
;
info_ptr
->
num_palette
=
(
png_uint_16
)
num_palette
;
info_ptr
->
valid
|=
(
PNG_INFO_PLTE
|
PNG_ALLOCATED_INFO_PLTE
)
;
info_ptr
->
valid
|=
PNG_INFO_PLTE
;
}
#if defined(PNG_sBIT_SUPPORTED)
...
...
@@ -441,6 +435,7 @@ png_set_iCCP(png_structp png_ptr, png_infop info_ptr,
/* Compression is always zero but is here so the API and info structure
* does not have to change * if we introduce multiple compression types */
info_ptr
->
iccp_compression
=
(
png_byte
)
compression_type
;
info_ptr
->
free_me
|=
PNG_FREE_ICCP
;
info_ptr
->
valid
|=
PNG_INFO_iCCP
;
}
#endif
...
...
@@ -526,8 +521,6 @@ png_set_text(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr,
textp
->
key
=
(
png_charp
)
png_malloc
(
png_ptr
,
(
png_uint_32
)(
key_len
+
lang_len
+
lang_key_len
+
text_length
+
4
));
/* Caution: the calling program, not libpng, is responsible for
freeing this, if libpng wasn't the caller. */
png_debug2
(
2
,
"Allocated %d bytes at %x in png_set_text
\n
"
,
key_len
+
lang_len
+
lang_key_len
+
text_length
+
4
,
textp
->
key
);
...
...
@@ -573,6 +566,7 @@ png_set_text(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr,
info_ptr
->
text
[
info_ptr
->
num_text
]
=
*
textp
;
info_ptr
->
num_text
++
;
info_ptr
->
free_me
|=
PNG_FREE_TEXT
;
png_debug1
(
3
,
"transferred text chunk %d
\n
"
,
info_ptr
->
num_text
);
}
}
...
...
@@ -602,10 +596,7 @@ png_set_tRNS(png_structp png_ptr, png_infop info_ptr,
return
;
if
(
trans
!=
NULL
)
{
info_ptr
->
trans
=
png_malloc
(
png_ptr
,
num_trans
);
png_memcpy
(
info_ptr
->
trans
,
trans
,
num_trans
);
}
info_ptr
->
trans
=
trans
;
if
(
trans_values
!=
NULL
)
{
...
...
@@ -621,7 +612,7 @@ png_set_tRNS(png_structp png_ptr, png_infop info_ptr,
#if defined(PNG_sPLT_SUPPORTED)
void
png_set_s
palettes
(
png_structp
png_ptr
,
png_set_s
PLT
(
png_structp
png_ptr
,
png_infop
info_ptr
,
png_spalette_p
entries
,
int
nentries
)
{
png_spalette_p
np
;
...
...
@@ -653,6 +644,7 @@ png_set_spalettes(png_structp png_ptr,
info_ptr
->
splt_palettes
=
np
;
info_ptr
->
splt_palettes_num
+=
nentries
;
info_ptr
->
valid
|=
PNG_INFO_sPLT
;
info_ptr
->
free_me
|=
PNG_FREE_SPLT
;
}
#endif
/* PNG_sPLT_SUPPORTED */
...
...
@@ -691,6 +683,7 @@ png_set_unknown_chunks(png_structp png_ptr,
info_ptr
->
unknown_chunks
=
np
;
info_ptr
->
unknown_chunks_num
+=
num_unknowns
;
info_ptr
->
free_me
|=
PNG_FREE_UNKN
;
}
#endif
...
...
@@ -732,13 +725,14 @@ png_set_keep_unknown_chunks(png_structp png_ptr, int keep, png_bytep
if
(
png_ptr
->
chunk_list
!=
(
png_bytep
)
NULL
)
{
png_memcpy
(
new_list
,
png_ptr
->
chunk_list
,
5
*
old_num_chunks
);
png_free
_chunk_list
(
png_ptr
);
png_free
(
png_ptr
,
png_ptr
->
chunk_list
);
}
png_memcpy
(
new_list
+
5
*
old_num_chunks
,
chunk_list
,
5
*
num_chunks
);
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
->
chunk_list
=
new_list
;
png_ptr
->
free_me
|=
PNG_FREE_LIST
;
}
#endif
...
...
@@ -753,3 +747,16 @@ png_set_read_user_chunk_fn(png_structp png_ptr, png_voidp user_chunk_ptr,
}
#endif
#if defined(PNG_INFO_IMAGE_SUPPORTED)
void
png_set_rows
(
png_structp
png_ptr
,
png_infop
info_ptr
,
png_bytepp
row_pointers
)
{
png_debug1
(
1
,
"in %s storage function
\n
"
,
"rows"
);
if
(
png_ptr
==
NULL
||
info_ptr
==
NULL
)
return
;
info_ptr
->
row_pointers
=
row_pointers
;
info_ptr
->
free_me
|=
PNG_FREE_ROWS
;
}
#endif
This diff is collapsed.
Click to expand it.
pngtest.c
浏览文件 @
a77ef625
/* pngtest.c - a simple test program to test libpng
*
* libpng 1.0.5
q - February 5
, 2000
* libpng 1.0.5
s - February 18
, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
* Copyright (c) 1996, 1997 Andreas Dilger
...
...
@@ -524,7 +524,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
int
bit_depth
,
color_type
;
#ifdef PNG_SETJMP_SUPPORTED
#ifdef USE_FAR_KEYWORD
jmp_buf
jmp
buf
;
jmp_buf
jmp
_env
;
#endif
#endif
...
...
@@ -579,11 +579,11 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
#endif
#ifdef PNG_SETJMP_SUPPORTED
png_debug
(
0
,
"Setting jmp
buf
for read struct
\n
"
);
png_debug
(
0
,
"Setting jmp
_env
for read struct
\n
"
);
#ifdef USE_FAR_KEYWORD
if
(
setjmp
(
jmp
buf
))
if
(
setjmp
(
jmp
_env
))
#else
if
(
setjmp
(
read_ptr
->
jmpbuf
))
if
(
setjmp
(
png_jmp_env
(
read_ptr
)
))
#endif
{
fprintf
(
STDERR
,
"%s -> %s: libpng read error
\n
"
,
inname
,
outname
);
...
...
@@ -595,14 +595,14 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
return
(
1
);
}
#ifdef USE_FAR_KEYWORD
png_memcpy
(
read_ptr
->
jmpbuf
,
jmpbuf
,
sizeof
(
jmp_buf
));
png_memcpy
(
png_jmp_env
(
read_ptr
),
jmp_env
,
sizeof
(
jmp_buf
));
#endif
png_debug
(
0
,
"Setting jmp
buf
for write struct
\n
"
);
png_debug
(
0
,
"Setting jmp
_env
for write struct
\n
"
);
#ifdef USE_FAR_KEYWORD
if
(
setjmp
(
jmp
buf
))
if
(
setjmp
(
jmp
_env
))
#else
if
(
setjmp
(
write_ptr
->
jmpbuf
))
if
(
setjmp
(
png_jmp_env
(
write_ptr
)
))
#endif
{
fprintf
(
STDERR
,
"%s -> %s: libpng write error
\n
"
,
inname
,
outname
);
...
...
@@ -614,7 +614,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
return
(
1
);
}
#ifdef USE_FAR_KEYWORD
png_memcpy
(
write_ptr
->
jmpbuf
,
jmp
buf
,
sizeof
(
jmp_buf
));
png_memcpy
(
write_ptr
->
jmpbuf
,
jmp
_env
,
sizeof
(
jmp_buf
));
#endif
#endif
...
...
@@ -949,10 +949,10 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
}
#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
png_free_
unknown_chunks
(
read_ptr
,
end_info_ptr
,
-
1
);
png_free_
data
(
read_ptr
,
read_info_ptr
,
PNG_FREE_UNKN
,
-
1
);
#endif
#if defined(PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED)
png_free_
unknown_chunks
(
write_ptr
,
write_info_ptr
,
-
1
);
png_free_
data
(
write_ptr
,
write_info_ptr
,
PNG_FREE_UNKN
,
-
1
);
#endif
png_debug
(
0
,
"Reading and writing end_info data
\n
"
);
...
...
@@ -1341,7 +1341,7 @@ main(int argc, char *argv[])
/* Generate a compiler error if there is an old png.h in the search path. */
void
png_check_pngtest_version
(
version_1_0_5
q
png_h_is_not_version_1_0_5q
)
(
version_1_0_5
s
png_h_is_not_version_1_0_5s
)
{
if
(
png_h_is_not_version_1_0_5
q
==
NULL
)
return
;
if
(
png_h_is_not_version_1_0_5
s
==
NULL
)
return
;
}
This diff is collapsed.
Click to expand it.
pngtrans.c
浏览文件 @
a77ef625
/* pngtrans.c - transforms the data in a row (used by both readers and writers)
*
* libpng 1.0.5
q - February 5
, 2000
* libpng 1.0.5
s - February 18
, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
* Copyright (c) 1996, 1997 Andreas Dilger
...
...
This diff is collapsed.
Click to expand it.
pngtypes.h
浏览文件 @
a77ef625
/* pngtypes.h - array of chunk-types for libpng
*
* libpng 1.0.5
q - February 5
, 2000
* libpng 1.0.5
s - February 18
, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
* Copyright (c) 1996, 1997 Andreas Dilger
...
...
This diff is collapsed.
Click to expand it.
pngvcrd.c
浏览文件 @
a77ef625
...
...
@@ -2,7 +2,7 @@
*
* For Intel x86 CPU and Microsoft Visual C++ compiler
*
* libpng 1.0.5
q - February 5
, 2000
* libpng 1.0.5
s - February 18
, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998, Intel Corporation
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
...
...
This diff is collapsed.
Click to expand it.
pngwio.c
浏览文件 @
a77ef625
/* pngwio.c - functions for data output
*
* libpng 1.0.5
q - February 5
, 2000
* libpng 1.0.5
s - February 18
, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
* Copyright (c) 1996, 1997 Andreas Dilger
...
...
This diff is collapsed.
Click to expand it.
pngwrite.c
浏览文件 @
a77ef625
/* pngwrite.c - general routines to write a PNG file
*
* libpng 1.0.5
q - February 5
, 2000
* libpng 1.0.5
s - February 18
, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
* Copyright (c) 1996, 1997 Andreas Dilger
...
...
@@ -799,35 +799,13 @@ png_destroy_write_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr)
if
(
info_ptr
!=
NULL
)
{
#if defined(PNG_WRITE_TEXT_SUPPORTED)
png_free_text
(
png_ptr
,
info_ptr
,
-
1
);
#endif
#if defined(PNG_WRITE_tRNS_SUPPORTED)
png_free_tRNS
(
png_ptr
,
info_ptr
);
#endif
#if defined(PNG_WRITE_sCAL_SUPPORTED)
png_free_sCAL
(
png_ptr
,
info_ptr
);
#endif
#if defined(PNG_WRITE_pCAL_SUPPORTED)
png_free_pCAL
(
png_ptr
,
info_ptr
);
#endif
#if defined(PNG_WRITE_iCCP_SUPPORTED)
png_free_iCCP
(
png_ptr
,
info_ptr
);
#endif
#if defined(PNG_WRITE_sPLT_SUPPORTED)
png_free_spalettes
(
png_ptr
,
info_ptr
,
-
1
);
#endif
#if defined(PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED)
png_free_unknown_chunks
(
png_ptr
,
info_ptr
,
-
1
);
png_free_chunk_list
(
png_ptr
);
#endif
#if defined(PNG_hIST_SUPPORTED)
png_free_hIST
(
png_ptr
,
info_ptr
);
#endif
png_free_PLTE
(
png_ptr
,
info_ptr
);
#if defined(PNG_INFO_IMAGE_SUPPORTED)
png_free_pixels
(
png_ptr
,
info_ptr
);
#endif
png_free_data
(
png_ptr
,
info_ptr
,
PNG_FREE_ALL
,
-
1
);
if
(
png_ptr
->
num_chunk_list
)
{
png_free
(
png_ptr
,
png_ptr
->
chunk_list
);
png_ptr
->
num_chunk_list
=
0
;
}
#ifdef PNG_USER_MEM_SUPPORTED
png_destroy_struct_2
((
png_voidp
)
info_ptr
,
free_fn
);
...
...
This diff is collapsed.
Click to expand it.
pngwtran.c
浏览文件 @
a77ef625
/* pngwtran.c - transforms the data in a row for PNG writers
*
* libpng 1.0.5
q - February 5
, 2000
* libpng 1.0.5
s - February 18
, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
* Copyright (c) 1996, 1997 Andreas Dilger
...
...
This diff is collapsed.
Click to expand it.
pngwutil.c
浏览文件 @
a77ef625
/* pngwutil.c - utilities to write a PNG file
*
* libpng 1.0.5
q - February 5
, 2000
* libpng 1.0.5
s - February 18
, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
* Copyright (c) 1996, 1997 Andreas Dilger
...
...
This diff is collapsed.
Click to expand it.
scripts/makefile.beos
浏览文件 @
a77ef625
...
...
@@ -31,7 +31,7 @@ RANLIB=ranlib
# read libpng.txt or png.h to see why PNGMAJ is 2. You should not
# have to change it.
PNGMAJ
=
2
PNGMIN
=
1.0.5
q
PNGMIN
=
1.0.5
s
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
# where make install puts libpng.a, libpng.so*, and png.h
...
...
This diff is collapsed.
Click to expand it.
scripts/makefile.dec
浏览文件 @
a77ef625
...
...
@@ -14,7 +14,7 @@ ZLIBINC=../zlib
# read libpng.txt or png.h to see why PNGMAJ is 2. You should not
# have to change it.
PNGMAJ
=
2
PNGMIN
=
1.0.5
q
PNGMIN
=
1.0.5
s
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
CC
=
cc
...
...
This diff is collapsed.
Click to expand it.
scripts/makefile.gcmmx
浏览文件 @
a77ef625
...
...
@@ -24,8 +24,8 @@ WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \
# for pgcc version 2.95.1, -O3 is buggy; don't use it.
CFLAGS
=
-DPNG_USE_PNGGCCRD
-I
$(ZLIBINC)
-Wall
-O3
$(ALIGN)
\
-funroll-loops
-fomit-frame-pointer
#
$(WARNMORE)
-g
-DPNG_DEBUG
=
5
CFLAGS
=
-DPNG_USE_PNGGCCRD
-I
$(ZLIBINC)
-Wall
-O3
$(ALIGN)
-funroll-loops
\
-fomit-frame-pointer
#
$(WARNMORE)
-g
-DPNG_DEBUG
=
5
LDFLAGS
=
-L
.
-Wl
,-rpath,.
-L
$(ZLIBLIB)
-Wl
,-rpath,
$(ZLIBLIB)
-lpng
-lz
-lm
RANLIB
=
ranlib
...
...
@@ -34,7 +34,7 @@ RANLIB=ranlib
# read libpng.txt or png.h to see why PNGMAJ is 2. You should not
# have to change it.
PNGMAJ
=
2
PNGMIN
=
1.0.5
q
PNGMIN
=
1.0.5
s
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
INCPATH
=
$(prefix)
/include
...
...
@@ -74,7 +74,8 @@ test: pngtest
./pngtest
install
:
libpng.a libpng.so.$(PNGVER)
-
@mkdir
$(INCPATH)
$(LIBPATH)
-@if
[
!
-d
$(INCPATH)
];
then
mkdir
$(INCPATH);
fi
-@if
[
!
-d
$(LIBPATH)
];
then
mkdir
$(LIBPATH);
fi
cp
png.h
pngconf.h
$(INCPATH)
chmod
644
$(INCPATH)/png.h
$(INCPATH)/pngconf.h
cp
libpng.a
libpng.so.$(PNGVER)
$(LIBPATH)
...
...
This diff is collapsed.
Click to expand it.
scripts/makefile.linux
浏览文件 @
a77ef625
...
...
@@ -34,7 +34,7 @@ RANLIB=ranlib
# read libpng.txt or png.h to see why PNGMAJ is 2. You should not
# have to change it.
PNGMAJ
=
2
PNGMIN
=
1.0.5
q
PNGMIN
=
1.0.5
s
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
INCPATH
=
$(prefix)
/include
...
...
@@ -74,7 +74,8 @@ test: pngtest
./pngtest
install
:
libpng.a libpng.so.$(PNGVER)
-
@mkdir
$(INCPATH)
$(LIBPATH)
-@if
[
!
-d
$(INCPATH)
];
then
mkdir
$(INCPATH);
fi
-@if
[
!
-d
$(LIBPATH)
];
then
mkdir
$(LIBPATH);
fi
cp
png.h
pngconf.h
$(INCPATH)
chmod
644
$(INCPATH)/png.h
$(INCPATH)/pngconf.h
cp
libpng.a
libpng.so.$(PNGVER)
$(LIBPATH)
...
...
This diff is collapsed.
Click to expand it.
scripts/makefile.sco
浏览文件 @
a77ef625
...
...
@@ -25,7 +25,7 @@ RANLIB=echo
# read libpng.txt or png.h to see why PNGMAJ is 2. You should not
# have to change it.
PNGMAJ
=
2
PNGMIN
=
1.0.5
q
PNGMIN
=
1.0.5
s
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
INCPATH
=
$(prefix)
/include
...
...
This diff is collapsed.
Click to expand it.
scripts/makefile.solaris
浏览文件 @
a77ef625
...
...
@@ -31,7 +31,7 @@ RANLIB=echo
# read libpng.txt or png.h to see why PNGMAJ is 2. You should not
# have to change it.
PNGMAJ
=
2
PNGMIN
=
1.0.5
q
PNGMIN
=
1.0.5
s
PNGVER
=
$(PNGMAJ)
.
$(PNGMIN)
INCPATH
=
$(prefix)
/include
...
...
This diff is collapsed.
Click to expand it.
scripts/pngdef.pas
浏览文件 @
a77ef625
...
...
@@ -363,6 +363,9 @@ function png_get_rgb_to_gray_status(png_ptr: png_structp);
function
png_get_rowbytes
(
png_ptr
:
png_structp
;
info_ptr
:
png_infop
):
png_uint_32
;
stdcall
;
function
png_get_rows
(
png_ptr
:
png_structp
;
info_ptr
:
png_infop
):
png_bytepp
;
stdcall
;
function
png_get_sBIT
(
png_ptr
:
png_structp
;
info_ptr
:
png_infop
;
var
sig_bits
:
png_color_8p
):
png_uint_32
;
stdcall
;
...
...
@@ -539,6 +542,9 @@ procedure png_set_read_user_transform_fn(png_ptr: png_structp;
stdcall
;
procedure
png_set_rgb_to_gray
(
png_ptr
:
png_structp
;
int
:
error_action
);
stdcall
;
procedure
png_set_rows
(
png_ptr
:
png_structp
;
info_ptr
:
png_infop
;
row_pointers
:
png_bytepp
);
stdcall
;
procedure
png_set_sBIT
(
png_ptr
:
png_structp
;
info_ptr
:
png_infop
;
sig_bits
:
png_color_8p
);
stdcall
;
...
...
@@ -617,32 +623,18 @@ procedure png_get_iCCP(png_ptr: png_structp; info_ptr: png_infop;
name
:
png_charpp
;
compression_type
:
int
*;
profile
:
png_charpp
;
proflen
:
png_int_32
):
png_bytep
;
stdcall
;
procedure
png_get_s
palettes
(
png_ptr
:
png_structp
;
procedure
png_get_s
PLT
(
png_ptr
:
png_structp
;
info_ptr
:
png_infop
;
entries
:
png_spalette_pp
):
png_uint_32
;
stdcall
;
procedure
png_free_pCAL
(
png_ptr
:
png_structp
;
info_ptr
:
png_infop
);
stdcall
;
procedure
png_free_sCAL
(
png_ptr
:
png_structp
;
info_ptr
:
png_infop
);
stdcall
;
procedure
png_set_iCCP
(
png_ptr
:
png_structp
;
info_ptr
:
png_infop
;
name
:
png_charp
;
compression_type
:
int
;
profile
:
png_charp
;
proflen
:
int
);
stdcall
;
procedure
png_free_hIST
(
png_ptr
:
png_structp
;
info_ptr
:
png_infop
);
stdcall
;
procedure
png_free_iCCP
(
png_ptr
:
png_structp
;
info_ptr
:
png_infop
);
procedure
png_free_data
(
png_ptr
:
png_structp
;
info_ptr
:
png_infop
;
num
:
int
);
stdcall
;
procedure
png_free_PLTE
(
png_ptr
:
png_structp
;
info_ptr
:
png_infop
);
stdcall
;
procedure
png_free_text
(
png_ptr
:
png_structp
;
info_ptr
:
png_infop
);
stdcall
;
procedure
png_free_tRNS
(
png_ptr
:
png_structp
;
info_ptr
:
png_infop
);
stdcall
;
procedure
png_set_spalettes
(
png_ptr
:
png_structp
;
info_ptr
:
png_infop
;
procedure
png_set_sPLT
(
png_ptr
:
png_structp
;
info_ptr
:
png_infop
;
entries
:
png_spalette_p
;
nentries
:
int
);
stdcall
;
procedure
png_free_sPLT
(
png_ptr
:
png_structp
;
info_ptr
:
png_infop
);
stdcall
;
implementation
...
...
@@ -684,6 +676,7 @@ function png_get_pixel_aspect_ratio; external pngDLL;
function
png_get_pixels_per_meter
;
external
pngDLL
;
function
png_get_progressive_ptr
;
external
pngDLL
;
function
png_get_rowbytes
;
external
pngDLL
;
function
png_get_rows
;
external
pngDLL
;
function
png_get_sBIT
;
external
pngDLL
;
function
png_get_sRGB
;
external
pngDLL
;
function
png_get_signature
;
external
pngDLL
;
...
...
@@ -741,6 +734,7 @@ procedure png_set_progressive_read_fn; external pngDLL;
procedure
png_set_read_fn
;
external
pngDLL
;
procedure
png_set_read_status_fn
;
external
pngDLL
;
procedure
png_set_read_user_transform_fn
;
external
pngDLL
;
procedure
png_set_rows
;
external
pngDLL
;
procedure
png_set_sBIT
;
external
pngDLL
;
procedure
png_set_sRGB
;
external
pngDLL
;
procedure
png_set_sRGB_gAMA_and_cHRM
;
external
pngDLL
;
...
...
@@ -771,16 +765,9 @@ procedure png_write_info_before_PLTE; external pngDLL;
procedure
png_write_row
;
external
pngDLL
;
procedure
png_write_rows
;
external
pngDLL
;
procedure
png_get_iCCP
;
external
pngDLL
;
procedure
png_get_spalettes
;
external
pngDLL
;
procedure
png_free_pCAL
;
external
pngDLL
;
procedure
png_get_sPLT
;
external
pngDLL
;
procedure
png_set_iCCP
;
external
pngDLL
;
procedure
png_free_hIST
;
external
pngDLL
;
procedure
png_free_iCCP
;
external
pngDLL
;
procedure
png_free_PLTE
;
external
pngDLL
;
procedure
png_free_sCAL
;
external
pngDLL
;
procedure
png_free_text
;
external
pngDLL
;
procedure
png_free_tRNS
;
external
pngDLL
;
procedure
png_set_spalettes
;
external
pngDLL
;
procedure
png_free_sPLT
;
external
pngDLL
;
procedure
png_set_sPLT
;
external
pngDLL
;
procedure
png_free_data
;
external
pngDLL
;
end
.
This diff is collapsed.
Click to expand it.
scripts/pngos2.def
浏览文件 @
a77ef625
...
...
@@ -31,6 +31,7 @@ EXPORTS
png_set_bgr
png_set_gray_to_rgb
png_set_rgb_to_gray
png_set_rows
png_build_grayscale_palette
png_set_strip_alpha
png_set_swap_alpha
...
...
@@ -120,6 +121,7 @@ EXPORTS
png_get_pixels_per_meter
png_get_pixel_aspect_ratio
png_get_rgb_to_gray_status
png_get_rows
png_get_x_offset_pixels
png_get_y_offset_pixels
png_get_x_offset_microns
...
...
@@ -291,17 +293,10 @@ EXPORTS
; png_pass_height
png_get_iCCP
png_get_sCAL
png_get_s
palettes
png_get_s
PLT
png_set_iCCP
png_set_spalettes
png_free_hIST
png_free_iCCP
png_free_pCAL
png_free_PLTE
png_free_sCAL
png_free_sPLT
png_free_text
png_free_tRNS
png_set_sPLT
png_free_data
png_IHDR
png_IDAT
...
...
This diff is collapsed.
Click to expand it.
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录
反馈
建议
客服
返回
顶部