[devel] Update documentation

This commit is contained in:
Glenn Randers-Pehrson 2010-07-29 19:09:18 -05:00
parent a7a76a674f
commit 2be8b64af2
11 changed files with 433 additions and 84 deletions

View File

@ -105,6 +105,11 @@ scripts/pnglibconf.h:
@echo "a new one simply make 'scripts/pnglibconf.out' and copy that" >&2
@exit 1
# The following is necessary to ensure that the local pnglibconf.h is used, not
# an installed one (this can happen immediately after on a clean system if
# 'make test' is the first thing the user does.)
pngvalid.o pngtest.o: pnglibconf.h
SYMBOL_CFLAGS = -DPNGLIB_LIBNAME='PNG@PNGLIB_MAJOR@@PNGLIB_MINOR@_0'\
-DPNGLIB_VERSION='@PNGLIB_VERSION@'\
-DSYMBOL_PREFIX='$(SYMBOL_PREFIX)'

View File

@ -1289,6 +1289,11 @@ scripts/pnglibconf.h:
@echo "a new one simply make 'scripts/pnglibconf.out' and copy that" >&2
@exit 1
# The following is necessary to ensure that the local pnglibconf.h is used, not
# an installed one (this can happen immediately after on a clean system if
# 'make test' is the first thing the user does.)
pngvalid.o pngtest.o: pnglibconf.h
.dfn.out:
rm -f $@ dfn.c dfn?.out
test -d scripts || mkdir scripts

View File

