mirror of
https://git.code.sf.net/p/libpng/code.git
synced 2025-07-10 18:04:09 +02:00
Compare commits
8 Commits
v1.0.7beta
...
v1.0.8beta
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
316f97a063 | ||
|
|
3d5a520610 | ||
|
|
98b0ff4998 | ||
|
|
1394480f4b | ||
|
|
1f2d559f70 | ||
|
|
db66d44801 | ||
|
|
d436672048 | ||
|
|
104622bebb |
31
ANNOUNCE
31
ANNOUNCE
@@ -1,5 +1,5 @@
|
||||
|
||||
Libpng 1.0.7beta14 - May 17, 2000
|
||||
Libpng 1.0.8beta1 - July 8, 2000
|
||||
|
||||
This is a public release of libpng, intended for use in production codes.
|
||||
|
||||
@@ -60,6 +60,8 @@ Changes since the last public release (1.0.6):
|
||||
Made PNG_NO_ITXT_SUPPORTED the default setting, to avoid memory overrun
|
||||
when old applications fill the info_ptr->text structure directly.
|
||||
Added PNGAPI macro, and added it to the definitions of all exported functions.
|
||||
Relocated version macro definitions ahead of the includes of zlib.h and
|
||||
pngconf.h in png.h.
|
||||
Made PNG_NO_CONSOLE_IO the default condition when PNG_BUILD_DLL is defined.
|
||||
Use MSC _RPTn debugging instead of fprintf if _MSC_VER is defined.
|
||||
Added png_access_version_number() function.
|
||||
@@ -75,6 +77,33 @@ Changes since the last public release (1.0.6):
|
||||
Removed info_ptr->valid tests from png_free_data(), as in version 1.0.5.
|
||||
Added png_set_invalid() function.
|
||||
Fixed incorrect illustrations of png_destroy_write_struct() in example.c.
|
||||
Revised the deliberately erroneous Linux setjmp code in pngconf.h to produce
|
||||
fewer error messages.
|
||||
Set each pointer to NULL after freeing it in png_free_data().
|
||||
Worked around a problem in pngconf.h; AIX's strings.h defines an "index"
|
||||
macro that conflicts with libpng's png_color_16.index. (Dimitri Papadapoulos)
|
||||
Added PNG_NO_POINTER_INDEXING macro to use array-indexing instead of pointer
|
||||
indexing in pngrutil.c and pngwutil.c to accommodate a buggy compiler.
|
||||
Added a check for overlength PLTE chunk in pngrutil.c.
|
||||
Added PNG_NO_POINTER_INDEXING macro to use array-indexing instead of pointer
|
||||
indexing in pngrutil.c and pngwutil.c to accommodate a buggy compiler.
|
||||
Added a warning in png_decompress_chunk() when it runs out of data.
|
||||
Revised the copyright/disclaimer/license notice.
|
||||
Corrected the definition of PNG_TRANSFORM_INVERT_ALPHA (0x0400 not 0x0200)
|
||||
Added PNG_USE_DLL macro.
|
||||
Added "msvc" and contrib/msvctest directories with MSVC++ project files
|
||||
(Simon-Pierre Cadieux) and contrib/visupng directory (Willem van Schaik).
|
||||
Removed leading underscores from "_PNG_H" and "_PNG_SAVE_BSD_SOURCE" macros.
|
||||
Fixed bugs in pngwrite.c and pngwutil.c that prevented writing iCCP chunks.
|
||||
Revised the definition of "trans_values" in libpng.3/libpng.txt
|
||||
Added png_free(png_ptr, key) two places in pngpread.c to stop memory leaks.
|
||||
Changed PNG_NO_STDIO to PNG_NO_CONSOLE_IO, several places in pngrutil.c and
|
||||
pngwutil.c.
|
||||
Changed PNG_EXPORT_VAR to use PNG_IMPEXP, in pngconf.h.
|
||||
Removed unused "#include <assert.h>" from png.c
|
||||
Added WindowsCE support.
|
||||
Revised pnggccrd.c to work with gcc-2.95.2 and in the Cygwin environment.
|
||||
|
||||
|
||||
Send comments/corrections/commendations to
|
||||
png-implement@ccrc.wustl.edu or to randeg@alum.rpi.edu
|
||||
|
||||
59
CHANGES
59
CHANGES
@@ -392,7 +392,7 @@ version 1.0.3 [January 14, 1999]
|
||||
version 1.0.3a [August 12, 1999]
|
||||
Added check for PNG_READ_INTERLACE_SUPPORTED in pngread.c; issue a warning
|
||||
if an attempt is made to read an interlaced image when it's not supported.
|
||||
Added check if png_ptr->trans is defined before free'ing it in pngread.c
|
||||
Added check if png_ptr->trans is defined before freeing it in pngread.c
|
||||
Modified the Y2K statement to include versions back to version 0.71
|
||||
Fixed a bug in the check for valid IHDR bit_depth/color_types in pngrutil.c
|
||||
Modified makefile.wat (added -zp8 flag, ".symbolic", changed some comments)
|
||||
@@ -669,7 +669,7 @@ version 1.0.6d [April 7, 2000]
|
||||
Fixed an error in png_rgb_to_gray_fixed()
|
||||
Revised example.c, usage of png_destroy_write_struct().
|
||||
Renamed makefile.ibmvac3 to makefile.ibmc, added libpng.icc IBM project file
|
||||
Added a check for info_ptr->free_me&PNG_FREE_TEXT when free'ing text in png.c
|
||||
Added a check for info_ptr->free_me&PNG_FREE_TEXT when freeing text in png.c
|
||||
Simplify png_sig_bytes() function to remove use of non-ISO-C strdup().
|
||||
version 1.0.6e [April 9, 2000]
|
||||
Added png_data_freer() function.
|
||||
@@ -737,6 +737,8 @@ version 1.0.7beta11 [May 7, 2000]
|
||||
Made PNG_NO_ITXT_SUPPORTED the default setting, to avoid memory overrun
|
||||
when old applications fill the info_ptr->text structure directly.
|
||||
Added PNGAPI macro, and added it to the definitions of all exported functions.
|
||||
Relocated version macro definitions ahead of the includes of zlib.h and
|
||||
pngconf.h in png.h.
|
||||
version 1.0.7beta12 [May 12, 2000]
|
||||
Revised pngset.c to avoid a problem with expanding the png_debug macro.
|
||||
Deleted some extraneous defines from pngconf.h
|
||||
@@ -745,19 +747,64 @@ version 1.0.7beta12 [May 12, 2000]
|
||||
Added png_access_version_number() function.
|
||||
Check for mask&PNG_FREE_CHNK (for TEXT, SCAL, PCAL) in png_free_data().
|
||||
Expanded libpng.3/libpng.txt information about png_data_freer().
|
||||
version 1.0.7beta13 [May 16, 2000]
|
||||
version 1.0.7beta14 [May 17, 2000] (beta13 was not published)
|
||||
Changed pnggccrd.c and pngvcrd.c to handle bad adaptive filter types as
|
||||
warnings instead of errors, as pngrutil.c does.
|
||||
Set the PNG_INFO_IDAT valid flag in png_set_rows() so png_write_png()
|
||||
will actually write IDATs.
|
||||
Made the default PNG_USE_LOCAL_ARRAYS depend on PNG_DLL instead of WIN32.
|
||||
Make png_free_data() ignore its final parameter when freeing data that can
|
||||
have multiple instances (text, sPLT, unknowns).
|
||||
version 1.0.7beta14 [May 17, 2000]
|
||||
Make png_free_data() ignore its final parameter except when freeing data
|
||||
that can have multiple instances (text, sPLT, unknowns).
|
||||
Fixed a new bug in png_set_rows().
|
||||
Removed info_ptr->valid tests from png_free_data(), as in version 1.0.5.
|
||||
Added png_set_invalid() function.
|
||||
Fixed incorrect illustrations of png_destroy_write_struct() in example.c.
|
||||
version 1.0.7beta15 [May 30, 2000]
|
||||
Revised the deliberately erroneous Linux setjmp code in pngconf.h to produce
|
||||
fewer error messages.
|
||||
Rearranged checks for Z_OK to check the most likely path first in pngpread.c
|
||||
and pngwutil.c.
|
||||
Added checks in pngtest.c for png_create_*() returning NULL, and mentioned
|
||||
in libpng.txt/libpng.3 the need for applications to check this.
|
||||
Changed names of png_default_*() functions in pngtest to pngtest_*().
|
||||
Changed return type of png_get_x|y_offset_*() from png_uint_32 to png_int_32.
|
||||
Fixed some bugs in the unused PNG_INCH_CONVERSIONS functions in pngget.c
|
||||
Set each pointer to NULL after freeing it in png_free_data().
|
||||
Worked around a problem in pngconf.h; AIX's strings.h defines an "index"
|
||||
macro that conflicts with libpng's png_color_16.index. (Dimitri Papadapoulos)
|
||||
Added "msvc" directory with MSVC++ project files (Simon-Pierre Cadieux).
|
||||
version 1.0.7beta16 [June 4, 2000]
|
||||
Revised the workaround of AIX string.h "index" bug.
|
||||
Added a check for overlength PLTE chunk in pngrutil.c.
|
||||
Added PNG_NO_POINTER_INDEXING macro to use array-indexing instead of pointer
|
||||
indexing in pngrutil.c and pngwutil.c to accommodate a buggy compiler.
|
||||
Added a warning in png_decompress_chunk() when it runs out of data.
|
||||
Added PNG_USE_DLL macro.
|
||||
Revised the copyright/disclaimer/license notice.
|
||||
Added contrib/msvctest directory
|
||||
version 1.0.7rc1 [June 9, 2000]
|
||||
Corrected the definition of PNG_TRANSFORM_INVERT_ALPHA (0x0400 not 0x0200)
|
||||
Added contrib/visupng directory (Willem van Schaik)
|
||||
version 1.0.7beta18 [June 23, 2000]
|
||||
Revised PNGAPI definition, and pngvcrd.c to work with __GCC__
|
||||
and do not redefine PNGAPI if it is passed in via a compiler directive.
|
||||
Revised visupng/PngFile.c to remove returns from within the Try block.
|
||||
Removed leading underscores from "_PNG_H" and "_PNG_SAVE_BSD_SOURCE" macros.
|
||||
Updated contrib/visupng/cexcept.h to version 1.0.0.
|
||||
Fixed bugs in pngwrite.c and pngwutil.c that prevented writing iCCP chunks.
|
||||
version 1.0.7rc2 [June 28, 2000]
|
||||
Updated license to include disclaimers required by UCITA.
|
||||
Fixed "DJBPP" typo in pnggccrd.c introduced in beta18.
|
||||
version 1.0.7 [July 1, 2000]
|
||||
Revised the definition of "trans_values" in libpng.3/libpng.txt
|
||||
version 1.0.8beta1 [July 8, 2000]
|
||||
Added png_free(png_ptr, key) two places in pngpread.c to stop memory leaks.
|
||||
Changed PNG_NO_STDIO to PNG_NO_CONSOLE_IO, several places in pngrutil.c and
|
||||
pngwutil.c.
|
||||
Changed PNG_EXPORT_VAR to use PNG_IMPEXP, in pngconf.h.
|
||||
Removed unused "#include <assert.h>" from png.c
|
||||
Added WindowsCE support.
|
||||
Revised pnggccrd.c to work with gcc-2.95.2 and in the Cygwin environment.
|
||||
|
||||
Send comments/corrections/commendations to
|
||||
png-implement@ccrc.wustl.edu or to randeg@alum.rpi.edu
|
||||
|
||||
23
INSTALL
23
INSTALL
@@ -1,5 +1,5 @@
|
||||
|
||||
Installing libpng version 1.0.7beta14 - May 17, 2000
|
||||
Installing libpng version 1.0.8beta1 - July 8, 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.7beta14" or "lpng106" and "zlib-1.1.3"
|
||||
might be called "libpng-1.0.8beta1" or "lpng107" and "zlib-1.1.3"
|
||||
or "zlib113") so that you have directories called "zlib" and "libpng".
|
||||
|
||||
Your directory structure should look like this:
|
||||
@@ -23,8 +23,11 @@ Your directory structure should look like this:
|
||||
*.c
|
||||
contrib
|
||||
gregbook
|
||||
msvctest
|
||||
pngminus
|
||||
pngsuite
|
||||
visupng
|
||||
msvc
|
||||
scripts
|
||||
makefile.*
|
||||
pngtest.png
|
||||
@@ -40,15 +43,19 @@ If the line endings in the files look funny, you may wish to get the other
|
||||
distribution of libpng. It is available in both tar.gz (UNIX style line
|
||||
endings) and zip (DOS style line endings) formats.
|
||||
|
||||
First enter the zlib directory and follow the instructions in zlib/README.
|
||||
Then come back here and choose the appropriate makefile.sys in the scripts
|
||||
If you are building libpng with MSVC, you can enter the libpng\msvc directory
|
||||
and follow the instructions in msvc\README.txt.
|
||||
|
||||
Else enter the zlib directory and follow the instructions in zlib/README,
|
||||
then come back here and choose the appropriate makefile.sys in the scripts
|
||||
directory.
|
||||
|
||||
The files that are presently available in the scripts directory
|
||||
include
|
||||
|
||||
makefile.std => Generic UNIX makefile (cc, creates static libpng.a)
|
||||
makefile.linux => Linux/ELF makefile (gcc, creates libpng.so.2.1.0.7beta14)
|
||||
makefile.gcmmx => Linux/ELF makefile (gcc, creates libpng.so.2.1.0.7beta14,
|
||||
makefile.linux => Linux/ELF makefile (gcc, creates libpng.so.2.1.0.8beta1)
|
||||
makefile.gcmmx => Linux/ELF makefile (gcc, creates libpng.so.2.1.0.8beta1,
|
||||
uses assembler code tuned for Intel MMX platform)
|
||||
makefile.gcc => Generic makefile (gcc, creates static libpng.a)
|
||||
makefile.knr => Archaic UNIX Makefile that converts files with
|
||||
@@ -60,9 +67,9 @@ include
|
||||
makefile.intel => Intel C/C++ version 4.0 and later
|
||||
libpng.icc => Project file for IBM VisualAge/C++ version 4.0 or later
|
||||
makefile.sgi => Silicon Graphics IRIX makefile (cc, creates static lib)
|
||||
makefile.sggcc => Silicon Graphics (gcc, creates libpng.so.2.1.0.7beta14)
|
||||
makefile.sggcc => Silicon Graphics (gcc, creates libpng.so.2.1.0.8beta1)
|
||||
makefile.sunos => Sun makefile
|
||||
makefile.solaris => Solaris 2.X makefile (gcc, creates libpng.so.2.1.0.7beta14)
|
||||
makefile.solaris => Solaris 2.X makefile (gcc, creates libpng.so.2.1.0.8beta1)
|
||||
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
|
||||
makefile.mips => MIPS makefile
|
||||
makefile.acorn => Acorn makefile
|
||||
|
||||
111
KNOWNBUG
111
KNOWNBUG
@@ -1,97 +1,48 @@
|
||||
|
||||
Known bugs and suggested enhancements in libpng-1.0.6
|
||||
Known bugs and suggested enhancements in libpng-1.0.7
|
||||
|
||||
1. April 24, 2000 -- BUG -- binary incompatibility
|
||||
1. July 2, 2000 -- BUG -- pnggccrd.c
|
||||
|
||||
Libpng-1.0.6 is binary incompatible with old applications that
|
||||
allocate the png_struct and png_info structures themselves instead
|
||||
of using png_create_*(). They do not allocate enough space for
|
||||
the structures because they have an incorrect notion of
|
||||
sizeof(png_struct) and sizeof(png_info). Although such applications
|
||||
should be considered broken rather than considering libpng to be broken,
|
||||
they are numerous and include products of the PNG group, such
|
||||
as gif2png and pnmtopng-2.36 (pnmtopng-2.37 is OK), so libpng will
|
||||
be fixed in version 1.0.7 to work around this problem.
|
||||
Some programs compiled with PNG_USE_PNGGCCRD crash in pnggccrd.c.
|
||||
Also, pnggccrd.c will not compile under gcc-2.95-2.
|
||||
|
||||
Applications that use png_create_*() instead of png_ptr=malloc(...)
|
||||
are immune to this problem.
|
||||
STATUS: Under investigation. Experts on MMX assembler code are
|
||||
invited to help with the debugging. Note that pngvcrd.c works fine.
|
||||
|
||||
STATUS: Fixed in libpng-1.0.6ad, libpng-1.0.6j, and patch-d
|
||||
which are currently being tested by the PNG group.
|
||||
The fix necessarily reintroduces a binary incompatibility with any
|
||||
application that makes direct access to the png_info and
|
||||
png_struct members that deal with the pCAL chunk, palette_lookup,
|
||||
dither_index, time_buffer, or weighted filtering, i.e., any members
|
||||
coming after the new "free_me" member of either structure. It
|
||||
is believed that applications affected by this reintroduced binary
|
||||
incompatibility are rare (none are known to the PNG group). An
|
||||
effective workaround for this and the next bug is to recompile the
|
||||
old applications with the installed version of libpng.
|
||||
2. July 3, 2000 -- BUG -- MEMORY LEAK
|
||||
|
||||
2. April 23, 2000 -- BUG -- binary incompatibility
|
||||
There is a memory leak in pngpread.c; it doesn't free "key".
|
||||
|
||||
Libpng-1.0.6 introduced binary incompatibility for applications that
|
||||
make direct access to members of the png_struct and png_info structures,
|
||||
due to the insertion of the free_me member ahead of some previously
|
||||
existing members.
|
||||
STATUS: Fixed in libpng-1.0.8beta1, by adding.
|
||||
|
||||
Applications that use png_set_*(), png_get_*() are immune to this
|
||||
problem, but people are still to this day writing applications that
|
||||
make ill-advised direct access to members of the png_struct and
|
||||
png_info structures, so libpng-1.0.6 will be patched to work around
|
||||
this problem.
|
||||
png_free(png_ptr, text_ptr);
|
||||
|
||||
STATUS: Fixed in libpng-1.0.6j and patch-d, which are currently being
|
||||
tested by the PNG group. Users can work around the problem without
|
||||
patching libpng by recompiling their applications.
|
||||
after lines 1221 and 1038 in pngpread.c
|
||||
|
||||
3. April 15, 2000 -- BUG -- pnggccrd.c
|
||||
3. July 3, 2000 -- BUG -- PNG_EXPORT_VAR
|
||||
|
||||
If PNG_NO_GLOBAL_ARRAYS is defined, pnggccrd.c will not compile.
|
||||
The definition of PNG_EXPORT_VAR, in pngconf.h, should be
|
||||
# define PNG_EXPORT_VAR(type) extern PNG_IMPEXP type
|
||||
|
||||
STATUS: Fixed in libpng-1.0.6g
|
||||
STATUS: Fixed in libpng-1.0.8beta1.
|
||||
|
||||
4. April 1, 2000 -- BUG
|
||||
4. July 3, 2000 -- BUG -- PNG_NO_STDIO
|
||||
|
||||
Under some circumstances old applications that make direct access to
|
||||
the info_ptr->text and its members might free the same memory that
|
||||
is also free'ed by libpng during the png_destroy_struct process.
|
||||
Several places in pngrutil.c and pngwutil.c, there are printf statements
|
||||
inside PNG_NO_STDIO blocks (should be PNG_NO_CONSOLE_IO)
|
||||
|
||||
Fixed in libpng-1.0.6-patch-c and libpng-1.0.6d. The PNG_FREE_TEXT flag
|
||||
bit in info_ptr->free_me is now checked to make sure libpng is responsible
|
||||
for freeing the memory.
|
||||
STATUS: Fixed in libpng-1.0.8beta1.
|
||||
|
||||
5. April 1, 2000 -- BUG
|
||||
5. July 3, 2000 -- ENHANCEMENT -- WindowsCE support
|
||||
|
||||
The non-ISO-C "strdup()" function is used in png.c
|
||||
Libpng-1.0.7 does not support WindowsCE.
|
||||
|
||||
STATUS: The function has been simplified and no longer uses strdup()
|
||||
in libpng-1.0.6-patch-c and libpng-1.0.6d.
|
||||
STATUS: Libpng-1.0.8 and libpng-2.0.0 will support WindowsCE. A
|
||||
new typedef, png_file_p, will be added which is normally FILE * but
|
||||
will be HANDLE if libpng is being built for WindowsCE. Other patches
|
||||
required for WindowsCE support have been provided and will be applied.
|
||||
|
||||
6. March 24, 2000 -- BUG
|
||||
|
||||
The png_set_rgb_to_gray_fixed() function is setting incorrect weighting
|
||||
factors.
|
||||
|
||||
STATUS: Fixed in libpng-1.0.6-patch-b and libpng-1.0.6d.
|
||||
|
||||
7. March 22, 2000 -- BUG
|
||||
|
||||
There are some printf() and fprintf() statements active in pngwutil.c
|
||||
when PNG_NO_STDIO and PNG_sCAL_SUPPORTED are both defined.
|
||||
|
||||
STATUS: Fixed in libpng-1.0.6-patch-a and libpng-1.0.6d. The strcpy()
|
||||
function is used instead.
|
||||
|
||||
8. March 22, 2000 -- BUG
|
||||
|
||||
The length of the iCCP chunk data is calculated incorrectly; because
|
||||
it can contain zeroes, strlen() doesn't work.
|
||||
|
||||
STATUS: Fixed in libpng-1.0.6-patch-a and libpng-1.0.6d by adding a
|
||||
data_length parameter to the png_decompress_chunk() function.
|
||||
|
||||
9. March 15, 1998 -- OPTIMIZATION -- Kevin Bracey
|
||||
6. March 15, 1998 -- OPTIMIZATION -- Kevin Bracey
|
||||
|
||||
Loops need to be optimized everywhere
|
||||
|
||||
@@ -104,9 +55,9 @@ Known bugs and suggested enhancements in libpng-1.0.6
|
||||
|
||||
STATUS: Under investigation, postponed until after
|
||||
libpng-1.1.0. About 160 loops will be turned around
|
||||
in libpng-1.1.Nn, for testing.
|
||||
in libpng-2.0.x betaxx, for testing.
|
||||
|
||||
10. July 4, 1998 -- ENHANCEMENT -- Glenn R-P
|
||||
7. July 4, 1998 -- ENHANCEMENT -- Glenn R-P
|
||||
|
||||
libpng-1.0.5 and earlier transform colors to gamma=1.0 space for
|
||||
merging with background, and then back to the image's gamma. The
|
||||
@@ -118,14 +69,12 @@ Known bugs and suggested enhancements in libpng-1.0.6
|
||||
|
||||
STATUS: under development.
|
||||
|
||||
11. September 1999 -- ENHANCEMENT --
|
||||
8. September 1999 -- ENHANCEMENT --
|
||||
|
||||
It should be possible to use libpng without floating-point aritmetic.
|
||||
|
||||
STATUS: Under investigation, implementation postponed until after
|
||||
libpng-1.0.6. The application interface will change because replacements
|
||||
for the png_set_gAMA(), png_set_cHRM(), and corresponding png_get_()
|
||||
functions will be needed.
|
||||
libpng-1.0.7.
|
||||
|
||||
Much of this was completed in libpng-1.0.6, but gamma compensation
|
||||
is not yet done in fixed-point arithmetic.
|
||||
|
||||
76
LICENSE
76
LICENSE
@@ -1,29 +1,57 @@
|
||||
COPYRIGHT NOTICE:
|
||||
|
||||
Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
|
||||
(libpng versions 0.5, May 1995, through 0.89c, May 1996)
|
||||
COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
|
||||
|
||||
If you modify libpng you may insert additional notices immediately following
|
||||
this sentence.
|
||||
|
||||
libpng version 1.0.8beta1, July 8, 2000 is Copyright (c) 2000 Glenn Randers-Pehrson
|
||||
Distributed according to the same disclaimer and license as libpng-1.0.6
|
||||
with the following individuals added to the list of Contributing Authors
|
||||
|
||||
Simon-Pierre Cadieux
|
||||
Eric S. Raymond
|
||||
Gilles Vollant
|
||||
|
||||
and with the following additions to the disclaimer:
|
||||
|
||||
There is no warranty against interference with your enjoyment of the
|
||||
library or against infringement. There is no warranty that our
|
||||
efforts or the library will fulfill any of your particular purposes
|
||||
or needs. This library is provided with all faults, and the entire
|
||||
risk of satisfactory quality, performance, accuracy, and effort is with
|
||||
the user.
|
||||
|
||||
libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
|
||||
Copyright (c) 1998, 1999 Glenn Randers-Pehrson
|
||||
Distributed according to the same disclaimer and license as libpng-0.96,
|
||||
with the following individuals added to the list of Contributing Authors:
|
||||
|
||||
Tom Lane
|
||||
Glenn Randers-Pehrson
|
||||
Willem van Schaik
|
||||
|
||||
libpng versions 0.89, June 1996, through 0.96, May 1997, are
|
||||
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.7beta14, May 17, 2000)
|
||||
|
||||
For the purposes of this copyright and license, "Contributing Authors"
|
||||
is defined as the following set of individuals:
|
||||
Distributed according to the same disclaimer and license as libpng-0.88,
|
||||
with the following individuals added to the list of Contributing Authors:
|
||||
|
||||
John Bowler
|
||||
Kevin Bracey
|
||||
Sam Bushell
|
||||
Andreas Dilger
|
||||
Magnus Holmgren
|
||||
Tom Lane
|
||||
Dave Martindale
|
||||
Glenn Randers-Pehrson
|
||||
Eric S. Raymond
|
||||
Greg Roelofs
|
||||
Tom Tanner
|
||||
|
||||
libpng versions 0.5, May 1995, through 0.88, January 1996, are
|
||||
Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
|
||||
|
||||
For the purposes of this copyright and license, "Contributing Authors"
|
||||
is defined as the following set of individuals:
|
||||
|
||||
Andreas Dilger
|
||||
Dave Martindale
|
||||
Guy Eric Schalnat
|
||||
Paul Schmidt
|
||||
Tom Tanner
|
||||
Willem van Schaik
|
||||
Tim Wegner
|
||||
|
||||
The PNG Reference Library is supplied "AS IS". The Contributing Authors
|
||||
@@ -38,16 +66,13 @@ Permission is hereby granted to use, copy, modify, and distribute this
|
||||
source code, or portions hereof, for any purpose, without fee, subject
|
||||
to the following restrictions:
|
||||
|
||||
1. The origin of this source code must not be
|
||||
misrepresented.
|
||||
1. The origin of this source code must not be misrepresented.
|
||||
|
||||
2. Altered versions must be plainly marked as such
|
||||
and must not be misrepresented as being the
|
||||
original source.
|
||||
2. Altered versions must be plainly marked as such and must not
|
||||
be misrepresented as being the original source.
|
||||
|
||||
3. This Copyright notice may not be removed or
|
||||
altered from any source or altered source
|
||||
distribution.
|
||||
3. This Copyright notice may not be removed or altered from any
|
||||
source or altered source distribution.
|
||||
|
||||
The Contributing Authors and Group 42, Inc. specifically permit, without
|
||||
fee, and encourage the use of this source code as a component to
|
||||
@@ -55,6 +80,7 @@ supporting the PNG file format in commercial products. If you use this
|
||||
source code in a product, acknowledgment is not required but would be
|
||||
appreciated.
|
||||
|
||||
|
||||
A "png_get_copyright" function is available, for convenient use in "about"
|
||||
boxes and the like:
|
||||
|
||||
@@ -68,4 +94,4 @@ certification mark of the Open Source Initiative.
|
||||
|
||||
Glenn Randers-Pehrson
|
||||
randeg@alum.rpi.edu
|
||||
May 17, 2000
|
||||
July 8, 2000
|
||||
|
||||
14
README
14
README
@@ -1,4 +1,4 @@
|
||||
README for libpng 1.0.7beta14 - May 17, 2000 (shared library 2.1)
|
||||
README for libpng 1.0.8beta1 - July 8, 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.
|
||||
@@ -166,15 +166,19 @@ Files in this distribution:
|
||||
gregbook => source code for PNG reading and writing, from
|
||||
Greg Roelofs' "PNG: The Definitive Guide",
|
||||
O'Reilly, 1999
|
||||
msvctest => Builds and runs pngtest using a MSVC workspace
|
||||
pngminus => Simple pnm2png and png2pnm programs
|
||||
pngsuite => Test images
|
||||
visupng => Contains a MSVC workspace for VisualPng
|
||||
msvc => Contains a Microsoft Visual C++ (MSVC) workspace
|
||||
for building libpng and zlib
|
||||
scripts => Directory containing scripts for building libpng:
|
||||
descrip.mms => VMS makefile for MMS or MMK
|
||||
makefile.std => Generic UNIX makefile (cc, creates static libpng.a)
|
||||
makefile.linux => Linux/ELF makefile
|
||||
(gcc, creates libpng.so.2.1.0.7beta14)
|
||||
(gcc, creates libpng.so.2.1.0.8beta1)
|
||||
makefile.gcmmx => Linux/ELF makefile (gcc, creates
|
||||
libpng.so.2.1.0.7beta14, uses assembler code
|
||||
libpng.so.2.1.0.8beta1, uses assembler code
|
||||
tuned for Intel MMX platform)
|
||||
makefile.gcc => Generic makefile (gcc, creates static libpng.a)
|
||||
makefile.knr => Archaic UNIX Makefile that converts files with
|
||||
@@ -186,10 +190,10 @@ Files in this distribution:
|
||||
makefile.intel => Intel C/C++ version 4.0 and later
|
||||
libpng.icc => Project file, IBM VisualAge/C++ 4.0 or later
|
||||
makefile.sgi => Silicon Graphics IRIX (cc, creates static lib)
|
||||
makefile.sggcc => Silicon Graphics (gcc, creates libpng.so.2.1.0.7beta14)
|
||||
makefile.sggcc => Silicon Graphics (gcc, creates libpng.so.2.1.0.8beta1)
|
||||
makefile.sunos => Sun makefile
|
||||
makefile.solaris => Solaris 2.X makefile
|
||||
(gcc, creates libpng.so.2.1.0.7beta14)
|
||||
(gcc, creates libpng.so.2.1.0.8beta1)
|
||||
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
|
||||
makefile.mips => MIPS makefile
|
||||
makefile.acorn => Acorn makefile
|
||||
|
||||
4
Y2KINFO
4
Y2KINFO
@@ -1,13 +1,13 @@
|
||||
Y2K compliance in libpng:
|
||||
=========================
|
||||
|
||||
May 17, 2000
|
||||
July 8, 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.7beta14 are Y2K compliant. It is my belief that earlier
|
||||
upward through 1.0.8beta1 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
|
||||
|
||||
2
configure
vendored
2
configure
vendored
@@ -1,5 +1,5 @@
|
||||
echo "
|
||||
There is no \"configure\" script for Libpng-1.0.7beta14. Instead, please
|
||||
There is no \"configure\" script for Libpng-1.0.8beta1. Instead, please
|
||||
copy the appropriate makefile for your system from the \"scripts\"
|
||||
directory. Read the INSTALL file for more details.
|
||||
"
|
||||
|
||||
@@ -40,7 +40,7 @@ ZLIB = /usr/local/lib/libz.a # statically linked against zlib
|
||||
|
||||
#XINC = -I/usr/include/X11 # old-style, stock X distributions
|
||||
#XLIB = -L/usr/lib/X11 -lX11
|
||||
#XINC = -I/usr/openwin/include/X11 # Sun workstations (OpenWindows)
|
||||
#XINC = -I/usr/openwin/include # Sun workstations (OpenWindows)
|
||||
#XLIB = -L/usr/openwin/lib -lX11
|
||||
XINC = -I/usr/X11R6/include # new X distributions (XFree86, etc.)
|
||||
XLIB = -L/usr/X11R6/lib -lX11
|
||||
|
||||
22
contrib/msvctest/README.txt
Normal file
22
contrib/msvctest/README.txt
Normal file
@@ -0,0 +1,22 @@
|
||||
Microsoft Developer Studio Build File, Format Version 6.00 for
|
||||
msvctest
|
||||
|
||||
Assumes that libpng DLLs and LIBs are in ..\..\msvc\win32\libpng
|
||||
Assumes that zlib DLLs and LIBs are in ..\..\msvc\win32\zlib
|
||||
|
||||
To build:
|
||||
|
||||
1) On the main menu Select "Build|Set Active configuration".
|
||||
Choose the configuration that corresponds to the library you want to test.
|
||||
This library must have been built using the libpng MS project located in
|
||||
the "mscv" subdirectory.
|
||||
|
||||
2) Select "Build|Clean"
|
||||
|
||||
3) Select "Build|Rebuild All"
|
||||
|
||||
4) The test results should appear in the "Build" pane of the Output Window.
|
||||
|
||||
|
||||
Simon-Pierre Cadieux
|
||||
Methodex Computer Systems Inc.
|
||||
247
contrib/msvctest/msvctest.dsp
Normal file
247
contrib/msvctest/msvctest.dsp
Normal file
@@ -0,0 +1,247 @@
|
||||
# Microsoft Developer Studio Project File - Name="msvctest" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=msvctest - Win32 Debug DLL
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "msvctest.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "msvctest.mak" CFG="msvctest - Win32 Debug DLL"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "msvctest - Win32 DLL" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "msvctest - Win32 Debug DLL" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "msvctest - Win32 ASM DLL" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "msvctest - Win32 Debug ASM DLL" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "msvctest - Win32 LIB" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "msvctest - Win32 Debug LIB" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "msvctest - Win32 DLL"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "dll"
|
||||
# PROP BASE Intermediate_Dir "dll"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "dll"
|
||||
# PROP Intermediate_Dir "dll"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /O1 /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /O1 /I "..\..\..\zlib" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "PNG_DLL" /D "PNG_NO_STDIO" /D "PNG_NO_GLOBAL_ARRAYS" /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 ..\..\msvc\win32\libpng\dll\libpng1.lib /nologo /subsystem:console /machine:I386
|
||||
# Begin Special Build Tool
|
||||
OutDir=.\dll
|
||||
SOURCE="$(InputPath)"
|
||||
PostBuild_Desc=[Run Test]
|
||||
PostBuild_Cmds=set path=..\..\msvc\win32\libpng\dll;..\..\msvc\win32\zlib\dll; $(outdir)\msvctest.exe ..\..\pngtest.png
|
||||
# End Special Build Tool
|
||||
|
||||
!ELSEIF "$(CFG)" == "msvctest - Win32 Debug DLL"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "dll_dbg"
|
||||
# PROP BASE Intermediate_Dir "dll_dbg"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "dll_dbg"
|
||||
# PROP Intermediate_Dir "dll_dbg"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Zi /Od /I "..\..\..\zlib" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "PNG_DLL" /D "PNG_NO_STDIO" /D "PNG_NO_GLOBAL_ARRAYS" /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 ..\..\msvc\win32\libpng\dll_dbg\libpng1d.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# Begin Special Build Tool
|
||||
OutDir=.\dll_dbg
|
||||
SOURCE="$(InputPath)"
|
||||
PostBuild_Desc=[Run Test]
|
||||
PostBuild_Cmds=set path=..\..\msvc\win32\libpng\dll_dbg;..\..\msvc\win32\zlib\dll_dbg; $(outdir)\msvctest.exe ..\..\pngtest.png
|
||||
# End Special Build Tool
|
||||
|
||||
!ELSEIF "$(CFG)" == "msvctest - Win32 ASM DLL"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "dll_asm"
|
||||
# PROP BASE Intermediate_Dir "dll_asm"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "dll_asm"
|
||||
# PROP Intermediate_Dir "dll_asm"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /O1 /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /O1 /I "..\..\..\zlib" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "PNG_DLL" /D "PNG_NO_STDIO" /D "PNG_NO_GLOBAL_ARRAYS" /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 ..\..\msvc\win32\libpng\dll_asm\libpng1a.lib /nologo /subsystem:console /machine:I386
|
||||
# Begin Special Build Tool
|
||||
OutDir=.\dll_asm
|
||||
SOURCE="$(InputPath)"
|
||||
PostBuild_Desc=[Run Test]
|
||||
PostBuild_Cmds=set path=..\..\msvc\win32\libpng\dll_asm;..\..\msvc\win32\zlib\dll_asm; $(outdir)\msvctest.exe ..\..\pngtest.png
|
||||
# End Special Build Tool
|
||||
|
||||
!ELSEIF "$(CFG)" == "msvctest - Win32 Debug ASM DLL"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "dll_dbga"
|
||||
# PROP BASE Intermediate_Dir "dll_dbga"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "dll_dbga"
|
||||
# PROP Intermediate_Dir "dll_dbga"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Zi /Od /I "..\..\..\zlib" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "PNG_DLL" /D "PNG_NO_STDIO" /D "PNG_NO_GLOBAL_ARRAYS" /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 ..\..\msvc\win32\libpng\dll_dbga\libpng1b.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# Begin Special Build Tool
|
||||
OutDir=.\dll_dbga
|
||||
SOURCE="$(InputPath)"
|
||||
PostBuild_Desc=[Run Test]
|
||||
PostBuild_Cmds=set path=..\..\msvc\win32\libpng\dll_dbga;..\..\msvc\win32\zlib\dll_dbga; $(outdir)\msvctest.exe ..\..\pngtest.png
|
||||
# End Special Build Tool
|
||||
|
||||
!ELSEIF "$(CFG)" == "msvctest - Win32 LIB"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "lib"
|
||||
# PROP BASE Intermediate_Dir "lib"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "lib"
|
||||
# PROP Intermediate_Dir "lib"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /O1 /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /FD /c
|
||||
# ADD CPP /nologo /W3 /O1 /I "..\..\..\zlib" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 ..\..\msvc\win32\libpng\lib\libpng.lib /nologo /subsystem:console /machine:I386
|
||||
# Begin Special Build Tool
|
||||
OutDir=.\lib
|
||||
SOURCE="$(InputPath)"
|
||||
PostBuild_Desc=[Run Test]
|
||||
PostBuild_Cmds=$(outdir)\msvctest.exe ..\..\pngtest.png
|
||||
# End Special Build Tool
|
||||
|
||||
!ELSEIF "$(CFG)" == "msvctest - Win32 Debug LIB"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "lib_dbg"
|
||||
# PROP BASE Intermediate_Dir "lib_dbg"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "lib_dbg"
|
||||
# PROP Intermediate_Dir "lib_dbg"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /W3 /Zi /Od /I "..\..\..\zlib" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 ..\..\msvc\win32\libpng\lib_dbg\libpng.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# Begin Special Build Tool
|
||||
OutDir=.\lib_dbg
|
||||
SOURCE="$(InputPath)"
|
||||
PostBuild_Desc=[Run Test]
|
||||
PostBuild_Cmds=$(outdir)\msvctest.exe ..\..\pngtest.png
|
||||
# End Special Build Tool
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "msvctest - Win32 DLL"
|
||||
# Name "msvctest - Win32 Debug DLL"
|
||||
# Name "msvctest - Win32 ASM DLL"
|
||||
# Name "msvctest - Win32 Debug ASM DLL"
|
||||
# Name "msvctest - Win32 LIB"
|
||||
# Name "msvctest - Win32 Debug LIB"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\pngtest.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\README.txt
|
||||
# PROP Exclude_From_Build 1
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
29
contrib/msvctest/msvctest.dsw
Normal file
29
contrib/msvctest/msvctest.dsw
Normal file
@@ -0,0 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "msvctest"=.\msvctest.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
439
contrib/visupng/PngFile.c
Normal file
439
contrib/visupng/PngFile.c
Normal file
@@ -0,0 +1,439 @@
|
||||
//-------------------------------------
|
||||
// PNGFILE.C -- Image File Functions
|
||||
//-------------------------------------
|
||||
|
||||
// Copyright 2000, Willem van Schaik. For conditions of distribution and
|
||||
// use, see the copyright/license/disclaimer notice in png.h
|
||||
|
||||
#include <windows.h>
|
||||
#include <commdlg.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "png.h"
|
||||
#include "pngfile.h"
|
||||
#include "cexcept.h"
|
||||
|
||||
define_exception_type(const char *);
|
||||
extern struct exception_context the_exception_context[1];
|
||||
struct exception_context the_exception_context[1];
|
||||
png_const_charp msg;
|
||||
|
||||
static OPENFILENAME ofn;
|
||||
|
||||
static png_structp png_ptr = NULL;
|
||||
static png_infop info_ptr = NULL;
|
||||
|
||||
|
||||
// cexcept interface
|
||||
|
||||
static void
|
||||
png_cexcept_error(png_structp png_ptr, png_const_charp msg)
|
||||
{
|
||||
if(png_ptr)
|
||||
;
|
||||
#ifndef PNG_NO_CONSOLE_IO
|
||||
fprintf(stderr, "libpng error: %s\n", msg);
|
||||
#endif
|
||||
{
|
||||
Throw msg;
|
||||
}
|
||||
}
|
||||
|
||||
// Windows open-file functions
|
||||
|
||||
void PngFileInitialize (HWND hwnd)
|
||||
{
|
||||
static TCHAR szFilter[] = TEXT ("PNG Files (*.PNG)\0*.png\0")
|
||||
TEXT ("All Files (*.*)\0*.*\0\0");
|
||||
|
||||
ofn.lStructSize = sizeof (OPENFILENAME);
|
||||
ofn.hwndOwner = hwnd;
|
||||
ofn.hInstance = NULL;
|
||||
ofn.lpstrFilter = szFilter;
|
||||
ofn.lpstrCustomFilter = NULL;
|
||||
ofn.nMaxCustFilter = 0;
|
||||
ofn.nFilterIndex = 0;
|
||||
ofn.lpstrFile = NULL; // Set in Open and Close functions
|
||||
ofn.nMaxFile = MAX_PATH;
|
||||
ofn.lpstrFileTitle = NULL; // Set in Open and Close functions
|
||||
ofn.nMaxFileTitle = MAX_PATH;
|
||||
ofn.lpstrInitialDir = NULL;
|
||||
ofn.lpstrTitle = NULL;
|
||||
ofn.Flags = 0; // Set in Open and Close functions
|
||||
ofn.nFileOffset = 0;
|
||||
ofn.nFileExtension = 0;
|
||||
ofn.lpstrDefExt = TEXT ("png");
|
||||
ofn.lCustData = 0;
|
||||
ofn.lpfnHook = NULL;
|
||||
ofn.lpTemplateName = NULL;
|
||||
}
|
||||
|
||||
BOOL PngFileOpenDlg (HWND hwnd, PTSTR pstrFileName, PTSTR pstrTitleName)
|
||||
{
|
||||
ofn.hwndOwner = hwnd;
|
||||
ofn.lpstrFile = pstrFileName;
|
||||
ofn.lpstrFileTitle = pstrTitleName;
|
||||
ofn.Flags = OFN_HIDEREADONLY;
|
||||
|
||||
return GetOpenFileName (&ofn);
|
||||
}
|
||||
|
||||
BOOL PngFileSaveDlg (HWND hwnd, PTSTR pstrFileName, PTSTR pstrTitleName)
|
||||
{
|
||||
ofn.hwndOwner = hwnd;
|
||||
ofn.lpstrFile = pstrFileName;
|
||||
ofn.lpstrFileTitle = pstrTitleName;
|
||||
ofn.Flags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
|
||||
|
||||
return GetSaveFileName (&ofn);
|
||||
}
|
||||
|
||||
// PNG image handler functions
|
||||
|
||||
BOOL PngLoadImage (PTSTR pstrFileName, png_byte **ppbImageData,
|
||||
int *piWidth, int *piHeight, int *piChannels, png_color *pBkgColor)
|
||||
{
|
||||
static FILE *pfFile;
|
||||
png_byte pbSig[8];
|
||||
int iBitDepth;
|
||||
int iColorType;
|
||||
double dGamma;
|
||||
png_color_16 *pBackground;
|
||||
png_uint_32 ulChannels;
|
||||
png_uint_32 ulRowBytes;
|
||||
png_byte *pbImageData = *ppbImageData;
|
||||
static png_byte **ppbRowPointers = NULL;
|
||||
int i;
|
||||
|
||||
// open the PNG input file
|
||||
|
||||
if (!pstrFileName)
|
||||
{
|
||||
*ppbImageData = pbImageData = NULL;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!(pfFile = fopen(pstrFileName, "rb")))
|
||||
{
|
||||
*ppbImageData = pbImageData = NULL;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// first check the eight byte PNG signature
|
||||
|
||||
fread(pbSig, 1, 8, pfFile);
|
||||
if (!png_check_sig(pbSig, 8))
|
||||
{
|
||||
*ppbImageData = pbImageData = NULL;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// create the two png(-info) structures
|
||||
|
||||
png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL,
|
||||
(png_error_ptr)png_cexcept_error, (png_error_ptr)NULL);
|
||||
if (!png_ptr)
|
||||
{
|
||||
*ppbImageData = pbImageData = NULL;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
info_ptr = png_create_info_struct(png_ptr);
|
||||
if (!info_ptr)
|
||||
{
|
||||
png_destroy_read_struct(&png_ptr, NULL, NULL);
|
||||
*ppbImageData = pbImageData = NULL;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Try
|
||||
{
|
||||
|
||||
// initialize the png structure
|
||||
|
||||
#if !defined(PNG_NO_STDIO)
|
||||
png_init_io(png_ptr, pfFile);
|
||||
#else
|
||||
png_set_read_fn(png_ptr, (png_voidp)pfFile, png_read_data);
|
||||
#endif
|
||||
|
||||
png_set_sig_bytes(png_ptr, 8);
|
||||
|
||||
// read all PNG info up to image data
|
||||
|
||||
png_read_info(png_ptr, info_ptr);
|
||||
|
||||
// get width, height, bit-depth and color-type
|
||||
|
||||
png_get_IHDR(png_ptr, info_ptr, piWidth, piHeight, &iBitDepth,
|
||||
&iColorType, NULL, NULL, NULL);
|
||||
|
||||
// expand images of all color-type and bit-depth to 3x8 bit RGB images
|
||||
// let the library process things like alpha, transparency, background
|
||||
|
||||
if (iBitDepth == 16)
|
||||
png_set_strip_16(png_ptr);
|
||||
if (iColorType == PNG_COLOR_TYPE_PALETTE)
|
||||
png_set_expand(png_ptr);
|
||||
if (iBitDepth < 8)
|
||||
png_set_expand(png_ptr);
|
||||
if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS))
|
||||
png_set_expand(png_ptr);
|
||||
if (iColorType == PNG_COLOR_TYPE_GRAY ||
|
||||
iColorType == PNG_COLOR_TYPE_GRAY_ALPHA)
|
||||
png_set_gray_to_rgb(png_ptr);
|
||||
|
||||
// set the background color to draw transparent and alpha images over.
|
||||
if (png_get_bKGD(png_ptr, info_ptr, &pBackground))
|
||||
{
|
||||
png_set_background(png_ptr, pBackground, PNG_BACKGROUND_GAMMA_FILE, 1, 1.0);
|
||||
pBkgColor->red = (byte) pBackground->red;
|
||||
pBkgColor->green = (byte) pBackground->green;
|
||||
pBkgColor->blue = (byte) pBackground->blue;
|
||||
}
|
||||
else
|
||||
{
|
||||
pBkgColor = NULL;
|
||||
}
|
||||
|
||||
// if required set gamma conversion
|
||||
if (png_get_gAMA(png_ptr, info_ptr, &dGamma))
|
||||
png_set_gamma(png_ptr, (double) 2.2, dGamma);
|
||||
|
||||
// after the transformations have been registered update info_ptr data
|
||||
|
||||
png_read_update_info(png_ptr, info_ptr);
|
||||
|
||||
// get again width, height and the new bit-depth and color-type
|
||||
|
||||
png_get_IHDR(png_ptr, info_ptr, piWidth, piHeight, &iBitDepth,
|
||||
&iColorType, NULL, NULL, NULL);
|
||||
|
||||
|
||||
// row_bytes is the width x number of channels
|
||||
|
||||
ulRowBytes = png_get_rowbytes(png_ptr, info_ptr);
|
||||
ulChannels = png_get_channels(png_ptr, info_ptr);
|
||||
|
||||
*piChannels = ulChannels;
|
||||
|
||||
// now we can allocate memory to store the image
|
||||
|
||||
if (pbImageData)
|
||||
{
|
||||
free (pbImageData);
|
||||
pbImageData = NULL;
|
||||
}
|
||||
if ((pbImageData = (png_byte *) malloc(ulRowBytes * (*piHeight)
|
||||
* sizeof(png_byte))) == NULL)
|
||||
{
|
||||
png_error(png_ptr, "Visual PNG: out of memory");
|
||||
}
|
||||
*ppbImageData = pbImageData;
|
||||
|
||||
// and allocate memory for an array of row-pointers
|
||||
|
||||
if ((ppbRowPointers = (png_bytepp) malloc((*piHeight)
|
||||
* sizeof(png_bytep))) == NULL)
|
||||
{
|
||||
png_error(png_ptr, "Visual PNG: out of memory");
|
||||
}
|
||||
|
||||
// set the individual row-pointers to point at the correct offsets
|
||||
|
||||
for (i = 0; i < (*piHeight); i++)
|
||||
ppbRowPointers[i] = pbImageData + i * ulRowBytes;
|
||||
|
||||
// now we can go ahead and just read the whole image
|
||||
|
||||
png_read_image(png_ptr, ppbRowPointers);
|
||||
|
||||
// read the additional chunks in the PNG file (not really needed)
|
||||
|
||||
png_read_end(png_ptr, NULL);
|
||||
|
||||
// and we're done
|
||||
|
||||
free (ppbRowPointers);
|
||||
ppbRowPointers = NULL;
|
||||
|
||||
// yepp, done
|
||||
}
|
||||
|
||||
Catch (msg)
|
||||
{
|
||||
png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
|
||||
|
||||
*ppbImageData = pbImageData = NULL;
|
||||
|
||||
if(ppbRowPointers)
|
||||
free (ppbRowPointers);
|
||||
|
||||
fclose(pfFile);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
fclose (pfFile);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
BOOL PngSaveImage (PTSTR pstrFileName, png_byte *pDiData,
|
||||
int iWidth, int iHeight, png_color bkgColor)
|
||||
{
|
||||
const int ciBitDepth = 8;
|
||||
const int ciChannels = 3;
|
||||
|
||||
static FILE *pfFile;
|
||||
png_uint_32 ulRowBytes;
|
||||
static png_byte **ppbRowPointers = NULL;
|
||||
int i;
|
||||
|
||||
// open the PNG output file
|
||||
|
||||
if (!pstrFileName)
|
||||
return FALSE;
|
||||
|
||||
if (!(pfFile = fopen(pstrFileName, "wb")))
|
||||
return FALSE;
|
||||
|
||||
// prepare the standard PNG structures
|
||||
|
||||
png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL,
|
||||
(png_error_ptr)png_cexcept_error, (png_error_ptr)NULL);
|
||||
if (!png_ptr)
|
||||
{
|
||||
fclose(pfFile);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
info_ptr = png_create_info_struct(png_ptr);
|
||||
if (!info_ptr) {
|
||||
fclose(pfFile);
|
||||
png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Try
|
||||
{
|
||||
// initialize the png structure
|
||||
|
||||
#if !defined(PNG_NO_STDIO)
|
||||
png_init_io(png_ptr, pfFile);
|
||||
#else
|
||||
png_set_write_fn(png_ptr, (png_voidp)pfFile, png_write_data, png_flush);
|
||||
#endif
|
||||
|
||||
// we're going to write a very simple 3x8 bit RGB image
|
||||
|
||||
png_set_IHDR(png_ptr, info_ptr, iWidth, iHeight, ciBitDepth,
|
||||
PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_BASE,
|
||||
PNG_FILTER_TYPE_BASE);
|
||||
|
||||
// write the file header information
|
||||
|
||||
png_write_info(png_ptr, info_ptr);
|
||||
|
||||
// swap the BGR pixels in the DiData structure to RGB
|
||||
|
||||
png_set_bgr(png_ptr);
|
||||
|
||||
// row_bytes is the width x number of channels
|
||||
|
||||
ulRowBytes = iWidth * ciChannels;
|
||||
|
||||
// we can allocate memory for an array of row-pointers
|
||||
|
||||
if ((ppbRowPointers = (png_bytepp) malloc(iHeight * sizeof(png_bytep))) == NULL)
|
||||
Throw "Visualpng: Out of memory";
|
||||
|
||||
// set the individual row-pointers to point at the correct offsets
|
||||
|
||||
for (i = 0; i < iHeight; i++)
|
||||
ppbRowPointers[i] = pDiData + i * (((ulRowBytes + 3) >> 2) << 2);
|
||||
|
||||
// write out the entire image data in one call
|
||||
|
||||
png_write_image (png_ptr, ppbRowPointers);
|
||||
|
||||
// write the additional chunks to the PNG file (not really needed)
|
||||
|
||||
png_write_end(png_ptr, info_ptr);
|
||||
|
||||
// and we're done
|
||||
|
||||
free (ppbRowPointers);
|
||||
ppbRowPointers = NULL;
|
||||
|
||||
// clean up after the write, and free any memory allocated
|
||||
|
||||
png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
|
||||
|
||||
// yepp, done
|
||||
}
|
||||
|
||||
Catch (msg)
|
||||
{
|
||||
png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
|
||||
|
||||
if(ppbRowPointers)
|
||||
free (ppbRowPointers);
|
||||
|
||||
fclose(pfFile);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
fclose (pfFile);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#ifdef PNG_NO_STDIO
|
||||
|
||||
static void
|
||||
png_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||
{
|
||||
png_size_t check;
|
||||
|
||||
/* fread() returns 0 on error, so it is OK to store this in a png_size_t
|
||||
* instead of an int, which is what fread() actually returns.
|
||||
*/
|
||||
check = (png_size_t)fread(data, (png_size_t)1, length,
|
||||
(FILE *)png_ptr->io_ptr);
|
||||
|
||||
if (check != length)
|
||||
{
|
||||
png_error(png_ptr, "Read Error");
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
png_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||
{
|
||||
png_uint_32 check;
|
||||
|
||||
check = fwrite(data, 1, length, (FILE *)(png_ptr->io_ptr));
|
||||
if (check != length)
|
||||
{
|
||||
png_error(png_ptr, "Write Error");
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
png_flush(png_structp png_ptr)
|
||||
{
|
||||
FILE *io_ptr;
|
||||
io_ptr = (FILE *)CVT_PTR((png_ptr->io_ptr));
|
||||
if (io_ptr != NULL)
|
||||
fflush(io_ptr);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
//-----------------
|
||||
// end of source
|
||||
//-----------------
|
||||
27
contrib/visupng/PngFile.h
Normal file
27
contrib/visupng/PngFile.h
Normal file
@@ -0,0 +1,27 @@
|
||||
//------------------------------------------
|
||||
// PNGFILE.H -- Header File for pngfile.c
|
||||
//------------------------------------------
|
||||
|
||||
// Copyright 2000, Willem van Schaik. For conditions of distribution and
|
||||
// use, see the copyright/license/disclaimer notice in png.h
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <windows.h>
|
||||
|
||||
void PngFileInitialize (HWND hwnd) ;
|
||||
BOOL PngFileOpenDlg (HWND hwnd, PTSTR pstrFileName, PTSTR pstrTitleName) ;
|
||||
BOOL PngFileSaveDlg (HWND hwnd, PTSTR pstrFileName, PTSTR pstrTitleName) ;
|
||||
|
||||
BOOL PngLoadImage (PTSTR pstrFileName, png_byte **ppbImageData,
|
||||
int *piWidth, int *piHeight, int *piChannels, png_color *pBkgColor);
|
||||
BOOL PngSaveImage (PTSTR pstrFileName, png_byte *pDiData,
|
||||
int iWidth, int iHeight, png_color BkgColor);
|
||||
|
||||
#if defined(PNG_NO_STDIO)
|
||||
static void png_read_data(png_structp png_ptr, png_bytep data, png_size_t length);
|
||||
static void png_write_data(png_structp png_ptr, png_bytep data, png_size_t length);
|
||||
static void png_flush(png_structp png_ptr);
|
||||
#endif
|
||||
|
||||
58
contrib/visupng/README.txt
Normal file
58
contrib/visupng/README.txt
Normal file
@@ -0,0 +1,58 @@
|
||||
Microsoft Developer Studio Build File, Format Version 6.00 for VisualPng
|
||||
------------------------------------------------------------------------
|
||||
|
||||
Copyright 2000, Willem van Schaik. For conditions of distribution and
|
||||
use, see the copyright/license/disclaimer notice in png.h
|
||||
|
||||
As a PNG .dll demo VisualPng is finished. More features would only hinder
|
||||
the program's objective. However, further extensions (like support for other
|
||||
graphics formats) are in development. To get these, or for pre-compiled
|
||||
binaries, go to "http://www.schaik.com/png/visualpng.html".
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
Assumes that
|
||||
|
||||
libpng DLLs and LIBs are in ..\..\msvc\win32\libpng
|
||||
zlib DLLs and LIBs are in ..\..\msvc\win32\zlib
|
||||
libpng header files are in ..\..\..\libpng
|
||||
zlib header files are in ..\..\..\zlib
|
||||
the pngsuite images are in ..\pngsuite
|
||||
|
||||
To build:
|
||||
|
||||
1) On the main menu Select "Build|Set Active configuration".
|
||||
Choose the configuration that corresponds to the library you want to test.
|
||||
This library must have been built using the libpng MS project located in
|
||||
the "..\..\mscv" subdirectory.
|
||||
|
||||
2) Select "Build|Clean"
|
||||
|
||||
3) Select "Build|Rebuild All"
|
||||
|
||||
4) After compiling and linking VisualPng will be started to view an image
|
||||
from the PngSuite directory. Press Ctrl-N (and Ctrl-V) for other images.
|
||||
|
||||
|
||||
To install:
|
||||
|
||||
When distributing VisualPng (or a further development) the following options
|
||||
are available:
|
||||
|
||||
1) Build the program with the configuration "Win32 LIB" and you only need to
|
||||
include the executable from the ./lib directory in your distribution.
|
||||
|
||||
2) Build the program with the configuration "Win32 DLL" and you need to put
|
||||
in your distribution the executable from the ./dll directory and the dll's
|
||||
libpng1.dll, zlib.dll and msvcrt.dll. These need to be in the user's PATH.
|
||||
|
||||
|
||||
Willem van Schaik
|
||||
Calgary, June 6th 2000
|
||||
|
||||
P.S. VisualPng was written based on preliminary work of:
|
||||
|
||||
- Simon-Pierre Cadieux
|
||||
- Glenn Randers-Pehrson
|
||||
- Greg Roelofs
|
||||
|
||||
961
contrib/visupng/VisualPng.c
Normal file
961
contrib/visupng/VisualPng.c
Normal file
@@ -0,0 +1,961 @@
|
||||
//------------------------------------
|
||||
// VisualPng.C -- Shows a PNG image
|
||||
//------------------------------------
|
||||
|
||||
// Copyright 2000, Willem van Schaik. For conditions of distribution and
|
||||
// use, see the copyright/license/disclaimer notice in png.h
|
||||
|
||||
// switches
|
||||
|
||||
// defines
|
||||
|
||||
#define PROGNAME "VisualPng"
|
||||
#define LONGNAME "Win32 Viewer for PNG-files"
|
||||
#define VERSION "1.0 of 2000 June 07"
|
||||
|
||||
// constants
|
||||
|
||||
#define MARGIN 8
|
||||
|
||||
// standard includes
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <windows.h>
|
||||
|
||||
// application includes
|
||||
|
||||
#include "png.h"
|
||||
#include "pngfile.h"
|
||||
#include "resource.h"
|
||||
|
||||
// macros
|
||||
|
||||
// function prototypes
|
||||
|
||||
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
|
||||
BOOL CALLBACK AboutDlgProc (HWND, UINT, WPARAM, LPARAM) ;
|
||||
|
||||
BOOL CenterAbout (HWND hwndChild, HWND hwndParent);
|
||||
|
||||
BOOL BuildPngList (PTSTR pstrPathName, TCHAR **ppFileList, int *pFileCount,
|
||||
int *pFileIndex);
|
||||
|
||||
BOOL SearchPngList (TCHAR *pFileList, int FileCount, int *pFileIndex,
|
||||
PTSTR pstrPrevName, PTSTR pstrNextName);
|
||||
|
||||
BOOL LoadImageFile(HWND hwnd, PTSTR pstrPathName,
|
||||
png_byte **ppbImage, int *pxImgSize, int *pyImgSize, int *piChannels,
|
||||
png_color *pBkgColor);
|
||||
|
||||
BOOL DisplayImage (HWND hwnd, BYTE **ppDib,
|
||||
BYTE **ppDiData, int cxWinSize, int cyWinSize,
|
||||
BYTE *pbImage, int cxImgSize, int cyImgSize, int cImgChannels,
|
||||
BOOL bStretched);
|
||||
|
||||
BOOL InitBitmap (
|
||||
BYTE *pDiData, int cxWinSize, int cyWinSize);
|
||||
|
||||
BOOL FillBitmap (
|
||||
BYTE *pDiData, int cxWinSize, int cyWinSize,
|
||||
BYTE *pbImage, int cxImgSize, int cyImgSize, int cImgChannels,
|
||||
BOOL bStretched);
|
||||
|
||||
// a few global variables
|
||||
|
||||
static char *szProgName = PROGNAME;
|
||||
static char *szAppName = LONGNAME;
|
||||
static char *szIconName = PROGNAME;
|
||||
static char szCmdFileName [MAX_PATH];
|
||||
|
||||
// MAIN routine
|
||||
|
||||
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
|
||||
PSTR szCmdLine, int iCmdShow)
|
||||
{
|
||||
HACCEL hAccel;
|
||||
HWND hwnd;
|
||||
MSG msg;
|
||||
WNDCLASS wndclass;
|
||||
int ixBorders, iyBorders;
|
||||
|
||||
wndclass.style = CS_HREDRAW | CS_VREDRAW;
|
||||
wndclass.lpfnWndProc = WndProc;
|
||||
wndclass.cbClsExtra = 0;
|
||||
wndclass.cbWndExtra = 0;
|
||||
wndclass.hInstance = hInstance;
|
||||
wndclass.hIcon = LoadIcon (hInstance, szIconName) ;
|
||||
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);
|
||||
wndclass.hbrBackground = NULL; // (HBRUSH) GetStockObject (GRAY_BRUSH);
|
||||
wndclass.lpszMenuName = szProgName;
|
||||
wndclass.lpszClassName = szProgName;
|
||||
|
||||
if (!RegisterClass (&wndclass))
|
||||
{
|
||||
MessageBox (NULL, TEXT ("Error: this program requires Windows NT!"),
|
||||
szProgName, MB_ICONERROR);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// if filename given on commandline, store it
|
||||
if ((szCmdLine != NULL) && (*szCmdLine != '\0'))
|
||||
if (szCmdLine[0] == '"')
|
||||
strncpy (szCmdFileName, szCmdLine + 1, strlen(szCmdLine) - 2);
|
||||
else
|
||||
strcpy (szCmdFileName, szCmdLine);
|
||||
else
|
||||
strcpy (szCmdFileName, "");
|
||||
|
||||
// calculate size of window-borders
|
||||
ixBorders = 2 * (GetSystemMetrics (SM_CXBORDER) +
|
||||
GetSystemMetrics (SM_CXDLGFRAME));
|
||||
iyBorders = 2 * (GetSystemMetrics (SM_CYBORDER) +
|
||||
GetSystemMetrics (SM_CYDLGFRAME)) +
|
||||
GetSystemMetrics (SM_CYCAPTION) +
|
||||
GetSystemMetrics (SM_CYMENUSIZE) +
|
||||
1; /* WvS: don't ask me why? */
|
||||
|
||||
hwnd = CreateWindow (szProgName, szAppName,
|
||||
WS_OVERLAPPEDWINDOW,
|
||||
CW_USEDEFAULT, CW_USEDEFAULT,
|
||||
512 + 2 * MARGIN + ixBorders, 384 + 2 * MARGIN + iyBorders,
|
||||
// CW_USEDEFAULT, CW_USEDEFAULT,
|
||||
NULL, NULL, hInstance, NULL);
|
||||
|
||||
ShowWindow (hwnd, iCmdShow);
|
||||
UpdateWindow (hwnd);
|
||||
|
||||
hAccel = LoadAccelerators (hInstance, szProgName);
|
||||
|
||||
while (GetMessage (&msg, NULL, 0, 0))
|
||||
{
|
||||
if (!TranslateAccelerator (hwnd, hAccel, &msg))
|
||||
{
|
||||
TranslateMessage (&msg);
|
||||
DispatchMessage (&msg);
|
||||
}
|
||||
}
|
||||
return msg.wParam;
|
||||
}
|
||||
|
||||
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam,
|
||||
LPARAM lParam)
|
||||
{
|
||||
static HINSTANCE hInstance ;
|
||||
static HDC hdc;
|
||||
static PAINTSTRUCT ps;
|
||||
static HMENU hMenu;
|
||||
|
||||
static BITMAPFILEHEADER *pbmfh;
|
||||
static BITMAPINFOHEADER *pbmih;
|
||||
static BYTE *pbImage;
|
||||
static int cxWinSize, cyWinSize;
|
||||
static int cxImgSize, cyImgSize;
|
||||
static int cImgChannels;
|
||||
static png_color bkgColor = {127, 127, 127};
|
||||
|
||||
static BOOL bStretched = TRUE;
|
||||
|
||||
static BYTE *pDib = NULL;
|
||||
static BYTE *pDiData = NULL;
|
||||
|
||||
static TCHAR szImgPathName [MAX_PATH];
|
||||
static TCHAR szTitleName [MAX_PATH];
|
||||
|
||||
static TCHAR *pPngFileList = NULL;
|
||||
static int iPngFileCount;
|
||||
static int iPngFileIndex;
|
||||
|
||||
BOOL bOk;
|
||||
|
||||
switch (message)
|
||||
{
|
||||
case WM_CREATE:
|
||||
hInstance = ((LPCREATESTRUCT) lParam)->hInstance ;
|
||||
PngFileInitialize (hwnd);
|
||||
|
||||
strcpy (szImgPathName, "");
|
||||
|
||||
// in case we process file given on command-line
|
||||
|
||||
if (szCmdFileName[0] != '\0')
|
||||
{
|
||||
strcpy (szImgPathName, szCmdFileName);
|
||||
|
||||
// read the other png-files in the directory for later
|
||||
// next/previous commands
|
||||
|
||||
BuildPngList (szImgPathName, &pPngFileList, &iPngFileCount,
|
||||
&iPngFileIndex);
|
||||
|
||||
// load the image from file
|
||||
|
||||
if (!LoadImageFile (hwnd, szImgPathName,
|
||||
&pbImage, &cxImgSize, &cyImgSize, &cImgChannels, &bkgColor))
|
||||
return 0;
|
||||
|
||||
// invalidate the client area for later update
|
||||
|
||||
InvalidateRect (hwnd, NULL, TRUE);
|
||||
|
||||
// display the PNG into the DIBitmap
|
||||
|
||||
DisplayImage (hwnd, &pDib, &pDiData, cxWinSize, cyWinSize,
|
||||
pbImage, cxImgSize, cyImgSize, cImgChannels, bStretched);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
case WM_SIZE:
|
||||
cxWinSize = LOWORD (lParam);
|
||||
cyWinSize = HIWORD (lParam);
|
||||
|
||||
// invalidate the client area for later update
|
||||
|
||||
InvalidateRect (hwnd, NULL, TRUE);
|
||||
|
||||
// display the PNG into the DIBitmap
|
||||
|
||||
DisplayImage (hwnd, &pDib, &pDiData, cxWinSize, cyWinSize,
|
||||
pbImage, cxImgSize, cyImgSize, cImgChannels, bStretched);
|
||||
|
||||
return 0;
|
||||
|
||||
case WM_INITMENUPOPUP:
|
||||
hMenu = GetMenu (hwnd);
|
||||
|
||||
if (pbImage)
|
||||
EnableMenuItem (hMenu, IDM_FILE_SAVE, MF_ENABLED);
|
||||
else
|
||||
EnableMenuItem (hMenu, IDM_FILE_SAVE, MF_GRAYED);
|
||||
|
||||
return 0;
|
||||
|
||||
case WM_COMMAND:
|
||||
hMenu = GetMenu (hwnd);
|
||||
|
||||
switch (LOWORD (wParam))
|
||||
{
|
||||
case IDM_FILE_OPEN:
|
||||
|
||||
// show the File Open dialog box
|
||||
|
||||
if (!PngFileOpenDlg (hwnd, szImgPathName, szTitleName))
|
||||
return 0;
|
||||
|
||||
// read the other png-files in the directory for later
|
||||
// next/previous commands
|
||||
|
||||
BuildPngList (szImgPathName, &pPngFileList, &iPngFileCount,
|
||||
&iPngFileIndex);
|
||||
|
||||
// load the image from file
|
||||
|
||||
if (!LoadImageFile (hwnd, szImgPathName,
|
||||
&pbImage, &cxImgSize, &cyImgSize, &cImgChannels, &bkgColor))
|
||||
return 0;
|
||||
|
||||
// invalidate the client area for later update
|
||||
|
||||
InvalidateRect (hwnd, NULL, TRUE);
|
||||
|
||||
// display the PNG into the DIBitmap
|
||||
|
||||
DisplayImage (hwnd, &pDib, &pDiData, cxWinSize, cyWinSize,
|
||||
pbImage, cxImgSize, cyImgSize, cImgChannels, bStretched);
|
||||
|
||||
return 0;
|
||||
|
||||
case IDM_FILE_SAVE:
|
||||
|
||||
// show the File Save dialog box
|
||||
|
||||
if (!PngFileSaveDlg (hwnd, szImgPathName, szTitleName))
|
||||
return 0;
|
||||
|
||||
// save the PNG to a disk file
|
||||
|
||||
SetCursor (LoadCursor (NULL, IDC_WAIT));
|
||||
ShowCursor (TRUE);
|
||||
|
||||
bOk = PngSaveImage (szImgPathName, pDiData, cxWinSize, cyWinSize,
|
||||
bkgColor);
|
||||
|
||||
ShowCursor (FALSE);
|
||||
SetCursor (LoadCursor (NULL, IDC_ARROW));
|
||||
|
||||
if (!bOk)
|
||||
MessageBox (hwnd, TEXT ("Error in saving the PNG image"),
|
||||
szProgName, MB_ICONEXCLAMATION | MB_OK);
|
||||
return 0;
|
||||
|
||||
case IDM_FILE_NEXT:
|
||||
|
||||
// read next entry in the directory
|
||||
|
||||
if (SearchPngList (pPngFileList, iPngFileCount, &iPngFileIndex,
|
||||
NULL, szImgPathName))
|
||||
{
|
||||
if (strcmp (szImgPathName, "") == 0)
|
||||
return 0;
|
||||
|
||||
// load the image from file
|
||||
|
||||
if (!LoadImageFile (hwnd, szImgPathName, &pbImage,
|
||||
&cxImgSize, &cyImgSize, &cImgChannels, &bkgColor))
|
||||
return 0;
|
||||
|
||||
// invalidate the client area for later update
|
||||
|
||||
InvalidateRect (hwnd, NULL, TRUE);
|
||||
|
||||
// display the PNG into the DIBitmap
|
||||
|
||||
DisplayImage (hwnd, &pDib, &pDiData, cxWinSize, cyWinSize,
|
||||
pbImage, cxImgSize, cyImgSize, cImgChannels, bStretched);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
case IDM_FILE_PREVIOUS:
|
||||
|
||||
// read previous entry in the directory
|
||||
|
||||
if (SearchPngList (pPngFileList, iPngFileCount, &iPngFileIndex,
|
||||
szImgPathName, NULL))
|
||||
{
|
||||
|
||||
if (strcmp (szImgPathName, "") == 0)
|
||||
return 0;
|
||||
|
||||
// load the image from file
|
||||
|
||||
if (!LoadImageFile (hwnd, szImgPathName, &pbImage, &cxImgSize,
|
||||
&cyImgSize, &cImgChannels, &bkgColor))
|
||||
return 0;
|
||||
|
||||
// invalidate the client area for later update
|
||||
|
||||
InvalidateRect (hwnd, NULL, TRUE);
|
||||
|
||||
// display the PNG into the DIBitmap
|
||||
|
||||
DisplayImage (hwnd, &pDib, &pDiData, cxWinSize, cyWinSize,
|
||||
pbImage, cxImgSize, cyImgSize, cImgChannels, bStretched);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
case IDM_FILE_EXIT:
|
||||
|
||||
// more cleanup needed...
|
||||
|
||||
// free image buffer
|
||||
|
||||
if (pDib != NULL)
|
||||
{
|
||||
free (pDib);
|
||||
pDib = NULL;
|
||||
}
|
||||
|
||||
// free file-list
|
||||
|
||||
if (pPngFileList != NULL)
|
||||
{
|
||||
free (pPngFileList);
|
||||
pPngFileList = NULL;
|
||||
}
|
||||
|
||||
// let's go ...
|
||||
|
||||
exit (0);
|
||||
|
||||
return 0;
|
||||
|
||||
case IDM_OPTIONS_STRETCH:
|
||||
bStretched = !bStretched;
|
||||
if (bStretched)
|
||||
CheckMenuItem (hMenu, IDM_OPTIONS_STRETCH, MF_CHECKED);
|
||||
else
|
||||
CheckMenuItem (hMenu, IDM_OPTIONS_STRETCH, MF_UNCHECKED);
|
||||
|
||||
// invalidate the client area for later update
|
||||
|
||||
InvalidateRect (hwnd, NULL, TRUE);
|
||||
|
||||
// display the PNG into the DIBitmap
|
||||
|
||||
DisplayImage (hwnd, &pDib, &pDiData, cxWinSize, cyWinSize,
|
||||
pbImage, cxImgSize, cyImgSize, cImgChannels, bStretched);
|
||||
|
||||
return 0;
|
||||
|
||||
case IDM_HELP_ABOUT:
|
||||
DialogBox (hInstance, TEXT ("AboutBox"), hwnd, AboutDlgProc) ;
|
||||
return 0;
|
||||
|
||||
} // end switch
|
||||
|
||||
break;
|
||||
|
||||
case WM_PAINT:
|
||||
hdc = BeginPaint (hwnd, &ps);
|
||||
|
||||
if (pDib)
|
||||
SetDIBitsToDevice (hdc, 0, 0, cxWinSize, cyWinSize, 0, 0,
|
||||
0, cyWinSize, pDiData, (BITMAPINFO *) pDib, DIB_RGB_COLORS);
|
||||
|
||||
EndPaint (hwnd, &ps);
|
||||
return 0;
|
||||
|
||||
case WM_DESTROY:
|
||||
if (pbmfh)
|
||||
{
|
||||
free (pbmfh);
|
||||
pbmfh = NULL;
|
||||
}
|
||||
|
||||
PostQuitMessage (0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return DefWindowProc (hwnd, message, wParam, lParam);
|
||||
}
|
||||
|
||||
BOOL CALLBACK AboutDlgProc (HWND hDlg, UINT message,
|
||||
WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch (message)
|
||||
{
|
||||
case WM_INITDIALOG :
|
||||
ShowWindow (hDlg, SW_HIDE);
|
||||
CenterAbout (hDlg, GetWindow (hDlg, GW_OWNER));
|
||||
ShowWindow (hDlg, SW_SHOW);
|
||||
return TRUE ;
|
||||
|
||||
case WM_COMMAND :
|
||||
switch (LOWORD (wParam))
|
||||
{
|
||||
case IDOK :
|
||||
case IDCANCEL :
|
||||
EndDialog (hDlg, 0) ;
|
||||
return TRUE ;
|
||||
}
|
||||
break ;
|
||||
}
|
||||
return FALSE ;
|
||||
}
|
||||
|
||||
//---------------
|
||||
// CenterAbout
|
||||
//---------------
|
||||
|
||||
BOOL CenterAbout (HWND hwndChild, HWND hwndParent)
|
||||
{
|
||||
RECT rChild, rParent, rWorkArea;
|
||||
int wChild, hChild, wParent, hParent;
|
||||
int xNew, yNew;
|
||||
BOOL bResult;
|
||||
|
||||
// Get the Height and Width of the child window
|
||||
GetWindowRect (hwndChild, &rChild);
|
||||
wChild = rChild.right - rChild.left;
|
||||
hChild = rChild.bottom - rChild.top;
|
||||
|
||||
// Get the Height and Width of the parent window
|
||||
GetWindowRect (hwndParent, &rParent);
|
||||
wParent = rParent.right - rParent.left;
|
||||
hParent = rParent.bottom - rParent.top;
|
||||
|
||||
// Get the limits of the 'workarea'
|
||||
bResult = SystemParametersInfo(
|
||||
SPI_GETWORKAREA, // system parameter to query or set
|
||||
sizeof(RECT),
|
||||
&rWorkArea,
|
||||
0);
|
||||
if (!bResult) {
|
||||
rWorkArea.left = rWorkArea.top = 0;
|
||||
rWorkArea.right = GetSystemMetrics(SM_CXSCREEN);
|
||||
rWorkArea.bottom = GetSystemMetrics(SM_CYSCREEN);
|
||||
}
|
||||
|
||||
// Calculate new X position, then adjust for workarea
|
||||
xNew = rParent.left + ((wParent - wChild) /2);
|
||||
if (xNew < rWorkArea.left) {
|
||||
xNew = rWorkArea.left;
|
||||
} else if ((xNew+wChild) > rWorkArea.right) {
|
||||
xNew = rWorkArea.right - wChild;
|
||||
}
|
||||
|
||||
// Calculate new Y position, then adjust for workarea
|
||||
yNew = rParent.top + ((hParent - hChild) /2);
|
||||
if (yNew < rWorkArea.top) {
|
||||
yNew = rWorkArea.top;
|
||||
} else if ((yNew+hChild) > rWorkArea.bottom) {
|
||||
yNew = rWorkArea.bottom - hChild;
|
||||
}
|
||||
|
||||
// Set it, and return
|
||||
return SetWindowPos (hwndChild, NULL, xNew, yNew, 0, 0, SWP_NOSIZE |
|
||||
SWP_NOZORDER);
|
||||
}
|
||||
|
||||
//----------------
|
||||
// BuildPngList
|
||||
//----------------
|
||||
|
||||
BOOL BuildPngList (PTSTR pstrPathName, TCHAR **ppFileList, int *pFileCount,
|
||||
int *pFileIndex)
|
||||
{
|
||||
static TCHAR szImgPathName [MAX_PATH];
|
||||
static TCHAR szImgFileName [MAX_PATH];
|
||||
static TCHAR szImgFindName [MAX_PATH];
|
||||
|
||||
WIN32_FIND_DATA finddata;
|
||||
HANDLE hFind;
|
||||
|
||||
static TCHAR szTmp [MAX_PATH];
|
||||
BOOL bOk;
|
||||
int i, ii;
|
||||
int j, jj;
|
||||
|
||||
// free previous file-list
|
||||
|
||||
if (*ppFileList != NULL)
|
||||
{
|
||||
free (*ppFileList);
|
||||
*ppFileList = NULL;
|
||||
}
|
||||
|
||||
// extract foldername, filename and search-name
|
||||
|
||||
strcpy (szImgPathName, pstrPathName);
|
||||
strcpy (szImgFileName, strrchr (pstrPathName, '\\') + 1);
|
||||
|
||||
strcpy (szImgFindName, szImgPathName);
|
||||
*(strrchr (szImgFindName, '\\') + 1) = '\0';
|
||||
strcat (szImgFindName, "*.png");
|
||||
|
||||
// first cycle: count number of files in directory for memory allocation
|
||||
|
||||
*pFileCount = 0;
|
||||
|
||||
hFind = FindFirstFile(szImgFindName, &finddata);
|
||||
bOk = (hFind != (HANDLE) -1);
|
||||
|
||||
while (bOk)
|
||||
{
|
||||
*pFileCount += 1;
|
||||
bOk = FindNextFile(hFind, &finddata);
|
||||
}
|
||||
FindClose(hFind);
|
||||
|
||||
// allocation memory for file-list
|
||||
|
||||
*ppFileList = (TCHAR *) malloc (*pFileCount * MAX_PATH);
|
||||
|
||||
// second cycle: read directory and store filenames in file-list
|
||||
|
||||
hFind = FindFirstFile(szImgFindName, &finddata);
|
||||
bOk = (hFind != (HANDLE) -1);
|
||||
|
||||
i = 0;
|
||||
ii = 0;
|
||||
while (bOk)
|
||||
{
|
||||
strcpy (*ppFileList + ii, szImgPathName);
|
||||
strcpy (strrchr(*ppFileList + ii, '\\') + 1, finddata.cFileName);
|
||||
|
||||
if (strcmp(pstrPathName, *ppFileList + ii) == 0)
|
||||
*pFileIndex = i;
|
||||
|
||||
ii += MAX_PATH;
|
||||
i++;
|
||||
|
||||
bOk = FindNextFile(hFind, &finddata);
|
||||
}
|
||||
FindClose(hFind);
|
||||
|
||||
// finally we must sort the file-list
|
||||
|
||||
for (i = 0; i < *pFileCount - 1; i++)
|
||||
{
|
||||
ii = i * MAX_PATH;
|
||||
for (j = i+1; j < *pFileCount; j++)
|
||||
{
|
||||
jj = j * MAX_PATH;
|
||||
if (strcmp (*ppFileList + ii, *ppFileList + jj) > 0)
|
||||
{
|
||||
strcpy (szTmp, *ppFileList + jj);
|
||||
strcpy (*ppFileList + jj, *ppFileList + ii);
|
||||
strcpy (*ppFileList + ii, szTmp);
|
||||
|
||||
// check if this was the current image that we moved
|
||||
|
||||
if (*pFileIndex == i)
|
||||
*pFileIndex = j;
|
||||
else
|
||||
if (*pFileIndex == j)
|
||||
*pFileIndex = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//----------------
|
||||
// SearchPngList
|
||||
//----------------
|
||||
|
||||
BOOL SearchPngList (
|
||||
TCHAR *pFileList, int FileCount, int *pFileIndex,
|
||||
PTSTR pstrPrevName, PTSTR pstrNextName)
|
||||
{
|
||||
if (FileCount > 0)
|
||||
{
|
||||
// get previous entry
|
||||
|
||||
if (pstrPrevName != NULL)
|
||||
{
|
||||
if (*pFileIndex > 0)
|
||||
*pFileIndex -= 1;
|
||||
else
|
||||
*pFileIndex = FileCount - 1;
|
||||
|
||||
strcpy (pstrPrevName, pFileList + (*pFileIndex * MAX_PATH));
|
||||
}
|
||||
|
||||
// get next entry
|
||||
|
||||
if (pstrNextName != NULL)
|
||||
{
|
||||
if (*pFileIndex < FileCount - 1)
|
||||
*pFileIndex += 1;
|
||||
else
|
||||
*pFileIndex = 0;
|
||||
|
||||
strcpy (pstrNextName, pFileList + (*pFileIndex * MAX_PATH));
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------
|
||||
// LoadImageFile
|
||||
//-----------------
|
||||
|
||||
BOOL LoadImageFile (HWND hwnd, PTSTR pstrPathName,
|
||||
png_byte **ppbImage, int *pxImgSize, int *pyImgSize,
|
||||
int *piChannels, png_color *pBkgColor)
|
||||
{
|
||||
static TCHAR szTmp [MAX_PATH];
|
||||
|
||||
// if there's an existing PNG, free the memory
|
||||
|
||||
if (*ppbImage)
|
||||
{
|
||||
free (*ppbImage);
|
||||
*ppbImage = NULL;
|
||||
}
|
||||
|
||||
// Load the entire PNG into memory
|
||||
|
||||
SetCursor (LoadCursor (NULL, IDC_WAIT));
|
||||
ShowCursor (TRUE);
|
||||
|
||||
PngLoadImage (pstrPathName, ppbImage, pxImgSize, pyImgSize, piChannels,
|
||||
pBkgColor);
|
||||
|
||||
ShowCursor (FALSE);
|
||||
SetCursor (LoadCursor (NULL, IDC_ARROW));
|
||||
|
||||
if (*ppbImage != NULL)
|
||||
{
|
||||
sprintf (szTmp, "VisualPng - %s", strrchr(pstrPathName, '\\') + 1);
|
||||
SetWindowText (hwnd, szTmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox (hwnd, TEXT ("Error in loading the PNG image"),
|
||||
szProgName, MB_ICONEXCLAMATION | MB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//----------------
|
||||
// DisplayImage
|
||||
//----------------
|
||||
|
||||
BOOL DisplayImage (HWND hwnd, BYTE **ppDib,
|
||||
BYTE **ppDiData, int cxWinSize, int cyWinSize,
|
||||
BYTE *pbImage, int cxImgSize, int cyImgSize, int cImgChannels,
|
||||
BOOL bStretched)
|
||||
{
|
||||
BYTE *pDib = *ppDib;
|
||||
BYTE *pDiData = *ppDiData;
|
||||
// BITMAPFILEHEADER *pbmfh;
|
||||
BITMAPINFOHEADER *pbmih;
|
||||
WORD wDIRowBytes;
|
||||
png_color bkgBlack = {0, 0, 0};
|
||||
png_color bkgGray = {127, 127, 127};
|
||||
png_color bkgWhite = {255, 255, 255};
|
||||
|
||||
// allocate memory for the Device Independant bitmap
|
||||
|
||||
wDIRowBytes = (WORD) ((3 * cxWinSize + 3L) >> 2) << 2;
|
||||
|
||||
if (pDib)
|
||||
{
|
||||
free (pDib);
|
||||
pDib = NULL;
|
||||
}
|
||||
|
||||
if (!(pDib = (BYTE *) malloc (sizeof(BITMAPINFOHEADER) +
|
||||
wDIRowBytes * cyWinSize)))
|
||||
{
|
||||
MessageBox (hwnd, TEXT ("Error in displaying the PNG image"),
|
||||
szProgName, MB_ICONEXCLAMATION | MB_OK);
|
||||
*ppDib = pDib = NULL;
|
||||
return FALSE;
|
||||
}
|
||||
*ppDib = pDib;
|
||||
memset (pDib, 0, sizeof(BITMAPINFOHEADER));
|
||||
|
||||
// initialize the dib-structure
|
||||
|
||||
pbmih = (BITMAPINFOHEADER *) pDib;
|
||||
pbmih->biSize = sizeof(BITMAPINFOHEADER);
|
||||
pbmih->biWidth = cxWinSize;
|
||||
pbmih->biHeight = -((long) cyWinSize);
|
||||
pbmih->biPlanes = 1;
|
||||
pbmih->biBitCount = 24;
|
||||
pbmih->biCompression = 0;
|
||||
pDiData = pDib + sizeof(BITMAPINFOHEADER);
|
||||
*ppDiData = pDiData;
|
||||
|
||||
// first fill bitmap with gray and image border
|
||||
|
||||
InitBitmap (pDiData, cxWinSize, cyWinSize);
|
||||
|
||||
// then fill bitmap with image
|
||||
|
||||
if (pbImage)
|
||||
{
|
||||
FillBitmap (
|
||||
pDiData, cxWinSize, cyWinSize,
|
||||
pbImage, cxImgSize, cyImgSize, cImgChannels,
|
||||
bStretched);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//--------------
|
||||
// InitBitmap
|
||||
//--------------
|
||||
|
||||
BOOL InitBitmap (BYTE *pDiData, int cxWinSize, int cyWinSize)
|
||||
{
|
||||
BYTE *dst;
|
||||
int x, y, col;
|
||||
|
||||
// initialize the background with gray
|
||||
|
||||
dst = pDiData;
|
||||
for (y = 0; y < cyWinSize; y++)
|
||||
{
|
||||
col = 0;
|
||||
for (x = 0; x < cxWinSize; x++)
|
||||
{
|
||||
// fill with GRAY
|
||||
*dst++ = 127;
|
||||
*dst++ = 127;
|
||||
*dst++ = 127;
|
||||
col += 3;
|
||||
}
|
||||
// rows start on 4 byte boundaries
|
||||
while ((col % 4) != 0)
|
||||
{
|
||||
dst++;
|
||||
col++;
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//--------------
|
||||
// FillBitmap
|
||||
//--------------
|
||||
|
||||
BOOL FillBitmap (
|
||||
BYTE *pDiData, int cxWinSize, int cyWinSize,
|
||||
BYTE *pbImage, int cxImgSize, int cyImgSize, int cImgChannels,
|
||||
BOOL bStretched)
|
||||
{
|
||||
BYTE *pStretchedImage;
|
||||
BYTE *pImg;
|
||||
BYTE *src, *dst;
|
||||
BYTE r, g, b, a;
|
||||
const int cDIChannels = 3;
|
||||
WORD wImgRowBytes;
|
||||
WORD wDIRowBytes;
|
||||
int cxNewSize, cyNewSize;
|
||||
int cxImgPos, cyImgPos;
|
||||
int xImg, yImg;
|
||||
int xWin, yWin;
|
||||
int xOld, yOld;
|
||||
int xNew, yNew;
|
||||
|
||||
if (bStretched)
|
||||
{
|
||||
cxNewSize = cxWinSize - 2 * MARGIN;
|
||||
cyNewSize = cyWinSize - 2 * MARGIN;
|
||||
|
||||
// stretch the image to it's window determined size
|
||||
|
||||
// the following two are the same, but the first has side-effects
|
||||
// because of rounding
|
||||
// if ((cyNewSize / cxNewSize) > (cyImgSize / cxImgSize))
|
||||
if ((cyNewSize * cxImgSize) > (cyImgSize * cxNewSize))
|
||||
{
|
||||
cyNewSize = cxNewSize * cyImgSize / cxImgSize;
|
||||
cxImgPos = MARGIN;
|
||||
cyImgPos = (cyWinSize - cyNewSize) / 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
cxNewSize = cyNewSize * cxImgSize / cyImgSize;
|
||||
cyImgPos = MARGIN;
|
||||
cxImgPos = (cxWinSize - cxNewSize) / 2;
|
||||
}
|
||||
|
||||
pStretchedImage = malloc (cImgChannels * cxNewSize * cyNewSize);
|
||||
pImg = pStretchedImage;
|
||||
|
||||
for (yNew = 0; yNew < cyNewSize; yNew++)
|
||||
{
|
||||
yOld = yNew * cyImgSize / cyNewSize;
|
||||
for (xNew = 0; xNew < cxNewSize; xNew++)
|
||||
{
|
||||
xOld = xNew * cxImgSize / cxNewSize;
|
||||
|
||||
r = *(pbImage + cImgChannels * ((yOld * cxImgSize) + xOld) + 0);
|
||||
g = *(pbImage + cImgChannels * ((yOld * cxImgSize) + xOld) + 1);
|
||||
b = *(pbImage + cImgChannels * ((yOld * cxImgSize) + xOld) + 2);
|
||||
*pImg++ = r;
|
||||
*pImg++ = g;
|
||||
*pImg++ = b;
|
||||
if (cImgChannels == 4)
|
||||
{
|
||||
a = *(pbImage + cImgChannels * ((yOld * cxImgSize) + xOld)
|
||||
+ 3);
|
||||
*pImg++ = a;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// calculate row-bytes
|
||||
|
||||
wImgRowBytes = cImgChannels * cxNewSize;
|
||||
wDIRowBytes = (WORD) ((cDIChannels * cxWinSize + 3L) >> 2) << 2;
|
||||
|
||||
// copy image to screen
|
||||
|
||||
for (yImg = 0, yWin = cyImgPos; yImg < cyNewSize; yImg++, yWin++)
|
||||
{
|
||||
if (yWin >= cyWinSize - cyImgPos)
|
||||
break;
|
||||
src = pStretchedImage + yImg * wImgRowBytes;
|
||||
dst = pDiData + yWin * wDIRowBytes + cxImgPos * cDIChannels;
|
||||
|
||||
for (xImg = 0, xWin = cxImgPos; xImg < cxNewSize; xImg++, xWin++)
|
||||
{
|
||||
if (xWin >= cxWinSize - cxImgPos)
|
||||
break;
|
||||
r = *src++;
|
||||
g = *src++;
|
||||
b = *src++;
|
||||
*dst++ = b; /* note the reverse order */
|
||||
*dst++ = g;
|
||||
*dst++ = r;
|
||||
if (cImgChannels == 4)
|
||||
{
|
||||
a = *src++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// free memory
|
||||
|
||||
if (pStretchedImage != NULL)
|
||||
{
|
||||
free (pStretchedImage);
|
||||
pStretchedImage = NULL;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// process the image not-stretched
|
||||
|
||||
else
|
||||
{
|
||||
// calculate the central position
|
||||
|
||||
cxImgPos = (cxWinSize - cxImgSize) / 2;
|
||||
cyImgPos = (cyWinSize - cyImgSize) / 2;
|
||||
|
||||
// check for image larger than window
|
||||
|
||||
if (cxImgPos < MARGIN)
|
||||
cxImgPos = MARGIN;
|
||||
if (cyImgPos < MARGIN)
|
||||
cyImgPos = MARGIN;
|
||||
|
||||
// calculate both row-bytes
|
||||
|
||||
wImgRowBytes = cImgChannels * cxImgSize;
|
||||
wDIRowBytes = (WORD) ((cDIChannels * cxWinSize + 3L) >> 2) << 2;
|
||||
|
||||
// copy image to screen
|
||||
|
||||
for (yImg = 0, yWin = cyImgPos; yImg < cyImgSize; yImg++, yWin++)
|
||||
{
|
||||
if (yWin >= cyWinSize - MARGIN)
|
||||
break;
|
||||
src = pbImage + yImg * wImgRowBytes;
|
||||
dst = pDiData + yWin * wDIRowBytes + cxImgPos * cDIChannels;
|
||||
|
||||
for (xImg = 0, xWin = cxImgPos; xImg < cxImgSize; xImg++, xWin++)
|
||||
{
|
||||
if (xWin >= cxWinSize - MARGIN)
|
||||
break;
|
||||
r = *src++;
|
||||
g = *src++;
|
||||
b = *src++;
|
||||
*dst++ = b; /* note the reverse order */
|
||||
*dst++ = g;
|
||||
*dst++ = r;
|
||||
if (cImgChannels == 4)
|
||||
{
|
||||
a = *src++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//-----------------
|
||||
// end of source
|
||||
//-----------------
|
||||
223
contrib/visupng/VisualPng.dsp
Normal file
223
contrib/visupng/VisualPng.dsp
Normal file
@@ -0,0 +1,223 @@
|
||||
# Microsoft Developer Studio Project File - Name="VisualPng" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
|
||||
# Copyright 2000, Willem van Schaik. For conditions of distribution and
|
||||
# use, see the copyright/license/disclaimer notice in png.h
|
||||
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Application" 0x0101
|
||||
|
||||
CFG=VisualPng - Win32 Debug LIB
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "VisualPng.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "VisualPng.mak" CFG="VisualPng - Win32 Debug LIB"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "VisualPng - Win32 DLL" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "VisualPng - Win32 Debug DLL" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "VisualPng - Win32 LIB" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "VisualPng - Win32 Debug LIB" (based on "Win32 (x86) Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "VisualPng - Win32 DLL"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "VisualPng___Win32_DLL"
|
||||
# PROP BASE Intermediate_Dir "VisualPng___Win32_DLL"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "dll"
|
||||
# PROP Intermediate_Dir "dll"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /I "libpng" /I "zlib" /D "PNG_USE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\libpng" /I "..\..\..\zlib" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "PNG_USE_DLL" /D "PNG_NO_STDIO" /D "PNG_NO_GLOBAL_ARRAYS" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 libpng1.lib zlibd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 /libpath:"libpng" /libpath:"zlib"
|
||||
# ADD LINK32 libpng1.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 /libpath:"..\..\msvc\win32\libpng\dll"
|
||||
# Begin Special Build Tool
|
||||
OutDir=.\dll
|
||||
SOURCE="$(InputPath)"
|
||||
PostBuild_Cmds=set path=..\..\msvc\win32\libpng\dll;..\..\msvc\win32\zlib\dll; $(outdir)\VisualPng.exe ..\..\contrib\pngsuite\basn6a16.png
|
||||
# End Special Build Tool
|
||||
|
||||
!ELSEIF "$(CFG)" == "VisualPng - Win32 Debug DLL"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "VisualPng___Win32_Debug_DLL"
|
||||
# PROP BASE Intermediate_Dir "VisualPng___Win32_Debug_DLL"
|
||||
# PROP BASE Ignore_Export_Lib 0
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "dll_dbg"
|
||||
# PROP Intermediate_Dir "dll_dbg"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "libpng" /I "zlib" /D "PNG_USE_DLL" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\libpng" /I "..\..\..\zlib" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "PNG_USE_DLL" /D "PNG_NO_STDIO" /D "PNG_NO_GLOBAL_ARRAYS" /FD /GZ /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 libpng1.lib zlibd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libc" /pdbtype:sept /libpath:"libpng" /libpath:"zlib"
|
||||
# SUBTRACT BASE LINK32 /nodefaultlib
|
||||
# ADD LINK32 libpng1d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libc" /pdbtype:sept /libpath:"..\..\msvc\win32\libpng\dll_dbg"
|
||||
# SUBTRACT LINK32 /nodefaultlib
|
||||
# Begin Special Build Tool
|
||||
OutDir=.\dll_dbg
|
||||
SOURCE="$(InputPath)"
|
||||
PostBuild_Cmds=set path=..\..\msvc\win32\libpng\dll_dbg;..\..\msvc\win32\zlib\dll_dbg; $(outdir)\VisualPng.exe ..\..\contrib\pngsuite\basn6a16.png
|
||||
# End Special Build Tool
|
||||
|
||||
!ELSEIF "$(CFG)" == "VisualPng - Win32 LIB"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "VisualPng___Win32_LIB"
|
||||
# PROP BASE Intermediate_Dir "VisualPng___Win32_LIB"
|
||||
# PROP BASE Ignore_Export_Lib 0
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "lib"
|
||||
# PROP Intermediate_Dir "lib"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\..\libpng" /I "..\..\..\zlib" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "PNG_USE_DLL" /D "PNG_NO_STDIO" /D "PNG_NO_GLOBAL_ARRAYS" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\libpng" /I "..\..\..\zlib" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "PNG_NO_STDIO" /D "PNG_NO_GLOBAL_ARRAYS" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 libpng1.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 /libpath:"..\..\msvc\win32\libpng\dll"
|
||||
# ADD LINK32 libpng.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 /libpath:"..\..\msvc\win32\libpng\lib"
|
||||
# Begin Special Build Tool
|
||||
OutDir=.\lib
|
||||
SOURCE="$(InputPath)"
|
||||
PostBuild_Cmds=$(outdir)\VisualPng.exe ..\..\contrib\pngsuite\basn6a16.png
|
||||
# End Special Build Tool
|
||||
|
||||
!ELSEIF "$(CFG)" == "VisualPng - Win32 Debug LIB"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "VisualPng___Win32_Debug_LIB"
|
||||
# PROP BASE Intermediate_Dir "VisualPng___Win32_Debug_LIB"
|
||||
# PROP BASE Ignore_Export_Lib 0
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "lib_dbg"
|
||||
# PROP Intermediate_Dir "lib_dbg"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\libpng" /I "..\..\..\zlib" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "PNG_USE_DLL" /D "PNG_NO_STDIO" /D "PNG_NO_GLOBAL_ARRAYS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\libpng" /I "..\..\..\zlib" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "PNG_NO_STDIO" /D "PNG_NO_GLOBAL_ARRAYS" /FD /GZ /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 libpng1d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libc" /pdbtype:sept /libpath:"..\..\msvc\win32\libpng\dll_dbg"
|
||||
# SUBTRACT BASE LINK32 /nodefaultlib
|
||||
# ADD LINK32 libpng.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libc" /pdbtype:sept /libpath:"..\..\msvc\win32\libpng\lib_dbg"
|
||||
# SUBTRACT LINK32 /nodefaultlib
|
||||
# Begin Special Build Tool
|
||||
OutDir=.\lib_dbg
|
||||
SOURCE="$(InputPath)"
|
||||
PostBuild_Cmds=$(outdir)\VisualPng.exe ..\..\contrib\pngsuite\basn6a16.png
|
||||
# End Special Build Tool
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "VisualPng - Win32 DLL"
|
||||
# Name "VisualPng - Win32 Debug DLL"
|
||||
# Name "VisualPng - Win32 LIB"
|
||||
# Name "VisualPng - Win32 Debug LIB"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\PngFile.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\VisualPng.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\cexcept.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\PngFile.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\resource.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\VisualPng.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\VisualPng.rc
|
||||
# End Source File
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
29
contrib/visupng/VisualPng.dsw
Normal file
29
contrib/visupng/VisualPng.dsw
Normal file
@@ -0,0 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "VisualPng"=.\VisualPng.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
BIN
contrib/visupng/VisualPng.ico
Normal file
BIN
contrib/visupng/VisualPng.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 766 B |
BIN
contrib/visupng/VisualPng.png
Normal file
BIN
contrib/visupng/VisualPng.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 208 B |
152
contrib/visupng/VisualPng.rc
Normal file
152
contrib/visupng/VisualPng.rc
Normal file
@@ -0,0 +1,152 @@
|
||||
//Microsoft Developer Studio generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "afxres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Menu
|
||||
//
|
||||
|
||||
VISUALPNG MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&File"
|
||||
BEGIN
|
||||
MENUITEM "&Open Image...\tCtrl+O", IDM_FILE_OPEN
|
||||
MENUITEM "Save &As...", IDM_FILE_SAVE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Next Image\tCtrl+N", IDM_FILE_NEXT
|
||||
MENUITEM "Pre&vious Image\tCtrl+V", IDM_FILE_PREVIOUS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&xit\tAlt+X", IDM_FILE_EXIT
|
||||
END
|
||||
POPUP "&Options"
|
||||
BEGIN
|
||||
MENUITEM "&Stretch", IDM_OPTIONS_STRETCH, CHECKED
|
||||
END
|
||||
POPUP "&Help"
|
||||
BEGIN
|
||||
MENUITEM "&About", IDM_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Accelerator
|
||||
//
|
||||
|
||||
VISUALPNG ACCELERATORS DISCARDABLE
|
||||
BEGIN
|
||||
"N", IDM_FILE_NEXT, VIRTKEY, CONTROL, NOINVERT
|
||||
"O", IDM_FILE_OPEN, VIRTKEY, CONTROL, NOINVERT
|
||||
"P", IDM_FILE_PREVIOUS, VIRTKEY, CONTROL, NOINVERT
|
||||
"V", IDM_FILE_PREVIOUS, VIRTKEY, CONTROL, NOINVERT
|
||||
"X", IDM_FILE_EXIT, VIRTKEY, ALT, NOINVERT
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
VISUALPNG ICON DISCARDABLE "VisualPng.ico"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
ABOUTBOX DIALOG DISCARDABLE 0, 0, 186, 94
|
||||
STYLE DS_MODALFRAME | WS_POPUP
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "OK",IDOK,68,67,50,14
|
||||
CTEXT "VisualPng 1.0 - June 2000",IDC_STATIC,49,14,88,8
|
||||
LTEXT "a PNG image viewer",IDC_STATIC,60,30,66,8
|
||||
LTEXT "(c) Willem van Schaik, 2000",IDC_STATIC,48,52,90,8
|
||||
LTEXT "to demonstrate the use of libpng in Visual C",
|
||||
IDC_STATIC,25,38,136,8
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO DISCARDABLE
|
||||
BEGIN
|
||||
"ABOUTBOX", DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 179
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 87
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
||||
244
contrib/visupng/cexcept.h
Normal file
244
contrib/visupng/cexcept.h
Normal file
@@ -0,0 +1,244 @@
|
||||
/*===
|
||||
cexcept.h 1.0.0 (2000-Jun-21-Wed)
|
||||
Adam M. Costello <amc@cs.berkeley.edu>
|
||||
|
||||
An interface for exception-handling in ANSI C, developed jointly with
|
||||
Cosmin Truta <cosmin@cs.toronto.edu>.
|
||||
|
||||
Copyright (c) 2000 Adam M. Costello and Cosmin Truta. Everyone
|
||||
is hereby granted permission to do whatever they like with this
|
||||
file, provided that if they modify it they take reasonable steps to
|
||||
avoid confusing or misleading people about the authors, version,
|
||||
and terms of use of the derived file. The copyright holders make
|
||||
no guarantees about the correctness of this file, and are not
|
||||
responsible for any damage resulting from its use.
|
||||
|
||||
If this interface is used by multiple .c files, they shouldn't include
|
||||
this header file directly. Instead, create a wrapper header file that
|
||||
includes this header file and then invokes the define_exception_type
|
||||
macro (see below), and let your .c files include that header file.
|
||||
|
||||
The interface consists of one type, one well-known name, and six macros.
|
||||
|
||||
|
||||
define_exception_type(type_name);
|
||||
|
||||
This macro is used like an external declaration. It specifies
|
||||
the type of object that gets copied from the exception thrower to
|
||||
the exception catcher. The type_name can be any type that can be
|
||||
assigned to, that is, a non-constant arithmetic type, struct, union,
|
||||
or pointer. Examples:
|
||||
|
||||
define_exception_type(int);
|
||||
|
||||
enum exception { out_of_memory, bad_arguments, disk_full };
|
||||
define_exception_type(enum exception);
|
||||
|
||||
struct exception { int code; const char *msg; };
|
||||
define_exception_type(struct exception);
|
||||
|
||||
|
||||
struct exception_context;
|
||||
|
||||
This type may be used after the define_exception_type() macro has
|
||||
been invoked. A struct exception_context must be known to both
|
||||
the thrower and the catcher. It is expected that there be one
|
||||
context for each thread that uses exceptions. It would certainly
|
||||
be dangerous for multiple threads to access the same context.
|
||||
One thread can use multiple contexts, but that is likely to be
|
||||
confusing and not typically useful. The application can allocate
|
||||
this structure in any way it pleases--automatic, static, or dynamic.
|
||||
The application programmer should pretend not to know the structure
|
||||
members, which are subject to change.
|
||||
|
||||
|
||||
struct exception_context *the_exception_context;
|
||||
|
||||
The Try/Catch and Throw statements (described below) implicitly
|
||||
refer to a context, using the name the_exception_context. It is
|
||||
the application's responsibility to make sure that this name yields
|
||||
the address of a mutable (non-constant) struct exception_context
|
||||
wherever those statements are used. Subject to that constraint, the
|
||||
application may declare a variable of this name anywhere it likes
|
||||
(inside a function, in a parameter list, or externally), and may
|
||||
use whatever storage class specifiers (static, extern, etc) or type
|
||||
qualifiers (const, volatile) it likes. Examples:
|
||||
|
||||
static struct exception_context
|
||||
* const the_exception_context = &foo;
|
||||
|
||||
{ struct exception_context *the_exception_context = bar; ... }
|
||||
|
||||
int blah(struct exception_context *the_exception_context, ...);
|
||||
|
||||
extern struct exception_context the_exception_context[1];
|
||||
|
||||
The last example illustrates a trick that avoids creating a pointer
|
||||
object separate from the structure object.
|
||||
|
||||
The name could even be a macro, for example:
|
||||
|
||||
struct exception_context ec_array[numthreads];
|
||||
#define the_exception_context (ec_array + thread_id)
|
||||
|
||||
Be aware that the_exception_context is used several times by the
|
||||
Try/Catch/Throw macros, so it shouldn't be expensive or have side
|
||||
effects. The expansion must be a drop-in replacement for an
|
||||
identifier, so it's safest to put parentheses around it.
|
||||
|
||||
|
||||
void init_exception_context(struct exception_context *ec);
|
||||
|
||||
For context structures allocated statically (by an external
|
||||
definition or using the "static" keyword), the implicit
|
||||
initialization to all zeros is sufficient, but contexts allocated
|
||||
by other means must be initialized using this macro before they
|
||||
are used by a Try/Catch statement. It does no harm to initialize
|
||||
a context more than once (by using this macro on a statically
|
||||
allocated context, or using this macro twice on the same context),
|
||||
but a context must not be re-initialized after it has been used by a
|
||||
Try/Catch statement.
|
||||
|
||||
|
||||
Try statement
|
||||
Catch (expression) statement
|
||||
|
||||
The Try/Catch/Throw macros are capitalized in order to avoid
|
||||
confusion with the C++ keywords, which have subtly different
|
||||
semantics.
|
||||
|
||||
A Try/Catch statement has a syntax similar to an if/else
|
||||
statement, except that the parenthesized expression goes after
|
||||
the second keyword rather than the first. As with if/else,
|
||||
there are two clauses, each of which may be a simple statement
|
||||
ending with a semicolon or a brace-enclosed compound statement.
|
||||
But whereas the else clause is optional, the Catch clause is
|
||||
required. The expression must be a modifiable lvalue (something
|
||||
capable of being assigned to) of the exact same type passed to
|
||||
define_exception_type().
|
||||
|
||||
If a Throw that uses the same exception context as the Try/Catch is
|
||||
executed within the Try clause (typically within a function called
|
||||
by the Try clause), and the exception is not caught by a nested
|
||||
Try/Catch statement, then a copy of the exception will be assigned
|
||||
to the expression, and control will jump to the Catch clause. If no
|
||||
such Throw is executed, then the assignment is not performed, and
|
||||
the Catch clause is not executed.
|
||||
|
||||
Regardless of whether an exception is caught, the expression is
|
||||
always evaluated exactly once, which is significant if it has side
|
||||
effects, for example:
|
||||
|
||||
Try foo();
|
||||
Catch (p[++i].e) { ... }
|
||||
|
||||
IMPORTANT: Jumping into or out of a Try clause (for example via
|
||||
return, break, continue, goto, longjmp) is forbidden--the compiler
|
||||
will not complain, but bad things will happen at run-time. Jumping
|
||||
into or out of a Catch clause is okay, and so is jumping around
|
||||
inside a Try clause. In many cases where one is tempted to return
|
||||
from a Try clause, it will suffice to use Throw, and then return
|
||||
from the Catch clause. Another option is to set a flag variable and
|
||||
use goto to jump to the end of the Try clause, then check the flag
|
||||
after the Try/Catch statement.
|
||||
|
||||
IMPORTANT: The values of any non-volatile automatic variables
|
||||
changed within the Try clause are undefined after an exception is
|
||||
caught. Therefore, variables modified inside the Try block whose
|
||||
values are needed later outside the Try block must either use static
|
||||
storage or be declared with the "volatile" type qualifier.
|
||||
|
||||
|
||||
Throw expression;
|
||||
|
||||
A Throw statement is very much like a return statement, except that
|
||||
the expression is required. Whereas return jumps back to the place
|
||||
where the current function was called, Throw jumps back to the Catch
|
||||
clause of the innermost enclosing Try clause. The expression must
|
||||
be compatible with the type passed to define_exception_type(). The
|
||||
exception must be caught, otherwise the program may crash.
|
||||
|
||||
Slight limitation: If the expression is a comma-expression it must
|
||||
be enclosed in parentheses.
|
||||
|
||||
|
||||
Try statement
|
||||
Catch_anonymous statement
|
||||
|
||||
When the value of the exception is not needed, a Try/Catch statement
|
||||
can use Catch_anonymous instead of Catch (expression).
|
||||
|
||||
|
||||
Everything below this point is for the benefit of the compiler. The
|
||||
application programmer should pretend not to know any of it, because it
|
||||
is subject to change.
|
||||
|
||||
===*/
|
||||
|
||||
|
||||
#ifndef CEXCEPT_H
|
||||
#define CEXCEPT_H
|
||||
|
||||
|
||||
#include <setjmp.h>
|
||||
|
||||
#define define_exception_type(etype) \
|
||||
struct exception__state { \
|
||||
etype *exception; \
|
||||
jmp_buf env; \
|
||||
}
|
||||
|
||||
struct exception_context { \
|
||||
struct exception__state *last; \
|
||||
int caught; \
|
||||
};
|
||||
|
||||
#define init_exception_context(ec) ((void)((ec)->last = 0))
|
||||
|
||||
#define Catch(e) exception__catch(&(e))
|
||||
#define Catch_anonymous exception__catch(0)
|
||||
|
||||
#define Try \
|
||||
{ \
|
||||
struct exception__state *exception__p, exception__s; \
|
||||
int exception__i; \
|
||||
exception__p = the_exception_context->last; \
|
||||
the_exception_context->last = &exception__s; \
|
||||
for (exception__i = 0; ; exception__i = 1) \
|
||||
if (exception__i) { \
|
||||
if (setjmp(exception__s.env) == 0) { \
|
||||
if (&exception__s)
|
||||
|
||||
#define exception__catch(e_addr) \
|
||||
else { } \
|
||||
the_exception_context->caught = 0; \
|
||||
} \
|
||||
else the_exception_context->caught = 1; \
|
||||
the_exception_context->last = exception__p; \
|
||||
break; \
|
||||
} \
|
||||
else exception__s.exception = e_addr; \
|
||||
} \
|
||||
if (!the_exception_context->caught) { } \
|
||||
else
|
||||
|
||||
/* Try ends with if(), and Catch begins and ends with else. This */
|
||||
/* ensures that the Try/Catch syntax is really the same as the */
|
||||
/* if/else syntax. */
|
||||
/* */
|
||||
/* We use &exception__s instead of 1 to appease compilers that */
|
||||
/* warn about constant expressions inside if(). Most compilers */
|
||||
/* should still recognize that &exception__s is never zero and avoid */
|
||||
/* generating test code. */
|
||||
/* */
|
||||
/* We use the variable exception__i to start the loop at the bottom, */
|
||||
/* rather than jump into the loop using a switch statement, to */
|
||||
/* appease compilers that warn about jumping into loops. */
|
||||
|
||||
#define Throw \
|
||||
for (;; longjmp(the_exception_context->last->env, 1)) \
|
||||
if (the_exception_context->last->exception) \
|
||||
*the_exception_context->last->exception =
|
||||
|
||||
|
||||
#endif /* CEXCEPT_H */
|
||||
23
contrib/visupng/resource.h
Normal file
23
contrib/visupng/resource.h
Normal file
@@ -0,0 +1,23 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Developer Studio generated include file.
|
||||
// Used by VisualPng.rc
|
||||
//
|
||||
#define IDM_FILE_OPEN 40001
|
||||
#define IDM_FILE_SAVE 40002
|
||||
#define IDM_FILE_NEXT 40003
|
||||
#define IDM_FILE_PREVIOUS 40004
|
||||
#define IDM_FILE_EXIT 40005
|
||||
#define IDM_OPTIONS_BACKGROUND 40006
|
||||
#define IDM_OPTIONS_STRETCH 40007
|
||||
#define IDM_HELP_ABOUT 40008
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 113
|
||||
#define _APS_NEXT_COMMAND_VALUE 40009
|
||||
#define _APS_NEXT_CONTROL_VALUE 1001
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
38
example.c
38
example.c
@@ -84,7 +84,7 @@ void read_png(char *file_name) /* We need to open the file */
|
||||
FILE *fp;
|
||||
|
||||
if ((fp = fopen(file_name, "rb")) == NULL)
|
||||
return;
|
||||
return (ERROR);
|
||||
#else no_open_file /* prototype 2 */
|
||||
void read_png(FILE *fp, unsigned int sig_read) /* file is already open */
|
||||
{
|
||||
@@ -106,7 +106,7 @@ void read_png(FILE *fp, unsigned int sig_read) /* file is already open */
|
||||
if (png_ptr == NULL)
|
||||
{
|
||||
fclose(fp);
|
||||
return;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
/* Allocate/initialize the memory for image information. REQUIRED. */
|
||||
@@ -115,7 +115,7 @@ void read_png(FILE *fp, unsigned int sig_read) /* file is already open */
|
||||
{
|
||||
fclose(fp);
|
||||
png_destroy_read_struct(&png_ptr, (png_infopp)NULL, (png_infopp)NULL);
|
||||
return;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
/* Set error handling if you are using the setjmp/longjmp method (this is
|
||||
@@ -129,7 +129,7 @@ void read_png(FILE *fp, unsigned int sig_read) /* file is already open */
|
||||
png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
|
||||
fclose(fp);
|
||||
/* If we get here, we had a problem reading the file */
|
||||
return;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
/* One of the following I/O initialization methods is REQUIRED */
|
||||
@@ -282,7 +282,7 @@ void read_png(FILE *fp, unsigned int sig_read) /* file is already open */
|
||||
/* This reduces the image to the palette supplied in the file */
|
||||
else if (png_get_PLTE(png_ptr, info_ptr, &palette, &num_palette))
|
||||
{
|
||||
png_color16p histogram;
|
||||
png_uint_16p histogram;
|
||||
|
||||
png_get_hIST(png_ptr, info_ptr, &histogram);
|
||||
|
||||
@@ -291,7 +291,7 @@ void read_png(FILE *fp, unsigned int sig_read) /* file is already open */
|
||||
}
|
||||
}
|
||||
|
||||
/* invert monocrome files to have 0 as white and 1 as black */
|
||||
/* invert monochrome files to have 0 as white and 1 as black */
|
||||
png_set_invert_mono(png_ptr);
|
||||
|
||||
/* If you want to shift the pixel values from the range [0,255] or
|
||||
@@ -387,7 +387,7 @@ void read_png(FILE *fp, unsigned int sig_read) /* file is already open */
|
||||
fclose(fp);
|
||||
|
||||
/* that's it */
|
||||
return;
|
||||
return (OK);
|
||||
}
|
||||
|
||||
/* progressively read a file */
|
||||
@@ -407,7 +407,7 @@ initialize_png_reader(png_structp *png_ptr, png_infop *info_ptr)
|
||||
if (*png_ptr == NULL)
|
||||
{
|
||||
*info_ptr = NULL;
|
||||
return ERROR;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
*info_ptr = png_create_info_struct(png_ptr);
|
||||
@@ -415,13 +415,13 @@ initialize_png_reader(png_structp *png_ptr, png_infop *info_ptr)
|
||||
if (*info_ptr == NULL)
|
||||
{
|
||||
png_destroy_read_struct(png_ptr, info_ptr, (png_infopp)NULL);
|
||||
return ERROR;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
if (setjmp(png_jmpbuf((*png_ptr))))
|
||||
{
|
||||
png_destroy_read_struct(png_ptr, info_ptr, (png_infopp)NULL);
|
||||
return ERROR;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
/* This one's new. You will need to provide all three
|
||||
@@ -439,7 +439,7 @@ initialize_png_reader(png_structp *png_ptr, png_infop *info_ptr)
|
||||
png_set_progressive_read_fn(*png_ptr, (void *)stream_data,
|
||||
info_callback, row_callback, end_callback);
|
||||
|
||||
return OK;
|
||||
return (OK);
|
||||
}
|
||||
|
||||
int
|
||||
@@ -450,7 +450,7 @@ process_data(png_structp *png_ptr, png_infop *info_ptr,
|
||||
{
|
||||
/* Free the png_ptr and info_ptr memory on error */
|
||||
png_destroy_read_struct(png_ptr, info_ptr, (png_infopp)NULL);
|
||||
return ERROR;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
/* This one's new also. Simply give it chunks of data as
|
||||
@@ -464,7 +464,7 @@ process_data(png_structp *png_ptr, png_infop *info_ptr,
|
||||
* callback, if you aren't already displaying them there.
|
||||
*/
|
||||
png_process_data(*png_ptr, *info_ptr, buffer, length);
|
||||
return OK;
|
||||
return (OK);
|
||||
}
|
||||
|
||||
info_callback(png_structp png_ptr, png_infop info)
|
||||
@@ -533,7 +533,7 @@ void write_png(char *file_name /* , ... other image information ... */)
|
||||
/* open the file */
|
||||
fp = fopen(file_name, "wb");
|
||||
if (fp == NULL)
|
||||
return;
|
||||
return (ERROR);
|
||||
|
||||
/* Create and initialize the png_struct with the desired error handler
|
||||
* functions. If you want to use the default stderr and longjump method,
|
||||
@@ -547,7 +547,7 @@ void write_png(char *file_name /* , ... other image information ... */)
|
||||
if (png_ptr == NULL)
|
||||
{
|
||||
fclose(fp);
|
||||
return;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
/* Allocate/initialize the image information data. REQUIRED */
|
||||
@@ -556,7 +556,7 @@ void write_png(char *file_name /* , ... other image information ... */)
|
||||
{
|
||||
fclose(fp);
|
||||
png_destroy_write_struct(&png_ptr, (png_infopp)NULL);
|
||||
return;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
/* Set error handling. REQUIRED if you aren't supplying your own
|
||||
@@ -567,7 +567,7 @@ void write_png(char *file_name /* , ... other image information ... */)
|
||||
/* If we get here, we had a problem reading the file */
|
||||
fclose(fp);
|
||||
png_destroy_write_struct(&png_ptr, &info_ptr);
|
||||
return;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
/* One of the following I/O initialization functions is REQUIRED */
|
||||
@@ -672,7 +672,7 @@ void write_png(char *file_name /* , ... other image information ... */)
|
||||
* all optional. Only call them if you want them.
|
||||
*/
|
||||
|
||||
/* invert monocrome pixels */
|
||||
/* invert monochrome pixels */
|
||||
png_set_invert_mono(png_ptr);
|
||||
|
||||
/* Shift the pixels up to a legal bit depth and fill in
|
||||
@@ -768,7 +768,7 @@ void write_png(char *file_name /* , ... other image information ... */)
|
||||
fclose(fp);
|
||||
|
||||
/* that's it */
|
||||
return;
|
||||
return (OK);
|
||||
}
|
||||
|
||||
#endif /* if 0 */
|
||||
|
||||
148
libpng.3
148
libpng.3
@@ -1,6 +1,6 @@
|
||||
.TH LIBPNG 3 "May 17, 2000"
|
||||
.TH LIBPNG 3 "July 8, 2000"
|
||||
.SH NAME
|
||||
libpng \- Portable Network Graphics (PNG) Reference Library 1.0.7beta14
|
||||
libpng \- Portable Network Graphics (PNG) Reference Library 1.0.8beta1
|
||||
.SH SYNOPSIS
|
||||
\fI\fB
|
||||
|
||||
@@ -274,11 +274,11 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.0.7beta14
|
||||
|
||||
\fI\fB
|
||||
|
||||
\fBpng_uint_32 png_get_x_offset_microns (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
|
||||
\fBpng_int_32 png_get_x_offset_microns (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
|
||||
|
||||
\fI\fB
|
||||
|
||||
\fBpng_uint_32 png_get_x_offset_pixels (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
|
||||
\fBpng_int_32 png_get_x_offset_pixels (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
|
||||
|
||||
\fI\fB
|
||||
|
||||
@@ -286,11 +286,11 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.0.7beta14
|
||||
|
||||
\fI\fB
|
||||
|
||||
\fBpng_uint_32 png_get_y_offset_microns (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
|
||||
\fBpng_int_32 png_get_y_offset_microns (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
|
||||
|
||||
\fI\fB
|
||||
|
||||
\fBpng_uint_32 png_get_y_offset_pixels (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
|
||||
\fBpng_int_32 png_get_y_offset_pixels (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
|
||||
|
||||
\fI\fB
|
||||
|
||||
@@ -747,7 +747,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.7beta14 - May 17, 2000
|
||||
libpng version 1.0.8beta1 - July 8, 2000
|
||||
Updated and distributed by Glenn Randers-Pehrson
|
||||
<randeg@alum.rpi.edu>
|
||||
Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
|
||||
@@ -895,13 +895,13 @@ Customizing libpng.
|
||||
FILE *fp = fopen(file_name, "rb");
|
||||
if (!fp)
|
||||
{
|
||||
return;
|
||||
return (ERROR);
|
||||
}
|
||||
fread(header, 1, number, fp);
|
||||
is_png = !png_sig_cmp(header, 0, number);
|
||||
if (!is_png)
|
||||
{
|
||||
return;
|
||||
return (NOT_PNG);
|
||||
}
|
||||
|
||||
|
||||
@@ -913,19 +913,21 @@ pointers to error handling functions, and a pointer to a data struct for
|
||||
use by the error functions, if necessary (the pointer and functions can
|
||||
be NULL if the default error handlers are to be used). See the section
|
||||
on Changes to Libpng below regarding the old initialization functions.
|
||||
The structure allocation functions quietly return NULL if they fail to
|
||||
create the structure, so your application should check for that.
|
||||
|
||||
png_structp png_ptr = png_create_read_struct
|
||||
(PNG_LIBPNG_VER_STRING, (png_voidp)user_error_ptr,
|
||||
user_error_fn, user_warning_fn);
|
||||
if (!png_ptr)
|
||||
return;
|
||||
return (ERROR);
|
||||
|
||||
png_infop info_ptr = png_create_info_struct(png_ptr);
|
||||
if (!info_ptr)
|
||||
{
|
||||
png_destroy_read_struct(&png_ptr,
|
||||
(png_infopp)NULL, (png_infopp)NULL);
|
||||
return;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
png_infop end_info = png_create_info_struct(png_ptr);
|
||||
@@ -933,7 +935,7 @@ on Changes to Libpng below regarding the old initialization functions.
|
||||
{
|
||||
png_destroy_read_struct(&png_ptr, &info_ptr,
|
||||
(png_infopp)NULL);
|
||||
return;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
If you want to use your own memory allocation routines,
|
||||
@@ -968,7 +970,7 @@ free any memory.
|
||||
png_destroy_read_struct(&png_ptr, &info_ptr,
|
||||
&end_info);
|
||||
fclose(fp);
|
||||
return;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
If you would rather avoid the complexity of setjmp/longjmp issues,
|
||||
@@ -1267,8 +1269,9 @@ into the info_ptr is returned for any complex types.
|
||||
&trans_values);
|
||||
trans - array of transparent entries for
|
||||
palette (PNG_INFO_tRNS)
|
||||
trans_values - transparent pixel for non-paletted
|
||||
images (PNG_INFO_tRNS)
|
||||
trans_values - graylevel or color sample values of
|
||||
the single transparent color for
|
||||
non-paletted images (PNG_INFO_tRNS)
|
||||
num_trans - number of transparent entries
|
||||
(PNG_INFO_tRNS)
|
||||
|
||||
@@ -2031,20 +2034,20 @@ png_infop info_ptr;
|
||||
(PNG_LIBPNG_VER_STRING, (png_voidp)user_error_ptr,
|
||||
user_error_fn, user_warning_fn);
|
||||
if (!png_ptr)
|
||||
return -1;
|
||||
return (ERROR);
|
||||
info_ptr = png_create_info_struct(png_ptr);
|
||||
if (!info_ptr)
|
||||
{
|
||||
png_destroy_read_struct(&png_ptr, (png_infopp)NULL,
|
||||
(png_infopp)NULL);
|
||||
return -1;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
if (setjmp(png_jmpbuf(png_ptr)))
|
||||
{
|
||||
png_destroy_read_struct(&png_ptr, &info_ptr,
|
||||
(png_infopp)NULL);
|
||||
return -1;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
/* This one's new. You can provide functions
|
||||
@@ -2078,7 +2081,7 @@ png_infop info_ptr;
|
||||
{
|
||||
png_destroy_read_struct(&png_ptr, &info_ptr,
|
||||
(png_infopp)NULL);
|
||||
return -1;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
/* This one's new also. Simply give it a chunk
|
||||
@@ -2192,7 +2195,7 @@ custom writing functions. See the discussion under Customizing libpng.
|
||||
FILE *fp = fopen(file_name, "wb");
|
||||
if (!fp)
|
||||
{
|
||||
return;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
Next, png_struct and png_info need to be allocated and initialized.
|
||||
@@ -2207,14 +2210,14 @@ both "png_ptr"; you can call them anything you like, such as
|
||||
(PNG_LIBPNG_VER_STRING, (png_voidp)user_error_ptr,
|
||||
user_error_fn, user_warning_fn);
|
||||
if (!png_ptr)
|
||||
return;
|
||||
return (ERROR);
|
||||
|
||||
png_infop info_ptr = png_create_info_struct(png_ptr);
|
||||
if (!info_ptr)
|
||||
{
|
||||
png_destroy_write_struct(&png_ptr,
|
||||
(png_infopp)NULL);
|
||||
return;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
If you want to use your own memory allocation routines,
|
||||
@@ -2239,9 +2242,9 @@ section below for more information on the libpng error handling.
|
||||
|
||||
if (setjmp(png_jmpbuf(png_ptr)))
|
||||
{
|
||||
png_destroy_write_struct(&png_ptr, &info_ptr);
|
||||
fclose(fp);
|
||||
return;
|
||||
png_destroy_write_struct(&png_ptr, &info_ptr);
|
||||
fclose(fp);
|
||||
return (ERROR);
|
||||
}
|
||||
...
|
||||
return;
|
||||
@@ -2441,8 +2444,9 @@ Some of the more important parts of the png_info are:
|
||||
trans_values);
|
||||
trans - array of transparent entries for
|
||||
palette (PNG_INFO_tRNS)
|
||||
trans_values - transparent pixel for non-paletted
|
||||
images (PNG_INFO_tRNS)
|
||||
trans_values - graylevel or color sample values of
|
||||
the single transparent color for
|
||||
non-paletted images (PNG_INFO_tRNS)
|
||||
num_trans - number of transparent entries
|
||||
(PNG_INFO_tRNS)
|
||||
|
||||
@@ -3377,13 +3381,13 @@ application:
|
||||
|
||||
.SH VII. Y2K Compliance in libpng
|
||||
|
||||
May 17, 2000
|
||||
July 8, 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.7beta14 are Y2K compliant. It is my belief that earlier
|
||||
upward through 1.0.8beta1 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
|
||||
@@ -3524,7 +3528,7 @@ possible without all of you.
|
||||
|
||||
Thanks to Frank J. T. Wojcik for helping with the documentation.
|
||||
|
||||
Libpng version 1.0.7beta14 - May 17, 2000:
|
||||
Libpng version 1.0.8beta1 - July 8, 2000:
|
||||
Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
|
||||
Currently maintained by Glenn Randers-Pehrson (randeg@alum.rpi.edu).
|
||||
|
||||
@@ -3532,36 +3536,64 @@ Supported by the PNG development group
|
||||
.br
|
||||
(png-implement@ccrc.wustl.edu).
|
||||
|
||||
.SH COPYRIGHT NOTICE:
|
||||
.SH COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
|
||||
|
||||
Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
|
||||
(libpng versions 0.5, May 1995, through 0.88, January 1996)
|
||||
If you modify libpng you may insert additional notices immediately following
|
||||
this sentence.
|
||||
|
||||
libpng version 1.0.8beta1, July 8, 2000 is
|
||||
Copyright (c) 2000 Glenn Randers-Pehrson
|
||||
Distributed according to the same disclaimer and license as libpng-1.0.6
|
||||
with the following individuals added to the list of Contributing Authors
|
||||
|
||||
Simon-Pierre Cadieux
|
||||
Eric S. Raymond
|
||||
Gilles Vollant
|
||||
|
||||
and with the following additions to the disclaimer:
|
||||
|
||||
There is no warranty against interference with your enjoyment of the
|
||||
library or against infringement. There is no warranty that our
|
||||
efforts or the library will fulfill any of your particular purposes
|
||||
or needs. This library is provided with all faults, and the entire
|
||||
risk of satisfactory quality, performance, accuracy, and effort is with
|
||||
the user.
|
||||
|
||||
libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
|
||||
Copyright (c) 1998, 1999 Glenn Randers-Pehrson
|
||||
Distributed according to the same disclaimer and license as libpng-0.96,
|
||||
with the following individuals added to the list of Contributing Authors:
|
||||
|
||||
Tom Lane
|
||||
Glenn Randers-Pehrson
|
||||
Willem van Schaik
|
||||
|
||||
libpng versions 0.89, June 1996, through 0.96, May 1997, are
|
||||
Copyright (c) 1996, 1997 Andreas Dilger
|
||||
(libpng versions 0.89c, May 1996, through 0.96, May 1997)
|
||||
Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
|
||||
(libpng versions 0.97, January 1998, through 1.0.7beta14, May 17, 2000)
|
||||
|
||||
For the purposes of this copyright and license, "Contributing Authors"
|
||||
is defined as the following set of individuals:
|
||||
Distributed according to the same disclaimer and license as libpng-0.88,
|
||||
with the following individuals added to the list of Contributing Authors:
|
||||
|
||||
John Bowler
|
||||
Kevin Bracey
|
||||
Sam Bushell
|
||||
Andreas Dilger
|
||||
Magnus Holmgren
|
||||
Tom Lane
|
||||
Dave Martindale
|
||||
Glenn Randers-Pehrson
|
||||
Eric S. Raymond
|
||||
Greg Roelofs
|
||||
Tom Tanner
|
||||
|
||||
libpng versions 0.5, May 1995, through 0.88, January 1996, are
|
||||
Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
|
||||
|
||||
For the purposes of this copyright and license, "Contributing Authors"
|
||||
is defined as the following set of individuals:
|
||||
|
||||
Andreas Dilger
|
||||
Dave Martindale
|
||||
Guy Eric Schalnat
|
||||
Paul Schmidt
|
||||
Tom Tanner
|
||||
Willem van Schaik
|
||||
Tim Wegner
|
||||
|
||||
The PNG Reference Library (libpng) is supplied "AS IS". The Contributing
|
||||
Authors and Group 42, Inc. disclaim all warranties, expressed or implied,
|
||||
The PNG Reference Library is supplied "AS IS". The Contributing Authors
|
||||
and Group 42, Inc. disclaim all warranties, expressed or implied,
|
||||
including, without limitation, the warranties of merchantability and of
|
||||
fitness for any purpose. The Contributing Authors and Group 42, Inc.
|
||||
assume no liability for direct, indirect, incidental, special, exemplary,
|
||||
@@ -3572,16 +3604,13 @@ Permission is hereby granted to use, copy, modify, and distribute this
|
||||
source code, or portions hereof, for any purpose, without fee, subject
|
||||
to the following restrictions:
|
||||
|
||||
1. The origin of this source code must not be
|
||||
misrepresented.
|
||||
1. The origin of this source code must not be misrepresented.
|
||||
|
||||
2. Altered versions must be plainly marked as such
|
||||
and must not be misrepresented as being the
|
||||
original source.
|
||||
2. Altered versions must be plainly marked as such and must not
|
||||
be misrepresented as being the original source.
|
||||
|
||||
3. This Copyright notice may not be removed or
|
||||
altered from any source or altered source
|
||||
distribution.
|
||||
3. This Copyright notice may not be removed or altered from any
|
||||
source or altered source distribution.
|
||||
|
||||
The Contributing Authors and Group 42, Inc. specifically permit, without
|
||||
fee, and encourage the use of this source code as a component to
|
||||
@@ -3589,6 +3618,7 @@ supporting the PNG file format in commercial products. If you use this
|
||||
source code in a product, acknowledgment is not required but would be
|
||||
appreciated.
|
||||
|
||||
|
||||
A "png_get_copyright" function is available, for convenient use in "about"
|
||||
boxes and the like:
|
||||
|
||||
@@ -3597,8 +3627,12 @@ boxes and the like:
|
||||
Also, the PNG logo (in PNG format, of course) is supplied in the
|
||||
file "pngnow.png".
|
||||
|
||||
Libpng is OSI Certified Open Source Software. OSI Certified is a
|
||||
Libpng is OSI Certified Open Source Software. OSI Certified Open Source is a
|
||||
certification mark of the Open Source Initiative.
|
||||
|
||||
Glenn Randers-Pehrson
|
||||
randeg@alum.rpi.edu
|
||||
July 8, 2000
|
||||
|
||||
.\" end of man page
|
||||
|
||||
|
||||
50
libpng.txt
50
libpng.txt
@@ -1,6 +1,6 @@
|
||||
libpng.txt - A description on how to use and modify libpng
|
||||
|
||||
libpng version 1.0.7beta14 - May 17, 2000
|
||||
libpng version 1.0.8beta1 - July 8, 2000
|
||||
Updated and distributed by Glenn Randers-Pehrson
|
||||
<randeg@alum.rpi.edu>
|
||||
Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
|
||||
@@ -148,13 +148,13 @@ Customizing libpng.
|
||||
FILE *fp = fopen(file_name, "rb");
|
||||
if (!fp)
|
||||
{
|
||||
return;
|
||||
return (ERROR);
|
||||
}
|
||||
fread(header, 1, number, fp);
|
||||
is_png = !png_sig_cmp(header, 0, number);
|
||||
if (!is_png)
|
||||
{
|
||||
return;
|
||||
return (NOT_PNG);
|
||||
}
|
||||
|
||||
|
||||
@@ -166,19 +166,21 @@ pointers to error handling functions, and a pointer to a data struct for
|
||||
use by the error functions, if necessary (the pointer and functions can
|
||||
be NULL if the default error handlers are to be used). See the section
|
||||
on Changes to Libpng below regarding the old initialization functions.
|
||||
The structure allocation functions quietly return NULL if they fail to
|
||||
create the structure, so your application should check for that.
|
||||
|
||||
png_structp png_ptr = png_create_read_struct
|
||||
(PNG_LIBPNG_VER_STRING, (png_voidp)user_error_ptr,
|
||||
user_error_fn, user_warning_fn);
|
||||
if (!png_ptr)
|
||||
return;
|
||||
return (ERROR);
|
||||
|
||||
png_infop info_ptr = png_create_info_struct(png_ptr);
|
||||
if (!info_ptr)
|
||||
{
|
||||
png_destroy_read_struct(&png_ptr,
|
||||
(png_infopp)NULL, (png_infopp)NULL);
|
||||
return;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
png_infop end_info = png_create_info_struct(png_ptr);
|
||||
@@ -186,7 +188,7 @@ on Changes to Libpng below regarding the old initialization functions.
|
||||
{
|
||||
png_destroy_read_struct(&png_ptr, &info_ptr,
|
||||
(png_infopp)NULL);
|
||||
return;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
If you want to use your own memory allocation routines,
|
||||
@@ -221,7 +223,7 @@ free any memory.
|
||||
png_destroy_read_struct(&png_ptr, &info_ptr,
|
||||
&end_info);
|
||||
fclose(fp);
|
||||
return;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
If you would rather avoid the complexity of setjmp/longjmp issues,
|
||||
@@ -520,8 +522,9 @@ into the info_ptr is returned for any complex types.
|
||||
&trans_values);
|
||||
trans - array of transparent entries for
|
||||
palette (PNG_INFO_tRNS)
|
||||
trans_values - transparent pixel for non-paletted
|
||||
images (PNG_INFO_tRNS)
|
||||
trans_values - graylevel or color sample values of
|
||||
the single transparent color for
|
||||
non-paletted images (PNG_INFO_tRNS)
|
||||
num_trans - number of transparent entries
|
||||
(PNG_INFO_tRNS)
|
||||
|
||||
@@ -1284,20 +1287,20 @@ png_infop info_ptr;
|
||||
(PNG_LIBPNG_VER_STRING, (png_voidp)user_error_ptr,
|
||||
user_error_fn, user_warning_fn);
|
||||
if (!png_ptr)
|
||||
return -1;
|
||||
return (ERROR);
|
||||
info_ptr = png_create_info_struct(png_ptr);
|
||||
if (!info_ptr)
|
||||
{
|
||||
png_destroy_read_struct(&png_ptr, (png_infopp)NULL,
|
||||
(png_infopp)NULL);
|
||||
return -1;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
if (setjmp(png_jmpbuf(png_ptr)))
|
||||
{
|
||||
png_destroy_read_struct(&png_ptr, &info_ptr,
|
||||
(png_infopp)NULL);
|
||||
return -1;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
/* This one's new. You can provide functions
|
||||
@@ -1331,7 +1334,7 @@ png_infop info_ptr;
|
||||
{
|
||||
png_destroy_read_struct(&png_ptr, &info_ptr,
|
||||
(png_infopp)NULL);
|
||||
return -1;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
/* This one's new also. Simply give it a chunk
|
||||
@@ -1445,7 +1448,7 @@ custom writing functions. See the discussion under Customizing libpng.
|
||||
FILE *fp = fopen(file_name, "wb");
|
||||
if (!fp)
|
||||
{
|
||||
return;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
Next, png_struct and png_info need to be allocated and initialized.
|
||||
@@ -1460,14 +1463,14 @@ both "png_ptr"; you can call them anything you like, such as
|
||||
(PNG_LIBPNG_VER_STRING, (png_voidp)user_error_ptr,
|
||||
user_error_fn, user_warning_fn);
|
||||
if (!png_ptr)
|
||||
return;
|
||||
return (ERROR);
|
||||
|
||||
png_infop info_ptr = png_create_info_struct(png_ptr);
|
||||
if (!info_ptr)
|
||||
{
|
||||
png_destroy_write_struct(&png_ptr,
|
||||
(png_infopp)NULL);
|
||||
return;
|
||||
return (ERROR);
|
||||
}
|
||||
|
||||
If you want to use your own memory allocation routines,
|
||||
@@ -1492,9 +1495,9 @@ section below for more information on the libpng error handling.
|
||||
|
||||
if (setjmp(png_jmpbuf(png_ptr)))
|
||||
{
|
||||
png_destroy_write_struct(&png_ptr, &info_ptr);
|
||||
fclose(fp);
|
||||
return;
|
||||
png_destroy_write_struct(&png_ptr, &info_ptr);
|
||||
fclose(fp);
|
||||
return (ERROR);
|
||||
}
|
||||
...
|
||||
return;
|
||||
@@ -1694,8 +1697,9 @@ Some of the more important parts of the png_info are:
|
||||
trans_values);
|
||||
trans - array of transparent entries for
|
||||
palette (PNG_INFO_tRNS)
|
||||
trans_values - transparent pixel for non-paletted
|
||||
images (PNG_INFO_tRNS)
|
||||
trans_values - graylevel or color sample values of
|
||||
the single transparent color for
|
||||
non-paletted images (PNG_INFO_tRNS)
|
||||
num_trans - number of transparent entries
|
||||
(PNG_INFO_tRNS)
|
||||
|
||||
@@ -2630,13 +2634,13 @@ application:
|
||||
|
||||
VII. Y2K Compliance in libpng
|
||||
|
||||
May 17, 2000
|
||||
July 8, 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.7beta14 are Y2K compliant. It is my belief that earlier
|
||||
upward through 1.0.8beta1 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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
.TH LIBPNGPF 3 "May 17, 2000"
|
||||
.TH LIBPNGPF 3 "July 8, 2000"
|
||||
.SH NAME
|
||||
libpng \- Portable Network Graphics (PNG) Reference Library 1.0.7beta14
|
||||
libpng \- Portable Network Graphics (PNG) Reference Library 1.0.8beta1
|
||||
(private functions)
|
||||
.SH SYNOPSIS
|
||||
\fB#include <png.h>\fP
|
||||
|
||||
47
msvc/README.txt
Normal file
47
msvc/README.txt
Normal file
@@ -0,0 +1,47 @@
|
||||
Microsoft Developer Studio Build File, Format Version 6.00 for
|
||||
libpng 1.0.8beta1 (July 8, 2000) and zlib
|
||||
|
||||
Copyright (C) 2000 Simon-Pierre Cadieux
|
||||
For conditions of distribution and use, see copyright notice in png.h
|
||||
|
||||
Assumes that libpng sources are in ..
|
||||
Assumes that zlib sources have been copied to ..\..\zlib
|
||||
|
||||
To build:
|
||||
|
||||
1) On the main menu Select "Build|Set Active configuration".
|
||||
Among the configurations beginning with "libpng" select the
|
||||
one you wish to build (the corresponding "zlib" configuration
|
||||
will be built automatically).
|
||||
|
||||
2) Select "Build|Clean"
|
||||
|
||||
3) Select "Build|Rebuild All"
|
||||
|
||||
4) Look in the appropriate "win32" subdirectories for both "zlib"
|
||||
and "libpng" binaries.
|
||||
|
||||
This project will build the PNG Development Group's "official" versions of
|
||||
libpng and zlib libraries:
|
||||
|
||||
libpng1.dll (default version, currently C code only)
|
||||
libpng1a.dll (C + Assembler version)
|
||||
libpng1b.dll (C + Assembler debug version)
|
||||
libpng1d.dll (C code debug version)
|
||||
libpng1[c,e-m].dll (reserved for official versions)
|
||||
libpng1[n-z].dll (available for private versions)
|
||||
zlib.dll (default version, currently C code only)
|
||||
zlibd.dll (debug version)
|
||||
|
||||
If you change anything in libpng, or select different compiler settings,
|
||||
please change the library name to an unreserved name, and define
|
||||
DLLFNAME_POSTFIX and (PRIVATEBUILD or SPECIALBUILD) accordingly. DLLFNAME_POSTFIX
|
||||
should correspond to a string in the range of "N" to "Z" depending on the letter
|
||||
you choose for your private version.
|
||||
|
||||
All DLLs built by this project use the Microsoft dynamic C runtime library
|
||||
MSVCRT.DLL (MSVCRTD.DLL for debug versions). If you distribute any of the
|
||||
above mentioned libraries you should also include this DLL in your package.
|
||||
For a list of files that are redistributable in Visual C++ 6.0, see
|
||||
Common\Redist\Redist.txt on Disc 1 of the Visual C++ 6.0 product CDs.
|
||||
|
||||
367
msvc/libpng.dsp
Normal file
367
msvc/libpng.dsp
Normal file
@@ -0,0 +1,367 @@
|
||||
# Microsoft Developer Studio Project File - Name="libpng" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
|
||||
# TARGTYPE "Win32 (x86) Static Library" 0x0104
|
||||
|
||||
CFG=libpng - Win32 DLL
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "libpng.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "libpng.mak" CFG="libpng - Win32 DLL"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "libpng - Win32 DLL" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE "libpng - Win32 DLL Debug" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE "libpng - Win32 DLL ASM" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE "libpng - Win32 DLL Debug ASM" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE "libpng - Win32 LIB" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "libpng - Win32 LIB Debug" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
|
||||
!IF "$(CFG)" == "libpng - Win32 DLL"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir ".\win32\libpng\dll"
|
||||
# PROP Intermediate_Dir ".\win32\libpng\dll"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
CPP=cl.exe
|
||||
# ADD BASE CPP /nologo /MD /W3 /O1 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_USRDLL" /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /O1 /I ".." /I "..\..\zlib" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "PNG_BUILD_DLL" /D "ZLIB_DLL" /Yu"png.h" /FD /c
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /i ".." /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 /nologo /dll /machine:I386
|
||||
# ADD LINK32 /nologo /dll /machine:I386 /out:".\win32\libpng\dll\libpng1.dll"
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
|
||||
!ELSEIF "$(CFG)" == "libpng - Win32 DLL Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir ".\win32\libpng\dll_dbg"
|
||||
# PROP Intermediate_Dir ".\win32\libpng\dll_dbg"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
CPP=cl.exe
|
||||
# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_USRDLL" /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Zi /Od /I ".." /I "..\..\zlib" /D "DEBUG" /D "_DEBUG" /D PNG_DEBUG=1 /D "WIN32" /D "_WINDOWS" /D "PNG_BUILD_DLL" /D "ZLIB_DLL" /Yu"png.h" /FD /GZ /c
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /i ".." /d "_DEBUG" /d PNG_DEBUG=1
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 /nologo /dll /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 /nologo /dll /debug /machine:I386 /out:".\win32\libpng\dll_dbg\libpng1d.dll"
|
||||
|
||||
!ELSEIF "$(CFG)" == "libpng - Win32 DLL ASM"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir ".\win32\libpng\dll_asm"
|
||||
# PROP Intermediate_Dir ".\win32\libpng\dll_asm"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
CPP=cl.exe
|
||||
# ADD BASE CPP /nologo /MD /W3 /O1 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_USRDLL" /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /O1 /I ".." /I "..\..\zlib" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "PNG_USE_PNGVCRD" /D "PNG_BUILD_DLL" /D "ZLIB_DLL" /Yu"png.h" /FD /c
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /i ".." /d "NDEBUG" /d "PNG_USE_PNGVCRD"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 /nologo /dll /machine:I386
|
||||
# ADD LINK32 /nologo /dll /machine:I386 /out:".\win32\libpng\dll_asm\libpng1a.dll"
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
|
||||
!ELSEIF "$(CFG)" == "libpng - Win32 DLL Debug ASM"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir ".\win32\libpng\dll_dbga"
|
||||
# PROP Intermediate_Dir ".\win32\libpng\dll_dbga"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
CPP=cl.exe
|
||||
# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_USRDLL" /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Zi /Od /I ".." /I "..\..\zlib" /D "DEBUG" /D "_DEBUG" /D PNG_DEBUG=1 /D "WIN32" /D "_WINDOWS" /D "PNG_USE_PNGVCRD" /D "PNG_BUILD_DLL" /D "ZLIB_DLL" /Yu"png.h" /FD /GZ /c
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /i ".." /d "_DEBUG" /d PNG_DEBUG=1 /d "PNG_USE_PNGVCRD"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 /nologo /dll /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 /nologo /dll /debug /machine:I386 /out:".\win32\libpng\dll_dbga\libpng1b.dll"
|
||||
|
||||
!ELSEIF "$(CFG)" == "libpng - Win32 LIB"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir ".\win32\libpng\lib"
|
||||
# PROP Intermediate_Dir ".\win32\libpng\lib"
|
||||
# PROP Target_Dir ""
|
||||
MTL=midl.exe
|
||||
CPP=cl.exe
|
||||
# ADD BASE CPP /nologo /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_LIB" /FD /c
|
||||
# ADD CPP /nologo /W3 /O1 /I ".." /I "..\..\zlib" /D "WIN32" /D "NDEBUG" /Yu"png.h" /FD /c
|
||||
RSC=rc.exe
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /i ".." /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo
|
||||
|
||||
!ELSEIF "$(CFG)" == "libpng - Win32 LIB Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir ".\win32\libpng\lib_dbg"
|
||||
# PROP Intermediate_Dir ".\win32\libpng\lib_dbg"
|
||||
# PROP Target_Dir ""
|
||||
MTL=midl.exe
|
||||
CPP=cl.exe
|
||||
# ADD BASE CPP /nologo /W3 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_LIB" /FD /GZ /c
|
||||
# ADD CPP /nologo /W3 /Zi /Od /I ".." /I "..\..\zlib" /D "DEBUG" /D "_DEBUG" /D PNG_DEBUG=1 /D "WIN32" /Yu"png.h" /FD /GZ /c
|
||||
RSC=rc.exe
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "libpng - Win32 DLL"
|
||||
# Name "libpng - Win32 DLL Debug"
|
||||
# Name "libpng - Win32 DLL ASM"
|
||||
# Name "libpng - Win32 DLL Debug ASM"
|
||||
# Name "libpng - Win32 LIB"
|
||||
# Name "libpng - Win32 LIB Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\png.c
|
||||
# SUBTRACT CPP /YX /Yc /Yu
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\png.rc
|
||||
|
||||
!IF "$(CFG)" == "libpng - Win32 DLL"
|
||||
|
||||
!ELSEIF "$(CFG)" == "libpng - Win32 DLL Debug"
|
||||
|
||||
!ELSEIF "$(CFG)" == "libpng - Win32 DLL ASM"
|
||||
|
||||
!ELSEIF "$(CFG)" == "libpng - Win32 DLL Debug ASM"
|
||||
|
||||
!ELSEIF "$(CFG)" == "libpng - Win32 LIB"
|
||||
|
||||
# PROP Exclude_From_Build 1
|
||||
|
||||
!ELSEIF "$(CFG)" == "libpng - Win32 LIB Debug"
|
||||
|
||||
# PROP Exclude_From_Build 1
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\png32ms.def
|
||||
|
||||
!IF "$(CFG)" == "libpng - Win32 DLL"
|
||||
|
||||
!ELSEIF "$(CFG)" == "libpng - Win32 DLL Debug"
|
||||
|
||||
!ELSEIF "$(CFG)" == "libpng - Win32 DLL ASM"
|
||||
|
||||
!ELSEIF "$(CFG)" == "libpng - Win32 DLL Debug ASM"
|
||||
|
||||
!ELSEIF "$(CFG)" == "libpng - Win32 LIB"
|
||||
|
||||
# PROP Exclude_From_Build 1
|
||||
|
||||
!ELSEIF "$(CFG)" == "libpng - Win32 LIB Debug"
|
||||
|
||||
# PROP Exclude_From_Build 1
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\pngerror.c
|
||||
# ADD CPP /Yc"png.h"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\pngget.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\pngmem.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\pngpread.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\pngread.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\pngrio.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\pngrtran.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\pngrutil.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\pngset.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\pngtrans.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\pngvcrd.c
|
||||
|
||||
!IF "$(CFG)" == "libpng - Win32 DLL"
|
||||
|
||||
# PROP Exclude_From_Build 1
|
||||
|
||||
!ELSEIF "$(CFG)" == "libpng - Win32 DLL Debug"
|
||||
|
||||
# PROP Exclude_From_Build 1
|
||||
|
||||
!ELSEIF "$(CFG)" == "libpng - Win32 DLL ASM"
|
||||
|
||||
!ELSEIF "$(CFG)" == "libpng - Win32 DLL Debug ASM"
|
||||
|
||||
!ELSEIF "$(CFG)" == "libpng - Win32 LIB"
|
||||
|
||||
# PROP Exclude_From_Build 1
|
||||
|
||||
!ELSEIF "$(CFG)" == "libpng - Win32 LIB Debug"
|
||||
|
||||
# PROP Exclude_From_Build 1
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\pngwio.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\pngwrite.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\pngwtran.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\pngwutil.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\png.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\pngconf.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\readme.txt
|
||||
# PROP Exclude_From_Build 1
|
||||
# End Source File
|
||||
# End Target
|
||||
# End Project
|
||||
44
msvc/libpng.dsw
Normal file
44
msvc/libpng.dsw
Normal file
@@ -0,0 +1,44 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "libpng"=.\libpng.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name zlib
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "zlib"=.\zlib.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
83
msvc/png.rc
Normal file
83
msvc/png.rc
Normal file
@@ -0,0 +1,83 @@
|
||||
#define PNG_VERSION_INFO_ONLY
|
||||
|
||||
#include <windows.h>
|
||||
#include "png.h"
|
||||
|
||||
#define _QUOTE(x) # x
|
||||
#define QUOTE(x) _QUOTE(x)
|
||||
|
||||
#define PNG_LIBPNG_DLLFNAME "LIBPNG"
|
||||
|
||||
#if defined(DLLFNAME_POSTFIX) && !defined(PRIVATEBUILD) && !defined(SPECIALBUILD)
|
||||
# error PRIVATEBUILD or SPECIALBUILD must be defined as a string describing the type of change brought to the standard library
|
||||
#endif /* defined(DLLFNAME_POSTFIX)... */
|
||||
|
||||
#if !defined(DLLFNAME_POSTFIX) && defined(PNG_USE_PNGVCRD)
|
||||
# if defined(PNG_DEBUG) && (PNG_DEBUG > 0)
|
||||
# define DLLFNAME_POSTFIX "B"
|
||||
# else
|
||||
# define DLLFNAME_POSTFIX "A"
|
||||
# endif /* !defined(DLLFNAME_POSTFIX)... */
|
||||
#endif
|
||||
|
||||
#if defined(PNG_DEBUG) && (PNG_DEBUG > 0)
|
||||
# define VS_DEBUG VS_FF_DEBUG
|
||||
# ifndef DLLFNAME_POSTFIX
|
||||
# define DLLFNAME_POSTFIX "D"
|
||||
# endif /* DLLFNAME_POSTFIX */
|
||||
# ifndef COMMENTS
|
||||
# define COMMENTS "PNG_DEBUG=" QUOTE(PNG_DEBUG)
|
||||
# endif /* COMMENTS */
|
||||
#else
|
||||
# define VS_DEBUG 0
|
||||
# ifndef DLLFNAME_POSTFIX
|
||||
# define DLLFNAME_POSTFIX
|
||||
# endif /* DLLFNAME_POSTFIX */
|
||||
#endif /* defined(DEBUG)... */
|
||||
|
||||
#ifdef PRIVATEBUILD
|
||||
# define VS_PRIVATEBUILD VS_FF_PRIVATEBUILD
|
||||
#else
|
||||
# define VS_PRIVATEBUILD 0
|
||||
#endif /* PRIVATEBUILD */
|
||||
|
||||
#ifdef SPECIALBUILD
|
||||
# define VS_SPECIALBUILD VS_FF_SPECIALBUILD
|
||||
#else
|
||||
# define VS_SPECIALBUILD 0
|
||||
#endif /* SPECIALBUILD */
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION PNG_LIBPNG_VER_MAJOR, PNG_LIBPNG_VER_MINOR, PNG_LIBPNG_VER_RELEASE, PNG_LIBPNG_VER_BUILD
|
||||
PRODUCTVERSION PNG_LIBPNG_VER_MAJOR, PNG_LIBPNG_VER_MINOR, PNG_LIBPNG_VER_RELEASE, PNG_LIBPNG_VER_BUILD
|
||||
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
|
||||
FILEFLAGS VS_DEBUG | VS_PRIVATEBUILD | VS_SPECIALBUILD
|
||||
FILEOS VOS__WINDOWS32
|
||||
FILETYPE VFT_DLL
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN BLOCK "040904E4" /* Language type = U.S English(0x0409) and Character Set = Windows, Multilingual(0x04E4) */
|
||||
BEGIN
|
||||
#ifdef COMMENTS
|
||||
VALUE "Comments", COMMENTS "\000"
|
||||
#endif /* COMMENTS */
|
||||
VALUE "FileDescription", "PNG image compression library\000"
|
||||
VALUE "FileVersion", PNG_LIBPNG_VER_STRING "\000"
|
||||
VALUE "InternalName", PNG_LIBPNG_DLLFNAME QUOTE(PNG_LIBPNG_VER_MAJOR) DLLFNAME_POSTFIX " (Windows 32 bit)\000"
|
||||
VALUE "LegalCopyright", "\251 1998-2000 Glenn Randers-Pehrson\000"
|
||||
VALUE "OriginalFilename", PNG_LIBPNG_DLLFNAME QUOTE(PNG_LIBPNG_VER_MAJOR) DLLFNAME_POSTFIX ".DLL\000"
|
||||
#ifdef PRIVATEBUILD
|
||||
VALUE "PrivateBuild", PRIVATEBUILD
|
||||
#endif /* PRIVATEBUILD */
|
||||
VALUE "ProductName", "LibPNG\000"
|
||||
VALUE "ProductVersion", "1\000"
|
||||
#ifdef SPECIALBUILD
|
||||
VALUE "SpecialBuild", SPECIALBUILD
|
||||
#endif /* SPECIALBUILD */
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x0409, 0x04E4
|
||||
END
|
||||
END
|
||||
178
msvc/png32ms.def
Normal file
178
msvc/png32ms.def
Normal file
@@ -0,0 +1,178 @@
|
||||
;------------------------------------------
|
||||
; LIBPNG module definition file for Windows
|
||||
;------------------------------------------
|
||||
|
||||
LIBRARY
|
||||
DESCRIPTION "PNG image compression library for Windows"
|
||||
|
||||
EXPORTS
|
||||
;Version 1.0.8beta1
|
||||
png_build_grayscale_palette @1
|
||||
png_check_sig @2
|
||||
png_chunk_error @3
|
||||
png_chunk_warning @4
|
||||
png_convert_from_struct_tm @5
|
||||
png_convert_from_time_t @6
|
||||
png_create_info_struct @7
|
||||
png_create_read_struct @8
|
||||
png_create_write_struct @9
|
||||
png_data_freer @10
|
||||
png_destroy_info_struct @11
|
||||
png_destroy_read_struct @12
|
||||
png_destroy_write_struct @13
|
||||
png_error @14
|
||||
png_free @15
|
||||
png_free_data @16
|
||||
png_get_IHDR @17
|
||||
png_get_PLTE @18
|
||||
png_get_bKGD @19
|
||||
png_get_bit_depth @20
|
||||
png_get_cHRM @21
|
||||
png_get_cHRM_fixed @22
|
||||
png_get_channels @23
|
||||
png_get_color_type @24
|
||||
png_get_compression_buffer_size @25
|
||||
png_get_compression_type @26
|
||||
png_get_copyright @27
|
||||
png_get_error_ptr @28
|
||||
png_get_filter_type @29
|
||||
png_get_gAMA @30
|
||||
png_get_gAMA_fixed @31
|
||||
png_get_hIST @32
|
||||
png_get_header_ver @33
|
||||
png_get_header_version @34
|
||||
png_get_iCCP @35
|
||||
png_get_image_height @36
|
||||
png_get_image_width @37
|
||||
png_get_interlace_type @38
|
||||
png_get_io_ptr @39
|
||||
png_get_libpng_ver @40
|
||||
png_get_oFFs @41
|
||||
png_get_pCAL @42
|
||||
png_get_pHYs @43
|
||||
png_get_pixel_aspect_ratio @44
|
||||
png_get_pixels_per_meter @45
|
||||
png_get_progressive_ptr @46
|
||||
png_get_rgb_to_gray_status @47
|
||||
png_get_rowbytes @48
|
||||
png_get_rows @49
|
||||
png_get_sBIT @50
|
||||
png_get_sCAL @51
|
||||
png_get_sPLT @52
|
||||
png_get_sRGB @53
|
||||
png_get_signature @54
|
||||
png_get_tIME @55
|
||||
png_get_tRNS @56
|
||||
png_get_text @57
|
||||
png_get_unknown_chunks @58
|
||||
png_get_user_chunk_ptr @59
|
||||
png_get_user_transform_ptr @60
|
||||
png_get_valid @61
|
||||
png_get_x_offset_microns @62
|
||||
png_get_x_offset_pixels @63
|
||||
png_get_x_pixels_per_meter @64
|
||||
png_get_y_offset_microns @65
|
||||
png_get_y_offset_pixels @66
|
||||
png_get_y_pixels_per_meter @67
|
||||
png_malloc @68
|
||||
png_memcpy_check @69
|
||||
png_memset_check @70
|
||||
png_permit_empty_plte @71
|
||||
png_process_data @72
|
||||
png_progressive_combine_row @73
|
||||
png_read_end @74
|
||||
png_read_image @75
|
||||
png_read_info @76
|
||||
png_read_init @77
|
||||
png_read_png @78
|
||||
png_read_row @79
|
||||
png_read_rows @80
|
||||
png_read_update_info @81
|
||||
png_reset_zstream @82
|
||||
png_set_IHDR @83
|
||||
png_set_PLTE @84
|
||||
png_set_bKGD @85
|
||||
png_set_background @86
|
||||
png_set_bgr @87
|
||||
png_set_cHRM @88
|
||||
png_set_cHRM_fixed @89
|
||||
png_set_compression_buffer_size @90
|
||||
png_set_compression_level @91
|
||||
png_set_compression_mem_level @92
|
||||
png_set_compression_method @93
|
||||
png_set_compression_strategy @94
|
||||
png_set_compression_window_bits @95
|
||||
png_set_crc_action @96
|
||||
png_set_dither @97
|
||||
png_set_error_fn @98
|
||||
png_set_expand @99
|
||||
png_set_filler @100
|
||||
png_set_filter @101
|
||||
png_set_filter_heuristics @102
|
||||
png_set_flush @103
|
||||
png_set_gAMA @104
|
||||
png_set_gAMA_fixed @105
|
||||
png_set_gamma @106
|
||||
png_set_gray_1_2_4_to_8 @107
|
||||
png_set_gray_to_rgb @108
|
||||
png_set_hIST @109
|
||||
png_set_iCCP @110
|
||||
png_set_interlace_handling @111
|
||||
png_set_invert_alpha @112
|
||||
png_set_invert_mono @113
|
||||
png_set_keep_unknown_chunks @114
|
||||
png_set_oFFs @115
|
||||
png_set_pCAL @116
|
||||
png_set_pHYs @117
|
||||
png_set_packing @118
|
||||
png_set_packswap @119
|
||||
png_set_palette_to_rgb @120
|
||||
png_set_progressive_read_fn @121
|
||||
png_set_read_fn @122
|
||||
png_set_read_status_fn @123
|
||||
png_set_read_user_chunk_fn @124
|
||||
png_set_read_user_transform_fn @125
|
||||
png_set_rgb_to_gray @126
|
||||
png_set_rgb_to_gray_fixed @127
|
||||
png_set_rows @128
|
||||
png_set_sBIT @129
|
||||
png_set_sCAL @130
|
||||
png_set_sPLT @131
|
||||
png_set_sRGB @132
|
||||
png_set_sRGB_gAMA_and_cHRM @133
|
||||
png_set_shift @134
|
||||
png_set_sig_bytes @135
|
||||
png_set_strip_16 @136
|
||||
png_set_strip_alpha @137
|
||||
png_set_swap @138
|
||||
png_set_swap_alpha @139
|
||||
png_set_tIME @140
|
||||
png_set_tRNS @141
|
||||
png_set_tRNS_to_alpha @142
|
||||
png_set_text @143
|
||||
png_set_unknown_chunk_location @144
|
||||
png_set_unknown_chunks @145
|
||||
png_set_user_transform_info @146
|
||||
png_set_write_fn @147
|
||||
png_set_write_status_fn @148
|
||||
png_set_write_user_transform_fn @149
|
||||
png_sig_cmp @150
|
||||
png_start_read_image @151
|
||||
png_warning @152
|
||||
png_write_chunk @153
|
||||
png_write_chunk_data @154
|
||||
png_write_chunk_end @155
|
||||
png_write_chunk_start @156
|
||||
png_write_end @157
|
||||
png_write_flush @158
|
||||
png_write_image @159
|
||||
png_write_info @160
|
||||
png_write_info_before_PLTE @161
|
||||
png_write_init @162
|
||||
png_write_png @163
|
||||
png_write_row @164
|
||||
png_write_rows @165
|
||||
png_read_init_2 @166
|
||||
png_write_init_2 @167
|
||||
png_access_version_number @168
|
||||
; png_sig_bytes @169
|
||||
45
msvc/zlib.def
Normal file
45
msvc/zlib.def
Normal file
@@ -0,0 +1,45 @@
|
||||
LIBRARY
|
||||
DESCRIPTION "zlib compression library for Windows"
|
||||
|
||||
EXPORTS
|
||||
adler32 @1
|
||||
compress @2
|
||||
crc32 @3
|
||||
deflate @4
|
||||
deflateCopy @5
|
||||
deflateEnd @6
|
||||
deflateInit2_ @7
|
||||
deflateInit_ @8
|
||||
deflateParams @9
|
||||
deflateReset @10
|
||||
deflateSetDictionary @11
|
||||
gzclose @12
|
||||
gzdopen @13
|
||||
gzerror @14
|
||||
gzflush @15
|
||||
gzopen @16
|
||||
gzread @17
|
||||
gzwrite @18
|
||||
inflate @19
|
||||
inflateEnd @20
|
||||
inflateInit2_ @21
|
||||
inflateInit_ @22
|
||||
inflateReset @23
|
||||
inflateSetDictionary @24
|
||||
inflateSync @25
|
||||
uncompress @26
|
||||
zlibVersion @27
|
||||
gzprintf @28
|
||||
gzputc @29
|
||||
gzgetc @30
|
||||
gzseek @31
|
||||
gzrewind @32
|
||||
gztell @33
|
||||
gzeof @34
|
||||
gzsetparams @35
|
||||
zError @36
|
||||
inflateSyncPoint @37
|
||||
get_crc_table @38
|
||||
compress2 @39
|
||||
gzputs @40
|
||||
gzgets @41
|
||||
400
msvc/zlib.dsp
Normal file
400
msvc/zlib.dsp
Normal file
@@ -0,0 +1,400 @@
|
||||
# Microsoft Developer Studio Project File - Name="zlib" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
|
||||
# TARGTYPE "Win32 (x86) Static Library" 0x0104
|
||||
|
||||
CFG=zlib - Win32 DLL
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "zlib.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "zlib.mak" CFG="zlib - Win32 DLL"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "zlib - Win32 DLL" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE "zlib - Win32 DLL Debug" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE "zlib - Win32 DLL ASM" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE "zlib - Win32 DLL Debug ASM" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE "zlib - Win32 LIB" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "zlib - Win32 LIB Debug" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
|
||||
!IF "$(CFG)" == "zlib - Win32 DLL"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir ".\win32\zlib\dll"
|
||||
# PROP Intermediate_Dir ".\win32\zlib\dll"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
CPP=cl.exe
|
||||
# ADD BASE CPP /nologo /MD /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /O1 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "ZLIB_DLL" /FD /c
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 /nologo /dll /machine:I386
|
||||
# ADD LINK32 /nologo /dll /machine:I386
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
|
||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir ".\win32\zlib\dll_dbg"
|
||||
# PROP Intermediate_Dir ".\win32\zlib\dll_dbg"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
CPP=cl.exe
|
||||
# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Zi /Od /D "DEBUG" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "ZLIB_DLL" /FD /GZ /c
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 /nologo /dll /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 /nologo /dll /debug /machine:I386 /out:".\win32\zlib\dll_dbg\zlibd.dll"
|
||||
|
||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL ASM"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir ".\win32\zlib\dll_asm"
|
||||
# PROP Intermediate_Dir ".\win32\zlib\dll_asm"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
CPP=cl.exe
|
||||
# ADD BASE CPP /nologo /MD /W3 /O1 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_USRDLL" /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /O1 /I "..\..\zlib" /D "NDEBUG" /D "WIN32" /D "_WIN32" /D "_WINDOWS" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /D "ASMV" /FAcs /FD /c
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /i ".." /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 /nologo /dll /machine:I386
|
||||
# ADD LINK32 gvmat32.obj /nologo /dll /machine:I386 /out:".\win32\zlib\dll_asm\zliba.dll"
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
|
||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL Debug ASM"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir ".\win32\zlib\dll_dbga"
|
||||
# PROP Intermediate_Dir ".\win32\zlib\dll_dbga"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
CPP=cl.exe
|
||||
# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_USRDLL" /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Zi /Od /I "..\..\zlib" /D "_DEBUG" /D "WIN32" /D "_WIN32" /D "_WINDOWS" /D "ZLIB_DLL" /D "DYNAMIC_CRC_TABLE" /D "ASMV" /FAcs /FD /GZ /c
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /i ".." /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 /nologo /dll /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 gvmat32d.obj /nologo /dll /debug /machine:I386 /out:".\win32\zlib\dll_dbga\zlibb.dll"
|
||||
|
||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir ".\win32\zlib\lib"
|
||||
# PROP Intermediate_Dir ".\win32\zlib\lib"
|
||||
# PROP Target_Dir ""
|
||||
MTL=midl.exe
|
||||
CPP=cl.exe
|
||||
# ADD BASE CPP /nologo /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_LIB" /FD /c
|
||||
# ADD CPP /nologo /W3 /O1 /D "WIN32" /D "NDEBUG" /FD /c
|
||||
RSC=rc.exe
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo
|
||||
|
||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir ".\win32\zlib\lib_dbg"
|
||||
# PROP Intermediate_Dir ".\win32\zlib\lib_dbg"
|
||||
# PROP Target_Dir ""
|
||||
MTL=midl.exe
|
||||
CPP=cl.exe
|
||||
# ADD BASE CPP /nologo /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_LIB" /FD /GZ /c
|
||||
# ADD CPP /nologo /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
|
||||
RSC=rc.exe
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "zlib - Win32 DLL"
|
||||
# Name "zlib - Win32 DLL Debug"
|
||||
# Name "zlib - Win32 DLL ASM"
|
||||
# Name "zlib - Win32 DLL Debug ASM"
|
||||
# Name "zlib - Win32 LIB"
|
||||
# Name "zlib - Win32 LIB Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\adler32.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\compress.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\crc32.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\deflate.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\contrib\asm386\gvmat32c.c
|
||||
|
||||
!IF "$(CFG)" == "zlib - Win32 DLL"
|
||||
|
||||
# PROP Exclude_From_Build 1
|
||||
|
||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL Debug"
|
||||
|
||||
# PROP Exclude_From_Build 1
|
||||
|
||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL ASM"
|
||||
|
||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL Debug ASM"
|
||||
|
||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB"
|
||||
|
||||
# PROP Exclude_From_Build 1
|
||||
|
||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB Debug"
|
||||
|
||||
# PROP Exclude_From_Build 1
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\gzio.c
|
||||
# ADD CPP /Yc"zutil.h"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\infblock.c
|
||||
# ADD CPP /Yu"zutil.h"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\infcodes.c
|
||||
# ADD CPP /Yu"zutil.h"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\inffast.c
|
||||
# ADD CPP /Yu"zutil.h"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\inflate.c
|
||||
# ADD CPP /Yu"zutil.h"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\inftrees.c
|
||||
# ADD CPP /Yu"zutil.h"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\infutil.c
|
||||
# ADD CPP /Yu"zutil.h"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\trees.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\uncompr.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\zlib.def
|
||||
|
||||
!IF "$(CFG)" == "zlib - Win32 DLL"
|
||||
|
||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL Debug"
|
||||
|
||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL ASM"
|
||||
|
||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL Debug ASM"
|
||||
|
||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB"
|
||||
|
||||
# PROP Exclude_From_Build 1
|
||||
|
||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB Debug"
|
||||
|
||||
# PROP Exclude_From_Build 1
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\msdos\zlib.rc
|
||||
|
||||
!IF "$(CFG)" == "zlib - Win32 DLL"
|
||||
|
||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL Debug"
|
||||
|
||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL ASM"
|
||||
|
||||
!ELSEIF "$(CFG)" == "zlib - Win32 DLL Debug ASM"
|
||||
|
||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB"
|
||||
|
||||
# PROP Exclude_From_Build 1
|
||||
|
||||
!ELSEIF "$(CFG)" == "zlib - Win32 LIB Debug"
|
||||
|
||||
# PROP Exclude_From_Build 1
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\zutil.c
|
||||
# ADD CPP /Yu"zutil.h"
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\deflate.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\infblock.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\infcodes.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\inffast.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\inffixed.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\inftrees.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\infutil.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\trees.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\zconf.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\zlib.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\zlib\zutil.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
2
png.5
2
png.5
@@ -1,4 +1,4 @@
|
||||
.TH PNG 5 "May 17, 2000"
|
||||
.TH PNG 5 "July 8, 2000"
|
||||
.SH NAME
|
||||
png \- Portable Network Graphics (PNG) format
|
||||
.SH DESCRIPTION
|
||||
|
||||
51
png.c
51
png.c
@@ -1,27 +1,26 @@
|
||||
|
||||
/* png.c - location for general purpose libpng functions
|
||||
*
|
||||
* libpng version 1.0.7beta14 - May 17, 2000
|
||||
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
|
||||
* Copyright (c) 1996, 1997 Andreas Dilger
|
||||
* libpng version 1.0.8beta1 - July 8, 2000
|
||||
* Copyright (c) 1998, 1999, 2000 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.)
|
||||
*
|
||||
*/
|
||||
|
||||
#define PNG_INTERNAL
|
||||
#define PNG_NO_EXTERN
|
||||
#include <assert.h>
|
||||
#include "png.h"
|
||||
|
||||
/* Generate a compiler error if there is an old png.h in the search path. */
|
||||
typedef version_1_0_7beta14 Your_png_h_is_not_version_1_0_7beta14;
|
||||
typedef version_1_0_8beta1 Your_png_h_is_not_version_1_0_8beta1;
|
||||
|
||||
/* Version information for C files. This had better match the version
|
||||
* string defined in png.h. */
|
||||
|
||||
#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.7beta14";
|
||||
char png_libpng_ver[12] = "1.0.8beta1";
|
||||
|
||||
/* png_sig was changed to a function in version 1.0.5c */
|
||||
/* Place to hold the signature string for a PNG file. */
|
||||
@@ -324,6 +323,7 @@ if ((mask & PNG_FREE_TRNS) && (png_ptr->flags & PNG_FLAG_FREE_TRNS))
|
||||
{
|
||||
png_free(png_ptr, info_ptr->trans);
|
||||
info_ptr->valid &= ~PNG_INFO_tRNS;
|
||||
info_ptr->trans = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -338,6 +338,8 @@ if (mask & PNG_FREE_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);
|
||||
info_ptr->scal_s_width = NULL;
|
||||
info_ptr->scal_s_height = NULL;
|
||||
#endif
|
||||
info_ptr->valid &= ~PNG_INFO_sCAL;
|
||||
}
|
||||
@@ -353,12 +355,15 @@ if (mask & PNG_FREE_PCAL)
|
||||
{
|
||||
png_free(png_ptr, info_ptr->pcal_purpose);
|
||||
png_free(png_ptr, info_ptr->pcal_units);
|
||||
info_ptr->pcal_purpose = NULL;
|
||||
info_ptr->pcal_units = NULL;
|
||||
if (info_ptr->pcal_params != NULL)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < (int)info_ptr->pcal_nparams; i++)
|
||||
png_free(png_ptr, info_ptr->pcal_params[i]);
|
||||
png_free(png_ptr, info_ptr->pcal_params);
|
||||
info_ptr->pcal_params = NULL;
|
||||
}
|
||||
info_ptr->valid &= ~PNG_INFO_pCAL;
|
||||
}
|
||||
@@ -374,6 +379,8 @@ if (mask & PNG_FREE_ICCP)
|
||||
{
|
||||
png_free(png_ptr, info_ptr->iccp_name);
|
||||
png_free(png_ptr, info_ptr->iccp_profile);
|
||||
info_ptr->iccp_name = NULL;
|
||||
info_ptr->iccp_profile = NULL;
|
||||
info_ptr->valid &= ~PNG_INFO_iCCP;
|
||||
}
|
||||
#endif
|
||||
@@ -392,6 +399,8 @@ if (mask & PNG_FREE_SPLT)
|
||||
{
|
||||
png_free(png_ptr, info_ptr->splt_palettes[num].name);
|
||||
png_free(png_ptr, info_ptr->splt_palettes[num].entries);
|
||||
info_ptr->splt_palettes[num].name = NULL;
|
||||
info_ptr->splt_palettes[num].entries = NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -403,6 +412,7 @@ if (mask & PNG_FREE_SPLT)
|
||||
png_free_data(png_ptr, info_ptr, PNG_FREE_SPLT, i);
|
||||
|
||||
png_free(png_ptr, info_ptr->splt_palettes);
|
||||
info_ptr->splt_palettes = NULL;
|
||||
info_ptr->splt_palettes_num = 0;
|
||||
}
|
||||
info_ptr->valid &= ~PNG_INFO_sPLT;
|
||||
@@ -435,6 +445,7 @@ if (mask & PNG_FREE_UNKN)
|
||||
png_free_data(png_ptr, info_ptr, PNG_FREE_UNKN, i);
|
||||
|
||||
png_free(png_ptr, info_ptr->unknown_chunks);
|
||||
info_ptr->unknown_chunks = NULL;
|
||||
info_ptr->unknown_chunks_num = 0;
|
||||
}
|
||||
}
|
||||
@@ -450,6 +461,7 @@ if ((mask & PNG_FREE_HIST) && (png_ptr->flags & PNG_FLAG_FREE_HIST))
|
||||
#endif
|
||||
{
|
||||
png_free(png_ptr, info_ptr->hist);
|
||||
info_ptr->hist = NULL;
|
||||
info_ptr->valid &= ~PNG_INFO_hIST;
|
||||
}
|
||||
#endif
|
||||
@@ -462,6 +474,7 @@ if ((mask & PNG_FREE_PLTE) && (png_ptr->flags & PNG_FLAG_FREE_PLTE))
|
||||
#endif
|
||||
{
|
||||
png_zfree(png_ptr, info_ptr->palette);
|
||||
info_ptr->palette = NULL;
|
||||
info_ptr->valid &= ~PNG_INFO_PLTE;
|
||||
info_ptr->num_palette = 0;
|
||||
}
|
||||
@@ -534,7 +547,7 @@ png_get_io_ptr(png_structp png_ptr)
|
||||
* necessarily available.
|
||||
*/
|
||||
void PNGAPI
|
||||
png_init_io(png_structp png_ptr, FILE *fp)
|
||||
png_init_io(png_structp png_ptr, png_FILE_p fp)
|
||||
{
|
||||
png_debug(1, "in png_init_io\n");
|
||||
png_ptr->io_ptr = (png_voidp)fp;
|
||||
@@ -558,6 +571,17 @@ png_convert_to_rfc1123(png_structp png_ptr, png_timep ptime)
|
||||
sizeof(char)));
|
||||
}
|
||||
|
||||
#if defined(_WIN32_WCE)
|
||||
{
|
||||
wchar_t time_buf[29];
|
||||
wsprintf(time_buf, TEXT("%d %S %d %02d:%02d:%02d +0000"),
|
||||
ptime->day % 32, short_months[(ptime->month - 1) % 12],
|
||||
ptime->year, ptime->hour % 24, ptime->minute % 60,
|
||||
ptime->second % 61);
|
||||
WideCharToMultiByte(CP_ACP, 0, time_buf, -1, png_ptr->time_buffer, 29,
|
||||
NULL, NULL);
|
||||
}
|
||||
#else
|
||||
#ifdef USE_FAR_KEYWORD
|
||||
{
|
||||
char near_time_buf[29];
|
||||
@@ -574,6 +598,7 @@ png_convert_to_rfc1123(png_structp png_ptr, png_timep ptime)
|
||||
ptime->year, ptime->hour % 24, ptime->minute % 60,
|
||||
ptime->second % 61);
|
||||
#endif
|
||||
#endif /* _WIN32_WCE */
|
||||
return ((png_charp)png_ptr->time_buffer);
|
||||
}
|
||||
#endif /* PNG_TIME_RFC1123_SUPPORTED */
|
||||
@@ -591,10 +616,10 @@ png_charp PNGAPI
|
||||
png_get_copyright(png_structp png_ptr)
|
||||
{
|
||||
if (png_ptr != NULL || png_ptr == NULL) /* silence compiler warning */
|
||||
return ("\n libpng version 1.0.7beta14 - May 17, 2000\n\
|
||||
Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.\n\
|
||||
return ("\n libpng version 1.0.8beta1 - July 8, 2000\n\
|
||||
Copyright (c) 1998-2000 Glenn Randers-Pehrson\n\
|
||||
Copyright (c) 1996, 1997 Andreas Dilger\n\
|
||||
Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson\n");
|
||||
Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.\n");
|
||||
return ("");
|
||||
}
|
||||
|
||||
@@ -609,8 +634,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.7beta14");
|
||||
return("1.0.7beta14");
|
||||
return("1.0.8beta1");
|
||||
return("1.0.8beta1");
|
||||
}
|
||||
|
||||
png_charp PNGAPI
|
||||
@@ -659,5 +684,5 @@ png_uint_32 PNGAPI
|
||||
png_access_version_number(void)
|
||||
{
|
||||
/* Version of *.c files used when building libpng */
|
||||
return((png_uint_32) 10007L);
|
||||
return((png_uint_32) 10008L);
|
||||
}
|
||||
|
||||
109
png.h
109
png.h
@@ -1,15 +1,15 @@
|
||||
|
||||
/* png.h - header file for PNG reference library
|
||||
*
|
||||
* libpng version 1.0.7beta14 - May 17, 2000
|
||||
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
|
||||
* Copyright (c) 1996, 1997 Andreas Dilger
|
||||
* libpng version 1.0.8beta1 - July 8, 2000
|
||||
* Copyright (c) 1998, 1999, 2000 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.)
|
||||
*
|
||||
* 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.0.7beta14 - May 17, 2000: Glenn
|
||||
* libpng versions 0.97, January 1998, through 1.0.8beta1 - July 8, 2000: Glenn
|
||||
* See also "Contributing Authors", below.
|
||||
*
|
||||
* Note about libpng version numbers:
|
||||
@@ -52,10 +52,8 @@
|
||||
* 1.0.6h 10007 10.6h (testing xy.z so-numbering)
|
||||
* 1.0.6i 10007 10.6i
|
||||
* 1.0.6j 10007 2.1.0.6j (incompatible with 1.0.0)
|
||||
* 1.0.7beta11-12 10007 2.1.0.7beta11-12 (binary compatible)
|
||||
* 1.0.7rc1 10007 2.1.0.7rc1 (binary compatible)
|
||||
* planned:
|
||||
* 1.0.6patch4 (w/4 patches) 10006 2.1.0.6 (binary compatible)
|
||||
* 1.0.7beta11-18 10007 2.1.0.7beta11-18 (binary compatible)
|
||||
* 1.0.7rc1-2 10007 2.1.0.7rc1-2 (binary compatible)
|
||||
* 1.0.7 10007 (still compatible)
|
||||
*
|
||||
* Henceforth the source version will match the shared-library major
|
||||
@@ -80,32 +78,58 @@
|
||||
/*
|
||||
* COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
|
||||
*
|
||||
* If you modify libpng you may insert additional notices after this sentence.
|
||||
* If you modify libpng you may insert additional notices immediately following
|
||||
* this sentence.
|
||||
*
|
||||
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
|
||||
* (libpng versions 0.5, May 1995, through 0.88, January 1996)
|
||||
* Copyright (c) 1996, 1997 Andreas Dilger
|
||||
* (libpng versions 0.89c, June 1996, through 0.96, May 1997)
|
||||
* libpng version 1.0.8beta1, July 8, 2000, is
|
||||
* Copyright (c) 2000 Glenn Randers-Pehrson
|
||||
* Distributed according to the same disclaimer and license as libpng-1.0.6
|
||||
* with the following individuals added to the list of Contributing Authors
|
||||
*
|
||||
* Simon-Pierre Cadieux
|
||||
* Eric S. Raymond
|
||||
* Gilles Vollant
|
||||
*
|
||||
* and with the following additions to the disclaimer:
|
||||
*
|
||||
* There is no warranty against interference with your enjoyment of the
|
||||
* library or against infringement. There is no warranty that our
|
||||
* efforts or the library will fulfill any of your particular purposes
|
||||
* or needs. This library is provided with all faults, and the entire
|
||||
* risk of satisfactory quality, performance, accuracy, and effort is with
|
||||
* the user.
|
||||
*
|
||||
* libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
|
||||
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
|
||||
* (libpng versions 0.97, January 1998, through 1.0.7beta14, May 17, 2000)
|
||||
* Distributed according to the same disclaimer and license as libpng-0.96,
|
||||
* with the following individuals added to the list of Contributing Authors:
|
||||
*
|
||||
* For the purposes of this copyright and license, "Contributing Authors"
|
||||
* is defined as the following set of individuals:
|
||||
* Tom Lane
|
||||
* Glenn Randers-Pehrson
|
||||
* Willem van Schaik
|
||||
*
|
||||
* libpng versions 0.89, June 1996, through 0.96, May 1997, are
|
||||
* Copyright (c) 1996, 1997 Andreas Dilger
|
||||
* Distributed according to the same disclaimer and license as libpng-0.88,
|
||||
* with the following individuals added to the list of Contributing Authors:
|
||||
*
|
||||
* John Bowler
|
||||
* Kevin Bracey
|
||||
* Sam Bushell
|
||||
* Andreas Dilger
|
||||
* Magnus Holmgren
|
||||
* Tom Lane
|
||||
* Dave Martindale
|
||||
* Glenn Randers-Pehrson
|
||||
* Eric S. Raymond
|
||||
* Greg Roelofs
|
||||
* Tom Tanner
|
||||
*
|
||||
* libpng versions 0.5, May 1995, through 0.88, January 1996, are
|
||||
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
|
||||
*
|
||||
* For the purposes of this copyright and license, "Contributing Authors"
|
||||
* is defined as the following set of individuals:
|
||||
*
|
||||
* Andreas Dilger
|
||||
* Dave Martindale
|
||||
* Guy Eric Schalnat
|
||||
* Paul Schmidt
|
||||
* Tom Tanner
|
||||
* Willem van Schaik
|
||||
* Tim Wegner
|
||||
*
|
||||
* The PNG Reference Library is supplied "AS IS". The Contributing Authors
|
||||
@@ -162,13 +186,13 @@
|
||||
* Y2K compliance in libpng:
|
||||
* =========================
|
||||
*
|
||||
* May 17, 2000
|
||||
* July 8, 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.7beta14 are Y2K compliant. It is my belief that earlier
|
||||
* upward through 1.0.8beta1 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
|
||||
@@ -214,8 +238,8 @@
|
||||
* PNG Development Group
|
||||
*/
|
||||
|
||||
#ifndef _PNG_H
|
||||
#define _PNG_H
|
||||
#ifndef PNG_H
|
||||
#define PNG_H
|
||||
|
||||
/* This is not the place to learn how to use libpng. The file libpng.txt
|
||||
* describes how to use libpng, and the file example.c summarizes it
|
||||
@@ -224,24 +248,24 @@
|
||||
*/
|
||||
|
||||
/* Version information for png.h - this should match the version in png.c */
|
||||
#define PNG_LIBPNG_VER_STRING "1.0.7beta14"
|
||||
#define PNG_LIBPNG_VER_STRING "1.0.8beta1"
|
||||
|
||||
#define PNG_LIBPNG_VER_SONUM 2
|
||||
|
||||
/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */
|
||||
#define PNG_LIBPNG_VER_MAJOR 1
|
||||
#define PNG_LIBPNG_VER_MINOR 0
|
||||
#define PNG_LIBPNG_VER_RELEASE 7
|
||||
#define PNG_LIBPNG_VER_RELEASE 8
|
||||
/* This should match the numeric part of the final component of
|
||||
* PNG_LIBPNG_VER_STRING, omitting any leading zero: */
|
||||
#define PNG_LIBPNG_VER_BUILD 14
|
||||
#define PNG_LIBPNG_VER_BUILD 1
|
||||
|
||||
/* 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=release */
|
||||
#define PNG_LIBPNG_VER 10007 /* 1.0.7 */
|
||||
#define PNG_LIBPNG_VER 10008 /* 1.0.8 */
|
||||
|
||||
/* Note to maintainer: update this number in scripts/pngdef.pas as well */
|
||||
|
||||
@@ -875,7 +899,7 @@ typedef void (PNGAPI *png_unknown_chunk_ptr) PNGARG((png_structp));
|
||||
#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_INVERT_ALPHA 0x0400 /* read and write */
|
||||
#define PNG_TRANSFORM_STRIP_FILLER 0x0800 /* WRITE only */
|
||||
|
||||
typedef png_voidp (*png_malloc_ptr) PNGARG((png_structp, png_size_t));
|
||||
@@ -1123,9 +1147,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.7beta14
|
||||
and png.h are both at * version 1.0.8beta1
|
||||
*/
|
||||
typedef png_structp version_1_0_7beta14;
|
||||
typedef png_structp version_1_0_8beta1;
|
||||
|
||||
typedef png_struct FAR * FAR * png_structpp;
|
||||
|
||||
@@ -1224,6 +1248,8 @@ extern PNG_EXPORT(png_charp,png_convert_to_rfc1123)
|
||||
PNGARG((png_structp png_ptr, png_timep ptime));
|
||||
#endif
|
||||
|
||||
#if !defined(_WIN32_WCE)
|
||||
/* "time.h" functions are not supported on WindowsCE */
|
||||
#if defined(PNG_WRITE_tIME_SUPPORTED)
|
||||
/* convert from a struct tm to png_time */
|
||||
extern PNG_EXPORT(void,png_convert_from_struct_tm) PNGARG((png_timep ptime,
|
||||
@@ -1233,6 +1259,7 @@ extern PNG_EXPORT(void,png_convert_from_struct_tm) PNGARG((png_timep ptime,
|
||||
extern PNG_EXPORT(void,png_convert_from_time_t) PNGARG((png_timep ptime,
|
||||
time_t ttime));
|
||||
#endif /* PNG_WRITE_tIME_SUPPORTED */
|
||||
#endif /* _WIN32_WCE */
|
||||
|
||||
#if defined(PNG_READ_EXPAND_SUPPORTED)
|
||||
/* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */
|
||||
@@ -1318,7 +1345,7 @@ extern PNG_EXPORT(int,png_set_interlace_handling) PNGARG((png_structp png_ptr));
|
||||
#endif
|
||||
|
||||
#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
|
||||
/* Invert monocrome files */
|
||||
/* Invert monochrome files */
|
||||
extern PNG_EXPORT(void,png_set_invert_mono) PNGARG((png_structp png_ptr));
|
||||
#endif
|
||||
|
||||
@@ -1813,13 +1840,13 @@ png_ptr, png_infop info_ptr));
|
||||
#endif
|
||||
|
||||
/* Returns image x, y offset in pixels or microns, from oFFs chunk data. */
|
||||
extern PNG_EXPORT(png_uint_32, png_get_x_offset_pixels) PNGARG((png_structp
|
||||
extern PNG_EXPORT(png_int_32, png_get_x_offset_pixels) PNGARG((png_structp
|
||||
png_ptr, png_infop info_ptr));
|
||||
extern PNG_EXPORT(png_uint_32, png_get_y_offset_pixels) PNGARG((png_structp
|
||||
extern PNG_EXPORT(png_int_32, png_get_y_offset_pixels) PNGARG((png_structp
|
||||
png_ptr, png_infop info_ptr));
|
||||
extern PNG_EXPORT(png_uint_32, png_get_x_offset_microns) PNGARG((png_structp
|
||||
extern PNG_EXPORT(png_int_32, png_get_x_offset_microns) PNGARG((png_structp
|
||||
png_ptr, png_infop info_ptr));
|
||||
extern PNG_EXPORT(png_uint_32, png_get_y_offset_microns) PNGARG((png_structp
|
||||
extern PNG_EXPORT(png_int_32, png_get_y_offset_microns) PNGARG((png_structp
|
||||
png_ptr, png_infop info_ptr));
|
||||
|
||||
#endif /* PNG_EASY_ACCESS_SUPPORTED */
|
||||
@@ -2144,7 +2171,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.7beta14 - May 17, 2000 (header)\n"
|
||||
" libpng version 1.0.8beta1 - July 8, 2000 (header)\n"
|
||||
|
||||
#ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED
|
||||
/* With these routines we avoid an integer divide, which will be slower on
|
||||
@@ -2938,4 +2965,4 @@ PNG_EXTERN void png_push_read_iTXt PNGARG((png_structp png_ptr,
|
||||
|
||||
#endif /* PNG_VERSION_INFO_ONLY */
|
||||
/* do not put anything past this line */
|
||||
#endif /* _PNG_H */
|
||||
#endif /* PNG_H */
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
/* pngasmrd.h - assembler version of utilities to read a PNG file
|
||||
*
|
||||
* libpng 1.0.7beta14 - May 17, 2000
|
||||
* libpng 1.0.8beta1 - July 8, 2000
|
||||
* For conditions of distribution and use, see copyright notice in png.h
|
||||
* Copyright (c) 1999, 2000 Glenn Randers-Pehrson
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef PNGASMRD_H
|
||||
#define PNGASMRD_H
|
||||
|
||||
#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
|
||||
|
||||
/* Set this in the makefile for VC++ on Pentium, not in pngconf.h */
|
||||
@@ -33,3 +36,4 @@
|
||||
*/
|
||||
|
||||
#endif
|
||||
#endif /* PNGASMRD_H */
|
||||
|
||||
105
pngconf.h
105
pngconf.h
@@ -1,10 +1,10 @@
|
||||
/* pngconf.h - machine configurable file for libpng
|
||||
*
|
||||
* libpng 1.0.7beta14 - May 17, 2000
|
||||
* libpng 1.0.8beta1 - July 8, 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
|
||||
* Copyright (c) 1998, 1999, 2000 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.)
|
||||
*/
|
||||
|
||||
/* Any machine specific code is near the front of this file, so if you
|
||||
@@ -33,6 +33,10 @@
|
||||
#define PNG_ZBUF_SIZE 8192
|
||||
#endif
|
||||
|
||||
#ifndef PNG_NO_FLOATING_POINT_SUPPORTED
|
||||
#define PNG_FLOATING_POINT_SUPPORTED
|
||||
#endif
|
||||
|
||||
/* If you are running on a machine where you cannot allocate more
|
||||
* than 64K of memory at once, uncomment this. While libpng will not
|
||||
* normally need that much memory in a chunk (unless you load up a very
|
||||
@@ -58,6 +62,15 @@
|
||||
* #define PNG_NO_STDIO
|
||||
*/
|
||||
|
||||
#if defined(_WIN32_WCE)
|
||||
#include <windows.h>
|
||||
/* Console I/O functions are not supported on WindowsCE */
|
||||
#define PNG_NO_CONSOLE_IO
|
||||
#ifdef PNG_DEBUG
|
||||
# undef PNG_DEBUG
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef PNG_BUILD_DLL
|
||||
# ifndef PNG_CONSOLE_IO_SUPPORTED
|
||||
# ifndef PNG_NO_CONSOLE_IO
|
||||
@@ -76,7 +89,10 @@
|
||||
# endif
|
||||
# endif
|
||||
# else
|
||||
# include <stdio.h>
|
||||
# if !defined(_WIN32_WCE)
|
||||
/* "stdio.h" functions are not supported on WindowsCE */
|
||||
# include <stdio.h>
|
||||
# endif
|
||||
# endif
|
||||
|
||||
/* This macro protects us against machines that don't have function
|
||||
@@ -114,7 +130,7 @@
|
||||
#endif
|
||||
|
||||
/* enough people need this for various reasons to include it here */
|
||||
#if !defined(MACOS) && !defined(RISCOS)
|
||||
#if !defined(MACOS) && !defined(RISCOS) && !defined(_WIN32_WCE)
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
@@ -126,14 +142,15 @@
|
||||
/* This is an attempt to force a single setjmp behaviour on Linux. If
|
||||
* the X config stuff didn't define _BSD_SOURCE we wouldn't need this.
|
||||
*/
|
||||
|
||||
# ifdef __linux__
|
||||
# ifdef _BSD_SOURCE
|
||||
# define _PNG_SAVE_BSD_SOURCE
|
||||
# define PNG_SAVE_BSD_SOURCE
|
||||
# undef _BSD_SOURCE
|
||||
# endif
|
||||
# ifdef _SETJMP_H
|
||||
__png.h__ already includes setjmp.h
|
||||
__dont__ include it again
|
||||
__png.h__ already includes setjmp.h;
|
||||
__dont__ include it again.;
|
||||
# endif
|
||||
#endif /* __linux__ */
|
||||
|
||||
@@ -141,13 +158,19 @@
|
||||
#include <setjmp.h>
|
||||
|
||||
# ifdef __linux__
|
||||
# ifdef _PNG_SAVE_BSD_SOURCE
|
||||
# ifdef PNG_SAVE_BSD_SOURCE
|
||||
# define _BSD_SOURCE
|
||||
# undef _PNG_SAVE_BSD_SOURCE
|
||||
# undef PNG_SAVE_BSD_SOURCE
|
||||
# endif
|
||||
# endif /* __linux__ */
|
||||
#endif /* PNG_SETJMP_SUPPORTED */
|
||||
|
||||
#if defined(_AIX) && defined(__xlC__)
|
||||
/* This prevents "AIX/xlC" from generating an "index(s,c)" macro in strings.h
|
||||
* that conflicts with libpng's png_color_16.index */
|
||||
#undef __STR__
|
||||
#endif
|
||||
|
||||
#ifdef BSD
|
||||
#include <strings.h>
|
||||
#else
|
||||
@@ -171,7 +194,7 @@
|
||||
* them inside an appropriate ifdef/endif pair for portability.
|
||||
*/
|
||||
|
||||
#if !defined(PNG_NO_FLOATING_POINT_SUPPORTED)
|
||||
#if defined(PNG_FLOATING_POINT_SUPPORTED)
|
||||
#if defined(MACOS)
|
||||
/* We need to check that <math.h> hasn't already been included earlier
|
||||
* as it seems it doesn't agree with <fp.h>, yet we should really use
|
||||
@@ -183,6 +206,12 @@
|
||||
#else
|
||||
#include <math.h>
|
||||
#endif
|
||||
#if defined(_AMIGA) && defined(__SASC) && defined(_M68881)
|
||||
/* Amiga SAS/C: We must include builtin FPU functions when compiling using
|
||||
* MATH=68881
|
||||
*/
|
||||
#include <m68881.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Codewarrior on NT has linking problems without this. */
|
||||
@@ -318,12 +347,7 @@
|
||||
#define PNG_NO_FIXED_POINT_SUPPORTED
|
||||
#endif
|
||||
|
||||
#ifndef PNG_NO_FLOATING_POINT_SUPPORTED
|
||||
#define PNG_FLOATING_POINT_SUPPORTED
|
||||
#endif
|
||||
|
||||
/* Ignore attempt to turn off both floating and fixed point support */
|
||||
|
||||
#if !defined(PNG_FLOATING_POINT_SUPPORTED) || \
|
||||
!defined(PNG_NO_FIXED_POINT_SUPPORTED)
|
||||
#define PNG_FIXED_POINT_SUPPORTED
|
||||
@@ -518,6 +542,11 @@ defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
|
||||
#define PNG_READ_BIG_ENDIAN_SUPPORTED
|
||||
*/
|
||||
|
||||
/* Buggy compilers (e.g., gcc 2.7.2.2) need this */
|
||||
/*
|
||||
#define PNG_NO_POINTER_INDEXING
|
||||
*/
|
||||
|
||||
/* These functions are turned off by default, as they will be phased out. */
|
||||
/*
|
||||
#define PNG_USELESS_TESTS_SUPPORTED
|
||||
@@ -623,7 +652,7 @@ defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
|
||||
# define PNG_HANDLE_AS_UNKNOWN_SUPPORTED
|
||||
# endif
|
||||
#endif
|
||||
#if !defined (PNG_NO_READ_USER_CHUNKS) && \
|
||||
#if !defined(PNG_NO_READ_USER_CHUNKS) && \
|
||||
defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
|
||||
# define PNG_READ_USER_CHUNKS_SUPPORTED
|
||||
# define PNG_USER_CHUNKS_SUPPORTED
|
||||
@@ -782,7 +811,10 @@ defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
|
||||
|
||||
/* need the time information for reading tIME chunks */
|
||||
#if defined(PNG_tIME_SUPPORTED)
|
||||
# include <time.h>
|
||||
# if !defined(_WIN32_WCE)
|
||||
/* "time.h" functions are not supported on WindowsCE */
|
||||
# include <time.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Some typedefs to get us started. These should be safe on most of the
|
||||
@@ -879,6 +911,11 @@ typedef png_int_16 FAR * png_int_16p;
|
||||
typedef PNG_CONST char FAR * png_const_charp;
|
||||
typedef char FAR * png_charp;
|
||||
typedef png_fixed_point FAR * png_fixed_point_p;
|
||||
#if defined(_WIN32_WCE)
|
||||
typedef HANDLE png_FILE_p;
|
||||
#else
|
||||
typedef FILE * png_FILE_p;
|
||||
#endif
|
||||
#ifdef PNG_FLOATING_POINT_SUPPORTED
|
||||
typedef double FAR * png_doublep;
|
||||
#endif
|
||||
@@ -911,13 +948,13 @@ typedef z_stream FAR * png_zstreamp;
|
||||
* Define PNG_BUILD_DLL if the module being built is a Windows
|
||||
* LIBPNG DLL.
|
||||
*
|
||||
* Define PNG_DLL if you want to *link* to the Windows LIBPNG DLL.
|
||||
* Define PNG_USE_DLL if you want to *link* to the Windows LIBPNG DLL.
|
||||
* It is equivalent to Microsoft predefined macro _DLL which is
|
||||
* automatically defined when you compile using the share
|
||||
* version of the CRT (C Run-Time library)
|
||||
*/
|
||||
|
||||
#if !defined(PNG_DLL) && defined(PNG_BUILD_DLL)
|
||||
#if !defined(PNG_DLL) && (defined(PNG_BUILD_DLL) || defined(PNG_USE_DLL))
|
||||
# define PNG_DLL
|
||||
#endif
|
||||
|
||||
@@ -933,7 +970,15 @@ typedef z_stream FAR * png_zstreamp;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(PNG_BUILD_DLL) && !defined(PNG_NO_MODULEDEF)
|
||||
#ifndef PNGAPI
|
||||
|
||||
#if defined(__MINGW32__) || defined(__CYGWIN32__) && !defined(PNG_MODULEDEF)
|
||||
# ifndef PNG_NO_MODULEDEF
|
||||
# define PNG_NO_MODULEDEF
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !defined(PNG_IMPEXP) && defined(PNG_BUILD_DLL) && !defined(PNG_NO_MODULEDEF)
|
||||
# define PNG_IMPEXP
|
||||
#endif
|
||||
|
||||
@@ -941,7 +986,11 @@ typedef z_stream FAR * png_zstreamp;
|
||||
defined(_Windows) || defined(_WINDOWS) || \
|
||||
defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
|
||||
|
||||
# define PNGAPI _cdecl
|
||||
# ifdef __GNUC__
|
||||
# define PNGAPI __cdecl
|
||||
# else
|
||||
# define PNGAPI _cdecl
|
||||
# endif
|
||||
|
||||
# if !defined(PNG_IMPEXP) && (!defined(PNG_DLL) || \
|
||||
0 /* WINCOMPILER_WITH_NO_SUPPORT_FOR_DECLIMPEXP */)
|
||||
@@ -977,24 +1026,22 @@ typedef z_stream FAR * png_zstreamp;
|
||||
# endif
|
||||
# endif
|
||||
# endif /* PNG_IMPEXP */
|
||||
#else
|
||||
#else /* !(DLL || WINDOWS) */
|
||||
# if 0 /* ... other platforms, with other meanings */
|
||||
# else
|
||||
# define PNGAPI
|
||||
# define PNG_IMPEXP
|
||||
# endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef PNG_EXPORT
|
||||
# define PNG_EXPORT(type,symbol) type PNGAPI symbol
|
||||
#endif
|
||||
|
||||
#if defined(__MINGW32__) || defined(__CYGWIN32__)
|
||||
# define PNG_ATTR_DLLIMP
|
||||
# define PNG_EXPORT(type,symbol) PNG_IMPEXP type PNGAPI symbol
|
||||
#endif
|
||||
|
||||
#ifdef PNG_USE_GLOBAL_ARRAYS
|
||||
#ifndef PNG_EXPORT_VAR
|
||||
# define PNG_EXPORT_VAR(type) extern type
|
||||
# define PNG_EXPORT_VAR(type) extern PNG_IMPEXP type
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
16
pngerror.c
16
pngerror.c
@@ -1,11 +1,11 @@
|
||||
|
||||
/* pngerror.c - stub functions for i/o and memory allocation
|
||||
*
|
||||
* libpng 1.0.7beta14 - May 17, 2000
|
||||
* libpng 1.0.8beta1 - July 8, 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
|
||||
* Copyright (c) 1998, 1999, 2000 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.)
|
||||
*
|
||||
* This file provides a location for all error handling. Users who
|
||||
* need special error handling are expected to write replacement functions
|
||||
@@ -122,6 +122,9 @@ png_default_error(png_structp png_ptr, png_const_charp message)
|
||||
{
|
||||
#ifndef PNG_NO_CONSOLE_IO
|
||||
fprintf(stderr, "libpng error: %s\n", message);
|
||||
#else
|
||||
if (message)
|
||||
/* make compiler happy */ ;
|
||||
#endif
|
||||
|
||||
#ifdef PNG_SETJMP_SUPPORTED
|
||||
@@ -135,7 +138,7 @@ png_default_error(png_structp png_ptr, png_const_charp message)
|
||||
longjmp(png_ptr->jmpbuf, 1);
|
||||
# endif
|
||||
#else
|
||||
if (png_ptr == NULL)
|
||||
if (png_ptr)
|
||||
/* make compiler happy */ ;
|
||||
PNG_ABORT();
|
||||
#endif
|
||||
@@ -151,8 +154,11 @@ png_default_warning(png_structp png_ptr, png_const_charp message)
|
||||
{
|
||||
#ifndef PNG_NO_CONSOLE_IO
|
||||
fprintf(stderr, "libpng warning: %s\n", message);
|
||||
#else
|
||||
if (message)
|
||||
/* appease compiler */ ;
|
||||
#endif
|
||||
if (png_ptr == NULL)
|
||||
if (png_ptr)
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
561
pnggccrd.c
561
pnggccrd.c
@@ -6,10 +6,10 @@
|
||||
* 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.7beta14 - May 17, 2000
|
||||
* libpng version 1.0.8beta1 - July 8, 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
|
||||
* Copyright (c) 1998, Intel Corporation
|
||||
*
|
||||
* Based on MSVC code contributed by Nirav Chhatrapati, Intel Corp., 1998.
|
||||
* Interface to libpng contributed by Gilles Vollant, 1999.
|
||||
@@ -43,8 +43,8 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* GRR NOTES
|
||||
* =========
|
||||
* NOTES (mostly by Greg Roelofs)
|
||||
* =====
|
||||
*
|
||||
* 19991006:
|
||||
* - fixed sign error in post-MMX cleanup code (16- & 32-bit cases)
|
||||
@@ -122,12 +122,35 @@
|
||||
* - fixed up both versions of mmxsupport() (ORIG_THAT_USED_TO_CLOBBER_EBX
|
||||
* macro determines which is used); original not yet tested.
|
||||
*
|
||||
* 20000213:
|
||||
* - When compiling with gcc, be sure to use -fomit-frame-pointer
|
||||
*
|
||||
* 20000319:
|
||||
* - fixed a register-name typo in png_do_read_interlace(), default (MMX) case,
|
||||
* pass == 4 or 5, that caused visible corruption of interlaced images
|
||||
*
|
||||
* 20000623:
|
||||
* - Various problems were reported with gcc 2.95.2 in the Cygwin environment,
|
||||
* many of the form "forbidden register 0 (ax) was spilled for class AREG."
|
||||
* This is explained at http://gcc.gnu.org/fom_serv/cache/23.html, and
|
||||
* Chuck Wilson supplied a patch involving dummy output registers. See
|
||||
* http://sourceforge.net/bugs/?func=detailbug&bug_id=108741&group_id=5624
|
||||
* for the original (anonymous) SourceForge bug report.
|
||||
*
|
||||
* 20000706:
|
||||
* - Chuck Wilson passed along these remaining gcc 2.95.2 errors:
|
||||
* pnggccrd.c: In function `png_combine_row':
|
||||
* pnggccrd.c:525: more than 10 operands in `asm'
|
||||
* pnggccrd.c:669: more than 10 operands in `asm'
|
||||
* pnggccrd.c:828: more than 10 operands in `asm'
|
||||
* pnggccrd.c:994: more than 10 operands in `asm'
|
||||
* pnggccrd.c:1177: more than 10 operands in `asm'
|
||||
* They are all the same problem and can be worked around by using the
|
||||
* global _unmask variable unconditionally, not just in the -fPIC case.
|
||||
* Apparently earlier versions of gcc also have the problem with more than
|
||||
* 10 operands; they just don't report it. Much strangeness ensues, etc.
|
||||
*/
|
||||
|
||||
|
||||
#define PNG_INTERNAL
|
||||
#include "png.h"
|
||||
|
||||
@@ -143,8 +166,9 @@ static const int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
|
||||
static const int png_pass_width[7] = {8, 4, 4, 2, 2, 1, 1};
|
||||
#endif
|
||||
|
||||
// djgpp adds its own underscores to global variables, so define them without:
|
||||
#ifdef __DJGPP__
|
||||
// djgpp and Win32 add their own underscores to global variables,
|
||||
// so define them without:
|
||||
#if defined(__DJGPP__) || defined(WIN32)
|
||||
# define _unmask unmask
|
||||
# define _const4 const4
|
||||
# define _const6 const6
|
||||
@@ -172,9 +196,13 @@ static const int png_pass_width[7] = {8, 4, 4, 2, 2, 1, 1};
|
||||
/* These constants are used in the inlined MMX assembly code.
|
||||
Ignore gcc's "At top level: defined but not used" warnings. */
|
||||
|
||||
#ifdef __PIC__
|
||||
static int _unmask; // not enough regs when compiling with -fPIC, so...
|
||||
#endif
|
||||
/* GRR 20000706: originally _unmask was needed only when compiling with -fPIC,
|
||||
* since that case uses the %ebx register for indexing the Global Offset Table
|
||||
* and there were no other registers available. But gcc 2.95 and later emit
|
||||
* "more than 10 operands in `asm'" errors when %ebx is used to preload unmask
|
||||
* in the non-PIC case, so we'll just use the global unconditionally now.
|
||||
*/
|
||||
static int _unmask;
|
||||
|
||||
static unsigned long long _mask8_0 = 0x0102040810204080LL;
|
||||
|
||||
@@ -428,23 +456,19 @@ fflush(stderr);
|
||||
{
|
||||
png_uint_32 len;
|
||||
int diff;
|
||||
#ifndef __PIC__
|
||||
int unmask = ~mask;
|
||||
#else
|
||||
int dummy_value_a; // fix 'forbidden register spilled' error
|
||||
int dummy_value_d;
|
||||
int dummy_value_c;
|
||||
int dummy_value_S;
|
||||
int dummy_value_D;
|
||||
_unmask = ~mask; // global variable for -fPIC version
|
||||
#endif
|
||||
srcptr = png_ptr->row_buf + 1;
|
||||
dstptr = row;
|
||||
len = png_ptr->width &~7; // reduce to multiple of 8
|
||||
diff = png_ptr->width & 7; // amount lost
|
||||
|
||||
__asm__ (
|
||||
#ifdef __PIC__
|
||||
__asm__ __volatile__ (
|
||||
"movd _unmask, %%mm7 \n\t" // load bit pattern
|
||||
#else
|
||||
// preload "movd unmask, %%mm7 \n\t" // (unmask is in ebx)
|
||||
"movd %%ebx, %%mm7 \n\t" // load bit pattern (unmask)
|
||||
#endif
|
||||
"psubb %%mm6, %%mm6 \n\t" // zero mm6
|
||||
"punpcklbw %%mm7, %%mm7 \n\t"
|
||||
"punpcklwd %%mm7, %%mm7 \n\t"
|
||||
@@ -496,21 +520,22 @@ fflush(stderr);
|
||||
"end8: \n\t"
|
||||
"EMMS \n\t" // DONE
|
||||
|
||||
: // output regs (none)
|
||||
: "=a" (dummy_value_a), // output regs (dummy)
|
||||
"=d" (dummy_value_d),
|
||||
"=c" (dummy_value_c),
|
||||
"=S" (dummy_value_S),
|
||||
"=D" (dummy_value_D)
|
||||
|
||||
: "S" (srcptr), // esi // input regs
|
||||
"D" (dstptr), // edi
|
||||
"a" (diff), // eax
|
||||
#ifndef __PIC__
|
||||
"b" (unmask), // ebx // Global Offset Table idx
|
||||
#endif
|
||||
"c" (len), // ecx
|
||||
"d" (mask) // edx
|
||||
: "3" (srcptr), // esi // input regs
|
||||
"4" (dstptr), // edi
|
||||
"0" (diff), // eax
|
||||
// was (unmask) "b" RESERVED // ebx // Global Offset Table idx
|
||||
"2" (len), // ecx
|
||||
"1" (mask) // edx
|
||||
|
||||
: "%esi", "%edi", "%eax", // clobber list
|
||||
"%ecx", "%edx"
|
||||
// : // clobber list
|
||||
#if 0 /* MMX regs (%mm0, etc.) not supported by gcc 2.7.2.3 or egcs 1.1 */
|
||||
, "%mm0", "%mm4", "%mm6", "%mm7"
|
||||
: "%mm0", "%mm4", "%mm6", "%mm7"
|
||||
#endif
|
||||
);
|
||||
}
|
||||
@@ -548,23 +573,19 @@ fflush(stderr);
|
||||
{
|
||||
png_uint_32 len;
|
||||
int diff;
|
||||
#ifndef __PIC__
|
||||
int unmask = ~mask;
|
||||
#else
|
||||
int dummy_value_a; // fix 'forbidden register spilled' error
|
||||
int dummy_value_d;
|
||||
int dummy_value_c;
|
||||
int dummy_value_S;
|
||||
int dummy_value_D;
|
||||
_unmask = ~mask; // global variable for -fPIC version
|
||||
#endif
|
||||
srcptr = png_ptr->row_buf + 1;
|
||||
dstptr = row;
|
||||
len = png_ptr->width &~7; // reduce to multiple of 8
|
||||
diff = png_ptr->width & 7; // amount lost
|
||||
|
||||
__asm__ (
|
||||
#ifdef __PIC__
|
||||
__asm__ __volatile__ (
|
||||
"movd _unmask, %%mm7 \n\t" // load bit pattern
|
||||
#else
|
||||
// preload "movd unmask, %%mm7 \n\t" // (unmask is in ebx)
|
||||
"movd %%ebx, %%mm7 \n\t" // load bit pattern (unmask)
|
||||
#endif
|
||||
"psubb %%mm6, %%mm6 \n\t" // zero mm6
|
||||
"punpcklbw %%mm7, %%mm7 \n\t"
|
||||
"punpcklwd %%mm7, %%mm7 \n\t"
|
||||
@@ -631,21 +652,22 @@ fflush(stderr);
|
||||
"end16: \n\t"
|
||||
"EMMS \n\t" // DONE
|
||||
|
||||
: // output regs (none)
|
||||
: "=a" (dummy_value_a), // output regs (dummy)
|
||||
"=d" (dummy_value_d),
|
||||
"=c" (dummy_value_c),
|
||||
"=S" (dummy_value_S),
|
||||
"=D" (dummy_value_D)
|
||||
|
||||
: "S" (srcptr), // esi // input regs
|
||||
"D" (dstptr), // edi
|
||||
"a" (diff), // eax
|
||||
#ifndef __PIC__
|
||||
"b" (unmask), // ebx // Global Offset Table idx
|
||||
#endif
|
||||
"c" (len), // ecx
|
||||
"d" (mask) // edx
|
||||
: "3" (srcptr), // esi // input regs
|
||||
"4" (dstptr), // edi
|
||||
"0" (diff), // eax
|
||||
// was (unmask) "b" RESERVED // ebx // Global Offset Table idx
|
||||
"2" (len), // ecx
|
||||
"1" (mask) // edx
|
||||
|
||||
: "%esi", "%edi", "%eax", // clobber list
|
||||
"%ecx", "%edx"
|
||||
// : // clobber list
|
||||
#if 0 /* MMX regs (%mm0, etc.) not supported by gcc 2.7.2.3 or egcs 1.1 */
|
||||
, "%mm0", "%mm1",
|
||||
: "%mm0", "%mm1",
|
||||
"%mm4", "%mm5", "%mm6", "%mm7"
|
||||
#endif
|
||||
);
|
||||
@@ -684,23 +706,19 @@ fflush(stderr);
|
||||
{
|
||||
png_uint_32 len;
|
||||
int diff;
|
||||
#ifndef __PIC__
|
||||
int unmask = ~mask;
|
||||
#else
|
||||
int dummy_value_a; // fix 'forbidden register spilled' error
|
||||
int dummy_value_d;
|
||||
int dummy_value_c;
|
||||
int dummy_value_S;
|
||||
int dummy_value_D;
|
||||
_unmask = ~mask; // global variable for -fPIC version
|
||||
#endif
|
||||
srcptr = png_ptr->row_buf + 1;
|
||||
dstptr = row;
|
||||
len = png_ptr->width &~7; // reduce to multiple of 8
|
||||
diff = png_ptr->width & 7; // amount lost
|
||||
|
||||
__asm__ (
|
||||
#ifdef __PIC__
|
||||
__asm__ __volatile__ (
|
||||
"movd _unmask, %%mm7 \n\t" // load bit pattern
|
||||
#else
|
||||
// preload "movd unmask, %%mm7 \n\t" // (unmask is in ebx)
|
||||
"movd %%ebx, %%mm7 \n\t" // load bit pattern (unmask)
|
||||
#endif
|
||||
"psubb %%mm6, %%mm6 \n\t" // zero mm6
|
||||
"punpcklbw %%mm7, %%mm7 \n\t"
|
||||
"punpcklwd %%mm7, %%mm7 \n\t"
|
||||
@@ -782,21 +800,22 @@ fflush(stderr);
|
||||
"end24: \n\t"
|
||||
"EMMS \n\t" // DONE
|
||||
|
||||
: // output regs (none)
|
||||
: "=a" (dummy_value_a), // output regs (dummy)
|
||||
"=d" (dummy_value_d),
|
||||
"=c" (dummy_value_c),
|
||||
"=S" (dummy_value_S),
|
||||
"=D" (dummy_value_D)
|
||||
|
||||
: "S" (srcptr), // esi // input regs
|
||||
"D" (dstptr), // edi
|
||||
"a" (diff), // eax
|
||||
#ifndef __PIC__
|
||||
"b" (unmask), // ebx // Global Offset Table idx
|
||||
#endif
|
||||
"c" (len), // ecx
|
||||
"d" (mask) // edx
|
||||
: "3" (srcptr), // esi // input regs
|
||||
"4" (dstptr), // edi
|
||||
"0" (diff), // eax
|
||||
// was (unmask) "b" RESERVED // ebx // Global Offset Table idx
|
||||
"2" (len), // ecx
|
||||
"1" (mask) // edx
|
||||
|
||||
: "%esi", "%edi", "%eax", // clobber list
|
||||
"%ecx", "%edx"
|
||||
// : // clobber list
|
||||
#if 0 /* MMX regs (%mm0, etc.) not supported by gcc 2.7.2.3 or egcs 1.1 */
|
||||
, "%mm0", "%mm1", "%mm2",
|
||||
: "%mm0", "%mm1", "%mm2",
|
||||
"%mm4", "%mm5", "%mm6", "%mm7"
|
||||
#endif
|
||||
);
|
||||
@@ -835,23 +854,19 @@ fflush(stderr);
|
||||
{
|
||||
png_uint_32 len;
|
||||
int diff;
|
||||
#ifndef __PIC__
|
||||
int unmask = ~mask;
|
||||
#else
|
||||
int dummy_value_a; // fix 'forbidden register spilled' error
|
||||
int dummy_value_d;
|
||||
int dummy_value_c;
|
||||
int dummy_value_S;
|
||||
int dummy_value_D;
|
||||
_unmask = ~mask; // global variable for -fPIC version
|
||||
#endif
|
||||
srcptr = png_ptr->row_buf + 1;
|
||||
dstptr = row;
|
||||
len = png_ptr->width &~7; // reduce to multiple of 8
|
||||
diff = png_ptr->width & 7; // amount lost
|
||||
|
||||
__asm__ (
|
||||
#ifdef __PIC__
|
||||
__asm__ __volatile__ (
|
||||
"movd _unmask, %%mm7 \n\t" // load bit pattern
|
||||
#else
|
||||
// preload "movd unmask, %%mm7 \n\t" // (unmask is in ebx)
|
||||
"movd %%ebx, %%mm7 \n\t" // load bit pattern (unmask)
|
||||
#endif
|
||||
"psubb %%mm6, %%mm6 \n\t" // zero mm6
|
||||
"punpcklbw %%mm7, %%mm7 \n\t"
|
||||
"punpcklwd %%mm7, %%mm7 \n\t"
|
||||
@@ -940,21 +955,22 @@ fflush(stderr);
|
||||
"end32: \n\t"
|
||||
"EMMS \n\t" // DONE
|
||||
|
||||
: // output regs (none)
|
||||
: "=a" (dummy_value_a), // output regs (dummy)
|
||||
"=d" (dummy_value_d),
|
||||
"=c" (dummy_value_c),
|
||||
"=S" (dummy_value_S),
|
||||
"=D" (dummy_value_D)
|
||||
|
||||
: "S" (srcptr), // esi // input regs
|
||||
"D" (dstptr), // edi
|
||||
"a" (diff), // eax
|
||||
#ifndef __PIC__
|
||||
"b" (unmask), // ebx // Global Offset Table idx
|
||||
#endif
|
||||
"c" (len), // ecx
|
||||
"d" (mask) // edx
|
||||
: "3" (srcptr), // esi // input regs
|
||||
"4" (dstptr), // edi
|
||||
"0" (diff), // eax
|
||||
// was (unmask) "b" RESERVED // ebx // Global Offset Table idx
|
||||
"2" (len), // ecx
|
||||
"1" (mask) // edx
|
||||
|
||||
: "%esi", "%edi", "%eax", // clobber list
|
||||
"%ecx", "%edx"
|
||||
// : // clobber list
|
||||
#if 0 /* MMX regs (%mm0, etc.) not supported by gcc 2.7.2.3 or egcs 1.1 */
|
||||
, "%mm0", "%mm1", "%mm2", "%mm3",
|
||||
: "%mm0", "%mm1", "%mm2", "%mm3",
|
||||
"%mm4", "%mm5", "%mm6", "%mm7"
|
||||
#endif
|
||||
);
|
||||
@@ -993,23 +1009,19 @@ fflush(stderr);
|
||||
{
|
||||
png_uint_32 len;
|
||||
int diff;
|
||||
#ifndef __PIC__
|
||||
int unmask = ~mask;
|
||||
#else
|
||||
int dummy_value_a; // fix 'forbidden register spilled' error
|
||||
int dummy_value_d;
|
||||
int dummy_value_c;
|
||||
int dummy_value_S;
|
||||
int dummy_value_D;
|
||||
_unmask = ~mask; // global variable for -fPIC version
|
||||
#endif
|
||||
srcptr = png_ptr->row_buf + 1;
|
||||
dstptr = row;
|
||||
len = png_ptr->width &~7; // reduce to multiple of 8
|
||||
diff = png_ptr->width & 7; // amount lost
|
||||
|
||||
__asm__ (
|
||||
#ifdef __PIC__
|
||||
__asm__ __volatile__ (
|
||||
"movd _unmask, %%mm7 \n\t" // load bit pattern
|
||||
#else
|
||||
// preload "movd unmask, %%mm7 \n\t" // (unmask is in ebx)
|
||||
"movd %%ebx, %%mm7 \n\t" // load bit pattern (unmask)
|
||||
#endif
|
||||
"psubb %%mm6, %%mm6 \n\t" // zero mm6
|
||||
"punpcklbw %%mm7, %%mm7 \n\t"
|
||||
"punpcklwd %%mm7, %%mm7 \n\t"
|
||||
@@ -1115,21 +1127,22 @@ fflush(stderr);
|
||||
"end48: \n\t"
|
||||
"EMMS \n\t" // DONE
|
||||
|
||||
: // output regs (none)
|
||||
: "=a" (dummy_value_a), // output regs (dummy)
|
||||
"=d" (dummy_value_d),
|
||||
"=c" (dummy_value_c),
|
||||
"=S" (dummy_value_S),
|
||||
"=D" (dummy_value_D)
|
||||
|
||||
: "S" (srcptr), // esi // input regs
|
||||
"D" (dstptr), // edi
|
||||
"a" (diff), // eax
|
||||
#ifndef __PIC__
|
||||
"b" (unmask), // ebx // Global Offset Table idx
|
||||
#endif
|
||||
"c" (len), // ecx
|
||||
"d" (mask) // edx
|
||||
: "3" (srcptr), // esi // input regs
|
||||
"4" (dstptr), // edi
|
||||
"0" (diff), // eax
|
||||
// was (unmask) "b" RESERVED // ebx // Global Offset Table idx
|
||||
"2" (len), // ecx
|
||||
"1" (mask) // edx
|
||||
|
||||
: "%esi", "%edi", "%eax", // clobber list
|
||||
"%ecx", "%edx"
|
||||
// : // clobber list
|
||||
#if 0 /* MMX regs (%mm0, etc.) not supported by gcc 2.7.2.3 or egcs 1.1 */
|
||||
, "%mm0", "%mm1", "%mm2", "%mm3",
|
||||
: "%mm0", "%mm1", "%mm2", "%mm3",
|
||||
"%mm4", "%mm5", "%mm6", "%mm7"
|
||||
#endif
|
||||
);
|
||||
@@ -1451,7 +1464,10 @@ fflush(stderr);
|
||||
{
|
||||
if (((pass == 0) || (pass == 1)) && width)
|
||||
{
|
||||
__asm__ (
|
||||
int dummy_value_c; // fix 'forbidden register spilled'
|
||||
int dummy_value_S;
|
||||
int dummy_value_D;
|
||||
__asm__ __volatile__ (
|
||||
"subl $21, %%edi \n\t"
|
||||
// (png_pass_inc[pass] - 1)*pixel_bytes
|
||||
|
||||
@@ -1480,22 +1496,27 @@ fflush(stderr);
|
||||
"jnz .loop3_pass0 \n\t"
|
||||
"EMMS \n\t" // DONE
|
||||
|
||||
: // output regs (none)
|
||||
: "=c" (dummy_value_c), // output regs (dummy)
|
||||
"=S" (dummy_value_S),
|
||||
"=D" (dummy_value_D)
|
||||
|
||||
: "S" (sptr), // esi // input regs
|
||||
"D" (dp), // edi
|
||||
"c" (width) // ecx
|
||||
: "1" (sptr), // esi // input regs
|
||||
"2" (dp), // edi
|
||||
"0" (width) // ecx
|
||||
// doesn't work "i" (0x0000000000FFFFFFLL) // %1 (a.k.a. _const4)
|
||||
|
||||
: "%esi", "%edi", "%ecx" // clobber list
|
||||
// : // clobber list
|
||||
#if 0 /* %mm0, ..., %mm4 not supported by gcc 2.7.2.3 or egcs 1.1 */
|
||||
, "%mm0", "%mm1", "%mm2", "%mm3", "%mm4"
|
||||
: "%mm0", "%mm1", "%mm2", "%mm3", "%mm4"
|
||||
#endif
|
||||
);
|
||||
}
|
||||
else if (((pass == 2) || (pass == 3)) && width)
|
||||
{
|
||||
__asm__ (
|
||||
int dummy_value_c; // fix 'forbidden register spilled'
|
||||
int dummy_value_S;
|
||||
int dummy_value_D;
|
||||
__asm__ __volatile__ (
|
||||
"subl $9, %%edi \n\t"
|
||||
// (png_pass_inc[pass] - 1)*pixel_bytes
|
||||
|
||||
@@ -1518,15 +1539,17 @@ fflush(stderr);
|
||||
"jnz .loop3_pass2 \n\t"
|
||||
"EMMS \n\t" // DONE
|
||||
|
||||
: // output regs (none)
|
||||
: "=c" (dummy_value_c), // output regs (dummy)
|
||||
"=S" (dummy_value_S),
|
||||
"=D" (dummy_value_D)
|
||||
|
||||
: "S" (sptr), // esi // input regs
|
||||
"D" (dp), // edi
|
||||
"c" (width) // ecx
|
||||
: "1" (sptr), // esi // input regs
|
||||
"2" (dp), // edi
|
||||
"0" (width) // ecx
|
||||
|
||||
: "%esi", "%edi", "%ecx" // clobber list
|
||||
// : // clobber list
|
||||
#if 0 /* %mm0, ..., %mm2 not supported by gcc 2.7.2.3 or egcs 1.1 */
|
||||
, "%mm0", "%mm1", "%mm2"
|
||||
: "%mm0", "%mm1", "%mm2"
|
||||
#endif
|
||||
);
|
||||
}
|
||||
@@ -1541,7 +1564,10 @@ fflush(stderr);
|
||||
// png_pass_inc[] = {8, 8, 4, 4, 2, 2, 1};
|
||||
// sptr points at last pixel in pre-expanded row
|
||||
// dp points at last pixel position in expanded row
|
||||
__asm__ (
|
||||
int dummy_value_c; // fix 'forbidden register spilled'
|
||||
int dummy_value_S;
|
||||
int dummy_value_D;
|
||||
__asm__ __volatile__ (
|
||||
"subl $3, %%esi \n\t"
|
||||
"subl $9, %%edi \n\t"
|
||||
// (png_pass_inc[pass] + 1)*pixel_bytes
|
||||
@@ -1567,15 +1593,17 @@ fflush(stderr);
|
||||
"jnz .loop3_pass4 \n\t"
|
||||
"EMMS \n\t" // DONE
|
||||
|
||||
: // output regs (none)
|
||||
: "=c" (dummy_value_c), // output regs (dummy)
|
||||
"=S" (dummy_value_S),
|
||||
"=D" (dummy_value_D)
|
||||
|
||||
: "S" (sptr), // esi // input regs
|
||||
"D" (dp), // edi
|
||||
"c" (width_mmx) // ecx
|
||||
: "1" (sptr), // esi // input regs
|
||||
"2" (dp), // edi
|
||||
"0" (width_mmx) // ecx
|
||||
|
||||
: "%esi", "%edi", "%ecx" // clobber list
|
||||
// : // clobber list
|
||||
#if 0 /* %mm0, ..., %mm3 not supported by gcc 2.7.2.3 or egcs 1.1 */
|
||||
, "%mm0", "%mm1", "%mm2", "%mm3"
|
||||
: "%mm0", "%mm1", "%mm2", "%mm3"
|
||||
#endif
|
||||
);
|
||||
}
|
||||
@@ -1607,7 +1635,10 @@ fflush(stderr);
|
||||
width -= width_mmx; // 0-3 pixels => 0-3 bytes
|
||||
if (width_mmx)
|
||||
{
|
||||
__asm__ (
|
||||
int dummy_value_c; // fix 'forbidden register spilled'
|
||||
int dummy_value_S;
|
||||
int dummy_value_D;
|
||||
__asm__ __volatile__ (
|
||||
"subl $3, %%esi \n\t"
|
||||
"subl $31, %%edi \n\t"
|
||||
|
||||
@@ -1634,15 +1665,17 @@ fflush(stderr);
|
||||
"jnz .loop1_pass0 \n\t"
|
||||
"EMMS \n\t" // DONE
|
||||
|
||||
: // output regs (none)
|
||||
: "=c" (dummy_value_c), // output regs (dummy)
|
||||
"=S" (dummy_value_S),
|
||||
"=D" (dummy_value_D)
|
||||
|
||||
: "S" (sptr), // esi // input regs
|
||||
"D" (dp), // edi
|
||||
"c" (width_mmx) // ecx
|
||||
: "1" (sptr), // esi // input regs
|
||||
"2" (dp), // edi
|
||||
"0" (width_mmx) // ecx
|
||||
|
||||
: "%esi", "%edi", "%ecx" // clobber list
|
||||
// : // clobber list
|
||||
#if 0 /* %mm0, ..., %mm4 not supported by gcc 2.7.2.3 or egcs 1.1 */
|
||||
, "%mm0", "%mm1", "%mm2", "%mm3", "%mm4"
|
||||
: "%mm0", "%mm1", "%mm2", "%mm3", "%mm4"
|
||||
#endif
|
||||
);
|
||||
}
|
||||
@@ -1682,7 +1715,10 @@ fflush(stderr);
|
||||
width -= width_mmx; // 0-3 pixels => 0-3 bytes
|
||||
if (width_mmx)
|
||||
{
|
||||
__asm__ (
|
||||
int dummy_value_c; // fix 'forbidden register spilled'
|
||||
int dummy_value_S;
|
||||
int dummy_value_D;
|
||||
__asm__ __volatile__ (
|
||||
"subl $3, %%esi \n\t"
|
||||
"subl $15, %%edi \n\t"
|
||||
|
||||
@@ -1700,15 +1736,17 @@ fflush(stderr);
|
||||
"jnz .loop1_pass2 \n\t"
|
||||
"EMMS \n\t" // DONE
|
||||
|
||||
: // output regs (none)
|
||||
: "=c" (dummy_value_c), // output regs (dummy)
|
||||
"=S" (dummy_value_S),
|
||||
"=D" (dummy_value_D)
|
||||
|
||||
: "S" (sptr), // esi // input regs
|
||||
"D" (dp), // edi
|
||||
"c" (width_mmx) // ecx
|
||||
: "1" (sptr), // esi // input regs
|
||||
"2" (dp), // edi
|
||||
"0" (width_mmx) // ecx
|
||||
|
||||
: "%esi", "%edi", "%ecx" // clobber list
|
||||
// : // clobber list
|
||||
#if 0 /* %mm0, %mm1 not supported by gcc 2.7.2.3 or egcs 1.1 */
|
||||
, "%mm0", "%mm1"
|
||||
: "%mm0", "%mm1"
|
||||
#endif
|
||||
);
|
||||
}
|
||||
@@ -1730,7 +1768,10 @@ fflush(stderr);
|
||||
width -= width_mmx; // 0-3 pixels => 0-3 bytes
|
||||
if (width_mmx)
|
||||
{
|
||||
__asm__ (
|
||||
int dummy_value_c; // fix 'forbidden register spilled'
|
||||
int dummy_value_S;
|
||||
int dummy_value_D;
|
||||
__asm__ __volatile__ (
|
||||
"subl $7, %%esi \n\t"
|
||||
"subl $15, %%edi \n\t"
|
||||
|
||||
@@ -1747,15 +1788,17 @@ fflush(stderr);
|
||||
"jnz .loop1_pass4 \n\t"
|
||||
"EMMS \n\t" // DONE
|
||||
|
||||
: // output regs (none)
|
||||
: "=c" (dummy_value_c), // output regs (none)
|
||||
"=S" (dummy_value_S),
|
||||
"=D" (dummy_value_D)
|
||||
|
||||
: "S" (sptr), // esi // input regs
|
||||
"D" (dp), // edi
|
||||
"c" (width_mmx) // ecx
|
||||
: "1" (sptr), // esi // input regs
|
||||
"2" (dp), // edi
|
||||
"0" (width_mmx) // ecx
|
||||
|
||||
: "%esi", "%edi", "%ecx" // clobber list
|
||||
// : // clobber list
|
||||
#if 0 /* %mm0, %mm1 not supported by gcc 2.7.2.3 or egcs 1.1 */
|
||||
, "%mm0", "%mm1"
|
||||
: "%mm0", "%mm1"
|
||||
#endif
|
||||
);
|
||||
}
|
||||
@@ -1782,7 +1825,10 @@ fflush(stderr);
|
||||
width -= width_mmx; // 0,1 pixels => 0,2 bytes
|
||||
if (width_mmx)
|
||||
{
|
||||
__asm__ (
|
||||
int dummy_value_c; // fix 'forbidden register spilled'
|
||||
int dummy_value_S;
|
||||
int dummy_value_D;
|
||||
__asm__ __volatile__ (
|
||||
"subl $2, %%esi \n\t"
|
||||
"subl $30, %%edi \n\t"
|
||||
|
||||
@@ -1802,15 +1848,17 @@ fflush(stderr);
|
||||
"jnz .loop2_pass0 \n\t"
|
||||
"EMMS \n\t" // DONE
|
||||
|
||||
: // output regs (none)
|
||||
: "=c" (dummy_value_c), // output regs (dummy)
|
||||
"=S" (dummy_value_S),
|
||||
"=D" (dummy_value_D)
|
||||
|
||||
: "S" (sptr), // esi // input regs
|
||||
"D" (dp), // edi
|
||||
"c" (width_mmx) // ecx
|
||||
: "1" (sptr), // esi // input regs
|
||||
"2" (dp), // edi
|
||||
"0" (width_mmx) // ecx
|
||||
|
||||
: "%esi", "%edi", "%ecx" // clobber list
|
||||
// : // clobber list
|
||||
#if 0 /* %mm0, %mm1 not supported by gcc 2.7.2.3 or egcs 1.1 */
|
||||
, "%mm0", "%mm1"
|
||||
: "%mm0", "%mm1"
|
||||
#endif
|
||||
);
|
||||
}
|
||||
@@ -1836,7 +1884,10 @@ fflush(stderr);
|
||||
width -= width_mmx; // 0,1 pixels => 0,2 bytes
|
||||
if (width_mmx)
|
||||
{
|
||||
__asm__ (
|
||||
int dummy_value_c; // fix 'forbidden register spilled'
|
||||
int dummy_value_S;
|
||||
int dummy_value_D;
|
||||
__asm__ __volatile__ (
|
||||
"subl $2, %%esi \n\t"
|
||||
"subl $14, %%edi \n\t"
|
||||
|
||||
@@ -1854,15 +1905,17 @@ fflush(stderr);
|
||||
"jnz .loop2_pass2 \n\t"
|
||||
"EMMS \n\t" // DONE
|
||||
|
||||
: // output regs (none)
|
||||
: "=c" (dummy_value_c), // output regs (dummy)
|
||||
"=S" (dummy_value_S),
|
||||
"=D" (dummy_value_D)
|
||||
|
||||
: "S" (sptr), // esi // input regs
|
||||
"D" (dp), // edi
|
||||
"c" (width_mmx) // ecx
|
||||
: "1" (sptr), // esi // input regs
|
||||
"2" (dp), // edi
|
||||
"0" (width_mmx) // ecx
|
||||
|
||||
: "%esi", "%edi", "%ecx" // clobber list
|
||||
// : // clobber list
|
||||
#if 0 /* %mm0, %mm1 not supported by gcc 2.7.2.3 or egcs 1.1 */
|
||||
, "%mm0", "%mm1"
|
||||
: "%mm0", "%mm1"
|
||||
#endif
|
||||
);
|
||||
}
|
||||
@@ -1888,7 +1941,10 @@ fflush(stderr);
|
||||
width -= width_mmx; // 0,1 pixels => 0,2 bytes
|
||||
if (width_mmx)
|
||||
{
|
||||
__asm__ (
|
||||
int dummy_value_c; // fix 'forbidden register spilled'
|
||||
int dummy_value_S;
|
||||
int dummy_value_D;
|
||||
__asm__ __volatile__ (
|
||||
"subl $2, %%esi \n\t"
|
||||
"subl $6, %%edi \n\t"
|
||||
|
||||
@@ -1902,15 +1958,17 @@ fflush(stderr);
|
||||
"jnz .loop2_pass4 \n\t"
|
||||
"EMMS \n\t" // DONE
|
||||
|
||||
: // output regs (none)
|
||||
: "=c" (dummy_value_c), // output regs (dummy)
|
||||
"=S" (dummy_value_S),
|
||||
"=D" (dummy_value_D)
|
||||
|
||||
: "S" (sptr), // esi // input regs
|
||||
"D" (dp), // edi
|
||||
"c" (width_mmx) // ecx
|
||||
: "1" (sptr), // esi // input regs
|
||||
"2" (dp), // edi
|
||||
"0" (width_mmx) // ecx
|
||||
|
||||
: "%esi", "%edi", "%ecx" // clobber list
|
||||
// : // clobber list
|
||||
#if 0 /* %mm0 not supported by gcc 2.7.2.3 or egcs 1.1 */
|
||||
, "%mm0"
|
||||
: "%mm0"
|
||||
#endif
|
||||
);
|
||||
}
|
||||
@@ -1946,12 +2004,15 @@ fflush(stderr);
|
||||
*/
|
||||
if (width_mmx)
|
||||
{
|
||||
int dummy_value_c; // fix 'forbidden register spilled'
|
||||
int dummy_value_S;
|
||||
int dummy_value_D;
|
||||
#ifdef GRR_DEBUG
|
||||
FILE *junk = fopen("junk.4bytes", "wb");
|
||||
if (junk)
|
||||
fclose(junk);
|
||||
#endif /* GRR_DEBUG */
|
||||
__asm__ (
|
||||
__asm__ __volatile__ (
|
||||
"subl $4, %%esi \n\t"
|
||||
"subl $60, %%edi \n\t"
|
||||
|
||||
@@ -1974,15 +2035,17 @@ fflush(stderr);
|
||||
"jnz .loop4_pass0 \n\t"
|
||||
"EMMS \n\t" // DONE
|
||||
|
||||
: // output regs (none)
|
||||
: "=c" (dummy_value_c), // output regs (dummy)
|
||||
"=S" (dummy_value_S),
|
||||
"=D" (dummy_value_D)
|
||||
|
||||
: "1" (sptr), // esi // input regs
|
||||
"2" (dp), // edi
|
||||
"0" (width_mmx) // ecx
|
||||
|
||||
: "S" (sptr), // esi // input regs
|
||||
"D" (dp), // edi
|
||||
"c" (width_mmx) // ecx
|
||||
|
||||
: "%esi", "%edi", "%ecx" // clobber list
|
||||
// : // clobber list
|
||||
#if 0 /* %mm0, %mm1 not supported by gcc 2.7.2.3 or egcs 1.1 */
|
||||
, "%mm0", "%mm1"
|
||||
: "%mm0", "%mm1"
|
||||
#endif
|
||||
);
|
||||
}
|
||||
@@ -2008,7 +2071,10 @@ fflush(stderr);
|
||||
width -= width_mmx; // 0,1 pixels => 0,4 bytes
|
||||
if (width_mmx)
|
||||
{
|
||||
__asm__ (
|
||||
int dummy_value_c; // fix 'forbidden register spilled'
|
||||
int dummy_value_S;
|
||||
int dummy_value_D;
|
||||
__asm__ __volatile__ (
|
||||
"subl $4, %%esi \n\t"
|
||||
"subl $28, %%edi \n\t"
|
||||
|
||||
@@ -2027,15 +2093,17 @@ fflush(stderr);
|
||||
"jnz .loop4_pass2 \n\t"
|
||||
"EMMS \n\t" // DONE
|
||||
|
||||
: // output regs (none)
|
||||
: "=c" (dummy_value_c), // output regs (dummy)
|
||||
"=S" (dummy_value_S),
|
||||
"=D" (dummy_value_D)
|
||||
|
||||
: "1" (sptr), // esi // input regs
|
||||
"2" (dp), // edi
|
||||
"0" (width_mmx) // ecx
|
||||
|
||||
: "S" (sptr), // esi // input regs
|
||||
"D" (dp), // edi
|
||||
"c" (width_mmx) // ecx
|
||||
|
||||
: "%esi", "%edi", "%ecx" // clobber list
|
||||
// : // clobber list
|
||||
#if 0 /* %mm0, %mm1 not supported by gcc 2.7.2.3 or egcs 1.1 */
|
||||
, "%mm0", "%mm1"
|
||||
: "%mm0", "%mm1"
|
||||
#endif
|
||||
);
|
||||
}
|
||||
@@ -2061,7 +2129,10 @@ fflush(stderr);
|
||||
width -= width_mmx; // 0,1 pixels => 0,4 bytes
|
||||
if (width_mmx)
|
||||
{
|
||||
__asm__ (
|
||||
int dummy_value_c; // fix 'forbidden register spilled'
|
||||
int dummy_value_S;
|
||||
int dummy_value_D;
|
||||
__asm__ __volatile__ (
|
||||
"subl $4, %%esi \n\t"
|
||||
"subl $12, %%edi \n\t"
|
||||
|
||||
@@ -2078,15 +2149,17 @@ fflush(stderr);
|
||||
"jnz .loop4_pass4 \n\t"
|
||||
"EMMS \n\t" // DONE
|
||||
|
||||
: // output regs (none)
|
||||
: "=c" (dummy_value_c), // output regs (dummy)
|
||||
"=S" (dummy_value_S),
|
||||
"=D" (dummy_value_D)
|
||||
|
||||
: "S" (sptr), // esi // input regs
|
||||
"D" (dp), // edi
|
||||
"c" (width_mmx) // ecx
|
||||
: "1" (sptr), // esi // input regs
|
||||
"2" (dp), // edi
|
||||
"0" (width_mmx) // ecx
|
||||
|
||||
: "%esi", "%edi", "%ecx" // clobber list
|
||||
// : // clobber list
|
||||
#if 0 /* %mm0, %mm1 not supported by gcc 2.7.2.3 or egcs 1.1 */
|
||||
, "%mm0", "%mm1"
|
||||
: "%mm0", "%mm1"
|
||||
#endif
|
||||
);
|
||||
}
|
||||
@@ -2120,12 +2193,15 @@ fflush(stderr);
|
||||
{
|
||||
// source is 8-byte RRGGBBAA
|
||||
// dest is 64-byte RRGGBBAA RRGGBBAA RRGGBBAA RRGGBBAA ...
|
||||
int dummy_value_c; // fix 'forbidden register spilled'
|
||||
int dummy_value_S;
|
||||
int dummy_value_D;
|
||||
#ifdef GRR_DEBUG
|
||||
FILE *junk = fopen("junk.8bytes", "wb");
|
||||
if (junk)
|
||||
fclose(junk);
|
||||
#endif /* GRR_DEBUG */
|
||||
__asm__ (
|
||||
__asm__ __volatile__ (
|
||||
"subl $56, %%edi \n\t" // start of last block
|
||||
|
||||
".loop8_pass0: \n\t"
|
||||
@@ -2144,15 +2220,17 @@ fflush(stderr);
|
||||
"jnz .loop8_pass0 \n\t"
|
||||
"EMMS \n\t" // DONE
|
||||
|
||||
: // output regs (none)
|
||||
: "=c" (dummy_value_c), // output regs (dummy)
|
||||
"=S" (dummy_value_S),
|
||||
"=D" (dummy_value_D)
|
||||
|
||||
: "S" (sptr), // esi // input regs
|
||||
"D" (dp), // edi
|
||||
"c" (width) // ecx
|
||||
: "1" (sptr), // esi // input regs
|
||||
"2" (dp), // edi
|
||||
"0" (width) // ecx
|
||||
|
||||
: "%esi", "%edi", "%ecx" // clobber list
|
||||
// : // clobber list
|
||||
#if 0 /* %mm0 not supported by gcc 2.7.2.3 or egcs 1.1 */
|
||||
, "%mm0"
|
||||
: "%mm0"
|
||||
#endif
|
||||
);
|
||||
}
|
||||
@@ -2164,7 +2242,10 @@ fflush(stderr);
|
||||
width -= width_mmx;
|
||||
if (width_mmx)
|
||||
{
|
||||
__asm__ (
|
||||
int dummy_value_c; // fix 'forbidden register spilled'
|
||||
int dummy_value_S;
|
||||
int dummy_value_D;
|
||||
__asm__ __volatile__ (
|
||||
"subl $24, %%edi \n\t" // start of last block
|
||||
|
||||
".loop8_pass2: \n\t"
|
||||
@@ -2179,15 +2260,17 @@ fflush(stderr);
|
||||
"jnz .loop8_pass2 \n\t"
|
||||
"EMMS \n\t" // DONE
|
||||
|
||||
: // output regs (none)
|
||||
: "=c" (dummy_value_c), // output regs (dummy)
|
||||
"=S" (dummy_value_S),
|
||||
"=D" (dummy_value_D)
|
||||
|
||||
: "S" (sptr), // esi // input regs
|
||||
"D" (dp), // edi
|
||||
"c" (width) // ecx
|
||||
: "1" (sptr), // esi // input regs
|
||||
"2" (dp), // edi
|
||||
"0" (width) // ecx
|
||||
|
||||
: "%esi", "%edi", "%ecx" // clobber list
|
||||
// : // clobber list
|
||||
#if 0 /* %mm0 not supported by gcc 2.7.2.3 or egcs 1.1 */
|
||||
, "%mm0"
|
||||
: "%mm0"
|
||||
#endif
|
||||
);
|
||||
}
|
||||
@@ -2200,7 +2283,10 @@ fflush(stderr);
|
||||
width -= width_mmx;
|
||||
if (width_mmx)
|
||||
{
|
||||
__asm__ (
|
||||
int dummy_value_c; // fix 'forbidden register spilled'
|
||||
int dummy_value_S;
|
||||
int dummy_value_D;
|
||||
__asm__ __volatile__ (
|
||||
"subl $8, %%edi \n\t" // start of last block
|
||||
|
||||
".loop8_pass4: \n\t"
|
||||
@@ -2213,15 +2299,17 @@ fflush(stderr);
|
||||
"jnz .loop8_pass4 \n\t"
|
||||
"EMMS \n\t" // DONE
|
||||
|
||||
: // output regs (none)
|
||||
: "=c" (dummy_value_c), // output regs (dummy)
|
||||
"=S" (dummy_value_S),
|
||||
"=D" (dummy_value_D)
|
||||
|
||||
: "S" (sptr), // esi // input regs
|
||||
"D" (dp), // edi
|
||||
"c" (width) // ecx
|
||||
: "1" (sptr), // esi // input regs
|
||||
"2" (dp), // edi
|
||||
"0" (width) // ecx
|
||||
|
||||
: "%esi", "%edi", "%ecx" // clobber list
|
||||
// : // clobber list
|
||||
#if 0 /* %mm0 not supported by gcc 2.7.2.3 or egcs 1.1 */
|
||||
, "%mm0"
|
||||
: "%mm0"
|
||||
#endif
|
||||
);
|
||||
}
|
||||
@@ -2406,11 +2494,14 @@ png_read_filter_row_mmx_avg(png_row_infop row_info, png_bytep row,
|
||||
png_bytep prev_row)
|
||||
{
|
||||
int bpp;
|
||||
int dummy_value_c; // fix 'forbidden register 2 (cx) was spilled' error
|
||||
int dummy_value_S;
|
||||
int dummy_value_D;
|
||||
// int diff; GRR: global now (shortened to dif/_dif)
|
||||
|
||||
bpp = (row_info->pixel_depth + 7) >> 3; // Get # bytes per pixel
|
||||
_FullLength = row_info->rowbytes; // # of bytes to filter
|
||||
__asm__ (
|
||||
__asm__ __volatile__ (
|
||||
// Init address pointers and offset
|
||||
//GRR "movl row, %%edi \n\t" // edi ==> Avg(x)
|
||||
"xorl %%ebx, %%ebx \n\t" // ebx ==> x
|
||||
@@ -2465,14 +2556,16 @@ png_read_filter_row_mmx_avg(png_row_infop row_info, png_bytep row,
|
||||
"subl %%eax, %%ecx \n\t" // drop over bytes from original length
|
||||
"movl %%ecx, _MMXLength \n\t"
|
||||
|
||||
: // output regs/vars here, e.g., "=m" (_MMXLength) instead of final instr
|
||||
: "=c" (dummy_value_c), // output regs/vars here, e.g., "=m" (_MMXLength) instead of final instr
|
||||
"=S" (dummy_value_S),
|
||||
"=D" (dummy_value_D)
|
||||
|
||||
: "S" (prev_row), // esi // input regs
|
||||
"D" (row), // edi
|
||||
"c" (bpp) // ecx
|
||||
: "1" (prev_row), // esi // input regs
|
||||
"2" (row), // edi
|
||||
"0" (bpp) // ecx
|
||||
|
||||
: "%eax", "%ebx", "%ecx", // clobber list
|
||||
"%edx", "%edi", "%esi"
|
||||
: "%eax", "%ebx", // clobber list
|
||||
"%edx"
|
||||
// GRR: INCLUDE "memory" as clobbered? (_dif, _MMXLength) PROBABLY
|
||||
);
|
||||
|
||||
|
||||
80
pngget.c
80
pngget.c
@@ -1,11 +1,11 @@
|
||||
|
||||
/* pngget.c - retrieval of values from info struct
|
||||
*
|
||||
* libpng 1.0.7beta14 - May 17, 2000
|
||||
* libpng 1.0.8beta1 - July 8, 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
|
||||
* Copyright (c) 1998, 1999, 2000 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.)
|
||||
*/
|
||||
|
||||
#define PNG_INTERNAL
|
||||
@@ -115,15 +115,17 @@ png_get_compression_type(png_structp png_ptr, png_infop info_ptr)
|
||||
png_uint_32 PNGAPI
|
||||
png_get_x_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
|
||||
{
|
||||
if (png_ptr != NULL && info_ptr != NULL)
|
||||
#if defined(PNG_pHYs_SUPPORTED)
|
||||
if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs))
|
||||
if (info_ptr->valid & PNG_INFO_pHYs)
|
||||
{
|
||||
png_debug1(1, "in %s retrieval function\n", "png_get_x_pixels_per_meter");
|
||||
if(info_ptr->phys_unit_type != PNG_RESOLUTION_METER)
|
||||
return (0);
|
||||
else return (info_ptr->x_pixels_per_unit);
|
||||
}
|
||||
else
|
||||
#else
|
||||
return (0);
|
||||
#endif
|
||||
return (0);
|
||||
}
|
||||
@@ -131,15 +133,17 @@ png_get_x_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
|
||||
png_uint_32 PNGAPI
|
||||
png_get_y_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
|
||||
{
|
||||
if (png_ptr != NULL && info_ptr != NULL)
|
||||
#if defined(PNG_pHYs_SUPPORTED)
|
||||
if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs))
|
||||
if (info_ptr->valid & PNG_INFO_pHYs)
|
||||
{
|
||||
png_debug1(1, "in %s retrieval function\n", "png_get_y_pixels_per_meter");
|
||||
png_debug1(1, "in %s retrieval function\n", "png_get_y_pixels_per_meter");
|
||||
if(info_ptr->phys_unit_type != PNG_RESOLUTION_METER)
|
||||
return (0);
|
||||
else return (info_ptr->y_pixels_per_unit);
|
||||
}
|
||||
else
|
||||
#else
|
||||
return (0);
|
||||
#endif
|
||||
return (0);
|
||||
}
|
||||
@@ -147,8 +151,9 @@ png_get_y_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
|
||||
png_uint_32 PNGAPI
|
||||
png_get_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
|
||||
{
|
||||
if (png_ptr != NULL && info_ptr != NULL)
|
||||
#if defined(PNG_pHYs_SUPPORTED)
|
||||
if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs))
|
||||
if (info_ptr->valid & PNG_INFO_pHYs)
|
||||
{
|
||||
png_debug1(1, "in %s retrieval function\n", "png_get_pixels_per_meter");
|
||||
if(info_ptr->phys_unit_type != PNG_RESOLUTION_METER ||
|
||||
@@ -156,7 +161,8 @@ png_get_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
|
||||
return (0);
|
||||
else return (info_ptr->x_pixels_per_unit);
|
||||
}
|
||||
else
|
||||
#else
|
||||
return (0);
|
||||
#endif
|
||||
return (0);
|
||||
}
|
||||
@@ -165,82 +171,92 @@ png_get_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
|
||||
float PNGAPI
|
||||
png_get_pixel_aspect_ratio(png_structp png_ptr, png_infop info_ptr)
|
||||
{
|
||||
if (png_ptr != NULL && info_ptr != NULL)
|
||||
#if defined(PNG_pHYs_SUPPORTED)
|
||||
if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs))
|
||||
if (info_ptr->valid & PNG_INFO_pHYs)
|
||||
{
|
||||
png_debug1(1, "in %s retrieval function\n", "png_get_aspect_ratio");
|
||||
if (info_ptr->x_pixels_per_unit == 0)
|
||||
return ((float)0.0);
|
||||
else
|
||||
return ((float)info_ptr->y_pixels_per_unit
|
||||
/(float)info_ptr->x_pixels_per_unit);
|
||||
return ((float)((float)info_ptr->y_pixels_per_unit
|
||||
/(float)info_ptr->x_pixels_per_unit));
|
||||
}
|
||||
else
|
||||
#else
|
||||
return (0.0);
|
||||
#endif
|
||||
return ((float)0.0);
|
||||
return ((float)0.0);
|
||||
}
|
||||
#endif
|
||||
|
||||
png_uint_32 PNGAPI
|
||||
png_int_32 PNGAPI
|
||||
png_get_x_offset_microns(png_structp png_ptr, png_infop info_ptr)
|
||||
{
|
||||
if (png_ptr != NULL && info_ptr != NULL)
|
||||
#if defined(PNG_oFFs_SUPPORTED)
|
||||
if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs))
|
||||
if (info_ptr->valid & PNG_INFO_oFFs)
|
||||
{
|
||||
png_debug1(1, "in %s retrieval function\n", "png_get_x_offset_microns");
|
||||
if(info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER)
|
||||
return (0);
|
||||
else return (info_ptr->x_offset);
|
||||
}
|
||||
else
|
||||
#else
|
||||
return (0);
|
||||
#endif
|
||||
return (0);
|
||||
}
|
||||
|
||||
png_uint_32 PNGAPI
|
||||
png_int_32 PNGAPI
|
||||
png_get_y_offset_microns(png_structp png_ptr, png_infop info_ptr)
|
||||
{
|
||||
if (png_ptr != NULL && info_ptr != NULL)
|
||||
#if defined(PNG_oFFs_SUPPORTED)
|
||||
if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs))
|
||||
if (info_ptr->valid & PNG_INFO_oFFs)
|
||||
{
|
||||
png_debug1(1, "in %s retrieval function\n", "png_get_y_offset_microns");
|
||||
if(info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER)
|
||||
return (0);
|
||||
else return (info_ptr->y_offset);
|
||||
}
|
||||
else
|
||||
#else
|
||||
return (0);
|
||||
#endif
|
||||
return (0);
|
||||
}
|
||||
|
||||
png_uint_32 PNGAPI
|
||||
png_int_32 PNGAPI
|
||||
png_get_x_offset_pixels(png_structp png_ptr, png_infop info_ptr)
|
||||
{
|
||||
if (png_ptr != NULL && info_ptr != NULL)
|
||||
#if defined(PNG_oFFs_SUPPORTED)
|
||||
if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs))
|
||||
if (info_ptr->valid & PNG_INFO_oFFs)
|
||||
{
|
||||
png_debug1(1, "in %s retrieval function\n", "png_get_x_offset_microns");
|
||||
if(info_ptr->offset_unit_type != PNG_OFFSET_PIXEL)
|
||||
return (0);
|
||||
else return (info_ptr->x_offset);
|
||||
}
|
||||
else
|
||||
#else
|
||||
return (0);
|
||||
#endif
|
||||
return (0);
|
||||
}
|
||||
|
||||
png_uint_32 PNGAPI
|
||||
png_int_32 PNGAPI
|
||||
png_get_y_offset_pixels(png_structp png_ptr, png_infop info_ptr)
|
||||
{
|
||||
if (png_ptr != NULL && info_ptr != NULL)
|
||||
#if defined(PNG_oFFs_SUPPORTED)
|
||||
if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs))
|
||||
if (info_ptr->valid & PNG_INFO_oFFs)
|
||||
{
|
||||
png_debug1(1, "in %s retrieval function\n", "png_get_y_offset_microns");
|
||||
if(info_ptr->offset_unit_type != PNG_OFFSET_PIXEL)
|
||||
return (0);
|
||||
else return (info_ptr->y_offset);
|
||||
}
|
||||
else
|
||||
#else
|
||||
return (0);
|
||||
#endif
|
||||
return (0);
|
||||
}
|
||||
@@ -250,21 +266,21 @@ png_uint_32 PNGAPI
|
||||
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)
|
||||
*.0254 +.5);
|
||||
*.0254 +.5));
|
||||
}
|
||||
|
||||
png_uint_32 PNGAPI
|
||||
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)
|
||||
*.0254 +.5);
|
||||
*.0254 +.5));
|
||||
}
|
||||
|
||||
png_uint_32 PNGAPI
|
||||
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)
|
||||
*.0254 +.5);
|
||||
*.0254 +.5));
|
||||
}
|
||||
|
||||
float PNGAPI
|
||||
@@ -278,7 +294,7 @@ float PNGAPI
|
||||
png_get_y_offset_inches(png_structp png_ptr, png_infop info_ptr)
|
||||
{
|
||||
return ((float)png_get_y_offset_microns(png_ptr, info_ptr)
|
||||
*.00003937)
|
||||
*.00003937);
|
||||
}
|
||||
|
||||
#if defined(PNG_READ_pHYs_SUPPORTED)
|
||||
@@ -305,7 +321,7 @@ png_get_pHYs_dpi(png_structp png_ptr, png_infop info_ptr,
|
||||
{
|
||||
*unit_type = (int)info_ptr->phys_unit_type;
|
||||
retval |= PNG_INFO_pHYs;
|
||||
if(unit_type == 1)
|
||||
if(*unit_type == 1)
|
||||
{
|
||||
if (res_x != NULL) *res_x = (png_uint_32)(*res_x * .0254 + .50);
|
||||
if (res_y != NULL) *res_y = (png_uint_32)(*res_y * .0254 + .50);
|
||||
|
||||
6
pngmem.c
6
pngmem.c
@@ -1,11 +1,11 @@
|
||||
|
||||
/* pngmem.c - stub functions for memory allocation
|
||||
*
|
||||
* libpng 1.0.7beta14 - May 17, 2000
|
||||
* libpng 1.0.8beta1 - July 8, 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
|
||||
* Copyright (c) 1998, 1999, 2000 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.)
|
||||
*
|
||||
* This file provides a location for all memory allocation. Users who
|
||||
* need special memory handling are expected to supply replacement
|
||||
|
||||
37
pngpread.c
37
pngpread.c
@@ -1,11 +1,11 @@
|
||||
|
||||
/* pngpread.c - read a png file in push mode
|
||||
*
|
||||
* libpng 1.0.7beta14 - May 17, 2000
|
||||
* libpng 1.0.8beta1 - July 8, 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
|
||||
* Copyright (c) 1998, 1999, 2000 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.)
|
||||
*/
|
||||
|
||||
#define PNG_INTERNAL
|
||||
@@ -714,23 +714,26 @@ png_process_IDAT_data(png_structp png_ptr, png_bytep buffer,
|
||||
for(;;)
|
||||
{
|
||||
ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH);
|
||||
if (ret == Z_STREAM_END)
|
||||
if (ret != Z_OK)
|
||||
{
|
||||
if (png_ptr->zstream.avail_in)
|
||||
png_error(png_ptr, "Extra compressed data");
|
||||
if (!(png_ptr->zstream.avail_out))
|
||||
if (ret == Z_STREAM_END)
|
||||
{
|
||||
png_push_process_row(png_ptr);
|
||||
}
|
||||
if (png_ptr->zstream.avail_in)
|
||||
png_error(png_ptr, "Extra compressed data");
|
||||
if (!(png_ptr->zstream.avail_out))
|
||||
{
|
||||
png_push_process_row(png_ptr);
|
||||
}
|
||||
|
||||
png_ptr->mode |= PNG_AFTER_IDAT;
|
||||
png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED;
|
||||
break;
|
||||
png_ptr->mode |= PNG_AFTER_IDAT;
|
||||
png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED;
|
||||
break;
|
||||
}
|
||||
else if (ret == Z_BUF_ERROR)
|
||||
break;
|
||||
else
|
||||
png_error(png_ptr, "Decompression Error");
|
||||
}
|
||||
else if (ret == Z_BUF_ERROR)
|
||||
break;
|
||||
else if (ret != Z_OK)
|
||||
png_error(png_ptr, "Decompression Error");
|
||||
if (!(png_ptr->zstream.avail_out))
|
||||
{
|
||||
png_push_process_row(png_ptr);
|
||||
@@ -1033,6 +1036,7 @@ png_push_read_tEXt(png_structp png_ptr, png_infop info_ptr)
|
||||
|
||||
png_set_text(png_ptr, info_ptr, text_ptr, 1);
|
||||
|
||||
png_free(png_ptr, key);
|
||||
png_free(png_ptr, text_ptr);
|
||||
}
|
||||
}
|
||||
@@ -1216,6 +1220,7 @@ png_push_read_zTXt(png_structp png_ptr, png_infop info_ptr)
|
||||
|
||||
png_set_text(png_ptr, info_ptr, text_ptr, 1);
|
||||
|
||||
png_free(png_ptr, key);
|
||||
png_free(png_ptr, text_ptr);
|
||||
}
|
||||
}
|
||||
|
||||
10
pngread.c
10
pngread.c
@@ -1,11 +1,11 @@
|
||||
|
||||
/* pngread.c - read a PNG file
|
||||
*
|
||||
* libpng 1.0.7beta14 - May 17, 2000
|
||||
* libpng 1.0.8beta1 - July 8, 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
|
||||
* Copyright (c) 1998, 1999, 2000 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.)
|
||||
*
|
||||
* This file contains routines that an application calls directly to
|
||||
* read a PNG file or stream.
|
||||
@@ -697,7 +697,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.7beta14
|
||||
* [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.8beta1
|
||||
*/
|
||||
|
||||
void PNGAPI
|
||||
@@ -746,7 +746,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.7beta14
|
||||
* [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.8beta1
|
||||
*/
|
||||
void PNGAPI
|
||||
png_read_image(png_structp png_ptr, png_bytepp image)
|
||||
|
||||
12
pngrio.c
12
pngrio.c
@@ -1,11 +1,11 @@
|
||||
|
||||
/* pngrio.c - functions for data input
|
||||
*
|
||||
* libpng 1.0.7beta14 - May 17, 2000
|
||||
* libpng 1.0.8beta1 - July 8, 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
|
||||
* Copyright (c) 1998, 1999, 2000 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.)
|
||||
*
|
||||
* This file provides a location for all input. Users who need
|
||||
* special handling are expected to write a function that has the same
|
||||
@@ -48,7 +48,7 @@ png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||
* instead of an int, which is what fread() actually returns.
|
||||
*/
|
||||
check = (png_size_t)fread(data, (png_size_t)1, length,
|
||||
(FILE *)png_ptr->io_ptr);
|
||||
(png_FILE_p)png_ptr->io_ptr);
|
||||
|
||||
if (check != length)
|
||||
{
|
||||
@@ -69,11 +69,11 @@ png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||
{
|
||||
int check;
|
||||
png_byte *n_data;
|
||||
FILE *io_ptr;
|
||||
png_FILE_p io_ptr;
|
||||
|
||||
/* Check if data really is near. If so, use usual code. */
|
||||
n_data = (png_byte *)CVT_PTR_NOCHECK(data);
|
||||
io_ptr = (FILE *)CVT_PTR(png_ptr->io_ptr);
|
||||
io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
|
||||
if ((png_bytep)n_data == data)
|
||||
{
|
||||
check = fread(n_data, 1, length, io_ptr);
|
||||
|
||||
17
pngrtran.c
17
pngrtran.c
@@ -1,11 +1,11 @@
|
||||
|
||||
/* pngrtran.c - transforms the data in a row for PNG readers
|
||||
*
|
||||
* libpng 1.0.7beta14 - May 17, 2000
|
||||
* libpng 1.0.8beta1 - July 8, 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
|
||||
* Copyright (c) 1998, 1999, 2000 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.)
|
||||
*
|
||||
* This file contains functions optionally called by an application
|
||||
* in order to tell libpng how to handle data when reading a PNG.
|
||||
@@ -979,6 +979,11 @@ png_init_read_transformations(png_structp png_ptr)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#if !defined(PNG_READ_GAMMA_SUPPORTED) && !defined(PNG_READ_SHIFT_SUPPORTED) \
|
||||
&& !defined(PNG_READ_BACKGROUND_SUPPORTED)
|
||||
if(png_ptr)
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Modify the info structure to reflect the transformations. The
|
||||
@@ -1103,6 +1108,10 @@ defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
|
||||
info_ptr->bit_depth);
|
||||
info_ptr->rowbytes = ((info_ptr->width * info_ptr->pixel_depth + 7) >> 3);
|
||||
|
||||
#if !defined(PNG_READ_EXPAND_SUPPORTED)
|
||||
if(png_ptr)
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Transform the row. The order of transformations is significant,
|
||||
@@ -1116,7 +1125,7 @@ png_do_read_transformations(png_structp png_ptr)
|
||||
#if !defined(PNG_USELESS_TESTS_SUPPORTED)
|
||||
if (png_ptr->row_buf == NULL)
|
||||
{
|
||||
#if !defined(PNG_NO_STDIO)
|
||||
#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
|
||||
char msg[50];
|
||||
|
||||
sprintf(msg, "NULL row buffer for row %ld, pass %d", png_ptr->row_number,
|
||||
|
||||
126
pngrutil.c
126
pngrutil.c
@@ -1,11 +1,11 @@
|
||||
|
||||
/* pngrutil.c - utilities to read a PNG file
|
||||
*
|
||||
* libpng 1.0.7beta14 - May 17, 2000
|
||||
* libpng 1.0.8beta1 - July 8, 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
|
||||
* Copyright (c) 1998, 1999, 2000 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.)
|
||||
*
|
||||
* This file contains routines that are only called from within
|
||||
* libpng itself during the course of reading an image.
|
||||
@@ -14,6 +14,30 @@
|
||||
#define PNG_INTERNAL
|
||||
#include "png.h"
|
||||
|
||||
#if defined(_WIN32_WCE)
|
||||
/* strtod() function is not supported on WindowsCE */
|
||||
# ifdef PNG_FLOATING_POINT_SUPPORTED
|
||||
__inline double strtod(const char *nptr, char **endptr)
|
||||
{
|
||||
double result = 0;
|
||||
int len;
|
||||
wchar_t *str, *end;
|
||||
|
||||
len = MultiByteToWideChar(CP_ACP, 0, nptr, -1, NULL, 0);
|
||||
str = (wchar_t *)malloc(len * sizeof(wchar_t));
|
||||
if ( NULL != str )
|
||||
{
|
||||
MultiByteToWideChar(CP_ACP, 0, nptr, -1, str, len);
|
||||
result = wcstod(str, &end);
|
||||
len = WideCharToMultiByte(CP_ACP, 0, end, -1, NULL, 0, NULL, NULL);
|
||||
*endptr = (char *)nptr + (strlen(nptr) - len + 1);
|
||||
free(str);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef PNG_READ_BIG_ENDIAN_SUPPORTED
|
||||
/* Grab an unsigned 32-bit integer from a buffer in big-endian format. */
|
||||
png_uint_32 /* PRIVATE */
|
||||
@@ -152,6 +176,7 @@ png_decompress_chunk(png_structp png_ptr, int comp_type,
|
||||
|
||||
if (comp_type == PNG_TEXT_COMPRESSION_zTXt)
|
||||
{
|
||||
int ret = Z_OK;
|
||||
png_ptr->zstream.next_in = (png_bytep)(chunkdata + prefix_size);
|
||||
png_ptr->zstream.avail_in = (uInt)(chunklength - prefix_size);
|
||||
png_ptr->zstream.next_out = png_ptr->zbuf;
|
||||
@@ -162,7 +187,7 @@ png_decompress_chunk(png_structp png_ptr, int comp_type,
|
||||
|
||||
while (png_ptr->zstream.avail_in)
|
||||
{
|
||||
int ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH);
|
||||
ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH);
|
||||
if (ret != Z_OK && ret != Z_STREAM_END)
|
||||
{
|
||||
if (png_ptr->zstream.msg != NULL)
|
||||
@@ -222,6 +247,26 @@ png_decompress_chunk(png_structp png_ptr, int comp_type,
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ret != Z_STREAM_END)
|
||||
{
|
||||
#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
|
||||
char umsg[50];
|
||||
|
||||
if (ret == Z_BUF_ERROR)
|
||||
sprintf(umsg,"Buffer error in compressed datastream in %s chunk",
|
||||
png_ptr->chunk_name);
|
||||
else if (ret == Z_DATA_ERROR)
|
||||
sprintf(umsg,"Data error in compressed datastream in %s chunk",
|
||||
png_ptr->chunk_name);
|
||||
else
|
||||
sprintf(umsg,"Incomplete compressed datastream in %s chunk",
|
||||
png_ptr->chunk_name);
|
||||
png_warning(png_ptr, umsg);
|
||||
#else
|
||||
png_warning(png_ptr,
|
||||
"Incomplete compressed datastream in chunk other than IDAT");
|
||||
#endif
|
||||
}
|
||||
|
||||
inflateReset(&png_ptr->zstream);
|
||||
png_ptr->zstream.avail_in = 0;
|
||||
@@ -230,9 +275,9 @@ png_decompress_chunk(png_structp png_ptr, int comp_type,
|
||||
chunkdata = text;
|
||||
*newlength=text_size;
|
||||
}
|
||||
else /* if (comp_type >= PNG_TEXT_COMPRESSION_LAST) */
|
||||
else /* if (comp_type != PNG_TEXT_COMPRESSION_zTXt) */
|
||||
{
|
||||
#if !defined(PNG_NO_STDIO)
|
||||
#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
|
||||
char umsg[50];
|
||||
|
||||
sprintf(umsg, "Unknown zTXt compression type %d", comp_type);
|
||||
@@ -354,6 +399,9 @@ png_handle_PLTE(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
||||
{
|
||||
png_colorp palette;
|
||||
int num, i;
|
||||
#ifndef PNG_NO_POINTER_INDEXING
|
||||
png_colorp pal_ptr;
|
||||
#endif
|
||||
|
||||
png_debug(1, "in png_handle_PLTE\n");
|
||||
|
||||
@@ -378,7 +426,7 @@ png_handle_PLTE(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
||||
}
|
||||
#endif
|
||||
|
||||
if (length % 3)
|
||||
if (length > 768 || length % 3)
|
||||
{
|
||||
if (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE)
|
||||
{
|
||||
@@ -396,6 +444,17 @@ png_handle_PLTE(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
||||
|
||||
palette = (png_colorp)png_zalloc(png_ptr, (uInt)num, sizeof (png_color));
|
||||
|
||||
#ifndef PNG_NO_POINTER_INDEXING
|
||||
for (i = 0, pal_ptr = palette; i < num; i++, pal_ptr++)
|
||||
{
|
||||
png_byte buf[3];
|
||||
|
||||
png_crc_read(png_ptr, buf, 3);
|
||||
pal_ptr->red = buf[0];
|
||||
pal_ptr->green = buf[1];
|
||||
pal_ptr->blue = buf[2];
|
||||
}
|
||||
#else
|
||||
for (i = 0; i < num; i++)
|
||||
{
|
||||
png_byte buf[3];
|
||||
@@ -406,6 +465,7 @@ png_handle_PLTE(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
||||
palette[i].green = buf[1];
|
||||
palette[i].blue = buf[2];
|
||||
}
|
||||
#endif
|
||||
|
||||
/* If we actually NEED the PLTE chunk (ie for a paletted image), we do
|
||||
whatever the normal CRC configuration tells us. However, if we
|
||||
@@ -556,7 +616,7 @@ png_handle_gAMA(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
||||
{
|
||||
png_warning(png_ptr,
|
||||
"Ignoring incorrect gAMA value when sRGB is also present");
|
||||
#ifndef PNG_NO_STDIO
|
||||
#ifndef PNG_NO_CONSOLE_IO
|
||||
fprintf(stderr, "gamma = (%d/100000)\n", (int)igamma);
|
||||
#endif
|
||||
return;
|
||||
@@ -766,7 +826,7 @@ png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
||||
|
||||
png_warning(png_ptr,
|
||||
"Ignoring incorrect cHRM value when sRGB is also present");
|
||||
#ifndef PNG_NO_STDIO
|
||||
#ifndef PNG_NO_CONSOLE_IO
|
||||
#ifdef PNG_FLOATING_POINT_SUPPORTED
|
||||
fprintf(stderr,"wx=%f, wy=%f, rx=%f, ry=%f\n",
|
||||
white_x, white_y, red_x, red_y);
|
||||
@@ -778,7 +838,7 @@ png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
||||
fprintf(stderr,"gx=%ld, gy=%ld, bx=%ld, by=%ld\n",
|
||||
int_x_green, int_y_green, int_x_blue, int_y_blue);
|
||||
#endif
|
||||
#endif /* PNG_NO_STDIO */
|
||||
#endif /* PNG_NO_CONSOLE_IO */
|
||||
}
|
||||
png_crc_finish(png_ptr, 0);
|
||||
return;
|
||||
@@ -872,7 +932,7 @@ png_handle_sRGB(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
||||
{
|
||||
png_warning(png_ptr,
|
||||
"Ignoring incorrect gAMA value when sRGB is also present");
|
||||
#ifndef PNG_NO_STDIO
|
||||
#ifndef PNG_NO_CONSOLE_IO
|
||||
# ifdef PNG_FIXED_POINT_SUPPORTED
|
||||
fprintf(stderr,"incorrect gamma=(%d/100000)\n",(int)png_ptr->int_gamma);
|
||||
# else
|
||||
@@ -962,18 +1022,19 @@ png_handle_iCCP(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
||||
|
||||
for (profile = chunkdata; *profile; profile++)
|
||||
/* empty loop to find end of name */ ;
|
||||
|
||||
++profile;
|
||||
|
||||
/* there should be at least one NUL (the compression type byte)
|
||||
/* there should be at least one zero (the compression type byte)
|
||||
following the separator, and we should be on it */
|
||||
if (profile >= chunkdata + slength)
|
||||
if (*profile || profile >= chunkdata + slength)
|
||||
{
|
||||
png_free(png_ptr, chunkdata);
|
||||
png_warning(png_ptr, "malformed iCCP chunk");
|
||||
return;
|
||||
}
|
||||
|
||||
/* compression should always be zero */
|
||||
/* compression_type should always be zero */
|
||||
compression_type = *profile++;
|
||||
|
||||
prefix_length = profile - chunkdata;
|
||||
@@ -994,6 +1055,9 @@ png_handle_sPLT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
||||
png_bytep chunkdata;
|
||||
png_bytep entry_start;
|
||||
png_sPLT_t new_palette;
|
||||
#ifdef PNG_NO_POINTER_INDEXING
|
||||
png_sPLT_entryp pp;
|
||||
#endif
|
||||
int data_length, entry_size, i;
|
||||
png_uint_32 skip = 0;
|
||||
png_size_t slength;
|
||||
@@ -1057,6 +1121,7 @@ png_handle_sPLT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
||||
new_palette.entries = (png_sPLT_entryp)png_malloc(
|
||||
png_ptr, new_palette.nentries * sizeof(png_sPLT_entry));
|
||||
|
||||
#ifndef PNG_NO_POINTER_INDEXING
|
||||
for (i = 0; i < new_palette.nentries; i++)
|
||||
{
|
||||
png_sPLT_entryp pp = new_palette.entries + i;
|
||||
@@ -1077,6 +1142,28 @@ png_handle_sPLT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
||||
}
|
||||
pp->frequency = png_get_uint_16(entry_start); entry_start += 2;
|
||||
}
|
||||
#else
|
||||
pp = new_palette.entries;
|
||||
for (i = 0; i < new_palette.nentries; i++)
|
||||
{
|
||||
|
||||
if (new_palette.depth == 8)
|
||||
{
|
||||
pp[i].red = *entry_start++;
|
||||
pp[i].green = *entry_start++;
|
||||
pp[i].blue = *entry_start++;
|
||||
pp[i].alpha = *entry_start++;
|
||||
}
|
||||
else
|
||||
{
|
||||
pp[i].red = png_get_uint_16(entry_start); entry_start += 2;
|
||||
pp[i].green = png_get_uint_16(entry_start); entry_start += 2;
|
||||
pp[i].blue = png_get_uint_16(entry_start); entry_start += 2;
|
||||
pp[i].alpha = png_get_uint_16(entry_start); entry_start += 2;
|
||||
}
|
||||
pp->frequency = png_get_uint_16(entry_start); entry_start += 2;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* discard all chunk data except the name and stash that */
|
||||
new_palette.name = (png_charp)chunkdata;
|
||||
@@ -1347,16 +1434,16 @@ png_handle_pHYs(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
|
||||
png_debug(1, "in png_handle_pHYs\n");
|
||||
|
||||
if (!(png_ptr->mode & PNG_HAVE_IHDR))
|
||||
png_error(png_ptr, "Missing IHDR before pHYS");
|
||||
png_error(png_ptr, "Missing IHDR before pHYs");
|
||||
else if (png_ptr->mode & PNG_HAVE_IDAT)
|
||||
{
|
||||
png_warning(png_ptr, "Invalid pHYS after IDAT");
|
||||
png_warning(png_ptr, "Invalid pHYs after IDAT");
|
||||
png_crc_finish(png_ptr, length);
|
||||
return;
|
||||
}
|
||||
else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs))
|
||||
{
|
||||
png_warning(png_ptr, "Duplicate pHYS chunk");
|
||||
png_warning(png_ptr, "Duplicate pHYs chunk");
|
||||
png_crc_finish(png_ptr, length);
|
||||
return;
|
||||
}
|
||||
@@ -2469,6 +2556,11 @@ png_do_read_interlace
|
||||
row_info->rowbytes = ((final_width *
|
||||
(png_uint_32)row_info->pixel_depth + 7) >> 3);
|
||||
}
|
||||
#if !defined(PNG_READ_PACKSWAP_SUPPORTED)
|
||||
/* silence compiler warning */
|
||||
if (transformations)
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
6
pngset.c
6
pngset.c
@@ -1,11 +1,11 @@
|
||||
|
||||
/* pngset.c - storage of image information into info struct
|
||||
*
|
||||
* libpng 1.0.7beta14 - May 17, 2000
|
||||
* libpng 1.0.8beta1 - July 8, 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
|
||||
* Copyright (c) 1998, 1999, 2000 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.)
|
||||
*
|
||||
* The functions here are used during reads to store data from the file
|
||||
* into the info struct, and during writes to store application data
|
||||
|
||||
122
pngtest.c
122
pngtest.c
@@ -1,11 +1,11 @@
|
||||
|
||||
/* pngtest.c - a simple test program to test libpng
|
||||
*
|
||||
* libpng 1.0.7beta14 - May 17, 2000
|
||||
* libpng 1.0.8beta1 - July 8, 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
|
||||
* Copyright (c) 1998, 1999, 2000 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.)
|
||||
*
|
||||
* This program reads in a PNG image, writes it out again, and then
|
||||
* compares the two files. If the files are identical, this shows that
|
||||
@@ -27,9 +27,27 @@
|
||||
* of files at once by typing "pngtest -m file1.png file2.png ..."
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
#if defined(_WIN32_WCE)
|
||||
# if _WIN32_WCE < 211
|
||||
__error__ (f|w)printf functions are not supported on old WindowsCE.;
|
||||
# endif
|
||||
# include <windows.h>
|
||||
# include <stdlib.h>
|
||||
# define READFILE(file, data, length, check) \
|
||||
ReadFile(file, data, length, &check,NULL)
|
||||
# define WRITEFILE(file, data, length, check) \
|
||||
WriteFile(file, data, length, &check, NULL);
|
||||
# define FCLOSE(file) CloseHandle(file)
|
||||
#else
|
||||
# include <stdio.h>
|
||||
# include <stdlib.h>
|
||||
# include <assert.h>
|
||||
# define READFILE(file, data, length, check) \
|
||||
check=(png_size_t)fread(data,(png_size_t)1,length,file)
|
||||
# define WRITEFILE(file, data, length, check) \
|
||||
check = (png_size_t)fwrite(data, (png_size_t)1, length, file);
|
||||
# define FCLOSE(file) fclose(file)
|
||||
#endif
|
||||
|
||||
/* Makes pngtest verbose so we can find problems (needs to be before png.h) */
|
||||
#ifndef PNG_DEBUG
|
||||
@@ -232,15 +250,14 @@ static int wrote_question = 0;
|
||||
than changing the library. */
|
||||
#ifndef USE_FAR_KEYWORD
|
||||
static void
|
||||
png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||
pngtest_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||
{
|
||||
png_size_t check;
|
||||
|
||||
/* fread() returns 0 on error, so it is OK to store this in a png_size_t
|
||||
* instead of an int, which is what fread() actually returns.
|
||||
*/
|
||||
check = (png_size_t)fread(data, (png_size_t)1, length,
|
||||
(FILE *)png_ptr->io_ptr);
|
||||
READFILE((png_FILE_p)png_ptr->io_ptr, data, length, check);
|
||||
|
||||
if (check != length)
|
||||
{
|
||||
@@ -257,18 +274,18 @@ png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||
#define MIN(a,b) (a <= b ? a : b)
|
||||
|
||||
static void
|
||||
png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||
pngtest_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||
{
|
||||
int check;
|
||||
png_byte *n_data;
|
||||
FILE *io_ptr;
|
||||
png_FILE_p io_ptr;
|
||||
|
||||
/* Check if data really is near. If so, use usual code. */
|
||||
n_data = (png_byte *)CVT_PTR_NOCHECK(data);
|
||||
io_ptr = (FILE *)CVT_PTR(png_ptr->io_ptr);
|
||||
io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
|
||||
if ((png_bytep)n_data == data)
|
||||
{
|
||||
check = fread(n_data, 1, length, io_ptr);
|
||||
READFILE(io_ptr, n_data, length, check);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -279,7 +296,7 @@ png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||
do
|
||||
{
|
||||
read = MIN(NEAR_BUF_SIZE, remaining);
|
||||
err = fread(buf, (png_size_t)1, read, io_ptr);
|
||||
READFILE(io_ptr, buf, 1, err);
|
||||
png_memcpy(data, buf, read); /* copy far buffer to near buffer */
|
||||
if(err != read)
|
||||
break;
|
||||
@@ -299,12 +316,14 @@ png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||
|
||||
#if defined(PNG_WRITE_FLUSH_SUPPORTED)
|
||||
static void
|
||||
png_default_flush(png_structp png_ptr)
|
||||
pngtest_flush(png_structp png_ptr)
|
||||
{
|
||||
FILE *io_ptr;
|
||||
io_ptr = (FILE *)CVT_PTR((png_ptr->io_ptr));
|
||||
#if !defined(_WIN32_WCE)
|
||||
png_FILE_p io_ptr;
|
||||
io_ptr = (png_FILE_p)CVT_PTR((png_ptr->io_ptr));
|
||||
if (io_ptr != NULL)
|
||||
fflush(io_ptr);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -314,11 +333,11 @@ png_default_flush(png_structp png_ptr)
|
||||
than changing the library. */
|
||||
#ifndef USE_FAR_KEYWORD
|
||||
static void
|
||||
png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||
pngtest_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||
{
|
||||
png_uint_32 check;
|
||||
|
||||
check = fwrite(data, 1, length, (FILE *)(png_ptr->io_ptr));
|
||||
WRITEFILE((png_FILE_p)png_ptr->io_ptr, data, 1, check);
|
||||
if (check != length)
|
||||
{
|
||||
png_error(png_ptr, "Write Error");
|
||||
@@ -334,18 +353,18 @@ png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||
#define MIN(a,b) (a <= b ? a : b)
|
||||
|
||||
static void
|
||||
png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||
pngtest_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||
{
|
||||
png_uint_32 check;
|
||||
png_byte *near_data; /* Needs to be "png_byte *" instead of "png_bytep" */
|
||||
FILE *io_ptr;
|
||||
png_FILE_p io_ptr;
|
||||
|
||||
/* Check if data really is near. If so, use usual code. */
|
||||
near_data = (png_byte *)CVT_PTR_NOCHECK(data);
|
||||
io_ptr = (FILE *)CVT_PTR(png_ptr->io_ptr);
|
||||
io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
|
||||
if ((png_bytep)near_data == data)
|
||||
{
|
||||
check = fwrite(near_data, 1, length, io_ptr);
|
||||
WRITEFILE(io_ptr, near_data, 1, check);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -357,7 +376,7 @@ png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||
{
|
||||
written = MIN(NEAR_BUF_SIZE, remaining);
|
||||
png_memcpy(buf, data, written); /* copy far buffer to near buffer */
|
||||
err = fwrite(buf, 1, written, io_ptr);
|
||||
WRITEFILE(io_ptr, written, 1, err);
|
||||
if (err != written)
|
||||
break;
|
||||
else
|
||||
@@ -381,7 +400,7 @@ png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||
* not used, but it is passed in case it may be useful.
|
||||
*/
|
||||
static void
|
||||
png_default_warning(png_structp png_ptr, png_const_charp message)
|
||||
pngtest_warning(png_structp png_ptr, png_const_charp message)
|
||||
{
|
||||
PNG_CONST char *name = "UNKNOWN (ERROR!)";
|
||||
if (png_ptr != NULL && png_ptr->error_ptr != NULL)
|
||||
@@ -395,9 +414,9 @@ png_default_warning(png_structp png_ptr, png_const_charp message)
|
||||
* error function pointer in png_set_error_fn().
|
||||
*/
|
||||
static void
|
||||
png_default_error(png_structp png_ptr, png_const_charp message)
|
||||
pngtest_error(png_structp png_ptr, png_const_charp message)
|
||||
{
|
||||
png_default_warning(png_ptr, message);
|
||||
pngtest_warning(png_ptr, message);
|
||||
/* We can return because png_error calls the default handler, which is
|
||||
* actually OK in this case. */
|
||||
}
|
||||
@@ -417,7 +436,7 @@ png_default_error(png_structp png_ptr, png_const_charp message)
|
||||
by setting MAXSEG_64K in zlib zconf.h *or* PNG_MAX_MALLOC_64K. */
|
||||
typedef struct memory_information
|
||||
{
|
||||
png_uint_32 size;
|
||||
png_uint_32 size;
|
||||
png_voidp pointer;
|
||||
struct memory_information FAR *next;
|
||||
} memory_information;
|
||||
@@ -426,6 +445,8 @@ typedef memory_information FAR *memory_infop;
|
||||
static memory_infop pinformation = NULL;
|
||||
static int current_allocation = 0;
|
||||
static int maximum_allocation = 0;
|
||||
static int total_allocation = 0;
|
||||
static int num_allocations = 0;
|
||||
|
||||
extern PNG_EXPORT(png_voidp,png_debug_malloc) PNGARG((png_structp png_ptr,
|
||||
png_uint_32 size));
|
||||
@@ -448,6 +469,8 @@ png_debug_malloc(png_structp png_ptr, png_uint_32 size)
|
||||
memory_infop pinfo = png_malloc_default(png_ptr, sizeof *pinfo);
|
||||
pinfo->size = size;
|
||||
current_allocation += size;
|
||||
total_allocation += size;
|
||||
num_allocations ++;
|
||||
if (current_allocation > maximum_allocation)
|
||||
maximum_allocation = current_allocation;
|
||||
pinfo->pointer = png_malloc_default(png_ptr, size);
|
||||
@@ -459,7 +482,7 @@ png_debug_malloc(png_structp png_ptr, png_uint_32 size)
|
||||
if(verbose)
|
||||
printf("png_malloc %d bytes at %x\n",size,pinfo->pointer);
|
||||
#endif
|
||||
assert(pinfo->size != 12345);
|
||||
assert(pinfo->size != 12345678);
|
||||
return (png_voidp)(pinfo->pointer);
|
||||
}
|
||||
}
|
||||
@@ -519,7 +542,8 @@ png_debug_free(png_structp png_ptr, png_voidp ptr)
|
||||
int
|
||||
test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
||||
{
|
||||
static FILE *fpin, *fpout; /* "static" prevents setjmp corruption */
|
||||
static png_FILE_p fpin;
|
||||
static png_FILE_p fpout; /* "static" prevents setjmp corruption */
|
||||
png_structp read_ptr, write_ptr;
|
||||
png_infop read_info_ptr, write_info_ptr, end_info_ptr, write_end_info_ptr;
|
||||
png_bytep row_buf;
|
||||
@@ -560,8 +584,8 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
||||
(png_error_ptr)NULL, (png_error_ptr)NULL);
|
||||
#endif
|
||||
#if defined(PNG_NO_STDIO)
|
||||
png_set_error_fn(read_ptr, (png_voidp)inname, png_default_error,
|
||||
png_default_warning);
|
||||
png_set_error_fn(read_ptr, (png_voidp)inname, pngtest_error,
|
||||
pngtest_warning);
|
||||
#endif
|
||||
#ifdef PNG_USER_MEM_SUPPORTED
|
||||
write_ptr = png_create_write_struct_2(PNG_LIBPNG_VER_STRING, (png_voidp)NULL,
|
||||
@@ -572,8 +596,8 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
||||
(png_error_ptr)NULL, (png_error_ptr)NULL);
|
||||
#endif
|
||||
#if defined(PNG_NO_STDIO)
|
||||
png_set_error_fn(write_ptr, (png_voidp)inname, png_default_error,
|
||||
png_default_warning);
|
||||
png_set_error_fn(write_ptr, (png_voidp)inname, pngtest_error,
|
||||
pngtest_warning);
|
||||
#endif
|
||||
png_debug(0, "Allocating read_info, write_info and end_info structures\n");
|
||||
read_info_ptr = png_create_info_struct(read_ptr);
|
||||
@@ -628,10 +652,10 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
||||
png_init_io(read_ptr, fpin);
|
||||
png_init_io(write_ptr, fpout);
|
||||
#else
|
||||
png_set_read_fn(read_ptr, (png_voidp)fpin, png_default_read_data);
|
||||
png_set_write_fn(write_ptr, (png_voidp)fpout, png_default_write_data,
|
||||
png_set_read_fn(read_ptr, (png_voidp)fpin, pngtest_read_data);
|
||||
png_set_write_fn(write_ptr, (png_voidp)fpout, pngtest_write_data,
|
||||
#if defined(PNG_WRITE_FLUSH_SUPPORTED)
|
||||
png_default_flush);
|
||||
pngtest_flush);
|
||||
#else
|
||||
NULL);
|
||||
#endif
|
||||
@@ -1079,8 +1103,8 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
||||
{
|
||||
png_size_t num_in, num_out;
|
||||
|
||||
num_in = fread(inbuf, 1, 1, fpin);
|
||||
num_out = fread(outbuf, 1, 1, fpout);
|
||||
READFILE(fpin, inbuf, 1, num_in);
|
||||
READFILE(fpout, outbuf, 1, num_out);
|
||||
|
||||
if (num_in != num_out)
|
||||
{
|
||||
@@ -1155,7 +1179,7 @@ main(int argc, char *argv[])
|
||||
fprintf(STDERR," library (%lu):%s", png_access_version_number(),
|
||||
png_get_header_version(NULL));
|
||||
/* Show the version of libpng used in building the application */
|
||||
fprintf(STDERR," pngtest (%lu):%s", PNG_LIBPNG_VER,
|
||||
fprintf(STDERR," pngtest (%lu):%s", (unsigned long)PNG_LIBPNG_VER,
|
||||
PNG_HEADER_VERSION_STRING);
|
||||
fprintf(STDERR," sizeof(png_struct)=%d, sizeof(png_info)=%d\n",
|
||||
sizeof(png_struct), sizeof(png_info));
|
||||
@@ -1280,10 +1304,14 @@ main(int argc, char *argv[])
|
||||
#endif
|
||||
}
|
||||
#ifdef PNG_USER_MEM_SUPPORTED
|
||||
fprintf(STDERR, " Current memory allocation: %d bytes\n",
|
||||
fprintf(STDERR, " Current memory allocation: %10d bytes\n",
|
||||
current_allocation);
|
||||
fprintf(STDERR, " Maximum memory allocation: %d bytes\n",
|
||||
fprintf(STDERR, " Maximum memory allocation: %10d bytes\n",
|
||||
maximum_allocation);
|
||||
fprintf(STDERR, " Total memory allocation: %10d bytes\n",
|
||||
total_allocation);
|
||||
fprintf(STDERR, " Number of allocations: %10d\n",
|
||||
num_allocations);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
@@ -1351,10 +1379,14 @@ main(int argc, char *argv[])
|
||||
#endif
|
||||
}
|
||||
#ifdef PNG_USER_MEM_SUPPORTED
|
||||
fprintf(STDERR, " Current memory allocation: %d bytes\n",
|
||||
fprintf(STDERR, " Current memory allocation: %10d bytes\n",
|
||||
current_allocation);
|
||||
fprintf(STDERR, " Maximum memory allocation: %d bytes\n",
|
||||
fprintf(STDERR, " Maximum memory allocation: %10d bytes\n",
|
||||
maximum_allocation);
|
||||
fprintf(STDERR, " Total memory allocation: %10d bytes\n",
|
||||
total_allocation);
|
||||
fprintf(STDERR, " Number of allocations: %10d\n",
|
||||
num_allocations);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1380,4 +1412,4 @@ main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
/* Generate a compiler error if there is an old png.h in the search path. */
|
||||
typedef version_1_0_7beta14 your_png_h_is_not_version_1_0_7beta14;
|
||||
typedef version_1_0_8beta1 your_png_h_is_not_version_1_0_8beta1;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
|
||||
/* pngtrans.c - transforms the data in a row (used by both readers and writers)
|
||||
*
|
||||
* libpng 1.0.7beta14 - May 17, 2000
|
||||
* libpng 1.0.8beta1 - July 8, 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
|
||||
* Copyright (c) 1998, 1999, 2000 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.)
|
||||
*/
|
||||
|
||||
#define PNG_INTERNAL
|
||||
|
||||
10
pngvcrd.c
10
pngvcrd.c
@@ -2,10 +2,10 @@
|
||||
*
|
||||
* For Intel x86 CPU and Microsoft Visual C++ compiler
|
||||
*
|
||||
* libpng 1.0.7beta14 - May 17, 2000
|
||||
* libpng 1.0.8beta1 - July 8, 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
|
||||
* Copyright (c) 1998, Intel Corporation
|
||||
*
|
||||
* Contributed by Nirav Chhatrapati, Intel Corporation, 1998
|
||||
* Interface to libpng contributed by Gilles Vollant, 1999
|
||||
@@ -3671,11 +3671,11 @@ png_read_filter_row(png_structp png_ptr, png_row_infop row_info, png_bytep
|
||||
|
||||
#ifdef PNG_DEBUG
|
||||
png_debug(1, "in png_read_filter_row\n");
|
||||
#if (UseMMX == 1)
|
||||
# if (UseMMX == 1)
|
||||
png_debug1(0,"%s, ", "MMX");
|
||||
#else
|
||||
# else
|
||||
png_debug1(0,"%s, ", "x86");
|
||||
#endif
|
||||
# endif
|
||||
switch (filter)
|
||||
{
|
||||
case 0: sprintf(filnm, "None ");
|
||||
|
||||
23
pngwio.c
23
pngwio.c
@@ -1,11 +1,11 @@
|
||||
|
||||
/* pngwio.c - functions for data output
|
||||
*
|
||||
* libpng 1.0.7beta14 - May 17, 2000
|
||||
* libpng 1.0.8beta1 - July 8, 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
|
||||
* Copyright (c) 1998, 1999, 2000 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.)
|
||||
*
|
||||
* This file provides a location for all output. Users who need
|
||||
* special handling are expected to write functions that have the same
|
||||
@@ -44,7 +44,12 @@ png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||
{
|
||||
png_uint_32 check;
|
||||
|
||||
check = fwrite(data, 1, length, (FILE *)(png_ptr->io_ptr));
|
||||
#if defined(_WIN32_WCE)
|
||||
if ( !WriteFile((HANDLE)(png_ptr->io_ptr), data, length, &check, NULL) )
|
||||
check = -1;
|
||||
#else
|
||||
check = fwrite(data, 1, length, (png_FILE_p)(png_ptr->io_ptr));
|
||||
#endif
|
||||
if (check != length)
|
||||
{
|
||||
png_error(png_ptr, "Write Error");
|
||||
@@ -64,11 +69,11 @@ png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||
{
|
||||
png_uint_32 check;
|
||||
png_byte *near_data; /* Needs to be "png_byte *" instead of "png_bytep" */
|
||||
FILE *io_ptr;
|
||||
png_FILE_p io_ptr;
|
||||
|
||||
/* Check if data really is near. If so, use usual code. */
|
||||
near_data = (png_byte *)CVT_PTR_NOCHECK(data);
|
||||
io_ptr = (FILE *)CVT_PTR(png_ptr->io_ptr);
|
||||
io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
|
||||
if ((png_bytep)near_data == data)
|
||||
{
|
||||
check = fwrite(near_data, 1, length, io_ptr);
|
||||
@@ -117,10 +122,12 @@ png_flush(png_structp png_ptr)
|
||||
static void /* PRIVATE */
|
||||
png_default_flush(png_structp png_ptr)
|
||||
{
|
||||
FILE *io_ptr;
|
||||
io_ptr = (FILE *)CVT_PTR((png_ptr->io_ptr));
|
||||
#if !defined(_WIN32_WCE)
|
||||
png_FILE_p io_ptr;
|
||||
io_ptr = (png_FILE_p)CVT_PTR((png_ptr->io_ptr));
|
||||
if (io_ptr != NULL)
|
||||
fflush(io_ptr);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
11
pngwrite.c
11
pngwrite.c
@@ -1,11 +1,11 @@
|
||||
|
||||
/* pngwrite.c - general routines to write a PNG file
|
||||
*
|
||||
* libpng 1.0.7beta14 - May 17, 2000
|
||||
* libpng 1.0.8beta1 - July 8, 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
|
||||
* Copyright (c) 1998, 1999, 2000 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.)
|
||||
*/
|
||||
|
||||
/* get internal access to png.h */
|
||||
@@ -57,7 +57,7 @@ png_write_info_before_PLTE(png_structp png_ptr, png_infop info_ptr)
|
||||
#endif
|
||||
#if defined(PNG_WRITE_iCCP_SUPPORTED)
|
||||
if (info_ptr->valid & PNG_INFO_iCCP)
|
||||
png_write_iCCP(png_ptr, info_ptr->iccp_name, PNG_TEXT_COMPRESSION_NONE,
|
||||
png_write_iCCP(png_ptr, info_ptr->iccp_name, PNG_TEXT_COMPRESSION_zTXt,
|
||||
info_ptr->iccp_profile, (int)info_ptr->iccp_proflen);
|
||||
#endif
|
||||
#if defined(PNG_WRITE_sBIT_SUPPORTED)
|
||||
@@ -378,6 +378,8 @@ png_write_end(png_structp png_ptr, png_infop info_ptr)
|
||||
}
|
||||
|
||||
#if defined(PNG_WRITE_tIME_SUPPORTED)
|
||||
#if !defined(_WIN32_WCE)
|
||||
/* "time.h" functions are not supported on WindowsCE */
|
||||
void PNGAPI
|
||||
png_convert_from_struct_tm(png_timep ptime, struct tm FAR * ttime)
|
||||
{
|
||||
@@ -400,6 +402,7 @@ png_convert_from_time_t(png_timep ptime, time_t ttime)
|
||||
png_convert_from_struct_tm(ptime, tbuf);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Initialize png_ptr structure, and allocate any memory needed */
|
||||
png_structp PNGAPI
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
|
||||
/* pngwtran.c - transforms the data in a row for PNG writers
|
||||
*
|
||||
* libpng 1.0.7beta14 - May 17, 2000
|
||||
* libpng 1.0.8beta1 - July 8, 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
|
||||
* Copyright (c) 1998, 1999, 2000 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.)
|
||||
*/
|
||||
|
||||
#define PNG_INTERNAL
|
||||
|
||||
172
pngwutil.c
172
pngwutil.c
@@ -1,11 +1,11 @@
|
||||
|
||||
/* pngwutil.c - utilities to write a PNG file
|
||||
*
|
||||
* libpng 1.0.7beta14 - May 17, 2000
|
||||
* libpng 1.0.8beta1 - July 8, 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
|
||||
* Copyright (c) 1998, 1999, 2000 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.)
|
||||
*/
|
||||
|
||||
#define PNG_INTERNAL
|
||||
@@ -172,7 +172,7 @@ png_text_compress(png_structp png_ptr,
|
||||
|
||||
if (compression >= PNG_TEXT_COMPRESSION_LAST)
|
||||
{
|
||||
#if !defined(PNG_NO_STDIO)
|
||||
#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
|
||||
char msg[50];
|
||||
sprintf(msg, "Unknown compression type %d", compression);
|
||||
png_warning(png_ptr, msg);
|
||||
@@ -260,7 +260,49 @@ png_text_compress(png_structp png_ptr,
|
||||
{
|
||||
/* tell zlib we are finished */
|
||||
ret = deflate(&png_ptr->zstream, Z_FINISH);
|
||||
if (ret != Z_OK && ret != Z_STREAM_END)
|
||||
|
||||
if (ret == Z_OK)
|
||||
{
|
||||
/* check to see if we need more room */
|
||||
if (!(png_ptr->zstream.avail_out))
|
||||
{
|
||||
/* check to make sure our output array has room */
|
||||
if (comp->num_output_ptr >= comp->max_output_ptr)
|
||||
{
|
||||
int old_max;
|
||||
|
||||
old_max = comp->max_output_ptr;
|
||||
comp->max_output_ptr = comp->num_output_ptr + 4;
|
||||
if (comp->output_ptr != NULL)
|
||||
{
|
||||
png_charpp old_ptr;
|
||||
|
||||
old_ptr = comp->output_ptr;
|
||||
/* This could be optimized to realloc() */
|
||||
comp->output_ptr = (png_charpp)png_malloc(png_ptr,
|
||||
(png_uint_32)(comp->max_output_ptr * sizeof (png_charpp)));
|
||||
png_memcpy(comp->output_ptr, old_ptr,
|
||||
old_max * sizeof (png_charp));
|
||||
png_free(png_ptr, old_ptr);
|
||||
}
|
||||
else
|
||||
comp->output_ptr = (png_charpp)png_malloc(png_ptr,
|
||||
(png_uint_32)(comp->max_output_ptr * sizeof (png_charp)));
|
||||
}
|
||||
|
||||
/* save off the data */
|
||||
comp->output_ptr[comp->num_output_ptr] =
|
||||
(png_charp)png_malloc(png_ptr, (png_uint_32)png_ptr->zbuf_size);
|
||||
png_memcpy(comp->output_ptr[comp->num_output_ptr], png_ptr->zbuf,
|
||||
png_ptr->zbuf_size);
|
||||
comp->num_output_ptr++;
|
||||
|
||||
/* and reset the buffer pointers */
|
||||
png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
|
||||
png_ptr->zstream.next_out = png_ptr->zbuf;
|
||||
}
|
||||
}
|
||||
else if (ret != Z_STREAM_END)
|
||||
{
|
||||
/* we got an error */
|
||||
if (png_ptr->zstream.msg != NULL)
|
||||
@@ -268,45 +310,6 @@ png_text_compress(png_structp png_ptr,
|
||||
else
|
||||
png_error(png_ptr, "zlib error");
|
||||
}
|
||||
|
||||
/* check to see if we need more room */
|
||||
if (!(png_ptr->zstream.avail_out) && ret == Z_OK)
|
||||
{
|
||||
/* check to make sure our output array has room */
|
||||
if (comp->num_output_ptr >= comp->max_output_ptr)
|
||||
{
|
||||
int old_max;
|
||||
|
||||
old_max = comp->max_output_ptr;
|
||||
comp->max_output_ptr = comp->num_output_ptr + 4;
|
||||
if (comp->output_ptr != NULL)
|
||||
{
|
||||
png_charpp old_ptr;
|
||||
|
||||
old_ptr = comp->output_ptr;
|
||||
/* This could be optimized to realloc() */
|
||||
comp->output_ptr = (png_charpp)png_malloc(png_ptr,
|
||||
(png_uint_32)(comp->max_output_ptr * sizeof (png_charpp)));
|
||||
png_memcpy(comp->output_ptr, old_ptr,
|
||||
old_max * sizeof (png_charp));
|
||||
png_free(png_ptr, old_ptr);
|
||||
}
|
||||
else
|
||||
comp->output_ptr = (png_charpp)png_malloc(png_ptr,
|
||||
(png_uint_32)(comp->max_output_ptr * sizeof (png_charp)));
|
||||
}
|
||||
|
||||
/* save off the data */
|
||||
comp->output_ptr[comp->num_output_ptr] = (png_charp)png_malloc(png_ptr,
|
||||
(png_uint_32)png_ptr->zbuf_size);
|
||||
png_memcpy(comp->output_ptr[comp->num_output_ptr], png_ptr->zbuf,
|
||||
png_ptr->zbuf_size);
|
||||
comp->num_output_ptr++;
|
||||
|
||||
/* and reset the buffer pointers */
|
||||
png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
|
||||
png_ptr->zstream.next_out = png_ptr->zbuf;
|
||||
}
|
||||
} while (ret != Z_STREAM_END);
|
||||
|
||||
/* text length is number of buffers plus last buffer */
|
||||
@@ -529,6 +532,7 @@ png_write_PLTE(png_structp png_ptr, png_colorp palette, png_uint_32 num_pal)
|
||||
png_debug1(3, "num_palette = %d\n", png_ptr->num_palette);
|
||||
|
||||
png_write_chunk_start(png_ptr, (png_bytep)png_PLTE, num_pal * 3);
|
||||
#ifndef PNG_NO_POINTER_INDEXING
|
||||
for (i = 0, pal_ptr = palette; i < num_pal; i++, pal_ptr++)
|
||||
{
|
||||
buf[0] = pal_ptr->red;
|
||||
@@ -536,6 +540,17 @@ png_write_PLTE(png_structp png_ptr, png_colorp palette, png_uint_32 num_pal)
|
||||
buf[2] = pal_ptr->blue;
|
||||
png_write_chunk_data(png_ptr, buf, (png_size_t)3);
|
||||
}
|
||||
#else
|
||||
/* This is a little slower but some buggy compilers need to do this instead */
|
||||
pal_ptr=palette;
|
||||
for (i = 0; i < num_pal; i++)
|
||||
{
|
||||
buf[0] = pal_ptr[i].red;
|
||||
buf[1] = pal_ptr[i].green;
|
||||
buf[2] = pal_ptr[i].blue;
|
||||
png_write_chunk_data(png_ptr, buf, (png_size_t)3);
|
||||
}
|
||||
#endif
|
||||
png_write_chunk_end(png_ptr);
|
||||
png_ptr->mode |= PNG_HAVE_PLTE;
|
||||
}
|
||||
@@ -643,7 +658,7 @@ png_write_iCCP(png_structp png_ptr, png_charp name, int compression_type,
|
||||
if (compression_type)
|
||||
png_warning(png_ptr, "Unknown compression type in iCCP chunk");
|
||||
|
||||
if (profile == NULL || *profile == '\0')
|
||||
if (profile == NULL)
|
||||
profile_len = 0;
|
||||
|
||||
if (profile_len)
|
||||
@@ -677,6 +692,9 @@ png_write_sPLT(png_structp png_ptr, png_sPLT_tp spalette)
|
||||
int entry_size = (spalette->depth == 8 ? 6 : 10);
|
||||
int palette_size = entry_size * spalette->nentries;
|
||||
png_sPLT_entryp ep;
|
||||
#ifdef PNG_NO_POINTER_INDEXING
|
||||
int i;
|
||||
#endif
|
||||
|
||||
png_debug(1, "in png_write_sPLT\n");
|
||||
if (spalette->name == NULL || (name_len = png_check_keyword(png_ptr,
|
||||
@@ -693,6 +711,7 @@ png_write_sPLT(png_structp png_ptr, png_sPLT_tp spalette)
|
||||
png_write_chunk_data(png_ptr, (png_bytep)&spalette->depth, 1);
|
||||
|
||||
/* loop through each palette entry, writing appropriately */
|
||||
#ifndef PNG_NO_POINTER_INDEXING
|
||||
for (ep = spalette->entries; ep<spalette->entries+spalette->nentries; ep++)
|
||||
{
|
||||
if (spalette->depth == 8)
|
||||
@@ -713,6 +732,29 @@ png_write_sPLT(png_structp png_ptr, png_sPLT_tp spalette)
|
||||
}
|
||||
png_write_chunk_data(png_ptr, entrybuf, entry_size);
|
||||
}
|
||||
#else
|
||||
ep=spalette->entries;
|
||||
for (i=0; i>spalette->nentries; i++)
|
||||
{
|
||||
if (spalette->depth == 8)
|
||||
{
|
||||
entrybuf[0] = (png_byte)ep[i].red;
|
||||
entrybuf[1] = (png_byte)ep[i].green;
|
||||
entrybuf[2] = (png_byte)ep[i].blue;
|
||||
entrybuf[3] = (png_byte)ep[i].alpha;
|
||||
png_save_uint_16(entrybuf + 4, ep[i].frequency);
|
||||
}
|
||||
else
|
||||
{
|
||||
png_save_uint_16(entrybuf + 0, ep[i].red);
|
||||
png_save_uint_16(entrybuf + 2, ep[i].green);
|
||||
png_save_uint_16(entrybuf + 4, ep[i].blue);
|
||||
png_save_uint_16(entrybuf + 6, ep[i].alpha);
|
||||
png_save_uint_16(entrybuf + 8, ep[i].frequency);
|
||||
}
|
||||
png_write_chunk_data(png_ptr, entrybuf, entry_size);
|
||||
}
|
||||
#endif
|
||||
|
||||
png_write_chunk_end(png_ptr);
|
||||
png_free(png_ptr, new_name);
|
||||
@@ -795,8 +837,8 @@ png_write_cHRM(png_structp png_ptr, double white_x, double white_y,
|
||||
white_x + white_y > 1.0)
|
||||
{
|
||||
png_warning(png_ptr, "Invalid cHRM white point specified");
|
||||
#if !defined(PNG_NO_STDIO)
|
||||
printf("white_x=%f, white_y=%f\n",white_x, white_y);
|
||||
#if !defined(PNG_NO_CONSOLE_IO)
|
||||
fprintf(stderr,"white_x=%f, white_y=%f\n",white_x, white_y);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
@@ -858,8 +900,8 @@ png_write_cHRM_fixed(png_structp png_ptr, png_fixed_point white_x,
|
||||
if (white_x > 80000L || white_y > 80000L || white_x + white_y > 100000L)
|
||||
{
|
||||
png_warning(png_ptr, "Invalid fixed cHRM white point specified");
|
||||
#if !defined(PNG_NO_STDIO)
|
||||
printf("white_x=%ld, white_y=%ld\n",white_x, white_y);
|
||||
#if !defined(PNG_NO_CONSOLE_IO)
|
||||
fprintf(stderr,"white_x=%ld, white_y=%ld\n",white_x, white_y);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
@@ -1046,7 +1088,7 @@ png_check_keyword(png_structp png_ptr, png_charp key, png_charpp new_key)
|
||||
{
|
||||
if (*kp < 0x20 || (*kp > 0x7E && (png_byte)*kp < 0xA1))
|
||||
{
|
||||
#if !defined(PNG_NO_STDIO)
|
||||
#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
|
||||
char msg[40];
|
||||
|
||||
sprintf(msg, "invalid keyword character 0x%02X", *kp);
|
||||
@@ -1399,8 +1441,19 @@ png_write_sCAL(png_structp png_ptr, int unit, double width,double height)
|
||||
|
||||
png_debug(1, "in png_write_sCAL\n");
|
||||
|
||||
#if defined(_WIN32_WCE)
|
||||
/* sprintf() function is not supported on WindowsCE */
|
||||
{
|
||||
wchar_t wc_buf[32];
|
||||
swprintf(wc_buf, TEXT("%12.12e"), width);
|
||||
WideCharToMultiByte(CP_ACP, 0, wc_buf, -1, wbuf, 32, NULL, NULL);
|
||||
swprintf(wc_buf, TEXT("%12.12e"), height);
|
||||
WideCharToMultiByte(CP_ACP, 0, wc_buf, -1, hbuf, 32, NULL, NULL);
|
||||
}
|
||||
#else
|
||||
sprintf(wbuf, "%12.12e", width);
|
||||
sprintf(hbuf, "%12.12e", height);
|
||||
#endif
|
||||
total_len = 1 + png_strlen(wbuf)+1 + png_strlen(hbuf);
|
||||
|
||||
png_debug1(3, "sCAL total length = %d\n", total_len);
|
||||
@@ -1672,20 +1725,23 @@ png_write_finish_row(png_structp png_ptr)
|
||||
/* tell the compressor we are done */
|
||||
ret = deflate(&png_ptr->zstream, Z_FINISH);
|
||||
/* check for an error */
|
||||
if (ret != Z_OK && ret != Z_STREAM_END)
|
||||
if (ret == Z_OK)
|
||||
{
|
||||
/* check to see if we need more room */
|
||||
if (!(png_ptr->zstream.avail_out))
|
||||
{
|
||||
png_write_IDAT(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size);
|
||||
png_ptr->zstream.next_out = png_ptr->zbuf;
|
||||
png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
|
||||
}
|
||||
}
|
||||
else if (ret != Z_STREAM_END)
|
||||
{
|
||||
if (png_ptr->zstream.msg != NULL)
|
||||
png_error(png_ptr, png_ptr->zstream.msg);
|
||||
else
|
||||
png_error(png_ptr, "zlib error");
|
||||
}
|
||||
/* check to see if we need more room */
|
||||
if (!(png_ptr->zstream.avail_out) && ret == Z_OK)
|
||||
{
|
||||
png_write_IDAT(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size);
|
||||
png_ptr->zstream.next_out = png_ptr->zbuf;
|
||||
png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
|
||||
}
|
||||
} while (ret != Z_STREAM_END);
|
||||
|
||||
/* write any extra space */
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// Project file for libpng (static)
|
||||
// IBM VisualAge/C++ version 4.0 or later
|
||||
// Copyright (C) 2000 Cosmin Truta
|
||||
// For conditions of distribution and use, see copyright notice in png.h
|
||||
// Notes:
|
||||
// All modules are compiled in C mode
|
||||
// Tested with IBM VAC++ 4.0 under Win32
|
||||
|
||||
@@ -1,14 +1,20 @@
|
||||
# Commodore Amiga Makefile
|
||||
# makefile for libpng and SAS C V6.55 compiler
|
||||
# Copyright (C) 1995 Wolf Faust
|
||||
|
||||
# makefile for libpng and SAS C V6.5x compiler
|
||||
# Copyright (C) 1995-2000 Wolf Faust
|
||||
# For conditions of distribution and use, see copyright notice in png.h
|
||||
#
|
||||
# Note: Use #define PNG_READ_BIG_ENDIAN_SUPPORTED in pngconf.h
|
||||
#
|
||||
# Location/path of zlib include files
|
||||
ZLIB=/zlib
|
||||
#compiler
|
||||
CC=sc
|
||||
#compiler flags
|
||||
# WARNING: a bug in V6.51 causes bad code with OPTGO
|
||||
# So use V6.55 or set NOOPTGO!!!!!!!!!
|
||||
CFLAGS= NOSTKCHK PARMS=REG OPTIMIZE OPTGO OPTPEEP OPTINLOCAL OPTINL\
|
||||
OPTLOOP OPTRDEP=4 OPTDEP=4 OPTCOMP=4 DEFINE=PNG_INTERNAL
|
||||
OPTLOOP OPTRDEP=4 OPTDEP=4 OPTCOMP=4 INCLUDEDIR=$(ZLIB) \
|
||||
DEFINE=PNG_INTERNAL
|
||||
#linker flags
|
||||
LDFLAGS= SD ND BATCH
|
||||
#link libs
|
||||
@@ -22,8 +28,9 @@ AR= oml
|
||||
# make directory command
|
||||
MKDIR= makedir
|
||||
|
||||
OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o pngpread.o \
|
||||
pngread.o pngerror.o pngwrite.o pngrtran.o pngwtran.o pngrio.o pngwio.o pngmem.o
|
||||
OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \
|
||||
pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
|
||||
pngwtran.o pngmem.o pngerror.o pngpread.o
|
||||
|
||||
all: libpng.lib pngtest
|
||||
|
||||
@@ -39,4 +46,3 @@ FROM LIB:c.o pngtest.o
|
||||
LIB $(LDLIBS)
|
||||
<
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# To build the library, do:
|
||||
# "make -fmakefile.bc32"
|
||||
#
|
||||
# ---------- 32-bit Borland C++ ----------
|
||||
# -------------------- 32-bit Borland C++ --------------------
|
||||
|
||||
### Absolutely necessary for this makefile to work
|
||||
.AUTODEPEND
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Makefile for png32bd.dll
|
||||
# ------------- 32-bit Borland C++ -------------
|
||||
# -------------------- 32-bit Borland C++ --------------------
|
||||
|
||||
# This makefile expects to find zlib.h and zlib32bd.lib in the
|
||||
# $(ZLIBDIR) directory.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# makefile for libpng on BeOS x86 ELF with gcc
|
||||
# modified from makefile.linux by Sander Stoks
|
||||
# Copyright (C) 1996, 1997 Andreas Dilger
|
||||
# Copyright (C) 1999 Greg Roelofs
|
||||
# Copyright (C) 1996, 1997 Andreas Dilger
|
||||
# For conditions of distribution and use, see copyright notice in png.h
|
||||
|
||||
CC=gcc
|
||||
@@ -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.7beta14
|
||||
PNGMIN = 1.0.8beta1
|
||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||
|
||||
# where make install puts libpng.a, libpng.so*, and png.h
|
||||
|
||||
@@ -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.7beta14
|
||||
PNGMIN = 1.0.8beta1
|
||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||
|
||||
CC=cc
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# makefile for libpng using gcc (generic, static library)
|
||||
# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
|
||||
# Copyright (C) 2000 Cosmin Truta
|
||||
# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
|
||||
# For conditions of distribution and use, see copyright notice in png.h
|
||||
|
||||
# Location of the zlib library and include files
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# makefile for libpng on Linux ELF with gcc using MMX assembler code
|
||||
# Copyright (C) 1996, 1997 Andreas Dilger
|
||||
# Copyright (C) 1998-2000 Greg Roelofs
|
||||
# Copyright 1996-1997 Andreas Dilger
|
||||
# Copyright 1998-2000 Greg Roelofs
|
||||
# For conditions of distribution and use, see copyright notice in png.h
|
||||
|
||||
CC=gcc
|
||||
@@ -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.7beta14
|
||||
PNGMIN = 1.0.8beta1
|
||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||
|
||||
INCPATH=$(prefix)/include
|
||||
@@ -53,14 +53,14 @@ OBJSDLL = $(OBJS:.o=.pic.o)
|
||||
|
||||
all: libpng.a libpng.so pngtest
|
||||
|
||||
pnggccrd.o: png.h pngconf.h pngasmrd.h
|
||||
pnggccrd.o: pnggccrd.c png.h pngconf.h pngasmrd.h
|
||||
@echo ""
|
||||
@echo ' You can ignore the single "control reaches end of non-void function"'
|
||||
@echo ' warning and multiple "<variable> defined but not used" warnings:'
|
||||
@echo ""
|
||||
$(CC) -c $(CFLAGS) -o $@ $*.c
|
||||
|
||||
pnggccrd.pic.o: png.h pngconf.h pngasmrd.h
|
||||
pnggccrd.pic.o: pnggccrd.c png.h pngconf.h pngasmrd.h
|
||||
@echo ""
|
||||
@echo ' You can ignore the single "control reaches end of non-void function"'
|
||||
@echo ' warning and multiple "<variable> defined but not used" warnings:'
|
||||
@@ -105,22 +105,20 @@ DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
|
||||
writelock:
|
||||
chmod a-w *.[ch35] $(DOCS) scripts/*
|
||||
|
||||
# DO NOT DELETE THIS LINE -- make depend depends on it.
|
||||
png.o png.pic.o: png.h pngconf.h png.c pngasmrd.h
|
||||
pngerror.o pngerror.pic.o: png.h pngconf.h pngerror.c
|
||||
pngrio.o pngrio.pic.o: png.h pngconf.h pngrio.c
|
||||
pngwio.o pngwio.pic.o: png.h pngconf.h pngwio.c
|
||||
pngmem.o pngmem.pic.o: png.h pngconf.h pngmem.c
|
||||
pngset.o pngset.pic.o: png.h pngconf.h pngset.c
|
||||
pngget.o pngget.pic.o: png.h pngconf.h pngget.c
|
||||
pngread.o pngread.pic.o: png.h pngconf.h pngread.c
|
||||
pngrtran.o pngrtran.pic.o: png.h pngconf.h pngrtran.c
|
||||
pngrutil.o pngrutil.pic.o: png.h pngconf.h pngrutil.c pngasmrd.h
|
||||
pngtrans.o pngtrans.pic.o: png.h pngconf.h pngtrans.c
|
||||
pngwrite.o pngwrite.pic.o: png.h pngconf.h pngwrite.c
|
||||
pngwtran.o pngwtran.pic.o: png.h pngconf.h pngwtran.c
|
||||
pngwutil.o pngwutil.pic.o: png.h pngconf.h pngwutil.c
|
||||
pngpread.o pngpread.pic.o: png.h pngconf.h pngpread.c
|
||||
|
||||
png.o png.pic.o: png.h pngconf.h
|
||||
pngerror.o pngerror.pic.o: png.h pngconf.h
|
||||
pngrio.o pngrio.pic.o: png.h pngconf.h
|
||||
pngwio.o pngwio.pic.o: png.h pngconf.h
|
||||
pngmem.o pngmem.pic.o: png.h pngconf.h
|
||||
pngset.o pngset.pic.o: png.h pngconf.h
|
||||
pngget.o pngget.pic.o: png.h pngconf.h
|
||||
pngread.o pngread.pic.o: png.h pngconf.h
|
||||
pngrtran.o pngrtran.pic.o: png.h pngconf.h
|
||||
pngrutil.o pngrutil.pic.o: png.h pngconf.h
|
||||
pngtrans.o pngtrans.pic.o: png.h pngconf.h
|
||||
pngwrite.o pngwrite.pic.o: png.h pngconf.h
|
||||
pngwtran.o pngwtran.pic.o: png.h pngconf.h
|
||||
pngwutil.o pngwutil.pic.o: png.h pngconf.h
|
||||
pngpread.o pngpread.pic.o: png.h pngconf.h
|
||||
|
||||
pngtest.o: png.h pngconf.h
|
||||
pngtest.o: png.h pngconf.h pngtest.c
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# makefile for libpng, HPUX (10.20 and 11.00)
|
||||
# Copyright (C) 1995 Guy Eric Schalnat, Group 42
|
||||
# Copyright (C) 1999 Glenn Randers-Pehrson
|
||||
# Copyright (C) 1995 Guy Eric Schalnat, Group 42
|
||||
# contributed by Jim Rice, Hewlett Packard
|
||||
# For conditions of distribution and use, see copyright notice in png.h
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# Makefile for libpng (static)
|
||||
# IBM C version 3.x for Win32 and OS/2
|
||||
# Copyright (C) 2000 Cosmin Truta
|
||||
# For conditions of distribution and use, see copyright notice in png.h
|
||||
# Notes:
|
||||
# Derived from makefile.std
|
||||
# All modules are compiled in C mode
|
||||
# Tested with IBM C 3.6.5 under Win32, expected to work under OS/2 too
|
||||
# Can be easily adapted for IBM VisualAge/C++ for AIX
|
||||
# For conditions of distribution and use, see copyright notice in png.h
|
||||
|
||||
# Location of the zlib library and include files
|
||||
ZLIBINC = ../zlib
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# makefile for libpng on Linux ELF with gcc
|
||||
# Copyright (C) 1996, 1997 Andreas Dilger
|
||||
# Copyright (C) 1998, 1999 Greg Roelofs
|
||||
# Copyright (C) 1996, 1997 Andreas Dilger
|
||||
# For conditions of distribution and use, see copyright notice in png.h
|
||||
|
||||
CC=gcc
|
||||
@@ -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.7beta14
|
||||
PNGMIN = 1.0.8beta1
|
||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||
|
||||
INCPATH=$(prefix)/include
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# For conditions of distribution and use, see copyright notice in png.h
|
||||
# Assumes that zlib.lib, zconf.h, and zlib.h have been copied to ..\zlib
|
||||
|
||||
# -------- Microsoft C 5.1 and later, does not use assembler code -----
|
||||
# -------- Microsoft C 5.1 and later, does not use assembler code --------
|
||||
MODEL=L
|
||||
CFLAGS=-Oait -Gs -nologo -W3 -A$(MODEL) -I..\zlib
|
||||
#-Ox generates bad code with MSC 5.1
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# makefile for SCO OSr5 ELF and Unixware 7 with Native cc
|
||||
# Contributed by Mike Hopkirk (hops@sco.com) modified from Makefile.lnx
|
||||
# force ELF build dynamic linking, SONAME setting in lib and RPATH in app
|
||||
# Copyright (C) 1996, 1997 Andreas Dilger
|
||||
# Copyright (C) 1998 Greg Roelofs
|
||||
# Copyright (C) 1996, 1997 Andreas Dilger
|
||||
# For conditions of distribution and use, see copyright notice in png.h
|
||||
|
||||
CC=cc
|
||||
@@ -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.7beta14
|
||||
PNGMIN = 1.0.8beta1
|
||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||
|
||||
INCPATH=$(prefix)/include
|
||||
|
||||
@@ -19,8 +19,8 @@ CFLAGS=-I$(ZLIBINC) -O2 $(WARNMORE) -fPIC -mabi=n32 # -g -DPNG_DEBUG=5
|
||||
LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm
|
||||
LDSHARED=gcc -shared
|
||||
|
||||
VER=1.0.7beta14
|
||||
LIBS=libpng.so.1.0.7beta14
|
||||
VER=1.0.8beta1
|
||||
LIBS=libpng.so.1.0.8beta1
|
||||
SHAREDLIB=libpng.so
|
||||
libdir=$(prefix)/lib32
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# makefile for libpng on Solaris 2.x with gcc
|
||||
# Contributed by William L. Sebok, based on makefile.linux
|
||||
# Copyright (C) 1996, 1997 Andreas Dilger
|
||||
# Copyright (C) 1998 Greg Roelofs
|
||||
# Copyright (C) 1996, 1997 Andreas Dilger
|
||||
# For conditions of distribution and use, see copyright notice in png.h
|
||||
|
||||
CC=gcc
|
||||
@@ -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.7beta14
|
||||
PNGMIN = 1.0.8beta1
|
||||
PNGVER = $(PNGMAJ).$(PNGMIN)
|
||||
|
||||
INCPATH=$(prefix)/include
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
# To use, do "make -fmakefile.tc3"
|
||||
|
||||
# ------ Turbo C 3.00 (can be modified to work with earlier versions)------
|
||||
# ----- Turbo C 3.00 (can be modified to work with earlier versions) -----
|
||||
|
||||
MODEL=l
|
||||
CFLAGS=-O2 -Z -m$(MODEL) -I..\zlib
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# Assumes that zlib.lib, zconf.h, and zlib.h have been copied to ..\zlib
|
||||
# To use, do "nmake /f scripts\makefile.vcawin32"
|
||||
|
||||
# ---------- Microsoft Visual C++ 5.0 and later, uses assembler code------
|
||||
# -------- Microsoft Visual C++ 5.0 and later, uses assembler code --------
|
||||
|
||||
# Caution: the assembler code was introduced at libpng version 1.0.4 and has
|
||||
# not yet been thoroughly tested.
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# Assumes that zlib.lib, zconf.h, and zlib.h have been copied to ..\zlib
|
||||
# To use, do "nmake /f scripts\makefile.vcwin32"
|
||||
|
||||
# ---------- Microsoft Visual C++ 4.0 and later, no assembler code------
|
||||
# -------- Microsoft Visual C++ 4.0 and later, no assembler code --------
|
||||
# If you want to use assembler code, use makefile.vcawin32 instead.
|
||||
|
||||
CFLAGS= -Ox -GA3s -nologo -W3 -I..\zlib
|
||||
|
||||
@@ -5,8 +5,8 @@ unit pngdef;
|
||||
interface
|
||||
|
||||
const
|
||||
PNG_LIBPNG_VER_STRING = '1.0.7beta14';
|
||||
PNG_LIBPNG_VER = 10007;
|
||||
PNG_LIBPNG_VER_STRING = '1.0.8beta1';
|
||||
PNG_LIBPNG_VER = 10008;
|
||||
|
||||
type
|
||||
png_uint_32 = Cardinal;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;----------------------------------------
|
||||
; PNGLIB module definition file for OS/2
|
||||
; PNG.LIB module definition file for OS/2
|
||||
;----------------------------------------
|
||||
|
||||
; Caution: This file is probably out of date.
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Amiga powerUP (TM) Makefile
|
||||
# makefile for libpng and SAS C V6.58/7.00 PPC compiler
|
||||
# Copyright (C) 1998 by Andreas R. Kleinert
|
||||
# For conditions of distribution and use, see copyright notice in png.h
|
||||
|
||||
CC = scppc
|
||||
CFLAGS = NOSTKCHK NOSINT OPTIMIZE OPTGO OPTPEEP OPTINLOCAL OPTINL IDIR /zlib \
|
||||
|
||||
43
wince/READMEE.WCE
Normal file
43
wince/READMEE.WCE
Normal file
@@ -0,0 +1,43 @@
|
||||
libpng for WindowsCE Rel.1.0
|
||||
============================
|
||||
Copyright (c) 2000 Glenn Randers-Pehrson
|
||||
Copyright (c) 2000 Tenik Co.,Ltd.
|
||||
|
||||
Porting for WindowsCE by Tenik Co.,Ltd.(Kazuo Adachi)
|
||||
|
||||
|
||||
Introduction
|
||||
============
|
||||
This is libpng 1.0.7 ported to WindowsCE 2.0 and 2.11.
|
||||
libpng 1.0.7 is a PNG reference library.
|
||||
See README, a document of original libpng 1.0.7.
|
||||
|
||||
zlib for WindowsCE
|
||||
==================
|
||||
This library requires zlib for WindowsCE. You can use the supplied
|
||||
zlib.diff and zlibce.def files to add WindowsCE support to libpng-1.1.3.
|
||||
|
||||
Copyright notice
|
||||
================
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
See README and LICENSE, documents of original libpng 1.0.7, for conditions
|
||||
of use and distribution.
|
||||
|
||||
Files
|
||||
=====
|
||||
|
||||
READMEE.WCE - this file(in English)
|
||||
READMEJ.WCE - this file(in Japanese)
|
||||
png32ce.def - module definition file to make DLLs
|
||||
|
||||
Sample programs(../pngtest.c and ../contrib/*) can build on WindowsCE 2.11.
|
||||
WindowsCE 2.0 and below do not support 'console' functions.
|
||||
|
||||
Author
|
||||
======
|
||||
Tenik Co.,Ltd.
|
||||
Kazuo Adachi
|
||||
adachi@tenik.co.jp
|
||||
44
wince/READMEJ.WCE
Normal file
44
wince/READMEJ.WCE
Normal file
@@ -0,0 +1,44 @@
|
||||
libpng for WindowsCE Rel.1.0
|
||||
============================
|
||||
Copyright (c) 2000 Glenn Randers-Pehrson
|
||||
Copyright (c) 2000 Tenik Co.,Ltd.
|
||||
|
||||
Porting for WindowsCE by Tenik Co.,Ltd.(Kazuo Adachi)
|
||||
|
||||
|
||||
<EFBFBD>͂<EFBFBD><EFBFBD>߂<EFBFBD>
|
||||
========
|
||||
libpng for WindowsCE<43><45> PNG<4E>`<60><><EFBFBD>̉摜<CC89>f<EFBFBD>[<5B>^<5E><><EFBFBD>C<EFBFBD>u<EFBFBD><75><EFBFBD><EFBFBD> libpng<6E><67>WindowsCE
|
||||
<EFBFBD>łł<EFBFBD><EFBFBD>Blibpng<EFBFBD>ɂ<EFBFBD><EFBFBD>Ă̏ڂ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>́A<EFBFBD>t<EFBFBD><EFBFBD><EFBFBD><EFBFBD> README <20><><EFBFBD><EFBFBD><EFBFBD>ǂ݂<C782><DD82><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
|
||||
|
||||
zlib for WindowsCE
|
||||
==================
|
||||
libpng<EFBFBD>ł́A<EFBFBD>f<EFBFBD>[<5B>^<5E><><EFBFBD>k<EFBFBD><6B><EFBFBD>C<EFBFBD>u<EFBFBD><75><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682><EFBFBD> zlib<69><62><EFBFBD>g<EFBFBD>p<EFBFBD><70><EFBFBD>Ă<EFBFBD><C482>܂<EFBFBD><DC82>Blibpng<6E><67>
|
||||
<EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>邽<EFBFBD>߂ɂ́A<EFBFBD>ʓr zlib<69><62><EFBFBD>p<EFBFBD>ӂ<EFBFBD><D382><EFBFBD><EFBFBD>K<EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82>B
|
||||
|
||||
<EFBFBD>Ȃ<EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD>̃p<EFBFBD>b<EFBFBD>P<EFBFBD>[<5B>W<EFBFBD>ŗ<EFBFBD><C597>p<EFBFBD>ł<EFBFBD><C582><EFBFBD> zlib<69>͎<EFBFBD><CD8E>̍쐬<CC8D><EC90AC><EFBFBD><EFBFBD> zlibce.dll<6C>ł<EFBFBD><C582>B
|
||||
|
||||
<EFBFBD>g<EFBFBD>p<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
========
|
||||
<EFBFBD><EFBFBD><EFBFBD>̃\<5C>t<EFBFBD>g<EFBFBD>E<EFBFBD>F<EFBFBD>A<EFBFBD>͖<EFBFBD><CD96>ۏł<D882><C582>B<EFBFBD><42><EFBFBD>̃\<5C>t<EFBFBD>g<EFBFBD>E<EFBFBD>F<EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŗ<EFBFBD><C597>p<EFBFBD>҂<EFBFBD><D282><EFBFBD><EFBFBD>邱<EFBFBD><E982B1>
|
||||
<EFBFBD>ɂȂ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Q<EFBFBD>ɂ<EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD>ҁA<EFBFBD>z<EFBFBD>z<EFBFBD>ҁA<EFBFBD><EFBFBD><EFBFBD>̑<EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>҈ȊO<EFBFBD>̐l<EFBFBD><EFBFBD><EFBFBD>A
|
||||
<EFBFBD>c<EFBFBD>̂ɐӔC<EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><EFBFBD>`<60><><EFBFBD>͂Ȃ<CD82><C882><EFBFBD><EFBFBD>̂Ƃ<CC82><C682>܂<EFBFBD><DC82>B
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD>̑<EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD>̃\<5C>t<EFBFBD>g<EFBFBD>E<EFBFBD>F<EFBFBD>A<EFBFBD>̗<EFBFBD><CC97>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD>ɂ<C982><C282>ẮA<CD81><41><EFBFBD>łł<C582><C582><EFBFBD> libpng 1.0.7<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂Ƃ<EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD>B<EFBFBD>ڂ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>́A<EFBFBD>t<EFBFBD><EFBFBD><EFBFBD><EFBFBD> README,LICENSE <20><><EFBFBD><EFBFBD><EFBFBD>ǂ݂<C782><DD82><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD>^<5E><><EFBFBD>e
|
||||
========
|
||||
|
||||
READMEJ.WCE - <20><><EFBFBD>̃t<CC83>@<40>C<EFBFBD><43>
|
||||
READMEE.WCE - <20><><EFBFBD>̃t<CC83>@<40>C<EFBFBD><43>(<28>p<EFBFBD><70>)
|
||||
png32ce.def - DLL<4C>쐬<EFBFBD>p <20><><EFBFBD>`<60>t<EFBFBD>@<40>C<EFBFBD><43>
|
||||
|
||||
<EFBFBD>t<EFBFBD><EFBFBD><EFBFBD>T<EFBFBD><EFBFBD><EFBFBD>v<EFBFBD><EFBFBD><EFBFBD>E<EFBFBD>v<EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>́A<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD>Z<EFBFBD>[<5B>W<EFBFBD>o<EFBFBD>͂̓s<CC93><73><EFBFBD><EFBFBD><EFBFBD>AWindowsCE 2.11<EFBFBD>ȍ~
|
||||
<EFBFBD>ł̂ݎg<EFBFBD>p<EFBFBD>\<5C>ł<EFBFBD><C582>B
|
||||
|
||||
<EFBFBD>z<EFBFBD>z<EFBFBD><EFBFBD>
|
||||
======
|
||||
<EFBFBD>e<EFBFBD>j<EFBFBD>b<EFBFBD>N<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>J<EFBFBD><4A><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>a<EFBFBD>Y
|
||||
adachi@tenik.co.jp
|
||||
39
wince/READMEZE.WCE
Normal file
39
wince/READMEZE.WCE
Normal file
@@ -0,0 +1,39 @@
|
||||
zlib for WindowsCE Rel.1.0
|
||||
==========================
|
||||
(C) 1995-1998 Jean-loup Gailly and Mark Adler
|
||||
(C) 2000 Tenik Co.,Ltd.
|
||||
|
||||
Porting for WindowsCE by Tenik Co.,Ltd.(Kazuo Adachi)
|
||||
|
||||
|
||||
Introduction
|
||||
============
|
||||
This is zlib 1.1.3 ported to WindowsCE 2.0 and 2.11.
|
||||
zlib 1.1.3 is a general purpose data compression library.
|
||||
See README, a document of original zlib 1.1.3.
|
||||
|
||||
Copyright notice
|
||||
================
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
See README, a document of original zlib 1.1.3, for conditions of use and
|
||||
distribution.
|
||||
|
||||
Files
|
||||
=====
|
||||
|
||||
READMEE.WCE - this file(in English)
|
||||
READMEJ.WCE - this file(in Japanese)
|
||||
zlibce.def - module definition file to make DLLs
|
||||
zlibce.diff - patch file for source code
|
||||
|
||||
Sample programs(minigzip.c and example.c) can build on WindowsCE 2.11.
|
||||
WindowsCE 2.0 and below is not support 'console' functions.
|
||||
|
||||
Author
|
||||
======
|
||||
Tenik Co.,Ltd.
|
||||
Kazuo Adachi
|
||||
adachi@tenik.co.jp
|
||||
41
wince/READMEZJ.WCE
Normal file
41
wince/READMEZJ.WCE
Normal file
@@ -0,0 +1,41 @@
|
||||
zlib for WindowsCE Rel.1.0
|
||||
==========================
|
||||
(C) 1995-1998 Jean-loup Gailly and Mark Adler
|
||||
(C) 2000 Tenik Co.,Ltd.
|
||||
|
||||
Porting for WindowsCE by Tenik Co.,Ltd.(Kazuo Adachi)
|
||||
|
||||
|
||||
<EFBFBD>͂<EFBFBD><EFBFBD>߂<EFBFBD>
|
||||
========
|
||||
zlib for WindowsCE<43>͔ėp<C497>̃f<CC83>[<5B>^<5E><><EFBFBD>k<EFBFBD><6B><EFBFBD>C<EFBFBD>u<EFBFBD><75><EFBFBD><EFBFBD> zlib<69><62> WindowsCE<43>łł<C582><C582>B
|
||||
zlib<EFBFBD>ɂ<EFBFBD><EFBFBD>Ă̏ڂ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>́A<EFBFBD>t<EFBFBD><EFBFBD><EFBFBD><EFBFBD> README <20><><EFBFBD><EFBFBD><EFBFBD>ǂ݂<C782><DD82><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
|
||||
|
||||
<EFBFBD>g<EFBFBD>p<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
========
|
||||
<EFBFBD><EFBFBD><EFBFBD>̃\<5C>t<EFBFBD>g<EFBFBD>E<EFBFBD>F<EFBFBD>A<EFBFBD>͖<EFBFBD><CD96>ۏł<D882><C582>B<EFBFBD><42><EFBFBD>̃\<5C>t<EFBFBD>g<EFBFBD>E<EFBFBD>F<EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŗ<EFBFBD><C597>p<EFBFBD>҂<EFBFBD><D282><EFBFBD><EFBFBD>邱<EFBFBD><E982B1>
|
||||
<EFBFBD>ɂȂ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Q<EFBFBD>ɂ<EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD>ҁA<EFBFBD>z<EFBFBD>z<EFBFBD>ҁA<EFBFBD><EFBFBD><EFBFBD>̑<EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>҈ȊO<EFBFBD>̐l<EFBFBD><EFBFBD><EFBFBD>A
|
||||
<EFBFBD>c<EFBFBD>̂ɐӔC<EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><EFBFBD>`<60><><EFBFBD>͂Ȃ<CD82><C882><EFBFBD><EFBFBD>̂Ƃ<CC82><C682>܂<EFBFBD><DC82>B
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD>̑<EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD>̃\<5C>t<EFBFBD>g<EFBFBD>E<EFBFBD>F<EFBFBD>A<EFBFBD>̗<EFBFBD><CC97>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD>ɂ<C982><C282>ẮA<CD81><41><EFBFBD>łł<C582><C582><EFBFBD> zlib 1.1.3<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂Ƃ<EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD>B<EFBFBD>ڂ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>́A<EFBFBD>t<EFBFBD><EFBFBD><EFBFBD><EFBFBD> README <20><><EFBFBD><EFBFBD><EFBFBD>ǂ݂<C782><DD82><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD>^<5E><><EFBFBD>e
|
||||
========
|
||||
|
||||
READMEJ.WCE - <20><><EFBFBD>̃t<CC83>@<40>C<EFBFBD><43>
|
||||
READMEE.WCE - <20><><EFBFBD>̃t<CC83>@<40>C<EFBFBD><43>(<28>p<EFBFBD><70>)
|
||||
zlibce.diff - <20>\<5C>[<5B>X<EFBFBD>R<EFBFBD>[<5B>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43>
|
||||
zlibce.def - DLL<4C>쐬<EFBFBD>p <20><><EFBFBD>`<60>t<EFBFBD>@<40>C<EFBFBD><43>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD> zlib 1.1.3<EFBFBD>Ƃ̍ő<EFBFBD><EFBFBD>̈Ⴂ<EFBFBD>́Agzio.c<>̃R<CC83>[<5B>h<EFBFBD>ł<EFBFBD><C582>BWindowsCE<43>ɂ<EFBFBD>
|
||||
stdio.h(open<65><6E><EFBFBD>̊<CC8A>)<29><><EFBFBD><EFBFBD><EFBFBD>݂<EFBFBD><DD82>Ȃ<EFBFBD><C882><EFBFBD><EFBFBD>߁A<DF81>Ǝ<EFBFBD><C68E><EFBFBD> gziowce.c<><63><EFBFBD>쐬<EFBFBD><EC90AC><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B
|
||||
|
||||
minigzip.c<><63> example.c<>̕t<CC95><74><EFBFBD>T<EFBFBD><54><EFBFBD>v<EFBFBD><76><EFBFBD>E<EFBFBD>v<EFBFBD><76><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD>́A<CD81><41><EFBFBD>b<EFBFBD>Z<EFBFBD>[<5B>W<EFBFBD>o<EFBFBD>͂<EFBFBD>
|
||||
<EFBFBD>s<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>AWindowsCE 2.11<EFBFBD>ȍ~<7E>ł̂ݎg<DD8E>p<EFBFBD>\<5C>ł<EFBFBD><C582>B
|
||||
|
||||
<EFBFBD>z<EFBFBD>z<EFBFBD><EFBFBD>
|
||||
======
|
||||
<EFBFBD>e<EFBFBD>j<EFBFBD>b<EFBFBD>N<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>J<EFBFBD><4A><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>a<EFBFBD>Y
|
||||
adachi@tenik.co.jp
|
||||
180
wince/png32ce.def
Normal file
180
wince/png32ce.def
Normal file
@@ -0,0 +1,180 @@
|
||||
;------------------------------------------
|
||||
; LIBPNG module definition file for Windows
|
||||
;------------------------------------------
|
||||
|
||||
LIBRARY lpngce
|
||||
|
||||
EXPORTS
|
||||
;Version 1.0.7
|
||||
png_build_grayscale_palette @1
|
||||
png_check_sig @2
|
||||
png_chunk_error @3
|
||||
png_chunk_warning @4
|
||||
; png_convert_from_struct_tm @5
|
||||
; png_convert_from_time_t @6
|
||||
png_create_info_struct @7
|
||||
png_create_read_struct @8
|
||||
png_create_write_struct @9
|
||||
png_data_freer @10
|
||||
png_destroy_info_struct @11
|
||||
png_destroy_read_struct @12
|
||||
png_destroy_write_struct @13
|
||||
png_error @14
|
||||
png_free @15
|
||||
png_free_data @16
|
||||
png_get_IHDR @17
|
||||
png_get_PLTE @18
|
||||
png_get_bKGD @19
|
||||
png_get_bit_depth @20
|
||||
png_get_cHRM @21
|
||||
png_get_cHRM_fixed @22
|
||||
png_get_channels @23
|
||||
png_get_color_type @24
|
||||
png_get_compression_buffer_size @25
|
||||
png_get_compression_type @26
|
||||
png_get_copyright @27
|
||||
png_get_error_ptr @28
|
||||
png_get_filter_type @29
|
||||
png_get_gAMA @30
|
||||
png_get_gAMA_fixed @31
|
||||
png_get_hIST @32
|
||||
png_get_header_ver @33
|
||||
png_get_header_version @34
|
||||
png_get_iCCP @35
|
||||
png_get_image_height @36
|
||||
png_get_image_width @37
|
||||
png_get_interlace_type @38
|
||||
png_get_io_ptr @39
|
||||
png_get_libpng_ver @40
|
||||
png_get_oFFs @41
|
||||
png_get_pCAL @42
|
||||
png_get_pHYs @43
|
||||
png_get_pixel_aspect_ratio @44
|
||||
png_get_pixels_per_meter @45
|
||||
png_get_progressive_ptr @46
|
||||
png_get_rgb_to_gray_status @47
|
||||
png_get_rowbytes @48
|
||||
png_get_rows @49
|
||||
png_get_sBIT @50
|
||||
png_get_sCAL @51
|
||||
png_get_sPLT @52
|
||||
png_get_sRGB @53
|
||||
png_get_signature @54
|
||||
png_get_tIME @55
|
||||
png_get_tRNS @56
|
||||
png_get_text @57
|
||||
png_get_unknown_chunks @58
|
||||
png_get_user_chunk_ptr @59
|
||||
png_get_user_transform_ptr @60
|
||||
png_get_valid @61
|
||||
png_get_x_offset_microns @62
|
||||
png_get_x_offset_pixels @63
|
||||
png_get_x_pixels_per_meter @64
|
||||
png_get_y_offset_microns @65
|
||||
png_get_y_offset_pixels @66
|
||||
png_get_y_pixels_per_meter @67
|
||||
png_malloc @68
|
||||
png_memcpy_check @69
|
||||
png_memset_check @70
|
||||
png_permit_empty_plte @71
|
||||
png_process_data @72
|
||||
png_progressive_combine_row @73
|
||||
png_read_end @74
|
||||
png_read_image @75
|
||||
png_read_info @76
|
||||
png_read_init @77
|
||||
png_read_png @78
|
||||
png_read_row @79
|
||||
png_read_rows @80
|
||||
png_read_update_info @81
|
||||
png_reset_zstream @82
|
||||
png_set_IHDR @83
|
||||
png_set_PLTE @84
|
||||
png_set_bKGD @85
|
||||
png_set_background @86
|
||||
png_set_bgr @87
|
||||
png_set_cHRM @88
|
||||
png_set_cHRM_fixed @89
|
||||
png_set_compression_buffer_size @90
|
||||
png_set_compression_level @91
|
||||
png_set_compression_mem_level @92
|
||||
png_set_compression_method @93
|
||||
png_set_compression_strategy @94
|
||||
png_set_compression_window_bits @95
|
||||
png_set_crc_action @96
|
||||
png_set_dither @97
|
||||
png_set_error_fn @98
|
||||
png_set_expand @99
|
||||
png_set_filler @100
|
||||
png_set_filter @101
|
||||
png_set_filter_heuristics @102
|
||||
png_set_flush @103
|
||||
png_set_gAMA @104
|
||||
png_set_gAMA_fixed @105
|
||||
png_set_gamma @106
|
||||
png_set_gray_1_2_4_to_8 @107
|
||||
png_set_gray_to_rgb @108
|
||||
png_set_hIST @109
|
||||
png_set_iCCP @110
|
||||
png_set_interlace_handling @111
|
||||
png_set_invert_alpha @112
|
||||
png_set_invert_mono @113
|
||||
png_set_keep_unknown_chunks @114
|
||||
png_set_oFFs @115
|
||||
png_set_pCAL @116
|
||||
png_set_pHYs @117
|
||||
png_set_packing @118
|
||||
png_set_packswap @119
|
||||
png_set_palette_to_rgb @120
|
||||
png_set_progressive_read_fn @121
|
||||
png_set_read_fn @122
|
||||
png_set_read_status_fn @123
|
||||
png_set_read_user_chunk_fn @124
|
||||
png_set_read_user_transform_fn @125
|
||||
png_set_rgb_to_gray @126
|
||||
png_set_rgb_to_gray_fixed @127
|
||||
png_set_rows @128
|
||||
png_set_sBIT @129
|
||||
png_set_sCAL @130
|
||||
png_set_sPLT @131
|
||||
png_set_sRGB @132
|
||||
png_set_sRGB_gAMA_and_cHRM @133
|
||||
png_set_shift @134
|
||||
png_set_sig_bytes @135
|
||||
png_set_strip_16 @136
|
||||
png_set_strip_alpha @137
|
||||
png_set_swap @138
|
||||
png_set_swap_alpha @139
|
||||
png_set_tIME @140
|
||||
png_set_tRNS @141
|
||||
png_set_tRNS_to_alpha @142
|
||||
png_set_text @143
|
||||
png_set_unknown_chunk_location @144
|
||||
png_set_unknown_chunks @145
|
||||
png_set_user_transform_info @146
|
||||
png_set_write_fn @147
|
||||
png_set_write_status_fn @148
|
||||
png_set_write_user_transform_fn @149
|
||||
png_sig_cmp @150
|
||||
png_start_read_image @151
|
||||
png_warning @152
|
||||
png_write_chunk @153
|
||||
png_write_chunk_data @154
|
||||
png_write_chunk_end @155
|
||||
png_write_chunk_start @156
|
||||
png_write_end @157
|
||||
png_write_flush @158
|
||||
png_write_image @159
|
||||
png_write_info @160
|
||||
png_write_info_before_PLTE @161
|
||||
png_write_init @162
|
||||
png_write_png @163
|
||||
png_write_row @164
|
||||
png_write_rows @165
|
||||
png_read_init_2 @166
|
||||
png_write_init_2 @167
|
||||
png_access_version_number @168
|
||||
; png_sig_bytes @169
|
||||
png_libpng_ver @170
|
||||
png_init_io @171
|
||||
png_convert_to_rfc1123 @172
|
||||
44
wince/zlibce.def
Normal file
44
wince/zlibce.def
Normal file
@@ -0,0 +1,44 @@
|
||||
LIBRARY zlibce.dll
|
||||
|
||||
EXPORTS
|
||||
adler32 @1
|
||||
compress @2
|
||||
crc32 @3
|
||||
deflate @4
|
||||
deflateCopy @5
|
||||
deflateEnd @6
|
||||
deflateInit2_ @7
|
||||
deflateInit_ @8
|
||||
deflateParams @9
|
||||
deflateReset @10
|
||||
deflateSetDictionary @11
|
||||
gzclose @12
|
||||
gzdopen @13
|
||||
gzerror @14
|
||||
gzflush @15
|
||||
gzopen @16
|
||||
gzread @17
|
||||
gzwrite @18
|
||||
inflate @19
|
||||
inflateEnd @20
|
||||
inflateInit2_ @21
|
||||
inflateInit_ @22
|
||||
inflateReset @23
|
||||
inflateSetDictionary @24
|
||||
inflateSync @25
|
||||
uncompress @26
|
||||
zlibVersion @27
|
||||
gzprintf @28
|
||||
gzputc @29
|
||||
gzgetc @30
|
||||
gzseek @31
|
||||
gzrewind @32
|
||||
gztell @33
|
||||
gzeof @34
|
||||
gzsetparams @35
|
||||
zError @36
|
||||
inflateSyncPoint @37
|
||||
get_crc_table @38
|
||||
compress2 @39
|
||||
gzputs @40
|
||||
gzgets @41
|
||||
Reference in New Issue
Block a user