Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Libpng
提交
69b1448f
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看板
提交
69b1448f
编写于
29年前
作者:
G
Guy Schalnat
提交者:
Glenn Randers-Pehrson
15年前
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Imported from libpng-0.86.tar
上级
6d76471a
变更
21
展开全部
隐藏空白更改
内联
并排
Showing
21 changed file
with
574 addition
and
412 deletion
+574
-412
build.bat
build.bat
+0
-2
example.c
example.c
+43
-19
libpng.txt
libpng.txt
+292
-202
png.c
png.c
+5
-5
png.h
png.h
+44
-27
pngchang.txt
pngchang.txt
+3
-0
pngconf.h
pngconf.h
+3
-3
pngerror.c
pngerror.c
+22
-17
pngio.c
pngio.c
+31
-28
pngmem.c
pngmem.c
+3
-3
pngpread.c
pngpread.c
+12
-7
pngrcb.c
pngrcb.c
+3
-3
pngread.c
pngread.c
+4
-4
pngrtran.c
pngrtran.c
+32
-31
pngrutil.c
pngrutil.c
+58
-36
pngtest.c
pngtest.c
+3
-3
pngtrans.c
pngtrans.c
+3
-3
pngwrite.c
pngwrite.c
+4
-4
pngwtran.c
pngwtran.c
+3
-3
pngwutil.c
pngwutil.c
+3
-3
readme.txt
readme.txt
+3
-9
未找到文件。
build.bat
已删除
100644 → 0
浏览文件 @
6d76471a
make
-fmakefile
.bor
-B -DMODEL
=
m
%
1
%
2
%
3
libpng
>
buildm
.out
make
-fmakefile
.bor
-B -DMODEL
=
l
%
1
%
2
%
3
libpng
>
buildl
.out
This diff is collapsed.
Click to expand it.
example.c
浏览文件 @
69b1448f
...
...
@@ -79,13 +79,21 @@ void read_png(char *file_name)
png_info_init
(
info_ptr
);
png_read_init
(
png_ptr
);
/* set up the input control */
/* set up the input control
if you are using standard C streams
*/
png_init_io
(
png_ptr
,
fp
);
/* read the file information */
png_read_info
(
png_ptr
,
info_ptr
);
/* if you are using replacement read functions, here you would call */
png_set_read_fn
(
png_ptr
,
(
void
*
)
io_ptr
,
user_read_fn
);
/* where io_ptr is a structure you want available to the callbacks */
/* set up the transformations you want. Note that these are
/* if you are using replacement message functions, here you would call */
png_set_message_fn
(
png_ptr
,
(
void
*
)
msg_ptr
,
user_error_fn
,
user_warning_fn
);
/* where msg_ptr is a structure you want available to the callbacks */
/* read the file information */
png_read_info
(
png_ptr
,
info_ptr
);
/* set up the transformations you want. Note that these are
all optional. Only call them if you want them */
/* expand paletted colors into true rgb */
...
...
@@ -102,7 +110,7 @@ void read_png(char *file_name)
png_set_expand
(
png_ptr
);
/* Set the background color to draw transparent and alpha
images over */
images over */
png_color_16
my_background
;
if
(
info_ptr
->
valid
&
PNG_INFO_bKGD
)
...
...
@@ -120,7 +128,7 @@ void read_png(char *file_name)
/* tell libpng to strip 16 bit depth files down to 8 bits */
if
(
info_ptr
->
bit_depth
==
16
)
png_set_strip_16
(
png_ptr
);
png_set_strip_16
(
png_ptr
);
/* dither rgb files down to 8 bit palettes & reduce palettes
to the number of colors available on your screen */
...
...
@@ -138,7 +146,7 @@ void read_png(char *file_name)
png_set_dither
(
png_ptr
,
std_color_cube
,
MAX_SCREEN_COLORS
,
MAX_SCREEN_COLORS
,
NULL
);
}
}
}
/* invert monocrome files */
if
(
info_ptr
->
bit_depth
==
1
&&
...
...
@@ -156,7 +164,7 @@ void read_png(char *file_name)
/* flip the rgb pixels to bgr */
if
(
info_ptr
->
color_type
==
PNG_COLOR_TYPE_RGB
||
info_ptr
->
color_type
==
PNG_COLOR_TYPE_RGB_ALPHA
)
info_ptr
->
color_type
==
PNG_COLOR_TYPE_RGB_ALPHA
)
png_set_bgr
(
png_ptr
);
/* swap bytes of 16 bit files to least significant bit first */
...
...
@@ -174,7 +182,7 @@ void read_png(char *file_name)
else
number_passes
=
1
;
/* optional call to update palette with transformations */
/* optional call to update palette with transformations */
png_start_read_image
(
png_ptr
);
/* optional call to update the info structure */
...
...
@@ -192,7 +200,7 @@ void read_png(char *file_name)
for
(
pass
=
0
;
pass
<
number_passes
;
pass
++
)
{
/* Read the image using the "sparkle" effect. */
png_read_rows
(
png_ptr
,
row_pointers
,
NULL
,
number_of_rows
);
png_read_rows
(
png_ptr
,
row_pointers
,
NULL
,
number_of_rows
);
/* If you are only reading on row at a time, this works */
for
(
y
=
0
;
y
<
height
;
y
++
)
...
...
@@ -210,7 +218,7 @@ void read_png(char *file_name)
/* read the rest of the file, getting any additional chunks
in info_ptr */
png_read_end
(
png_ptr
,
info_ptr
);
png_read_end
(
png_ptr
,
info_ptr
);
/* clean up after the read, and free any memory allocated */
png_read_destroy
(
png_ptr
,
info_ptr
,
(
png_infop
)
0
);
...
...
@@ -262,7 +270,7 @@ initialize_png_reader()
function callbacks, even if you aren't using them all.
You can put a void pointer in place of the NULL, and
retrieve the pointer from inside the callbacks using
the function png_get_
msg
_ptr(png_ptr); */
the function png_get_
progressive
_ptr(png_ptr); */
png_set_progressive_read_fn
(
png_ptr
,
NULL
,
info_callback
,
row_callback
,
end_callback
);
...
...
@@ -372,7 +380,7 @@ void write_png(char *file_name, ... other image information ...)
}
/* set error handling */
if
(
setjmp
(
png_ptr
->
jmpbuf
))
if
(
setjmp
(
png_ptr
->
jmpbuf
))
{
png_write_destroy
(
png_ptr
);
fclose
(
fp
);
...
...
@@ -386,10 +394,18 @@ void write_png(char *file_name, ... other image information ...)
png_info_init
(
info_ptr
);
png_write_init
(
png_ptr
);
/* set up the output control */
/* set up the output control
if you are using standard C streams
*/
png_init_io
(
png_ptr
,
fp
);
/* set the file information here */
/* if you are using replacement write functions, here you would call */
png_set_write_fn
(
png_ptr
,
(
void
*
)
io_ptr
,
user_write_fn
,
user_flush_fn
);
/* where io_ptr is a structure you want available to the callbacks */
/* if you are using replacement message functions, here you would call */
png_set_message_fn
(
png_ptr
,
(
void
*
)
msg_ptr
,
user_error_fn
,
user_warning_fn
);
/* where msg_ptr is a structure you want available to the callbacks */
/* set the file information here */
info_ptr
->
width
=
;
info_ptr
->
height
=
;
etc
.
...
...
@@ -402,10 +418,18 @@ void write_png(char *file_name, ... other image information ...)
/* optional significant bit chunk */
info_ptr
->
valid
|=
PNG_INFO_sBIT
;
info_ptr
->
sig_bit
=
true_bit_depth
;
/* optional gamma chunk */
info_ptr
->
valid
|=
PNG_INFO_gAMA
;
/* if we are dealing with a grayscale image then */
info_ptr
->
sig_bit
.
gray
=
true_bit_depth
;
/* otherwise, if we are dealing with a color image then */
info_ptr
->
sig_bit
.
red
=
true_red_bit_depth
;
info_ptr
->
sig_bit
.
green
=
true_green_bit_depth
;
info_ptr
->
sig_bit
.
blue
=
true_blue_bit_depth
;
/* if the image has an alpha channel then */
info_ptr
->
sig_bit
.
alpha
=
true_alpha_bit_depth
;
/* optional gamma chunk is strongly suggested if you have any guess
as to the correct gamma of the image */
info_ptr
->
valid
|=
PNG_INFO_gAMA
;
info_ptr
->
gamma
=
gamma
;
/* other optional chunks */
...
...
This diff is collapsed.
Click to expand it.
libpng.txt
浏览文件 @
69b1448f
此差异已折叠。
点击以展开。
png.c
浏览文件 @
69b1448f
/* png.c - location for general purpose png functions
libpng 1.0 beta 2 - version 0.8
5
libpng 1.0 beta 2 - version 0.8
6
For conditions of distribution and use, see copyright notice in png.h
Copyright (c) 1995
Guy Eric Schalnat, Group 42, Inc.
December 19, 1995
Copyright (c) 1995, 1996
Guy Eric Schalnat, Group 42, Inc.
January 10, 1996
*/
#define PNG_INTERNAL
...
...
@@ -13,7 +13,7 @@
/* version information for c files. This better match the version
string defined in png.h */
char
FARDATA
png_libpng_ver
[]
=
"0.8
5
"
;
char
FARDATA
png_libpng_ver
[]
=
"0.8
6
"
;
/* place to hold the signiture string for a png file. */
png_byte
FARDATA
png_sig
[
8
]
=
{
137
,
80
,
78
,
71
,
13
,
10
,
26
,
10
};
...
...
@@ -107,7 +107,7 @@ png_check_sig(png_bytep sig, int num)
voidpf
png_zalloc
(
voidpf
png_ptr
,
uInt
items
,
uInt
size
)
{
voidp
*
ptr
;
voidp
ptr
;
ptr
=
((
voidp
)
png_large_malloc
((
png_structp
)
png_ptr
,
(
png_uint_32
)
items
*
(
png_uint_32
)
size
));
...
...
This diff is collapsed.
Click to expand it.
png.h
浏览文件 @
69b1448f
/* png.h - header file for png reference library
libpng 1.0 beta 2 - version 0.85
December 19, 1995
libpng 1.0 beta 2 - version 0.86
Jan 10, 1996
Note: This is a beta version. It reads and writes valid files
on the platforms I have, but it has had limited portability
testing. Furthermore, you will may have to modify the
includes below to get it to work on your system, and you
may have to supply the correct compiler flags in the makefile.
Read the readme.txt for more information, and how to contact
me if you have any problems, or if you want your compiler/
platform to be supported in the next official libpng release.
Note: This is a beta version. It reads and writes valid files
on the platforms I have, but it has had limited portability
testing. Furthermore, you will may have to modify the
includes below to get it to work on your system, and you
may have to supply the correct compiler flags in the makefile.
Read the readme.txt for more information, and how to contact
me if you have any problems, or if you want your compiler/
platform to be supported in the next official libpng release.
See readme.txt for more information
See readme.txt for more information
Copyright (c) 1995 Guy Eric Schalnat, Group 42, Inc.
Copyright (c) 1995
, 1996
Guy Eric Schalnat, Group 42, Inc.
Contributing Authors:
Andreas Dilger
Dave Martindale
Guy Eric Schalnat
Paul Schmidt
Tim Wegner
Guy Eric Schalnat
Paul Schmidt
Tim Wegner
The contributing authors would like to thank all those who helped
with testing, bug fixes, and patience. You know who you are. This
wouldn't have been possible without all of you.
Thanks to Frank J. T. Wojcik for reviewing the documentation
The PNG Reference Library is supplied "AS IS". The Contributing Authors
and Group 42, Inc. disclaim all warranties, expressed or implied,
...
...
@@ -67,10 +74,10 @@
/* version information for png.h - this should match the version
number in png.c */
#define PNG_LIBPNG_VER_STRING "0.8
5
"
/* careful here. I wanted to use 08
5
, but that would be octal. Version
1.0 will be 100 here, etc. */
#define PNG_LIBPNG_VER 8
5
#define PNG_LIBPNG_VER_STRING "0.8
6
"
/* careful here. I wanted to use 08
6
, but that would be octal. Version
1.0 will be 100 here, etc. */
#define PNG_LIBPNG_VER 8
6
/* variables defined in png.c - only it needs to define PNG_NO_EXTERN */
#ifndef PNG_NO_EXTERN
...
...
@@ -265,6 +272,7 @@ typedef png_info FAR * FAR * png_infopp;
/* these determine if a function in the info needs freed */
#define PNG_FREE_PALETTE 0x0001
#define PNG_FREE_HIST 0x0002
#define PNG_FREE_TRANS 0x0004
/* this is used for the transformation routines, as some of them
change these values for the row. It also should enable using
...
...
@@ -290,10 +298,10 @@ typedef png_row_info FAR * FAR * png_row_infopp;
typedef
struct
png_struct_def
png_struct
;
typedef
png_struct
FAR
*
png_structp
;
#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
typedef
void
(
*
png_msg_ptr
)
PNGARG
((
png_structp
,
png_const_charp
));
typedef
void
(
*
png_rw_ptr
)
PNGARG
((
png_structp
,
png_bytep
,
png_uint_32
));
typedef
void
(
*
png_flush_ptr
)
PNGARG
((
png_structp
));
#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
typedef
void
(
*
png_progressive_info_ptr
)
PNGARG
((
png_structp
,
png_infop
));
typedef
void
(
*
png_progressive_end_ptr
)
PNGARG
((
png_structp
,
png_infop
));
typedef
void
(
*
png_progressive_row_ptr
)
PNGARG
((
png_structp
,
png_bytep
,
...
...
@@ -305,7 +313,7 @@ typedef void (*png_progressive_row_ptr) PNGARG((png_structp, png_bytep,
people who will be modifying the library for their own special needs.
*/
typedef
struct
png_struct_def
struct
png_struct_def
{
jmp_buf
jmpbuf
;
/* used in png_error */
png_byte
mode
;
/* used to determine where we are in the png file */
...
...
@@ -507,6 +515,11 @@ extern void png_set_expand PNGARG((png_structp png_ptr));
extern
void
png_set_bgr
PNGARG
((
png_structp
png_ptr
));
#endif
#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
/* Expand the grayscale to 24 bit RGB if necessary. */
extern
void
png_set_gray_to_rgb
PNGARG
((
png_structp
png_ptr
));
#endif
#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
#define PNG_FILLER_BEFORE 0
#define PNG_FILLER_AFTER 1
...
...
@@ -664,9 +677,10 @@ extern void png_set_compression_method PNGARG((png_structp png_ptr,
int
method
));
/* These next functions are stubs of typical c functions for input/output,
memory, and error handling. They are in the file pngstub.c, and are
set up to be easily modified for users that need to. See the file
pngstub.c for more information */
memory, and error handling. They are in the file pngio.c, and pngerror.c.
These functions can be replaced at run time for those applications that
need to handle I/O in a different manner. See the file libpng.txt for
more information */
/* Write the data to whatever output you are using. */
extern
void
png_write_data
PNGARG
((
png_structp
png_ptr
,
png_bytep
data
,
...
...
@@ -676,7 +690,7 @@ extern void png_write_data PNGARG((png_structp png_ptr, png_bytep data,
extern
void
png_read_data
PNGARG
((
png_structp
png_ptr
,
png_bytep
data
,
png_uint_32
length
));
/* Initialize the input/output for the png file. */
/* Initialize the input/output for the png file
to the default functions
. */
extern
void
png_init_io
PNGARG
((
png_structp
png_ptr
,
FILE
*
fp
));
/* Replace the error message and abort, and warning functions with user
...
...
@@ -691,7 +705,7 @@ extern png_voidp png_get_msg_ptr PNGARG((png_structp png_ptr));
/* Replace the default data output functions with a user supplied one(s).
If buffered output is not used, then output_flush_fn can be set to NULL.
i
f PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile time
I
f PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile time
output_flush_fn will be ignored (and thus can be NULL). */
extern
void
png_set_write_fn
PNGARG
((
png_structp
png_ptr
,
png_voidp
io_ptr
,
png_rw_ptr
write_data_fn
,
png_flush_ptr
output_flush_fn
));
...
...
@@ -709,7 +723,7 @@ extern void png_set_push_fn PNGARG((png_structp png_ptr, png_voidp push_ptr,
png_progressive_end_ptr
end_fn
));
/* returns the user pointer assiciated with the push read functions */
extern
void
*
png_get_progressive_ptr
PNGARG
((
png_structp
png_ptr
));
extern
png_voidp
png_get_progressive_ptr
PNGARG
((
png_structp
png_ptr
));
extern
png_voidp
png_large_malloc
PNGARG
((
png_structp
png_ptr
,
png_uint_32
size
));
...
...
@@ -1118,6 +1132,9 @@ extern void png_do_unshift PNGARG((png_row_infop row_info, png_bytep row,
extern
void
png_do_invert
PNGARG
((
png_row_infop
row_info
,
png_bytep
row
));
#endif
extern
void
png_build_grayscale_palette
PNGARG
((
int
bit_depth
,
png_colorp
palette
));
#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
extern
void
png_do_gray_to_rgb
PNGARG
((
png_row_infop
row_info
,
png_bytep
row
));
...
...
This diff is collapsed.
Click to expand it.
pngchang.txt
浏览文件 @
69b1448f
...
...
@@ -62,5 +62,8 @@ version 0.85
added i/o, error, and memory callback functions
fixed some bugs (16 bit, 4 bit interlaced, etc.)
added first run progressive reader (barely tested)
version 0.86
fixed bugs
improved documentation
This diff is collapsed.
Click to expand it.
pngconf.h
浏览文件 @
69b1448f
/* pngconf.c - machine configurable file for libpng
libpng 1.0 beta 2 - version 0.8
5
libpng 1.0 beta 2 - version 0.8
6
For conditions of distribution and use, see copyright notice in png.h
Copyright (c) 1995
Guy Eric Schalnat, Group 42, Inc.
December 19, 1995
Copyright (c) 1995, 1996
Guy Eric Schalnat, Group 42, Inc.
January 10, 1996
*/
/* Any machine specific code is near the front of this file, so if you
...
...
This diff is collapsed.
Click to expand it.
pngerror.c
浏览文件 @
69b1448f
/* pngerror.c - stub functions for i/o and memory allocation
libpng 1.0 beta 2 - version 0.8
5
libpng 1.0 beta 2 - version 0.8
6
For conditions of distribution and use, see copyright notice in png.h
Copyright (c) 1995
Guy Eric Schalnat, Group 42, Inc.
December 19, 1995
Copyright (c) 1995, 1996
Guy Eric Schalnat, Group 42, Inc.
January 10, 1996
This file provides a location for all error handling. Users which
need special error handling are expected to modify the code in this
file to meet their needs. See the instructions at each function. */
This file provides a location for all error handling. Users which
need special error handling are expected to write replacement functions
and use png_set_message_fn() to use those functions. See the instructions
at each function. */
#define PNG_INTERNAL
#include "png.h"
/* This function is called whenever there is an error. Replace with
however you wish to handle the error. Note that this function
MUST NOT return, or the program will crash */
/* This function is called whenever there is a fatal error. This function
should not be changed. If there is a need to handle errors differently,
you should supply a replacement error function and use png_set_message_fn()
to replace the error function at run-time. */
void
png_error
(
png_structp
png_ptr
,
png_const_charp
message
)
{
...
...
@@ -27,6 +29,10 @@ png_error(png_structp png_ptr, png_const_charp message)
png_default_error
(
png_ptr
,
message
);
}
/* This function is called whenever there is a non-fatal error. This function
should not be changed. If there is a need to handle warnings differently,
you should supply a replacement warning function and use
png_set_message_fn() to replace the warning function at run-time. */
void
png_warning
(
png_structp
png_ptr
,
png_const_charp
message
)
{
...
...
@@ -54,11 +60,10 @@ png_default_error(png_structp png_ptr, png_const_charp message)
#endif
}
/* This function is called when there is a warning, but the library
thinks it can continue anyway. You don't have to do anything here
if you don't want to. In the default configuration, png_ptr is
/* This function is called when there is a warning, but the library
thinks
it can continue anyway. Replacement functions don't have to do anything
here
if you don't want to. In the default configuration, png_ptr is
not used, but it is passed in case it may be useful. */
void
png_default_warning
(
png_structp
png_ptr
,
png_const_charp
message
)
{
...
...
@@ -70,10 +75,10 @@ png_default_warning(png_structp png_ptr, png_const_charp message)
#endif
}
/* This function is called when the application wants to use another
method of handling errors and warnings. Note that the error function must
NOT return to the calling routine or serious problems will occur. The
error
return method used in the default routine calls
/* This function is called when the application wants to use another
method
of handling errors and warnings. Note that the error function MUST NOT
return to the calling routine or serious problems will occur. The error
return method used in the default routine calls
longjmp(png_ptr->jmpbuf, 1) */
void
png_set_message_fn
(
png_structp
png_ptr
,
png_voidp
msg_ptr
,
png_msg_ptr
error_fn
,
...
...
This diff is collapsed.
Click to expand it.
pngio.c
浏览文件 @
69b1448f
/* png
stub
.c - stub functions for i/o and memory allocation
/* png
io
.c - stub functions for i/o and memory allocation
libpng 1.0 beta 2 - version 0.8
5
libpng 1.0 beta 2 - version 0.8
6
For conditions of distribution and use, see copyright notice in png.h
Copyright (c) 1995
Guy Eric Schalnat, Group 42, Inc.
December 19, 1995
Copyright (c) 1995, 1996
Guy Eric Schalnat, Group 42, Inc.
January 10, 1996
This file provides a location for all input/output. Users which need
special handling are expected to write functions which have the same
...
...
@@ -16,13 +16,12 @@
#define PNG_INTERNAL
#include "png.h"
/* Write the data to whatever output you are using. The default
routine writes to a file pointer. If you need to write to something
else, this is a good example of how to do it. Note that this routine
sometimes gets called with very small lengths, so you should implement
some kind of simple buffering if you are using unbuffered writes. This
should never be asked to write more then 64K on a 16 bit machine. The
cast to png_size_t is there for insurance. */
/* Write the data to whatever output you are using. The default routine
writes to a file pointer. Note that this routine sometimes gets called
with very small lengths, so you should implement some kind of simple
buffering if you are using unbuffered writes. This should never be asked
to write more then 64K on a 16 bit machine. The cast to png_size_t is
there to quiet warnings of certain compilers. */
void
png_write_data
(
png_structp
png_ptr
,
png_bytep
data
,
png_uint_32
length
)
...
...
@@ -33,6 +32,10 @@ png_write_data(png_structp png_ptr, png_bytep data, png_uint_32 length)
png_error
(
png_ptr
,
"Call to NULL write function"
);
}
/* This is the function which does the actual writing of data. If you are
not writing to a standard C stream, you should create a replacement
write_data function and use it at run time with png_set_write_fn(), rather
than changing the library. */
#ifndef USE_FAR_KEYWORD
void
png_default_write_data
(
png_structp
png_ptr
,
png_bytep
data
,
png_uint_32
length
)
...
...
@@ -106,17 +109,12 @@ png_default_write_data(png_structp png_ptr, png_bytep data, png_uint_32 length)
#endif
/* Read the data from whatever input you are using. The default
routine reads from a file pointer. If you need to read from something
else, this is the place to do it. We suggest saving the old code
for future use. Note that this routine sometimes gets called with
very small lengths, so you should implement some kind of simple
buffering if you are using unbuffered reads. This should
never be asked to read more then 64K on a 16 bit machine. The cast
to png_size_t is there for insurance, but if you are having problems
with it, you can take it out. Just be sure to cast length to whatever
fread needs in that spot if you don't have a function prototype for
it. */
/* Read the data from whatever input you are using. The default routine
reads from a file pointer. Note that this routine sometimes gets called
with very small lengths, so you should implement some kind of simple
buffering if you are using unbuffered reads. This should never be asked
to read more then 64K on a 16 bit machine. The cast to png_size_t is
there to quiet some compilers */
void
png_read_data
(
png_structp
png_ptr
,
png_bytep
data
,
png_uint_32
length
)
{
...
...
@@ -135,6 +133,10 @@ png_read_data(png_structp png_ptr, png_bytep data, png_uint_32 length)
}
}
/* This is the function which does the actual reading of data. If you are
not reading from a standard C stream, you should create a replacement
read_data function and use it at run time with png_set_read_fn(), rather
than changing the library. */
#ifndef USE_FAR_KEYWORD
void
png_default_read_data
(
png_structp
png_ptr
,
png_bytep
data
,
png_uint_32
length
)
...
...
@@ -221,7 +223,7 @@ png_default_flush(png_struct *png_ptr)
arguments a pointer to a png_struct, a pointer to
data to be written, and a 32-bit unsigned int which is
the number of bytes to be written. The new write
function should call
(*(png_ptr->error_fn))
("Error msg")
function should call
png_error
("Error msg")
to exit and output any fatal error messages.
flush_data_fn - pointer to a new flush function which takes as its
arguments a pointer to a png_struct. After a call to
...
...
@@ -264,7 +266,9 @@ png_set_write_fn(png_structp png_ptr, png_voidp io_ptr, png_rw_ptr write_data_fn
read_data_fn - pointer to a new input function which takes as it's
arguments a pointer to a png_struct, a pointer to
a location where input data can be stored, and a 32-bit
unsigned int which is the number of bytes to be read. */
unsigned int which is the number of bytes to be read.
To exit and output any fatal error messages the new write
function should call png_error(png_ptr, "Error msg"). */
void
png_set_read_fn
(
png_struct
*
png_ptr
,
void
*
io_ptr
,
png_rw_ptr
read_data_fn
)
{
...
...
@@ -293,10 +297,9 @@ png_get_io_ptr(png_struct *png_ptr)
return
png_ptr
->
io_ptr
;
}
/* Initialize the input/output for the png file. If you change
the read and write routines, you will probably need to change
this routine (or write your own). If you change the parameters
of this routine, remember to change png.h also. */
/* Initialize the default input/output functions for the png file. If you
change the read, or write routines, you can call either png_set_read_fn()
or png_set_write_fn() instead of png_init_io(). */
void
png_init_io
(
png_structp
png_ptr
,
FILE
*
fp
)
{
...
...
This diff is collapsed.
Click to expand it.
pngmem.c
浏览文件 @
69b1448f
/* pngmem.c - stub functions for memory allocation
libpng 1.0 beta 2 - version 0.8
5
libpng 1.0 beta 2 - version 0.8
6
For conditions of distribution and use, see copyright notice in png.h
Copyright (c) 1995
Guy Eric Schalnat, Group 42, Inc.
December 19, 1995
Copyright (c) 1995, 1996
Guy Eric Schalnat, Group 42, Inc.
January 10, 1996
This file provides a location for all memory allocation. Users which
need special memory handling are expected to modify the code in this file
...
...
This diff is collapsed.
Click to expand it.
pngpread.c
浏览文件 @
69b1448f
/* pngpread.c - read a png file in push mode
libpng 1.0 beta 2 - version 0.8
5
libpng 1.0 beta 2 - version 0.8
6
For conditions of distribution and use, see copyright notice in png.h
Copyright (c) 1995
Guy Eric Schalnat, Group 42, Inc.
December 19, 1995
Copyright (c) 1995, 1996
Guy Eric Schalnat, Group 42, Inc.
January 10, 1996
*/
#define PNG_INTERNAL
...
...
@@ -850,8 +850,10 @@ png_push_read_text(png_structp png_ptr, png_infop info)
text_size
=
png_ptr
->
buffer_size
;
else
text_size
=
png_ptr
->
current_text_left
;
png_push_fill_buffer
(
png_ptr
,
png_ptr
->
current_text_ptr
,
text_size
);
png_calculate_crc
(
png_ptr
,
png_ptr
->
current_text_ptr
,
text_size
);
png_push_fill_buffer
(
png_ptr
,
(
png_bytep
)
png_ptr
->
current_text_ptr
,
text_size
);
png_calculate_crc
(
png_ptr
,
(
png_bytep
)
png_ptr
->
current_text_ptr
,
text_size
);
png_ptr
->
current_text_left
-=
text_size
;
png_ptr
->
current_text_ptr
+=
text_size
;
}
...
...
@@ -902,8 +904,10 @@ png_push_read_ztxt(png_structp png_ptr, png_infop info)
text_size
=
png_ptr
->
buffer_size
;
else
text_size
=
png_ptr
->
current_text_left
;
png_push_fill_buffer
(
png_ptr
,
png_ptr
->
current_text_ptr
,
text_size
);
png_calculate_crc
(
png_ptr
,
png_ptr
->
current_text_ptr
,
text_size
);
png_push_fill_buffer
(
png_ptr
,
(
png_bytep
)
png_ptr
->
current_text_ptr
,
text_size
);
png_calculate_crc
(
png_ptr
,
(
png_bytep
)
png_ptr
->
current_text_ptr
,
text_size
);
png_ptr
->
current_text_left
-=
text_size
;
png_ptr
->
current_text_ptr
+=
text_size
;
}
...
...
@@ -950,6 +954,7 @@ png_push_read_ztxt(png_structp png_ptr, png_infop info)
key_size
=
text
-
key
;
text_size
=
0
;
text
=
NULL
;
ret
=
Z_STREAM_END
;
while
(
png_ptr
->
zstream
->
avail_in
)
{
...
...
This diff is collapsed.
Click to expand it.
pngrcb.c
浏览文件 @
69b1448f
/* pngrcb.c - callbacks while reading a png file
libpng 1.0 beta 2 - version 0.8
5
libpng 1.0 beta 2 - version 0.8
6
For conditions of distribution and use, see copyright notice in png.h
Copyright (c) 1995
Guy Eric Schalnat, Group 42, Inc.
December 19, 1995
Copyright (c) 1995, 1996
Guy Eric Schalnat, Group 42, Inc.
January 10, 1996
*/
#define PNG_INTERNAL
...
...
This diff is collapsed.
Click to expand it.
pngread.c
浏览文件 @
69b1448f
/* pngread.c - read a png file
libpng 1.0 beta 2 - version 0.8
5
libpng 1.0 beta 2 - version 0.8
6
For conditions of distribution and use, see copyright notice in png.h
Copyright (c) 1995
Guy Eric Schalnat, Group 42, Inc.
December 19, 1995
Copyright (c) 1995, 1996
Guy Eric Schalnat, Group 42, Inc.
January 10, 1996
*/
#define PNG_INTERNAL
...
...
@@ -633,7 +633,7 @@ png_read_destroy(png_structp png_ptr, png_infop info, png_infop end_info)
if
(
png_ptr
->
do_free
&
PNG_FREE_PALETTE
)
png_free
(
png_ptr
,
info
->
palette
);
#if defined(PNG_READ_BACKGROUND_SUPPORTED) && defined(PNG_READ_bKGD_SUPPORTED)
if
(
png_ptr
->
do_free
&
PNG_FREE_
PALETTE
)
if
(
png_ptr
->
do_free
&
PNG_FREE_
TRANS
)
png_free
(
png_ptr
,
info
->
trans
);
#endif
#if defined(PNG_READ_hIST_SUPPORTED)
...
...
This diff is collapsed.
Click to expand it.
pngrtran.c
浏览文件 @
69b1448f
/* pngrtran.c - transforms the data in a row for png readers
libpng 1.0 beta 2 - version 0.8
5
libpng 1.0 beta 2 - version 0.8
6
For conditions of distribution and use, see copyright notice in png.h
Copyright (c) 1995
Guy Eric Schalnat, Group 42, Inc.
December 19, 1995
Copyright (c) 1995, 1996
Guy Eric Schalnat, Group 42, Inc.
January 10, 1996
*/
#define PNG_INTERNAL
...
...
@@ -1168,7 +1168,8 @@ png_build_grayscale_palette(int bit_depth, png_colorp palette)
color_inc
=
1
;
break
;
default:
num_palette
=
0
;
num_palette
=
0
;
color_inc
=
0
;
break
;
}
...
...
@@ -1493,11 +1494,11 @@ png_do_background(png_row_infop row_info, png_bytep row,
else
{
v
=
gamma_16
[
*
(
sp
+
1
)
>>
gamma_shift
][
*
sp
];
*
(
sp
+
1
)
>>
gamma_shift
][
*
sp
];
*
sp
=
(
v
>>
8
)
&
0xff
;
*
(
sp
+
1
)
=
v
&
0xff
;
}
}
}
}
else
#endif
...
...
@@ -2025,7 +2026,7 @@ png_do_background(png_row_infop row_info, png_bytep row,
you do this after you deal with the trasparency issue on grayscale
or rgb images. If your bit depth is 8, use gamma_table, if it is 16,
use gamma_16_table and gamma_shift. Build these with
build_gamma_table(). If your bit depth < 8, gamma correct a
build_gamma_table(). If your bit depth <
=
8, gamma correct a
palette, not the data. */
void
png_do_gamma
(
png_row_infop
row_info
,
png_bytep
row
,
...
...
@@ -2659,7 +2660,7 @@ png_build_gamma_table(png_structp png_ptr)
if
((
int
)
png_ptr
->
sig_bit
.
green
>
sig_bit
)
sig_bit
=
png_ptr
->
sig_bit
.
green
;
if
((
int
)
png_ptr
->
sig_bit
.
blue
>
sig_bit
)
sig_bit
=
png_ptr
->
sig_bit
.
blue
;
sig_bit
=
png_ptr
->
sig_bit
.
blue
;
}
else
{
...
...
@@ -2691,17 +2692,17 @@ png_build_gamma_table(png_structp png_ptr)
png_ptr
->
gamma_16_table
=
(
png_uint_16pp
)
png_malloc
(
png_ptr
,
num
*
sizeof
(
png_uint_16p
));
if
((
png_ptr
->
transformations
&
PNG_16_TO_8
)
&&
!
(
png_ptr
->
transformations
&
PNG_BACKGROUND
))
{
if
((
png_ptr
->
transformations
&
PNG_16_TO_8
)
&&
!
(
png_ptr
->
transformations
&
PNG_BACKGROUND
))
{
double
fin
,
fout
;
png_uint_32
last
,
max
;
for
(
i
=
0
;
i
<
num
;
i
++
)
{
png_ptr
->
gamma_16_table
[
i
]
=
(
png_uint_16p
)
png_malloc
(
png_ptr
,
for
(
i
=
0
;
i
<
num
;
i
++
)
{
png_ptr
->
gamma_16_table
[
i
]
=
(
png_uint_16p
)
png_malloc
(
png_ptr
,
256
*
sizeof
(
png_uint_16
));
}
}
g
=
1
.
0
/
g
;
last
=
0
;
...
...
@@ -2709,33 +2710,33 @@ png_build_gamma_table(png_structp png_ptr)
{
fout
=
((
double
)
i
+
0
.
5
)
/
256
.
0
;
fin
=
pow
(
fout
,
g
);
max
=
(
png_uint_32
)(
fin
*
(
double
)(
num
<<
8
));
max
=
(
png_uint_32
)(
fin
*
(
double
)(
(
png_uint_32
)
num
<<
8
));
while
(
last
<=
max
)
{
png_ptr
->
gamma_16_table
[(
int
)(
last
&
0xff
)
>>
shift
]
png_ptr
->
gamma_16_table
[(
int
)(
last
&
(
0xff
>>
shift
))
]
[(
int
)(
last
>>
(
8
-
shift
))]
=
(
png_uint_16
)
i
|
((
png_uint_16
)
i
<<
8
);
last
++
;
}
}
last
++
;
}
}
while
(
last
<
((
png_uint_32
)
num
<<
8
))
{
png_ptr
->
gamma_16_table
[(
int
)(
last
&
0xff
)
>>
shift
]
[(
int
)(
last
>>
(
8
-
shift
))]
=
png_ptr
->
gamma_16_table
[(
int
)(
last
&
(
0xff
>>
shift
))
]
[(
int
)(
last
>>
(
8
-
shift
))]
=
(
png_uint_16
)
65535L
;
last
++
;
}
}
else
{
for
(
i
=
0
;
i
<
num
;
i
++
)
{
png_ptr
->
gamma_16_table
[
i
]
=
(
png_uint_16p
)
png_malloc
(
png_ptr
,
256
*
sizeof
(
png_uint_16
));
else
{
for
(
i
=
0
;
i
<
num
;
i
++
)
{
png_ptr
->
gamma_16_table
[
i
]
=
(
png_uint_16p
)
png_malloc
(
png_ptr
,
256
*
sizeof
(
png_uint_16
));
ig
=
(((
png_uint_32
)
i
*
(
png_uint_32
)
png_gamma_shift
[
shift
])
>>
4
);
for
(
j
=
0
;
j
<
256
;
j
++
)
ig
=
(((
png_uint_32
)
i
*
(
png_uint_32
)
png_gamma_shift
[
shift
])
>>
4
);
for
(
j
=
0
;
j
<
256
;
j
++
)
{
png_ptr
->
gamma_16_table
[
i
][
j
]
=
(
png_uint_16
)(
pow
((
double
)(
ig
+
((
png_uint_32
)
j
<<
8
))
/
...
...
This diff is collapsed.
Click to expand it.
pngrutil.c
浏览文件 @
69b1448f
/* pngrutil.c - utilities to read a png file
libpng 1.0 beta 2 - version 0.8
5
libpng 1.0 beta 2 - version 0.8
6
For conditions of distribution and use, see copyright notice in png.h
Copyright (c) 1995
Guy Eric Schalnat, Group 42, Inc.
December 19, 1995
Copyright (c) 1995, 1996
Guy Eric Schalnat, Group 42, Inc.
January 10, 1996
*/
#define PNG_INTERNAL
...
...
@@ -164,7 +164,8 @@ png_handle_PLTE(png_structp png_ptr, png_infop info, png_uint_32 length)
num
=
(
int
)
length
/
3
;
palette
=
(
png_colorp
)
png_malloc
(
png_ptr
,
num
*
sizeof
(
png_color
));
for
(
i
=
0
;
i
<
num
;
i
++
)
png_ptr
->
do_free
|=
PNG_FREE_PALETTE
;
for
(
i
=
0
;
i
<
num
;
i
++
)
{
png_byte
buf
[
3
];
...
...
@@ -189,7 +190,8 @@ png_handle_gAMA(png_structp png_ptr, png_infop info, png_uint_32 length)
if
(
length
!=
4
)
{
png_crc_skip
(
png_ptr
,
length
);
png_warning
(
png_ptr
,
"Incorrect gAMA chunk length"
);
png_crc_skip
(
png_ptr
,
length
);
return
;
}
...
...
@@ -210,7 +212,9 @@ void
png_handle_sBIT
(
png_structp
png_ptr
,
png_infop
info
,
png_uint_32
length
)
{
int
slen
;
png_byte
buf
[
4
];
png_byte
buf
[
4
];
buf
[
0
]
=
buf
[
1
]
=
buf
[
2
]
=
buf
[
3
]
=
0
;
if
(
png_ptr
->
color_type
==
PNG_COLOR_TYPE_PALETTE
)
slen
=
3
;
...
...
@@ -219,8 +223,9 @@ png_handle_sBIT(png_structp png_ptr, png_infop info, png_uint_32 length)
if
(
length
!=
(
png_uint_32
)
slen
)
{
png_crc_skip
(
png_ptr
,
length
);
return
;
png_warning
(
png_ptr
,
"Incorrect sBIT chunk length"
);
png_crc_skip
(
png_ptr
,
length
);
return
;
}
png_crc_read
(
png_ptr
,
buf
,
length
);
...
...
@@ -250,7 +255,8 @@ png_handle_cHRM(png_structp png_ptr, png_infop info, png_uint_32 length)
if
(
length
!=
32
)
{
png_crc_skip
(
png_ptr
,
length
);
png_warning
(
png_ptr
,
"Incorrect cHRM chunk length"
);
png_crc_skip
(
png_ptr
,
length
);
return
;
}
...
...
@@ -299,12 +305,14 @@ png_handle_tRNS(png_structp png_ptr, png_infop info, png_uint_32 length)
{
if
(
length
>
png_ptr
->
num_palette
)
{
png_crc_skip
(
png_ptr
,
length
);
png_warning
(
png_ptr
,
"Incorrect tRNS chunk length"
);
png_crc_skip
(
png_ptr
,
length
);
return
;
}
png_ptr
->
trans
=
(
png_bytep
)
png_malloc
(
png_ptr
,
length
);
png_crc_read
(
png_ptr
,
png_ptr
->
trans
,
length
);
png_ptr
->
do_free
|=
PNG_FREE_TRANS
;
png_crc_read
(
png_ptr
,
png_ptr
->
trans
,
length
);
png_ptr
->
num_trans
=
(
int
)
length
;
}
else
if
(
png_ptr
->
color_type
==
PNG_COLOR_TYPE_RGB
)
...
...
@@ -313,7 +321,8 @@ png_handle_tRNS(png_structp png_ptr, png_infop info, png_uint_32 length)
if
(
length
!=
6
)
{
png_crc_skip
(
png_ptr
,
length
);
png_warning
(
png_ptr
,
"Incorrect tRNS chunk length"
);
png_crc_skip
(
png_ptr
,
length
);
return
;
}
...
...
@@ -329,16 +338,17 @@ png_handle_tRNS(png_structp png_ptr, png_infop info, png_uint_32 length)
if
(
length
!=
2
)
{
png_crc_skip
(
png_ptr
,
length
);
return
;
}
png_crc_read
(
png_ptr
,
buf
,
2
);
png_ptr
->
num_trans
=
1
;
png_ptr
->
trans_values
.
gray
=
png_get_uint_16
(
buf
);
}
else
png_error
(
png_ptr
,
"Invalid tRNS chunk"
);
png_warning
(
png_ptr
,
"Incorrect tRNS chunk length"
);
png_crc_skip
(
png_ptr
,
length
);
return
;
}
png_crc_read
(
png_ptr
,
buf
,
2
);
png_ptr
->
num_trans
=
1
;
png_ptr
->
trans_values
.
gray
=
png_get_uint_16
(
buf
);
}
else
png_warning
(
png_ptr
,
"Invalid tRNS chunk"
);
png_read_tRNS
(
png_ptr
,
info
,
png_ptr
->
trans
,
png_ptr
->
num_trans
,
&
(
png_ptr
->
trans_values
));
...
...
@@ -361,7 +371,8 @@ png_handle_bKGD(png_structp png_ptr, png_infop info, png_uint_32 length)
if
(
length
!=
(
png_uint_32
)
truelen
)
{
png_crc_skip
(
png_ptr
,
length
);
png_warning
(
png_ptr
,
"Incorrect bKGD chunk length"
);
png_crc_skip
(
png_ptr
,
length
);
return
;
}
...
...
@@ -385,18 +396,20 @@ png_handle_bKGD(png_structp png_ptr, png_infop info, png_uint_32 length)
void
png_handle_hIST
(
png_structp
png_ptr
,
png_infop
info
,
png_uint_32
length
)
{
int
num
,
i
;
int
num
,
i
;
if
(
length
!=
2
*
png_ptr
->
num_palette
)
{
png_crc_skip
(
png_ptr
,
length
);
return
;
}
if
(
length
!=
2
*
png_ptr
->
num_palette
)
{
png_warning
(
png_ptr
,
"Incorrect hIST chunk length"
);
png_crc_skip
(
png_ptr
,
length
);
return
;
}
num
=
(
int
)
length
/
2
;
png_ptr
->
hist
=
(
png_uint_16p
)
png_malloc
(
png_ptr
,
num
*
sizeof
(
png_uint_16
));
for
(
i
=
0
;
i
<
num
;
i
++
)
png_ptr
->
do_free
|=
PNG_FREE_HIST
;
for
(
i
=
0
;
i
<
num
;
i
++
)
{
png_byte
buf
[
2
];
...
...
@@ -417,7 +430,8 @@ png_handle_pHYs(png_structp png_ptr, png_infop info, png_uint_32 length)
if
(
length
!=
9
)
{
png_crc_skip
(
png_ptr
,
length
);
png_warning
(
png_ptr
,
"Incorrect pHYs chunk length"
);
png_crc_skip
(
png_ptr
,
length
);
return
;
}
...
...
@@ -440,11 +454,12 @@ png_handle_oFFs(png_structp png_ptr, png_infop info, png_uint_32 length)
if
(
length
!=
9
)
{
png_crc_skip
(
png_ptr
,
length
);
png_warning
(
png_ptr
,
"Incorrect oFFs chunk length"
);
png_crc_skip
(
png_ptr
,
length
);
return
;
}
png_crc_read
(
png_ptr
,
buf
,
9
);
png_crc_read
(
png_ptr
,
buf
,
9
);
offset_x
=
png_get_uint_32
(
buf
);
offset_y
=
png_get_uint_32
(
buf
+
4
);
...
...
@@ -462,7 +477,8 @@ png_handle_tIME(png_structp png_ptr, png_infop info, png_uint_32 length)
if
(
length
!=
7
)
{
png_crc_skip
(
png_ptr
,
length
);
png_warning
(
png_ptr
,
"Incorrect tIME chunk length"
);
png_crc_skip
(
png_ptr
,
length
);
return
;
}
...
...
@@ -525,7 +541,8 @@ png_handle_zTXt(png_structp png_ptr, png_infop info, png_uint_32 length)
/* zTXt can't have zero text */
if
(
text
==
key
+
(
png_size_t
)
length
)
{
png_large_free
(
png_ptr
,
key
);
png_warning
(
png_ptr
,
"Zero length zTXt chunk"
);
png_large_free
(
png_ptr
,
key
);
return
;
}
...
...
@@ -546,13 +563,18 @@ png_handle_zTXt(png_structp png_ptr, png_infop info, png_uint_32 length)
key_size
=
text
-
key
;
text_size
=
0
;
text
=
NULL
;
text
=
NULL
;
ret
=
Z_STREAM_END
;
while
(
png_ptr
->
zstream
->
avail_in
)
{
ret
=
inflate
(
png_ptr
->
zstream
,
Z_PARTIAL_FLUSH
);
if
(
ret
!=
Z_OK
&&
ret
!=
Z_STREAM_END
)
{
if
(
png_ptr
->
zstream
->
msg
)
png_warning
(
png_ptr
,
png_ptr
->
zstream
->
msg
);
else
png_warning
(
png_ptr
,
"zTXt decompression error"
);
inflateReset
(
png_ptr
->
zstream
);
png_ptr
->
zstream
->
avail_in
=
0
;
png_large_free
(
png_ptr
,
key
);
...
...
This diff is collapsed.
Click to expand it.
pngtest.c
浏览文件 @
69b1448f
/* pngtest.c - a simple test program to test libpng
libpng 1.0 beta 2 - version 0.8
1
libpng 1.0 beta 2 - version 0.8
6
For conditions of distribution and use, see copyright notice in png.h
Copyright (c) 1995 Guy Eric Schalnat, Group 42, Inc.
August 24, 1995
Copyright (c) 1995
, 1996
Guy Eric Schalnat, Group 42, Inc.
January 10, 1996
*/
#include <stdio.h>
...
...
This diff is collapsed.
Click to expand it.
pngtrans.c
浏览文件 @
69b1448f
...
...
@@ -2,10 +2,10 @@
/* pngtrans.c - transforms the data in a row
routines used by both readers and writers
libpng 1.0 beta 2 - version 0.8
5
libpng 1.0 beta 2 - version 0.8
6
For conditions of distribution and use, see copyright notice in png.h
Copyright (c) 1995
Guy Eric Schalnat, Group 42, Inc.
December 19, 1995
Copyright (c) 1995, 1996
Guy Eric Schalnat, Group 42, Inc.
January 10, 1996
*/
#define PNG_INTERNAL
...
...
This diff is collapsed.
Click to expand it.
pngwrite.c
浏览文件 @
69b1448f
/* pngwrite.c - general routines to write a png file
libpng 1.0 beta 2 - version 0.8
5
libpng 1.0 beta 2 - version 0.8
6
For conditions of distribution and use, see copyright notice in png.h
Copyright (c) 1995
Guy Eric Schalnat, Group 42, Inc.
December 19, 1995
Copyright (c) 1995, 1996
Guy Eric Schalnat, Group 42, Inc.
January 10, 1996
*/
/* get internal access to png.h */
...
...
@@ -114,7 +114,7 @@ png_write_info(png_structp png_ptr, png_infop info)
void
png_write_end
(
png_structp
png_ptr
,
png_infop
info
)
{
/* see if user wants us to write information chunks */
/* see if user wants us to write information chunks */
if
(
info
)
{
#if defined(PNG_WRITE_tIME_SUPPORTED)
...
...
This diff is collapsed.
Click to expand it.
pngwtran.c
浏览文件 @
69b1448f
/* pngwtran.c - transforms the data in a row for png writers
libpng 1.0 beta 2 - version 0.8
5
libpng 1.0 beta 2 - version 0.8
6
For conditions of distribution and use, see copyright notice in png.h
Copyright (c) 1995
Guy Eric Schalnat, Group 42, Inc.
December 19, 1995
Copyright (c) 1995, 1996
Guy Eric Schalnat, Group 42, Inc.
January 10, 1996
*/
#define PNG_INTERNAL
...
...
This diff is collapsed.
Click to expand it.
pngwutil.c
浏览文件 @
69b1448f
/* pngwutil.c - utilities to write a png file
libpng 1.0 beta 2 - version 0.8
5
libpng 1.0 beta 2 - version 0.8
6
For conditions of distribution and use, see copyright notice in png.h
Copyright (c) 1995
Guy Eric Schalnat, Group 42, Inc.
December 19, 1995
Copyright (c) 1995, 1996
Guy Eric Schalnat, Group 42, Inc.
January 10, 1996
*/
#define PNG_INTERNAL
#include "png.h"
...
...
This diff is collapsed.
Click to expand it.
readme.txt
浏览文件 @
69b1448f
readme.txt - for libpng 0.8
5
readme.txt - for libpng 0.8
6
This is a bug fix for the second beta version of libpng 1.0, and
a first try at a progressive (push) reader. It hasn't been
tested very much, but I'm not going to have time to test it for
a few days, and I wanted to give an advanced look at the
progressive reader to everyone. Please report bugs back
(and fixes, if you find them), and I'll release a new version
in a week or two. Thanks.
tested as much as the pull reader, but seems to work ok.
I've implemented the callback functions for the error/warning
messages and the input/output. See the libpng.txt
...
...
@@ -44,8 +40,7 @@ be available at the same place you picked up libpng. If it is
not there, try ftp.uu.net in the /graphics/png directory.
This code is currently being archived at ftp.uu.net in the
/graphics/png directory, and at ftp.group42.com (204.94.158.25)
in the /pub/png directory, and on CompuServe, Lib 20 (PNG SUPPORT)
/graphics/png directory, and on CompuServe, Lib 20 (PNG SUPPORT)
at GO GRAPHSUP. If you can't find it in any of those places,
e-mail me, and I'll help you find it.
...
...
@@ -87,5 +82,4 @@ Good luck, and happy coding.
Internet: schalnat@group42.com
CompuServe: 75501,1625
Web: www.group42.com
FTP: ftp.group42.com (204.94.158.25)
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录
新手
引导
客服
返回
顶部