@ -1,6 +1,6 @@
libpng.txt - A description on how to use and modify libpng
libpng version 1.5.0beta36 - July 29, 2010
libpng version 1.5.0beta36 - July 30, 2010
Updated and distributed by Glenn Randers-Pehrson
<glennrp at users.sourceforge.net>
Copyright (c) 1998-2010 Glenn Randers-Pehrson
@ -11,7 +11,7 @@ libpng.txt - A description on how to use and modify libpng
Based on:
libpng versions 0.97, January 1998, through 1.5.0beta36 - July 29, 2010
libpng versions 0.97, January 1998, through 1.5.0beta36 - July 30, 2010
Updated and distributed by Glenn Randers-Pehrson
Copyright (c) 1998-2010 Glenn Randers-Pehrson
@ -99,34 +99,68 @@ same instance of a structure.
II. Structures
There are two main structures that are important to libpng, png_struct
and png_info. The first, png_struct, is an internal structure that
will not, for the most part, be used by a user except as the first
variable passed to every libpng function call.
and png_info. Both are internal structures that are no longer exposed
in the libpng interface (as of libpng 1.5.0).
The png_info structure is designed to provide information about the
PNG file. At one time, the fields of png_info were intended to be
directly accessible to the user. However, this tended to cause problems
with applications using dynamically loaded libraries, and as a result
a set of interface functions for png_info (the png_get_*() and png_set_*()
functions) was developed. The fields of png_info are still available for
older applications, but it is suggested that applications use the new
interfaces if at all possible.
functions) was developed.
Applications that do make direct access to the members of png_struct (except
for png_ptr->jmpbuf) must be recompiled whenever the library is updated,
and applications that make direct access to the members of png_info must
be recompiled if they were compiled or loaded with libpng version 1.0.6,
in which the members were in a different order. In version 1.0.7, the
members of the png_info structure reverted to the old order, as they were
in versions 0.97c through 1.0.5. Starting with version 2.0.0, both
structures are going to be hidden, and the contents of the structures will
only be accessible through the png_get/png_set functions.
The png_struct structure is the object used by the library to decode a
single image. As of 1.5.0 this structure is also not exposed.
Almost all libpng APIs require a pointer to a png_struct as the first argument.
Many (in particular the png_set and png_get APIs) also require a pointer
to png_info as the second argument. Some application visible macros
defined in png.h designed for basic data access (reading and writing
integers in the PNG format) break this rule, but it's almost always safe
to assume that a (png_struct*) has to be passed to call an API function.
The png.h header file is an invaluable reference for programming with libpng.
And while I'm on the topic, make sure you include the libpng header file:
#include <png.h>
Types
The png.h header file defines a number of integral types used by the
APIs. Most of these are fairly obvious; for example types corresponding
to integers of particular sizes and types for passing color values.
One exception is how non-integral numbers are handled. For application
convenience most APIs that take such numbers have C (double) arguments,
however internally PNG, and libpng, use 32 bit signed integers and encode
the value by multiplying by 100,000. As of libpng 1.5.0 a convenience
macro PNG_FP_1 is defined in png.h along with a type (png_fixed_point)
which is simply (png_int_32).
All APIs that take (double) arguments also have an matching API that
takes the corresponding fixed point integer arguments. The fixed point
API has the same name as the floating point one with _fixed appended.
The actual range of values permitted in the APIs is frequently less than
the full range of (png_fixed_point) (-21474 to +21474). When APIs require
a non-negative argument the type is recorded as png_uint_32 above. Consult
the header file and the text below for more information.
Configuration
The main header file function declarations are frequently protected by C
preprocessing directives of the form:
#ifdef PNG_feature_SUPPORTED
declare-function
#endif
The library can be built without support for these APIs, although a
standard build will have all implemented APIs. Application programs
should check the feature macros before using an API for maximum
portability. From libpng 1.5.0 the feature macros set during the build
of libpng are recorded in the header file "pnglibconf.h" and this file
is always included by png.h.
III. Reading
We'll now walk you through the possible functions to call when reading
@ -1152,7 +1186,8 @@ a slightly smaller exponent is better.
guess for Mac systems */
}
The png_set_gamma() function handles gamma transformations of the data.
The functions png_set_gamma() and its fixed point equivalent
png_set_gamma_fixed() handle gamma transformations of the data.
Pass both the file gamma and the current screen_gamma. If the file does
not have a gamma value, you can pass one anyway if you have an idea what
it is (usually 0.45455 is a good guess for GIF images on PCs). Note
@ -1356,6 +1391,26 @@ while the sixth pass will be 1/2 as wide and 1/2 as high as the original
wide as the original, and 1/2 as high, containing all of the odd
numbered scanlines. Phew!
If you want to retrieve the separate images you must pass the correct
number of rows to each successive call of png_read_rows().
Calculating the number isn't quite as straightforward as the previous
paragraph might suggest; think about what happens with an image with a odd
number of rows, which passes get the extra row? To help you libpng 1.5.0
implements a function to return the number of rows and columns in the current
pass:
int number_of_rows = png_get_num_rows(png_ptr);
int number_of_cols = png_get_num_cols(png_ptr);
Simply call that before each call to png_read_rows(). You must call
png_start_read_image() (or png_read_update_info) before the first call to
ensure that the number libpng holds internally has been updated.
For very small interlaced images the number of rows or columns in a pass
can be zero.
You don't need to call png_read_rows() in this case, libpng will simply
skip to the next pass.
If you want libpng to expand the images, call this before calling
png_start_read_image() or png_read_update_info():
@ -1368,6 +1423,14 @@ is seven, but may change if another interlace type is added.
This function can be called even if the file is not interlaced,
where it will return one pass.
If you need to get the number of passes later (for example after the call
to png_start_read_image()) just call:
number_of_passes = png_get_num_passes(png_ptr);
This function just returns the number - it doesn't make any changes to the
libpng state.
If you are not going to display the image after each pass, but are
going to wait until the entire image is read in, use the sparkle
effect. This effect is faster and the end result of either method
@ -2529,9 +2592,11 @@ these functions, call the appropriate png_set_*_fn() function.
Memory allocation is done through the functions png_malloc(), png_calloc(),
and png_free(). These currently just call the standard C functions.
png_calloc() calls png_malloc() and then png_memset() to clear the newly
allocated memory to zero. If your pointers can't access more then 64K
at a time, you will want to set MAXSEG_64K in zlib.h. Since it is
png_calloc() calls png_malloc() and then clears the newly
allocated memory to zero. There is limited support for certain systems
with segmented memory architectures and the types of pointers declared by
png.h match this; you will have to use appropriate pointers in your
application. Since it is
unlikely that the method of handling memory allocation on a platform
will change between applications, these functions must be modified in
the library at compile time. If you prefer to use a different method
@ -3118,8 +3183,8 @@ png_get_mmx_bitdepth_threshold(), png_get_mmx_rowbytes_threshold(),
png_set_asm_flags(), and png_mmx_supported()
We removed the obsolete png_check_sig(), png_memcpy_check(), and
png_memset_check() functions. Instead use !png_sig_cmp(), png_memcpy(),
and png_memset(), respectively.
png_memset_check() functions. Instead use !png_sig_cmp(), memcpy(),
and memset(), respectively.
The function png_set_gray_1_2_4_to_8() was removed. It has been
deprecated since libpng-1.0.18 and 1.2.9, when it was replaced with
@ -3134,7 +3199,7 @@ to
This also applies to the prototype for the user replacement malloc_fn().
The png_calloc() function was added and is used in place of
of "png_malloc(); png_memset();" except in the case in png_read_png()
of "png_malloc(); memset();" except in the case in png_read_png()
where the array consists of pointers; in this case a "for" loop is used
after the png_malloc() to set the pointers to NULL, to give robust.
behavior in case the application runs out of memory part-way through
@ -3301,7 +3366,7 @@ Other rules can be inferred by inspecting the libpng source.
XIII. Y2K Compliance in libpng
July 29, 2010
July 30, 2010
Since the PNG Development group is an ad-hoc body, we can't make
an official declaration.

205
libpng.3
View File

@ -1,4 +1,4 @@
.TH LIBPNG 3 "July 29, 2010"
.TH LIBPNG 3 "July 30, 2010"
.SH NAME
libpng \- Portable Network Graphics (PNG) Reference Library 1.5.0beta36
.SH SYNOPSIS
@ -200,6 +200,18 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.5.0beta36
\fI\fB
\fBint png_get_num_cols (png_structp \fIpng_ptr\fP\fB);\fP
\fI\fB
\fBint png_get_num_passes (png_structp \fIpng_ptr\fP\fB);\fP
\fI\fB
\fBint png_get_num_rows (png_structp \fIpng_ptr\fP\fB);\fP
\fI\fB
\fBpng_uint_32 png_get_oFFs (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fP\fI*offset_x\fP\fB, png_uint_32 \fP\fI*offset_y\fP\fB, int \fI*unit_type\fP\fB);\fP
\fI\fB
@ -216,6 +228,10 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.5.0beta36
\fI\fB
\fBpng_fixed_point png_get_pixel_aspect_ratio_fixed (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
\fI\fB
\fBpng_uint_32 png_get_pixels_per_meter (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
\fI\fB
@ -242,6 +258,18 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.5.0beta36
\fI\fB
\fBvoid png_get_sCAL (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int* \fP\fIunit\fP\fB, double* \fP\fIwidth\fP\fB, double* \fIheight\fP\fB);\fP
\fI\fB
\fBvoid png_get_sCAL_fixed (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int* \fP\fIunit\fP\fB, png_fixed_pointp \fP\fIwidth\fP\fB, png_fixed_pointp \fIheight\fP\fB);\fP
\fI\fB
\fBvoid png_get_sCAL_s (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int* \fP\fIunit\fP\fB, png_charpp \fP\fIwidth\fP\fB, \fIpng_charppheight\fP\fB);\fP
\fI\fB
\fBpng_bytep png_get_signature (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
\fI\fB
@ -306,6 +334,14 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.5.0beta36
\fI\fB
\fBfloat png_get_x_offset_inches (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
\fI\fB
\fBpng_fixed_point png_get_x_offset_inches_fixed (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
\fI\fB
\fBpng_int_32 png_get_x_offset_microns (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
\fI\fB
@ -318,6 +354,14 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.5.0beta36
\fI\fB
\fBfloat png_get_y_offset_inches (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
\fI\fB
\fBpng_fixed_point png_get_y_offset_inches_fixed (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
\fI\fB
\fBpng_int_32 png_get_y_offset_microns (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
\fI\fB
@ -350,14 +394,6 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.5.0beta36
\fI\fB
\fBvoidp png_memcpy (png_voidp \fP\fIs1\fP\fB, png_voidp \fP\fIs2\fP\fB, png_size_t \fIsize\fP\fB);\fP
\fI\fB
\fBvoidp png_memset (png_voidp \fP\fIs1\fP\fB, int \fP\fIvalue\fP\fB, png_size_t \fIsize\fP\fB);\fP
\fI\fB
\fBvoid png_process_data (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_bytep \fP\fIbuffer\fP\fB, png_size_t \fIbuffer_size\fP\fB);\fP
\fI\fB
@ -414,6 +450,10 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.5.0beta36
\fI\fB
\fBvoid png_set_background_fixed (png_structp \fP\fIpng_ptr\fP\fB, png_color_16p \fP\fIbackground_color\fP\fB, int \fP\fIbackground_gamma_code\fP\fB, int \fP\fIneed_expand\fP\fB, png_uint_32 \fIbackground_gamma\fP\fB);\fP
\fI\fB
\fBvoid png_set_bgr (png_structp \fIpng_ptr\fP\fB);\fP
\fI\fB
@ -482,6 +522,10 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.5.0beta36
\fI\fB
\fBvoid png_set_filter_heuristics_fixed (png_structp \fP\fIpng_ptr\fP\fB, int \fP\fIheuristic_method\fP\fB, int \fP\fInum_weights\fP\fB, png_fixed_point_p \fP\fIfilter_weights\fP\fB, png_fixed_point_p \fIfilter_costs\fP\fB);\fP
\fI\fB
\fBvoid png_set_flush (png_structp \fP\fIpng_ptr\fP\fB, int \fInrows\fP\fB);\fP
\fI\fB
@ -490,6 +534,10 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.5.0beta36
\fI\fB
\fBvoid png_set_gamma_fixed (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fP\fIscreen_gamma\fP\fB, png_uint_32 \fIdefault_file_gamma\fP\fB);\fP
\fI\fB
\fBvoid png_set_gAMA (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, double \fIfile_gamma\fP\fB);\fP
\fI\fB
@ -602,7 +650,7 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.5.0beta36
\fI\fB
\fBvoid png_set_rgb_to_gray_fixed (png_structp \fP\fIpng_ptr\fP\fB, int error_action png_fixed_point \fP\fIred\fP\fB, png_fixed_point \fIgreen\fP\fB);\fP
\fBvoid png_set_rgb_to_gray_fixed (png_structp \fP\fIpng_ptr\fP\fB, int error_action png_uint_32 \fP\fIred\fP\fB, png_uint_32 \fIgreen\fP\fB);\fP
\fI\fB
@ -614,7 +662,21 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.5.0beta36
\fI\fB
\fBvoid png_set_sCAL (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_charp \fP\fIunit\fP\fB, double \fP\fIwidth\fP\fB, double \fIheight\fP\fB);\fP
\fBvoid png_set_sCAL (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fP\fIunit\fP\fB, double \fP\fIwidth\fP\fB, double \fIheight\fP\fB);\fP
\fI\fB
\fBvoid png_set_sCAL_fixed (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fP\fIunit\fP\fB, png_fixed_point \fP\fIwidth\fP\fB, png_fixed_point \fIheight\fP\fB);\fP
\fI\fB
\fBvoid png_set_sCAL_s (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fP\fIunit\fP\fB, png_charp \fP\fIwidth\fP\fB, png_charp \fIheight\fP\fB);\fP
\fI\fB
\fI\fB
\fI\fB
\fI\fB
@ -789,7 +851,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.5.0beta36 - July 29, 2010
libpng version 1.5.0beta36 - July 30, 2010
Updated and distributed by Glenn Randers-Pehrson
<glennrp at users.sourceforge.net>
Copyright (c) 1998-2010 Glenn Randers-Pehrson
@ -800,7 +862,7 @@ libpng.txt - A description on how to use and modify libpng
Based on:
libpng versions 0.97, January 1998, through 1.5.0beta36 - July 29, 2010
libpng versions 0.97, January 1998, through 1.5.0beta36 - July 30, 2010
Updated and distributed by Glenn Randers-Pehrson
Copyright (c) 1998-2010 Glenn Randers-Pehrson
@ -888,34 +950,68 @@ same instance of a structure.
.SH II. Structures
There are two main structures that are important to libpng, png_struct
and png_info. The first, png_struct, is an internal structure that
will not, for the most part, be used by a user except as the first
variable passed to every libpng function call.
and png_info. Both are internal structures that are no longer exposed
in the libpng interface (as of libpng 1.5.0).
The png_info structure is designed to provide information about the
PNG file. At one time, the fields of png_info were intended to be
directly accessible to the user. However, this tended to cause problems
with applications using dynamically loaded libraries, and as a result
a set of interface functions for png_info (the png_get_*() and png_set_*()
functions) was developed. The fields of png_info are still available for
older applications, but it is suggested that applications use the new
interfaces if at all possible.
functions) was developed.
Applications that do make direct access to the members of png_struct (except
for png_ptr->jmpbuf) must be recompiled whenever the library is updated,
and applications that make direct access to the members of png_info must
be recompiled if they were compiled or loaded with libpng version 1.0.6,
in which the members were in a different order. In version 1.0.7, the
members of the png_info structure reverted to the old order, as they were
in versions 0.97c through 1.0.5. Starting with version 2.0.0, both
structures are going to be hidden, and the contents of the structures will
only be accessible through the png_get/png_set functions.
The png_struct structure is the object used by the library to decode a
single image. As of 1.5.0 this structure is also not exposed.
Almost all libpng APIs require a pointer to a png_struct as the first argument.
Many (in particular the png_set and png_get APIs) also require a pointer
to png_info as the second argument. Some application visible macros
defined in png.h designed for basic data access (reading and writing
integers in the PNG format) break this rule, but it's almost always safe
to assume that a (png_struct*) has to be passed to call an API function.
The png.h header file is an invaluable reference for programming with libpng.
And while I'm on the topic, make sure you include the libpng header file:
#include <png.h>
.SS Types
The png.h header file defines a number of integral types used by the
APIs. Most of these are fairly obvious; for example types corresponding
to integers of particular sizes and types for passing color values.
One exception is how non-integral numbers are handled. For application
convenience most APIs that take such numbers have C (double) arguments,
however internally PNG, and libpng, use 32 bit signed integers and encode
the value by multiplying by 100,000. As of libpng 1.5.0 a convenience
macro PNG_FP_1 is defined in png.h along with a type (png_fixed_point)
which is simply (png_int_32).
All APIs that take (double) arguments also have an matching API that
takes the corresponding fixed point integer arguments. The fixed point
API has the same name as the floating point one with _fixed appended.
The actual range of values permitted in the APIs is frequently less than
the full range of (png_fixed_point) (-21474 to +21474). When APIs require
a non-negative argument the type is recorded as png_uint_32 above. Consult
the header file and the text below for more information.
.SS Configuration
The main header file function declarations are frequently protected by C
preprocessing directives of the form:
#ifdef PNG_feature_SUPPORTED
declare-function
#endif
The library can be built without support for these APIs, although a
standard build will have all implemented APIs. Application programs
should check the feature macros before using an API for maximum
portability. From libpng 1.5.0 the feature macros set during the build
of libpng are recorded in the header file "pnglibconf.h" and this file
is always included by png.h.
.SH III. Reading
We'll now walk you through the possible functions to call when reading
@ -1941,7 +2037,8 @@ a slightly smaller exponent is better.
guess for Mac systems */
}
The png_set_gamma() function handles gamma transformations of the data.
The functions png_set_gamma() and its fixed point equivalent
png_set_gamma_fixed() handle gamma transformations of the data.
Pass both the file gamma and the current screen_gamma. If the file does
not have a gamma value, you can pass one anyway if you have an idea what
it is (usually 0.45455 is a good guess for GIF images on PCs). Note
@ -2145,6 +2242,26 @@ while the sixth pass will be 1/2 as wide and 1/2 as high as the original
wide as the original, and 1/2 as high, containing all of the odd
numbered scanlines. Phew!
If you want to retrieve the separate images you must pass the correct
number of rows to each successive call of png_read_rows().
Calculating the number isn't quite as straightforward as the previous
paragraph might suggest; think about what happens with an image with a odd
number of rows, which passes get the extra row? To help you libpng 1.5.0
implements a function to return the number of rows and columns in the current
pass:
int number_of_rows = png_get_num_rows(png_ptr);
int number_of_cols = png_get_num_cols(png_ptr);
Simply call that before each call to png_read_rows(). You must call
png_start_read_image() (or png_read_update_info) before the first call to
ensure that the number libpng holds internally has been updated.
For very small interlaced images the number of rows or columns in a pass
can be zero.
You don't need to call png_read_rows() in this case, libpng will simply
skip to the next pass.
If you want libpng to expand the images, call this before calling
png_start_read_image() or png_read_update_info():
@ -2157,6 +2274,14 @@ is seven, but may change if another interlace type is added.
This function can be called even if the file is not interlaced,
where it will return one pass.
If you need to get the number of passes later (for example after the call
to png_start_read_image()) just call:
number_of_passes = png_get_num_passes(png_ptr);
This function just returns the number - it doesn't make any changes to the
libpng state.
If you are not going to display the image after each pass, but are
going to wait until the entire image is read in, use the sparkle
effect. This effect is faster and the end result of either method
@ -3318,9 +3443,11 @@ these functions, call the appropriate png_set_*_fn() function.
Memory allocation is done through the functions png_malloc(), png_calloc(),
and png_free(). These currently just call the standard C functions.
png_calloc() calls png_malloc() and then png_memset() to clear the newly
allocated memory to zero. If your pointers can't access more then 64K
at a time, you will want to set MAXSEG_64K in zlib.h. Since it is
png_calloc() calls png_malloc() and then clears the newly
allocated memory to zero. There is limited support for certain systems
with segmented memory architectures and the types of pointers declared by
png.h match this; you will have to use appropriate pointers in your
application. Since it is
unlikely that the method of handling memory allocation on a platform
will change between applications, these functions must be modified in
the library at compile time. If you prefer to use a different method
@ -3907,8 +4034,8 @@ png_get_mmx_bitdepth_threshold(), png_get_mmx_rowbytes_threshold(),
png_set_asm_flags(), and png_mmx_supported()
We removed the obsolete png_check_sig(), png_memcpy_check(), and
png_memset_check() functions. Instead use !png_sig_cmp(), png_memcpy(),
and png_memset(), respectively.
png_memset_check() functions. Instead use !png_sig_cmp(), memcpy(),
and memset(), respectively.
The function png_set_gray_1_2_4_to_8() was removed. It has been
deprecated since libpng-1.0.18 and 1.2.9, when it was replaced with
@ -3923,7 +4050,7 @@ to
This also applies to the prototype for the user replacement malloc_fn().
The png_calloc() function was added and is used in place of
of "png_malloc(); png_memset();" except in the case in png_read_png()
of "png_malloc(); memset();" except in the case in png_read_png()
where the array consists of pointers; in this case a "for" loop is used
after the png_malloc() to set the pointers to NULL, to give robust.
behavior in case the application runs out of memory part-way through
@ -4090,7 +4217,7 @@ Other rules can be inferred by inspecting the libpng source.
.SH XIII. Y2K Compliance in libpng
July 29, 2010
July 30, 2010
Since the PNG Development group is an ad-hoc body, we can't make
an official declaration.
@ -4332,7 +4459,7 @@ possible without all of you.
Thanks to Frank J. T. Wojcik for helping with the documentation.
Libpng version 1.5.0beta36 - July 29, 2010:
Libpng version 1.5.0beta36 - July 30, 2010:
Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
Currently maintained by Glenn Randers-Pehrson (glennrp at users.sourceforge.net).
@ -4355,7 +4482,7 @@ this sentence.
This code is released under the libpng license.
libpng versions 1.2.6, August 15, 2004, through 1.5.0beta36, July 29, 2010, are
libpng versions 1.2.6, August 15, 2004, through 1.5.0beta36, July 30, 2010, are
Copyright (c) 2004,2006-2007 Glenn Randers-Pehrson, and are
distributed according to the same disclaimer and license as libpng-1.2.5
with the following individual added to the list of Contributing Authors
@ -4454,7 +4581,7 @@ certification mark of the Open Source Initiative.
Glenn Randers-Pehrson
glennrp at users.sourceforge.net
July 29, 2010
July 30, 2010
.\" end of man page

View File

@ -1,4 +1,4 @@
.TH LIBPNGPF 3 "July 29, 2010"
.TH LIBPNGPF 3 "July 30, 2010"
.SH NAME
libpng \- Portable Network Graphics (PNG) Reference Library 1.5.0beta36
(private functions)
@ -7,9 +7,15 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.5.0beta36
\fI\fB
\fBvoid png_64bit_product (long \fP\fIv1\fP\fB, long \fP\fIv2\fP\fB, unsigned long \fI*hi_product,
\fBvoid png_64bit_product (long \fP\fIv1\fP\fB, long \fP\fIv2\fP\fB, unsigned long \fP\fI*hi_product\fP\fB, unsigned long \fI*lo_product\fP\fB);\fP
\fBunsigned long \fI*lo_product\fP\fB);\fP
\fI\fB
\fI\fB
\fBvoid png_ascii_from_fp (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIascii\fP\fB, png_size_t \fP\fIsize\fP\fB, double \fP\fIfp\fP\fB, unsigned \fIprecision\fP\fB);\fP
\fI\fB
\fI\fB
@ -43,6 +49,30 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.5.0beta36
\fI\fB
\fBint png_check_fp_number (png_charp \fP\fIstring\fP\fB, png_size_t \fP\fIsize\fP\fB, int* \fP\fIstatep\fP\fB, png_size_tp \fIwhereami\fP\fB);\fP
\fI\fB
\fI\fB
\fI\fB
\fI\fB
\fI\fB
\fBint png_check_fp_string (png_charp \fP\fIstring\fP\fB, png_size_t \fIsize\fP\fB);\fP
\fI\fB
\fI\fB
\fI\fB
\fI\fB
\fI\fB
\fBpng_size_t png_check_keyword (png_structp \fP\fIpng_ptr\fP\fB, png_charp \fP\fIkey\fP\fB, png_charpp \fInew_key\fP\fB);\fP
\fI\fB
@ -281,7 +311,21 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.5.0beta36
\fI\fB
\fBvoid *png_far_to_near (png_structp png_ptr,png_voidp \fP\fIptr\fP\fB, int \fIcheck\fP\fB);\fP
\fBvoid *png_far_to_near (png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fP\fIptr\fP\fB, int \fIcheck\fP\fB);\fP
\fI\fB
\fI\fB
\fI\fB
\fI\fB
\fI\fB
\fBvoid png_fixed_error (png_structp \fP\fIpng_ptr\fP\fB, \fIpng_const_charp
\fBname, double \fIvalue\fP\fB);\fP
\fI\fB
@ -293,6 +337,42 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.5.0beta36
\fI\fB
\fBint png_gamma_significant (png_fixed_point \fIgamma\fP\fB);\fP
\fI\fB
\fI\fB
\fI\fB
\fI\fB
\fI\fB
\fBpng_uint_16 png_gamma_16bit_correct (png_structp \fP\fIpng_ptr\fP\fB, unsigned \fP\fIvalue\fP\fB, png_fixed_point \fIgamma\fP\fB);\fP
\fI\fB
\fI\fB
\fI\fB
\fI\fB
\fI\fB
\fBpng_byte png_gamma_8bit_correct (png_structp \fP\fIpng_ptr\fP\fB, unsigned \fP\fIvalue\fP\fB, png_fixed_point \fIgamma\fP\fB);\fP
\fI\fB
\fI\fB
\fI\fB
\fI\fB
\fI\fB
\fBvoid png_handle_bKGD (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
\fI\fB
@ -437,6 +517,30 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.5.0beta36
\fI\fB
\fBint png_muldiv (png_fixed_point_p \fP\fIres\fP\fB, png_fixed_point \fP\fIa\fP\fB, png_int_32 \fP\fItimes\fP\fB, png_int_32 \fIdiv\fP\fB);\fP
\fI\fB
\fI\fB
\fI\fB
\fI\fB
\fI\fB
\fBpng_fixed_point png_muldiv_warn (png_structp \fP\fIpng_ptr\fP\fB, png_fixed_point \fP\fIa\fP\fB, png_int_32 \fP\fItimes\fP\fB, png_int_32 \fIdiv\fP\fB);\fP
\fI\fB
\fI\fB
\fI\fB
\fI\fB
\fI\fB
\fBvoid png_process_IDAT_data (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIbuffer\fP\fB, png_size_t \fIbuffer_length\fP\fB);\fP
\fI\fB
@ -601,6 +705,30 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.5.0beta36
\fI\fB
\fBpng_fixed_point png_reciprocal (png_fixed_point \fIa\fP\fB);\fP
\fI\fB
\fI\fB
\fI\fB
\fI\fB
\fI\fB
\fBpng_fixed_point png_reciprocal2 (png_fixed_point \fP\fIa\fP\fB, png_fixed_point \fIb\fP\fB);\fP
\fI\fB
\fI\fB
\fI\fB
\fI\fB
\fI\fB
\fBvoid png_reset_crc (png_structp \fIpng_ptr\fP\fB);\fP
\fI\fB
@ -812,7 +940,7 @@ The functions listed above are used privately by libpng
and are not recommended for use by applications. They are
not "exported" to applications using shared libraries. They
are listed alphabetically here as an aid to libpng maintainers.
See png.h for more information on these functions.
See pngpriv.h for more information on these functions.
.SH SEE ALSO
.BR "png"(5), " libpng"(3), " zlib"(3), " deflate"(5), " " and " zlib"(5)

13
png.h
View File

@ -1,7 +1,7 @@
/* png.h - header file for PNG reference library
*
* libpng version 1.5.0beta36 - July 29, 2010
* libpng version 1.5.0beta36 - July 30, 2010
* Copyright (c) 1998-2010 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
@ -11,7 +11,7 @@
* Authors and maintainers:
* libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
* libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger
* libpng versions 0.97, January 1998, through 1.5.0beta36 - July 29, 2010: Glenn
* libpng versions 0.97, January 1998, through 1.5.0beta36 - July 30, 2010: Glenn
* See also "Contributing Authors", below.
*
* Note about libpng version numbers:
@ -172,7 +172,7 @@
*
* This code is released under the libpng license.
*
* libpng versions 1.2.6, August 15, 2004, through 1.5.0beta36, July 29, 2010, are
* libpng versions 1.2.6, August 15, 2004, through 1.5.0beta36, July 30, 2010, are
* Copyright (c) 2004, 2006-2010 Glenn Randers-Pehrson, and are
* distributed according to the same disclaimer and license as libpng-1.2.5
* with the following individual added to the list of Contributing Authors:
@ -284,7 +284,7 @@
* Y2K compliance in libpng:
* =========================
*
* July 29, 2010
* July 30, 2010
*
* Since the PNG Development group is an ad-hoc body, we can't make
* an official declaration.
@ -348,7 +348,7 @@
/* Version information for png.h - this should match the version in png.c */
#define PNG_LIBPNG_VER_STRING "1.5.0beta36"
#define PNG_HEADER_VERSION_STRING \
" libpng version 1.5.0beta36 - July 29, 2010\n"
" libpng version 1.5.0beta36 - July 30, 2010\n"
#define PNG_LIBPNG_VER_SONUM 15
#define PNG_LIBPNG_VER_DLLNUM 15
@ -1092,6 +1092,7 @@ PNG_EXPORT(int,png_set_interlace_handling,(png_structp png_ptr),,45);
*/
PNG_EXPORT(int,png_get_num_passes,(png_structp png_ptr),,215);
PNG_EXPORT(png_uint_32,png_get_num_rows,(png_structp png_ptr),,216);
PNG_EXPORT(png_uint_32,png_get_num_cols,(png_structp png_ptr),,218);
#endif
#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
@ -2055,7 +2056,7 @@ PNG_EXPORT(void,png_save_uint_16,(png_bytep buf, unsigned int i),,207);
* use is one more than this.)
*/
#ifdef PNG_EXPORT_LAST_ORDINAL
PNG_EXPORT_LAST_ORDINAL(217);
PNG_EXPORT_LAST_ORDINAL(218);
#endif
#ifdef __cplusplus

View File

@ -1,7 +1,7 @@
/* pngerror.c - stub functions for i/o and memory allocation
*
* Last changed in libpng 1.5.0 [July 29, 2010]
* Last changed in libpng 1.5.0 [July 30, 2010]
* Copyright (c) 1998-2010 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
@ -256,7 +256,7 @@ png_fixed_error(png_structp png_ptr, png_const_charp name, double value)
msg[fixed_message_ln + iin] = 0;
/* To discover 'value' put a breakpoint here: */
png_error(png_ptr, msg);
value = value; png_ptr = png_ptr; /* Quiet the compiler */
value = value; /* Quiet the compiler */
}
#endif
#endif

View File

@ -1,7 +1,7 @@
/* pngpriv.h - private declarations for use inside libpng
*
* libpng version 1.5.0beta36 - July 29, 2010
* libpng version 1.5.0beta36 - July 30, 2010
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2010 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@ -1042,8 +1042,8 @@ PNG_EXTERN void png_fixed_error PNGARG((png_structp png_ptr,
* maximum ridiculous exponent.
*/
#define PNG_sCAL_MAX_DIGITS (PNG_sCAL_PRECISION+1/*.*/+1/*E*/+10/*exponent*/)
PNG_EXTERN void png_ascii_from_fp(png_structp png_ptr, png_charp ascii,
png_size_t size, double fp, unsigned precision);
PNG_EXTERN void png_ascii_from_fp PNGARG((png_structp png_ptr, png_charp ascii,
png_size_t size, double fp, unsigned precision));
#endif /* READ_sCAL && FLOATING_POINT */
#if defined(PNG_sCAL_SUPPORTED) || defined(PNG_pCAL_SUPPORTED)
@ -1110,13 +1110,13 @@ PNG_EXTERN void png_ascii_from_fp(png_structp png_ptr, png_charp ascii,
* that omits the last character (i.e. set the size to the index of
* the problem character.) This has not been tested within libpng.
*/
PNG_EXTERN int png_check_fp_number(png_charp string, png_size_t size,
int *statep, png_size_tp whereami);
PNG_EXTERN int png_check_fp_number PNGARG((png_charp string, png_size_t size,
int *statep, png_size_tp whereami));
/* This is the same but it checks a complete string and returns true
* only if it just contains a floating point number.
*/
PNG_EXTERN int png_check_fp_string(png_charp string, png_size_t size);
PNG_EXTERN int png_check_fp_string PNGARG((png_charp string, png_size_t size));
#endif /* pCAL || sCAL */
#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_INCH_CONVERSIONS_SUPPORTED)

View File

@ -1,7 +1,7 @@
/* pngrutil.c - utilities to read a PNG file
*
* Last changed in libpng 1.4.1 [July 29, 2010]
* Last changed in libpng 1.4.1 [July 30, 2010]
* Copyright (c) 1998-2010 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
@ -3485,5 +3485,21 @@ png_get_num_rows(png_structp png_ptr)
/* Here on error */
return 0;
}
png_uint_32 PNGAPI
png_get_num_cols(png_structp png_ptr)
{
if (png_ptr != NULL)
{
if (png_ptr->flags & PNG_FLAG_ROW_INIT)
return png_ptr->iwidth;
else
png_error(png_ptr, "Call png_start_read_image or png_read_update_info "
"before png_get_num_cols");
}
/* Here on error */
return 0;
}
#endif /* SEQUENTIAL READ */
#endif /* PNG_READ_SUPPORTED */

View File

@ -227,3 +227,4 @@ EXPORTS
png_get_num_passes @215
png_get_num_rows @216
png_set_background_fixed @217
png_get_num_cols @218

View File

@ -223,3 +223,4 @@ EXPORTS
png_get_num_passes @215
png_get_num_rows @216
png_set_background_fixed @217
png_get_num_cols @218