Imported from libpng-1.0.7beta17.tar
diff --git a/ANNOUNCE b/ANNOUNCE
index a0518ca..c4f8b83 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,5 +1,5 @@
-Libpng 1.0.7beta16 - June 4, 2000
+Libpng 1.0.7beta17 - June 24, 2000
This is a public release of libpng, intended for use in production codes.
@@ -80,15 +80,18 @@
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).
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.
- Added PNG_USE_DLL macro.
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.
Send comments/corrections/commendations to
png-implement@ccrc.wustl.edu or to randeg@alum.rpi.edu
diff --git a/CHANGES b/CHANGES
index ee77fd5..c86a536 100644
--- a/CHANGES
+++ b/CHANGES
@@ -757,7 +757,7 @@
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 29, 2000]
+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
@@ -779,6 +779,16 @@
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.7beta17 [June 24, 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.
Send comments/corrections/commendations to
png-implement@ccrc.wustl.edu or to randeg@alum.rpi.edu
diff --git a/INSTALL b/INSTALL
index b3fc612..797a972 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,5 +1,5 @@
-Installing libpng version 1.0.7beta16 - June 4, 2000
+Installing libpng version 1.0.7beta17 - June 24, 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 @@
version of zlib that's installed.
You can rename the directories that you downloaded (they
-might be called "libpng-1.0.7beta16" or "lpng106" and "zlib-1.1.3"
+might be called "libpng-1.0.7beta17" 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:
@@ -26,6 +26,7 @@
msvctest
pngminus
pngsuite
+ visupng
msvc
scripts
makefile.*
@@ -42,18 +43,19 @@
distribution of libpng. It is available in both tar.gz (UNIX style line
endings) and zip (DOS style line endings) formats.
-If you are building libpng with MSVC, you can enter the msvc directory and
-follow the instructions in msvc/README.txt.
+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
+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.7beta16)
- makefile.gcmmx => Linux/ELF makefile (gcc, creates libpng.so.2.1.0.7beta16,
+ makefile.linux => Linux/ELF makefile (gcc, creates libpng.so.2.1.0.7beta17)
+ makefile.gcmmx => Linux/ELF makefile (gcc, creates libpng.so.2.1.0.7beta17,
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
@@ -65,9 +67,9 @@
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.7beta16)
+ makefile.sggcc => Silicon Graphics (gcc, creates libpng.so.2.1.0.7beta17)
makefile.sunos => Sun makefile
- makefile.solaris => Solaris 2.X makefile (gcc, creates libpng.so.2.1.0.7beta16)
+ makefile.solaris => Solaris 2.X makefile (gcc, creates libpng.so.2.1.0.7beta17)
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
makefile.mips => MIPS makefile
makefile.acorn => Acorn makefile
diff --git a/KNOWNBUG b/KNOWNBUG
index 07b4ab1..7a9ca86 100644
--- a/KNOWNBUG
+++ b/KNOWNBUG
@@ -1,97 +1,7 @@
-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
-
- 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.
-
- Applications that use png_create_*() instead of png_ptr=malloc(...)
- are immune to this problem.
-
- 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. April 23, 2000 -- BUG -- binary incompatibility
-
- 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.
-
- 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.
-
- 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.
-
-3. April 15, 2000 -- BUG -- pnggccrd.c
-
- If PNG_NO_GLOBAL_ARRAYS is defined, pnggccrd.c will not compile.
-
- STATUS: Fixed in libpng-1.0.6g
-
-4. April 1, 2000 -- BUG
-
- 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.
-
- 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.
-
-5. April 1, 2000 -- BUG
-
- The non-ISO-C "strdup()" function is used in png.c
-
- STATUS: The function has been simplified and no longer uses strdup()
- in libpng-1.0.6-patch-c and libpng-1.0.6d.
-
-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
+1. March 15, 1998 -- OPTIMIZATION -- Kevin Bracey
Loops need to be optimized everywhere
@@ -106,7 +16,7 @@
libpng-1.1.0. About 160 loops will be turned around
in libpng-1.1.Nn, for testing.
-10. July 4, 1998 -- ENHANCEMENT -- Glenn R-P
+2. 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,12 +28,12 @@
STATUS: under development.
-11. September 1999 -- ENHANCEMENT --
+3. 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
+ libpng-1.0.7. The application interface will change because replacements
for the png_set_gAMA(), png_set_cHRM(), and corresponding png_get_()
functions will be needed.
diff --git a/LICENSE b/LICENSE
index 822fc04..5915849 100644
--- a/LICENSE
+++ b/LICENSE
@@ -5,7 +5,7 @@
Copyright (c) 1996, 1997 Andreas Dilger
(libpng versions 0.90, December 1996, through 0.96, May 1997)
Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
-(libpng versions 0.97, January 1998, through 1.0.7beta16, June 4, 2000)
+(libpng versions 0.97, January 1998, through 1.0.7beta17, June 24, 2000)
For the purposes of this copyright and license, "Contributing Authors"
is defined as the following set of individuals:
@@ -68,4 +68,4 @@
Glenn Randers-Pehrson
randeg@alum.rpi.edu
-June 4, 2000
+June 24, 2000
diff --git a/README b/README
index 244f997..884cd58 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-README for libpng 1.0.7beta16 - June 4, 2000 (shared library 2.1)
+README for libpng 1.0.7beta17 - June 24, 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.
@@ -169,15 +169,16 @@
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.7beta16)
+ (gcc, creates libpng.so.2.1.0.7beta17)
makefile.gcmmx => Linux/ELF makefile (gcc, creates
- libpng.so.2.1.0.7beta16, uses assembler code
+ libpng.so.2.1.0.7beta17, 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
@@ -189,10 +190,10 @@
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.7beta16)
+ makefile.sggcc => Silicon Graphics (gcc, creates libpng.so.2.1.0.7beta17)
makefile.sunos => Sun makefile
makefile.solaris => Solaris 2.X makefile
- (gcc, creates libpng.so.2.1.0.7beta16)
+ (gcc, creates libpng.so.2.1.0.7beta17)
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
makefile.mips => MIPS makefile
makefile.acorn => Acorn makefile
diff --git a/Y2KINFO b/Y2KINFO
index 395d8c7..019f25a 100644
--- a/Y2KINFO
+++ b/Y2KINFO
@@ -1,13 +1,13 @@
Y2K compliance in libpng:
=========================
- June 4, 2000
+ June 24, 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.7beta16 are Y2K compliant. It is my belief that earlier
+ upward through 1.0.7beta17 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
diff --git a/configure b/configure
index 556f271..d92ed41 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
echo "
- There is no \"configure\" script for Libpng-1.0.7beta16. Instead, please
+ There is no \"configure\" script for Libpng-1.0.7beta17. Instead, please
copy the appropriate makefile for your system from the \"scripts\"
directory. Read the INSTALL file for more details.
"
diff --git a/contrib/msvctest/msvctest.dsp b/contrib/msvctest/msvctest.dsp
index 926e5ed..d743840 100644
--- a/contrib/msvctest/msvctest.dsp
+++ b/contrib/msvctest/msvctest.dsp
@@ -119,7 +119,7 @@
OutDir=.\dll_asm
SOURCE="$(InputPath)"
PostBuild_Desc=[Run Test]
-PostBuild_Cmds=set path=..\..\msvc\win32\libpng\dll_asm;..\..\msvc\win32\zlib\dll; $(outdir)\msvctest.exe ..\..\pngtest.png
+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"
@@ -149,7 +149,7 @@
OutDir=.\dll_dbga
SOURCE="$(InputPath)"
PostBuild_Desc=[Run Test]
-PostBuild_Cmds=set path=..\..\msvc\win32\libpng\dll_dbga;..\..\msvc\win32\zlib\dll_dbg; $(outdir)\msvctest.exe ..\..\pngtest.png
+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"
diff --git a/contrib/visupng/PngFile.c b/contrib/visupng/PngFile.c
new file mode 100644
index 0000000..a0cd8e5
--- /dev/null
+++ b/contrib/visupng/PngFile.c
@@ -0,0 +1,443 @@
+//-------------------------------------
+// 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)
+ {
+ fclose(pfFile);
+ png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
+ return FALSE;
+ }
+
+ // 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
+//-----------------
diff --git a/contrib/visupng/PngFile.h b/contrib/visupng/PngFile.h
new file mode 100644
index 0000000..a900fd4
--- /dev/null
+++ b/contrib/visupng/PngFile.h
@@ -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
+
diff --git a/contrib/visupng/README.txt b/contrib/visupng/README.txt
new file mode 100644
index 0000000..7594ec3
--- /dev/null
+++ b/contrib/visupng/README.txt
@@ -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
+
diff --git a/contrib/visupng/VisualPng.c b/contrib/visupng/VisualPng.c
new file mode 100644
index 0000000..f2cf6ee
--- /dev/null
+++ b/contrib/visupng/VisualPng.c
@@ -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
+//-----------------
diff --git a/contrib/visupng/VisualPng.dsp b/contrib/visupng/VisualPng.dsp
new file mode 100644
index 0000000..fb42c81
--- /dev/null
+++ b/contrib/visupng/VisualPng.dsp
@@ -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
diff --git a/contrib/visupng/VisualPng.dsw b/contrib/visupng/VisualPng.dsw
new file mode 100644
index 0000000..17ad83a
--- /dev/null
+++ b/contrib/visupng/VisualPng.dsw
@@ -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>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/contrib/visupng/VisualPng.ico b/contrib/visupng/VisualPng.ico
new file mode 100644
index 0000000..68aa371
--- /dev/null
+++ b/contrib/visupng/VisualPng.ico
Binary files differ
diff --git a/contrib/visupng/VisualPng.png b/contrib/visupng/VisualPng.png
new file mode 100644
index 0000000..c6aa80a
--- /dev/null
+++ b/contrib/visupng/VisualPng.png
Binary files differ
diff --git a/contrib/visupng/VisualPng.rc b/contrib/visupng/VisualPng.rc
new file mode 100644
index 0000000..151c68c
--- /dev/null
+++ b/contrib/visupng/VisualPng.rc
@@ -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
+
diff --git a/contrib/visupng/cexcept.h b/contrib/visupng/cexcept.h
new file mode 100644
index 0000000..532b23d
--- /dev/null
+++ b/contrib/visupng/cexcept.h
@@ -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 */
diff --git a/contrib/visupng/resource.h b/contrib/visupng/resource.h
new file mode 100644
index 0000000..611dd03
--- /dev/null
+++ b/contrib/visupng/resource.h
@@ -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
diff --git a/libpng.3 b/libpng.3
index 5faba90..32fbfa2 100644
--- a/libpng.3
+++ b/libpng.3
@@ -1,6 +1,6 @@
-.TH LIBPNG 3 "June 4, 2000"
+.TH LIBPNG 3 "June 24, 2000"
.SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.0.7beta16
+libpng \- Portable Network Graphics (PNG) Reference Library 1.0.7beta17
.SH SYNOPSIS
\fI\fB
@@ -747,7 +747,7 @@
.SH LIBPNG.TXT
libpng.txt - A description on how to use and modify libpng
- libpng version 1.0.7beta16 - June 4, 2000
+ libpng version 1.0.7beta17 - June 24, 2000
Updated and distributed by Glenn Randers-Pehrson
<randeg@alum.rpi.edu>
Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
@@ -3379,13 +3379,13 @@
.SH VII. Y2K Compliance in libpng
-June 4, 2000
+June 24, 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.7beta16 are Y2K compliant. It is my belief that earlier
+upward through 1.0.7beta17 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
@@ -3526,7 +3526,7 @@
Thanks to Frank J. T. Wojcik for helping with the documentation.
-Libpng version 1.0.7beta16 - June 4, 2000:
+Libpng version 1.0.7beta17 - June 24, 2000:
Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
Currently maintained by Glenn Randers-Pehrson (randeg@alum.rpi.edu).
@@ -3541,7 +3541,7 @@
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.7beta16, June 4, 2000)
+(libpng versions 0.97, January 1998, through 1.0.7beta17, June 24, 2000)
For the purposes of this copyright and license, "Contributing Authors"
is defined as the following set of individuals:
diff --git a/libpng.txt b/libpng.txt
index 1c77a6f..21938d4 100644
--- a/libpng.txt
+++ b/libpng.txt
@@ -1,6 +1,6 @@
libpng.txt - A description on how to use and modify libpng
- libpng version 1.0.7beta16 - June 4, 2000
+ libpng version 1.0.7beta17 - June 24, 2000
Updated and distributed by Glenn Randers-Pehrson
<randeg@alum.rpi.edu>
Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
@@ -2632,13 +2632,13 @@
VII. Y2K Compliance in libpng
-June 4, 2000
+June 24, 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.7beta16 are Y2K compliant. It is my belief that earlier
+upward through 1.0.7beta17 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
diff --git a/libpngpf.3 b/libpngpf.3
index ab9c6a5..40b99b8 100644
--- a/libpngpf.3
+++ b/libpngpf.3
@@ -1,6 +1,6 @@
-.TH LIBPNGPF 3 "June 4, 2000"
+.TH LIBPNGPF 3 "June 24, 2000"
.SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.0.7beta16
+libpng \- Portable Network Graphics (PNG) Reference Library 1.0.7beta17
(private functions)
.SH SYNOPSIS
\fB#include <png.h>\fP
diff --git a/msvc/README.txt b/msvc/README.txt
index 11c82dd..3a282e0 100644
--- a/msvc/README.txt
+++ b/msvc/README.txt
@@ -1,5 +1,5 @@
Microsoft Developer Studio Build File, Format Version 6.00 for
-libpng 1.0.7beta16 (June 4, 2000) and zlib
+libpng 1.0.7beta17 (June 24, 2000) and zlib
Copyright (C) 2000 Simon-Pierre Cadieux
For conditions of distribution and use, see copyright notice in png.h
diff --git a/msvc/libpng.dsp b/msvc/libpng.dsp
index 8bd7611..1fb6b26 100644
--- a/msvc/libpng.dsp
+++ b/msvc/libpng.dsp
@@ -19,11 +19,11 @@
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "libpng - Win32 DLL" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libpng - Win32 Debug DLL" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libpng - Win32 ASM DLL" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libpng - Win32 Debug ASM 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 Debug LIB" (based on "Win32 (x86) Static Library")
+!MESSAGE "libpng - Win32 LIB Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
# Begin Project
@@ -55,11 +55,11 @@
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 /nologo /dll /machine:I386
+# 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 Debug DLL"
+!ELSEIF "$(CFG)" == "libpng - Win32 DLL Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -86,7 +86,7 @@
# 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 ASM DLL"
+!ELSEIF "$(CFG)" == "libpng - Win32 DLL ASM"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -105,16 +105,16 @@
MTL=midl.exe
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /i ".." /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 .\win32\zlib\dll\zlib.lib /nologo /dll /machine:I386 /out:".\win32\libpng\dll_asm\libpng1a.dll"
+# ADD LINK32 /nologo /dll /machine:I386 /out:".\win32\libpng\dll_asm\libpng1a.dll"
# SUBTRACT LINK32 /pdb:none
-!ELSEIF "$(CFG)" == "libpng - Win32 Debug ASM DLL"
+!ELSEIF "$(CFG)" == "libpng - Win32 DLL Debug ASM"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -133,13 +133,13 @@
MTL=midl.exe
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /i ".." /d "_DEBUG" /d PNG_DEBUG=1
+# 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 .\win32\zlib\dll_dbg\zlibd.lib /nologo /dll /debug /machine:I386 /out:".\win32\libpng\dll_dbga\libpng1b.dll"
+# ADD LINK32 /nologo /dll /debug /machine:I386 /out:".\win32\libpng\dll_dbga\libpng1b.dll"
!ELSEIF "$(CFG)" == "libpng - Win32 LIB"
@@ -167,7 +167,7 @@
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
-!ELSEIF "$(CFG)" == "libpng - Win32 Debug LIB"
+!ELSEIF "$(CFG)" == "libpng - Win32 LIB Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -198,11 +198,11 @@
# Begin Target
# Name "libpng - Win32 DLL"
-# Name "libpng - Win32 Debug DLL"
-# Name "libpng - Win32 ASM DLL"
-# Name "libpng - Win32 Debug ASM DLL"
+# Name "libpng - Win32 DLL Debug"
+# Name "libpng - Win32 DLL ASM"
+# Name "libpng - Win32 DLL Debug ASM"
# Name "libpng - Win32 LIB"
-# Name "libpng - Win32 Debug LIB"
+# Name "libpng - Win32 LIB Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
@@ -217,17 +217,17 @@
!IF "$(CFG)" == "libpng - Win32 DLL"
-!ELSEIF "$(CFG)" == "libpng - Win32 Debug DLL"
+!ELSEIF "$(CFG)" == "libpng - Win32 DLL Debug"
-!ELSEIF "$(CFG)" == "libpng - Win32 ASM DLL"
+!ELSEIF "$(CFG)" == "libpng - Win32 DLL ASM"
-!ELSEIF "$(CFG)" == "libpng - Win32 Debug ASM DLL"
+!ELSEIF "$(CFG)" == "libpng - Win32 DLL Debug ASM"
!ELSEIF "$(CFG)" == "libpng - Win32 LIB"
# PROP Exclude_From_Build 1
-!ELSEIF "$(CFG)" == "libpng - Win32 Debug LIB"
+!ELSEIF "$(CFG)" == "libpng - Win32 LIB Debug"
# PROP Exclude_From_Build 1
@@ -240,17 +240,17 @@
!IF "$(CFG)" == "libpng - Win32 DLL"
-!ELSEIF "$(CFG)" == "libpng - Win32 Debug DLL"
+!ELSEIF "$(CFG)" == "libpng - Win32 DLL Debug"
-!ELSEIF "$(CFG)" == "libpng - Win32 ASM DLL"
+!ELSEIF "$(CFG)" == "libpng - Win32 DLL ASM"
-!ELSEIF "$(CFG)" == "libpng - Win32 Debug ASM DLL"
+!ELSEIF "$(CFG)" == "libpng - Win32 DLL Debug ASM"
!ELSEIF "$(CFG)" == "libpng - Win32 LIB"
# PROP Exclude_From_Build 1
-!ELSEIF "$(CFG)" == "libpng - Win32 Debug LIB"
+!ELSEIF "$(CFG)" == "libpng - Win32 LIB Debug"
# PROP Exclude_From_Build 1
@@ -306,19 +306,19 @@
# PROP Exclude_From_Build 1
-!ELSEIF "$(CFG)" == "libpng - Win32 Debug DLL"
+!ELSEIF "$(CFG)" == "libpng - Win32 DLL Debug"
# PROP Exclude_From_Build 1
-!ELSEIF "$(CFG)" == "libpng - Win32 ASM DLL"
+!ELSEIF "$(CFG)" == "libpng - Win32 DLL ASM"
-!ELSEIF "$(CFG)" == "libpng - Win32 Debug ASM DLL"
+!ELSEIF "$(CFG)" == "libpng - Win32 DLL Debug ASM"
!ELSEIF "$(CFG)" == "libpng - Win32 LIB"
# PROP Exclude_From_Build 1
-!ELSEIF "$(CFG)" == "libpng - Win32 Debug LIB"
+!ELSEIF "$(CFG)" == "libpng - Win32 LIB Debug"
# PROP Exclude_From_Build 1
diff --git a/msvc/png.rc b/msvc/png.rc
index cba4c66..dec02e5 100644
--- a/msvc/png.rc
+++ b/msvc/png.rc
@@ -12,6 +12,14 @@
# 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
@@ -22,7 +30,9 @@
# endif /* COMMENTS */
#else
# define VS_DEBUG 0
-# define DLLFNAME_POSTFIX
+# ifndef DLLFNAME_POSTFIX
+# define DLLFNAME_POSTFIX
+# endif /* DLLFNAME_POSTFIX */
#endif /* defined(DEBUG)... */
#ifdef PRIVATEBUILD
@@ -54,7 +64,7 @@
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", "Copyright 1998-2000 Glenn Randers-Pehrson\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
diff --git a/msvc/png32ms.def b/msvc/png32ms.def
index 7771347..b4c05be 100644
--- a/msvc/png32ms.def
+++ b/msvc/png32ms.def
@@ -1,12 +1,12 @@
;------------------------------------------
-; PNGLIB module definition file for Windows
+; LIBPNG module definition file for Windows
;------------------------------------------
LIBRARY
DESCRIPTION "PNG image compression library for Windows"
EXPORTS
-;Version 1.0.7beta16
+;Version 1.0.7beta17
png_build_grayscale_palette @1
png_check_sig @2
png_chunk_error @3
diff --git a/msvc/zlib.dsp b/msvc/zlib.dsp
index 1d6f7e3..92243a6 100644
--- a/msvc/zlib.dsp
+++ b/msvc/zlib.dsp
@@ -19,9 +19,11 @@
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "zlib - Win32 DLL" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "zlib - Win32 Debug 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 Debug LIB" (based on "Win32 (x86) Static Library")
+!MESSAGE "zlib - Win32 LIB Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
# Begin Project
@@ -53,11 +55,11 @@
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 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 /dll /machine:I386
+# ADD BASE LINK32 /nologo /dll /machine:I386
# ADD LINK32 /nologo /dll /machine:I386
# SUBTRACT LINK32 /pdb:none
-!ELSEIF "$(CFG)" == "zlib - Win32 Debug DLL"
+!ELSEIF "$(CFG)" == "zlib - Win32 DLL Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -81,9 +83,64 @@
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 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 /dll /debug /machine:I386 /pdbtype:sept
+# 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
@@ -110,7 +167,7 @@
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
-!ELSEIF "$(CFG)" == "zlib - Win32 Debug LIB"
+!ELSEIF "$(CFG)" == "zlib - Win32 LIB Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -141,9 +198,11 @@
# Begin Target
# Name "zlib - Win32 DLL"
-# Name "zlib - Win32 Debug DLL"
+# Name "zlib - Win32 DLL Debug"
+# Name "zlib - Win32 DLL ASM"
+# Name "zlib - Win32 DLL Debug ASM"
# Name "zlib - Win32 LIB"
-# Name "zlib - Win32 Debug LIB"
+# Name "zlib - Win32 LIB Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
@@ -165,6 +224,33 @@
# 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
@@ -212,13 +298,17 @@
!IF "$(CFG)" == "zlib - Win32 DLL"
-!ELSEIF "$(CFG)" == "zlib - Win32 Debug 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 Debug LIB"
+!ELSEIF "$(CFG)" == "zlib - Win32 LIB Debug"
# PROP Exclude_From_Build 1
@@ -231,13 +321,17 @@
!IF "$(CFG)" == "zlib - Win32 DLL"
-!ELSEIF "$(CFG)" == "zlib - Win32 Debug 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 Debug LIB"
+!ELSEIF "$(CFG)" == "zlib - Win32 LIB Debug"
# PROP Exclude_From_Build 1
diff --git a/png.5 b/png.5
index c5cbdfc..ae87d93 100644
--- a/png.5
+++ b/png.5
@@ -1,4 +1,4 @@
-.TH PNG 5 "June 4, 2000"
+.TH PNG 5 "June 24, 2000"
.SH NAME
png \- Portable Network Graphics (PNG) format
.SH DESCRIPTION
diff --git a/png.c b/png.c
index 08b7ff1..986ecd9 100644
--- a/png.c
+++ b/png.c
@@ -1,7 +1,7 @@
/* png.c - location for general purpose libpng functions
*
- * libpng version 1.0.7beta16 - June 4, 2000
+ * libpng version 1.0.7beta17 - June 24, 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.)
@@ -14,14 +14,14 @@
#include "png.h"
/* Generate a compiler error if there is an old png.h in the search path. */
-typedef version_1_0_7beta16 Your_png_h_is_not_version_1_0_7beta16;
+typedef version_1_0_7beta17 Your_png_h_is_not_version_1_0_7beta17;
/* 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.7beta16";
+char png_libpng_ver[12] = "1.0.7beta17";
/* png_sig was changed to a function in version 1.0.5c */
/* Place to hold the signature string for a PNG file. */
@@ -605,7 +605,7 @@
png_get_copyright(png_structp png_ptr)
{
if (png_ptr != NULL || png_ptr == NULL) /* silence compiler warning */
- return ("\n libpng version 1.0.7beta16 - June 4, 2000\n\
+ return ("\n libpng version 1.0.7beta17 - June 24, 2000\n\
Copyright (c) 1998-2000 Glenn Randers-Pehrson\n\
Copyright (c) 1996, 1997 Andreas Dilger\n\
Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.\n");
@@ -623,8 +623,8 @@
{
/* Version of *.c files used when building libpng */
if(png_ptr != NULL) /* silence compiler warning about unused png_ptr */
- return("1.0.7beta16");
- return("1.0.7beta16");
+ return("1.0.7beta17");
+ return("1.0.7beta17");
}
png_charp PNGAPI
diff --git a/png.h b/png.h
index 85ed922..c38dbb0 100644
--- a/png.h
+++ b/png.h
@@ -1,7 +1,7 @@
/* png.h - header file for PNG reference library
*
- * libpng version 1.0.7beta16 - June 4, 2000
+ * libpng version 1.0.7beta17 - June 24, 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.)
@@ -9,7 +9,7 @@
* Authors and maintainers:
* libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
* libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger
- * libpng versions 0.97, January 1998, through 1.0.7beta16 - June 4, 2000: Glenn
+ * libpng versions 0.97, January 1998, through 1.0.7beta17 - June 24, 2000: Glenn
* See also "Contributing Authors", below.
*
* Note about libpng version numbers:
@@ -52,9 +52,9 @@
* 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-16 10007 2.1.0.7beta11-16 (binary compatible)
+ * 1.0.7beta11-17 10007 2.1.0.7beta11-17 (binary compatible)
+ * 1.0.7rc1-2 10007 2.1.0.7rc1-2 (binary compatible)
* planned:
- * 1.0.7rc1 10007 2.1.0.7rc1 (binary compatible)
* 1.0.6patch4 (w/4 patches) 10006 2.1.0.6 (binary compatible)
* 1.0.7 10007 (still compatible)
*
@@ -83,7 +83,7 @@
* If you modify libpng you may insert additional notices immediately following
* this sentence.
*
- * libpng versions 1.0.6, March 20, 2000, through 1.0.7beta16, June 4, 2000, are
+ * libpng versions 1.0.6, March 20, 2000, through 1.0.7beta17, June 24, 2000, are
* Copyright (c) 2000 Glenn Randers-Pehrson
* Distributed according to the same disclaimer and license as libpng-1.0.5
* with the following individuals added to the list of Contributing Authors:
@@ -179,13 +179,13 @@
* Y2K compliance in libpng:
* =========================
*
- * June 4, 2000
+ * June 24, 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.7beta16 are Y2K compliant. It is my belief that earlier
+ * upward through 1.0.7beta17 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
@@ -231,8 +231,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
@@ -241,7 +241,7 @@
*/
/* Version information for png.h - this should match the version in png.c */
-#define PNG_LIBPNG_VER_STRING "1.0.7beta16"
+#define PNG_LIBPNG_VER_STRING "1.0.7beta17"
#define PNG_LIBPNG_VER_SONUM 2
@@ -251,7 +251,7 @@
#define PNG_LIBPNG_VER_RELEASE 7
/* This should match the numeric part of the final component of
* PNG_LIBPNG_VER_STRING, omitting any leading zero: */
-#define PNG_LIBPNG_VER_BUILD 16
+#define PNG_LIBPNG_VER_BUILD 17
/* Careful here. At one time, Guy wanted to use 082, but that would be octal.
* We must not include leading zeros.
@@ -892,7 +892,7 @@
#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));
@@ -1140,9 +1140,9 @@
};
/* This prevents a compiler error in png_get_copyright() in png.c if png.c
-and png.h are both at * version 1.0.7beta16
+and png.h are both at * version 1.0.7beta17
*/
-typedef png_structp version_1_0_7beta16;
+typedef png_structp version_1_0_7beta17;
typedef png_struct FAR * FAR * png_structpp;
@@ -2161,7 +2161,7 @@
extern PNG_EXPORT(png_charp,png_get_libpng_ver) PNGARG((png_structp png_ptr));
#define PNG_HEADER_VERSION_STRING \
- " libpng version 1.0.7beta16 - June 4, 2000 (header)\n"
+ " libpng version 1.0.7beta17 - June 24, 2000 (header)\n"
#ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED
/* With these routines we avoid an integer divide, which will be slower on
@@ -2955,4 +2955,4 @@
#endif /* PNG_VERSION_INFO_ONLY */
/* do not put anything past this line */
-#endif /* _PNG_H */
+#endif /* PNG_H */
diff --git a/pngasmrd.h b/pngasmrd.h
index 50dcf20..0933650 100644
--- a/pngasmrd.h
+++ b/pngasmrd.h
@@ -1,11 +1,14 @@
/* pngasmrd.h - assembler version of utilities to read a PNG file
*
- * libpng 1.0.7beta16 - June 4, 2000
+ * libpng 1.0.7beta17 - June 24, 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 */
diff --git a/pngconf.h b/pngconf.h
index 028936c..b6ada56 100644
--- a/pngconf.h
+++ b/pngconf.h
@@ -1,6 +1,6 @@
/* pngconf.h - machine configurable file for libpng
*
- * libpng 1.0.7beta16 - June 4, 2000
+ * libpng 1.0.7beta17 - June 24, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -133,7 +133,7 @@
# ifdef __linux__
# ifdef _BSD_SOURCE
-# define _PNG_SAVE_BSD_SOURCE
+# define PNG_SAVE_BSD_SOURCE
# undef _BSD_SOURCE
# endif
# ifdef _SETJMP_H
@@ -146,9 +146,9 @@
#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 */
@@ -950,7 +950,15 @@
# 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
@@ -958,7 +966,11 @@
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 */)
@@ -994,19 +1006,17 @@
# 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
diff --git a/pngerror.c b/pngerror.c
index 6e4cd32..d56aecb 100644
--- a/pngerror.c
+++ b/pngerror.c
@@ -1,7 +1,7 @@
/* pngerror.c - stub functions for i/o and memory allocation
*
- * libpng 1.0.7beta16 - June 4, 2000
+ * libpng 1.0.7beta17 - June 24, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pnggccrd.c b/pnggccrd.c
index d1372cd..88d027c 100644
--- a/pnggccrd.c
+++ b/pnggccrd.c
@@ -6,7 +6,7 @@
* and http://www.intel.com/drg/pentiumII/appnotes/923/923.htm
* for Intel's performance analysis of the MMX vs. non-MMX code.
*
- * libpng 1.0.7beta16 - June 4, 2000
+ * libpng 1.0.7beta17 - June 24, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
* Copyright (c) 1998, Intel Corporation
@@ -43,8 +43,8 @@
*/
/*
- * GRR NOTES
- * =========
+ * NOTES (mostly by Greg Roelofs)
+ * =====
*
* 19991006:
* - fixed sign error in post-MMX cleanup code (16- & 32-bit cases)
@@ -125,9 +125,10 @@
* 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
+ *
+ * - When compiling with gcc, be sure to use -fomit-frame-pointer
*/
-
#define PNG_INTERNAL
#include "png.h"
@@ -143,8 +144,9 @@
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 __DJBPP__) || defined (WIN32)
# define _unmask unmask
# define _const4 const4
# define _const6 const6
diff --git a/pngget.c b/pngget.c
index 1ff25f1..c9574a6 100644
--- a/pngget.c
+++ b/pngget.c
@@ -1,7 +1,7 @@
/* pngget.c - retrieval of values from info struct
*
- * libpng 1.0.7beta16 - June 4, 2000
+ * libpng 1.0.7beta17 - June 24, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngmem.c b/pngmem.c
index 94b0cf9..73f4554 100644
--- a/pngmem.c
+++ b/pngmem.c
@@ -1,7 +1,7 @@
/* pngmem.c - stub functions for memory allocation
*
- * libpng 1.0.7beta16 - June 4, 2000
+ * libpng 1.0.7beta17 - June 24, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngpread.c b/pngpread.c
index 1934b1f..6bae659 100644
--- a/pngpread.c
+++ b/pngpread.c
@@ -1,7 +1,7 @@
/* pngpread.c - read a png file in push mode
*
- * libpng 1.0.7beta16 - June 4, 2000
+ * libpng 1.0.7beta17 - June 24, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngread.c b/pngread.c
index ed94f68..c5c3317 100644
--- a/pngread.c
+++ b/pngread.c
@@ -1,7 +1,7 @@
/* pngread.c - read a PNG file
*
- * libpng 1.0.7beta16 - June 4, 2000
+ * libpng 1.0.7beta17 - June 24, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -697,7 +697,7 @@
* 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.7beta16
+ * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.7beta17
*/
void PNGAPI
@@ -746,7 +746,7 @@
* 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.7beta16
+ * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.7beta17
*/
void PNGAPI
png_read_image(png_structp png_ptr, png_bytepp image)
diff --git a/pngrio.c b/pngrio.c
index eadf360..c5008e8 100644
--- a/pngrio.c
+++ b/pngrio.c
@@ -1,7 +1,7 @@
/* pngrio.c - functions for data input
*
- * libpng 1.0.7beta16 - June 4, 2000
+ * libpng 1.0.7beta17 - June 24, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngrtran.c b/pngrtran.c
index 72f8548..aa67150 100644
--- a/pngrtran.c
+++ b/pngrtran.c
@@ -1,7 +1,7 @@
/* pngrtran.c - transforms the data in a row for PNG readers
*
- * libpng 1.0.7beta16 - June 4, 2000
+ * libpng 1.0.7beta17 - June 24, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngrutil.c b/pngrutil.c
index 6f290c3..8795a31 100644
--- a/pngrutil.c
+++ b/pngrutil.c
@@ -1,7 +1,7 @@
/* pngrutil.c - utilities to read a PNG file
*
- * libpng 1.0.7beta16 - June 4, 2000
+ * libpng 1.0.7beta17 - June 24, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -224,8 +224,18 @@
}
}
if (ret != Z_STREAM_END)
+ {
+#if !defined(PNG_NO_STDIO)
+ char umsg[50];
+
+ sprintf(umsg,"Incomplete compressed datastream in %s chunk",
+ png_ptr->chunk_name);
+ png_warning(png_ptr, umsg);
+#else
png_warning(png_ptr,
- "End of datastream not found in a compressed chunk (other than IDAT)");
+ "Incomplete compressed datastream in chunk other than IDAT");
+#endif
+ }
inflateReset(&png_ptr->zstream);
png_ptr->zstream.avail_in = 0;
@@ -234,7 +244,7 @@
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)
char umsg[50];
diff --git a/pngset.c b/pngset.c
index bdb61e7..6f3c897 100644
--- a/pngset.c
+++ b/pngset.c
@@ -1,7 +1,7 @@
/* pngset.c - storage of image information into info struct
*
- * libpng 1.0.7beta16 - June 4, 2000
+ * libpng 1.0.7beta17 - June 24, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngtest.c b/pngtest.c
index d4155af..22b316c 100644
--- a/pngtest.c
+++ b/pngtest.c
@@ -1,7 +1,7 @@
/* pngtest.c - a simple test program to test libpng
*
- * libpng 1.0.7beta16 - June 4, 2000
+ * libpng 1.0.7beta17 - June 24, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -1159,7 +1159,7 @@
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));
@@ -1392,4 +1392,4 @@
}
/* Generate a compiler error if there is an old png.h in the search path. */
-typedef version_1_0_7beta16 your_png_h_is_not_version_1_0_7beta16;
+typedef version_1_0_7beta17 your_png_h_is_not_version_1_0_7beta17;
diff --git a/pngtrans.c b/pngtrans.c
index c26baca..3c20be8 100644
--- a/pngtrans.c
+++ b/pngtrans.c
@@ -1,7 +1,7 @@
/* pngtrans.c - transforms the data in a row (used by both readers and writers)
*
- * libpng 1.0.7beta16 - June 4, 2000
+ * libpng 1.0.7beta17 - June 24, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngvcrd.c b/pngvcrd.c
index 38aa528..379c421 100644
--- a/pngvcrd.c
+++ b/pngvcrd.c
@@ -2,7 +2,7 @@
*
* For Intel x86 CPU and Microsoft Visual C++ compiler
*
- * libpng 1.0.7beta16 - June 4, 2000
+ * libpng 1.0.7beta17 - June 24, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
* Copyright (c) 1998, Intel Corporation
diff --git a/pngwio.c b/pngwio.c
index fbc25b7..661bebd 100644
--- a/pngwio.c
+++ b/pngwio.c
@@ -1,7 +1,7 @@
/* pngwio.c - functions for data output
*
- * libpng 1.0.7beta16 - June 4, 2000
+ * libpng 1.0.7beta17 - June 24, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngwrite.c b/pngwrite.c
index 48ea615..a2cf79a 100644
--- a/pngwrite.c
+++ b/pngwrite.c
@@ -1,7 +1,7 @@
/* pngwrite.c - general routines to write a PNG file
*
- * libpng 1.0.7beta16 - June 4, 2000
+ * libpng 1.0.7beta17 - June 24, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngwtran.c b/pngwtran.c
index d0e74c9..7a63132 100644
--- a/pngwtran.c
+++ b/pngwtran.c
@@ -1,7 +1,7 @@
/* pngwtran.c - transforms the data in a row for PNG writers
*
- * libpng 1.0.7beta16 - June 4, 2000
+ * libpng 1.0.7beta17 - June 24, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngwutil.c b/pngwutil.c
index df578c7..1a4da53 100644
--- a/pngwutil.c
+++ b/pngwutil.c
@@ -1,7 +1,7 @@
/* pngwutil.c - utilities to write a PNG file
*
- * libpng 1.0.7beta16 - June 4, 2000
+ * libpng 1.0.7beta17 - June 24, 2000
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/scripts/makefile-amiga-wolf.txt b/scripts/makefile-amiga-wolf.txt
deleted file mode 100644
index 4587088..0000000
--- a/scripts/makefile-amiga-wolf.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-# Commodore Amiga Makefile
-# 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 INCLUDEDIR=$(ZLIB) \
- DEFINE=PNG_INTERNAL
-#linker flags
-LDFLAGS= SD ND BATCH
-#link libs
-LDLIBS= libpng.lib libgz.lib LIB:scm.lib LIB:sc.lib Lib:amiga.lib
-# linker
-LN= slink
-# file deletion command
-RM= delete quiet
-# library (.lib) file creation command
-AR= oml
-# make directory command
-MKDIR= makedir
-
-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
-
-libpng.lib: $(OBJS)
--$(RM) libpng.lib
-$(AR) libpng.lib r $(OBJS)
-
-pngtest: pngtest.o libpng.lib
-$(LN) <WITH <
-$(LDFLAGS)
-TO pngtest
-FROM LIB:c.o pngtest.o
-LIB $(LDLIBS)
-<
-
diff --git a/scripts/makefile.amiga b/scripts/makefile.amiga
index f92af3e..4587088 100644
--- a/scripts/makefile.amiga
+++ b/scripts/makefile.amiga
@@ -1,15 +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
@@ -23,8 +28,9 @@
# 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
@@ -40,4 +46,3 @@
LIB $(LDLIBS)
<
-
diff --git a/scripts/makefile.beos b/scripts/makefile.beos
index 5f168ba..dc7b587 100644
--- a/scripts/makefile.beos
+++ b/scripts/makefile.beos
@@ -31,7 +31,7 @@
# read libpng.txt or png.h to see why PNGMAJ is 2. You should not
# have to change it.
PNGMAJ = 2
-PNGMIN = 1.0.7beta16
+PNGMIN = 1.0.7beta17
PNGVER = $(PNGMAJ).$(PNGMIN)
# where make install puts libpng.a, libpng.so*, and png.h
diff --git a/scripts/makefile.dec b/scripts/makefile.dec
index f46c426..6ed1f43 100644
--- a/scripts/makefile.dec
+++ b/scripts/makefile.dec
@@ -14,7 +14,7 @@
# read libpng.txt or png.h to see why PNGMAJ is 2. You should not
# have to change it.
PNGMAJ = 2
-PNGMIN = 1.0.7beta16
+PNGMIN = 1.0.7beta17
PNGVER = $(PNGMAJ).$(PNGMIN)
CC=cc
diff --git a/scripts/makefile.gcmmx b/scripts/makefile.gcmmx
index e6a774b..083bf6f 100644
--- a/scripts/makefile.gcmmx
+++ b/scripts/makefile.gcmmx
@@ -34,7 +34,7 @@
# read libpng.txt or png.h to see why PNGMAJ is 2. You should not
# have to change it.
PNGMAJ = 2
-PNGMIN = 1.0.7beta16
+PNGMIN = 1.0.7beta17
PNGVER = $(PNGMAJ).$(PNGMIN)
INCPATH=$(prefix)/include
diff --git a/scripts/makefile.linux b/scripts/makefile.linux
index 2297d19..5aadc47 100644
--- a/scripts/makefile.linux
+++ b/scripts/makefile.linux
@@ -34,7 +34,7 @@
# read libpng.txt or png.h to see why PNGMAJ is 2. You should not
# have to change it.
PNGMAJ = 2
-PNGMIN = 1.0.7beta16
+PNGMIN = 1.0.7beta17
PNGVER = $(PNGMAJ).$(PNGMIN)
INCPATH=$(prefix)/include
diff --git a/scripts/makefile.sco b/scripts/makefile.sco
index a5f754a..8c543cf 100644
--- a/scripts/makefile.sco
+++ b/scripts/makefile.sco
@@ -25,7 +25,7 @@
# read libpng.txt or png.h to see why PNGMAJ is 2. You should not
# have to change it.
PNGMAJ = 2
-PNGMIN = 1.0.7beta16
+PNGMIN = 1.0.7beta17
PNGVER = $(PNGMAJ).$(PNGMIN)
INCPATH=$(prefix)/include
diff --git a/scripts/makefile.sggcc b/scripts/makefile.sggcc
index e5619ba..72d5d37 100644
--- a/scripts/makefile.sggcc
+++ b/scripts/makefile.sggcc
@@ -19,8 +19,8 @@
LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm
LDSHARED=gcc -shared
-VER=1.0.7beta16
-LIBS=libpng.so.1.0.7beta16
+VER=1.0.7beta17
+LIBS=libpng.so.1.0.7beta17
SHAREDLIB=libpng.so
libdir=$(prefix)/lib32
diff --git a/scripts/makefile.solaris b/scripts/makefile.solaris
index fb2f7e4..81f78b3 100644
--- a/scripts/makefile.solaris
+++ b/scripts/makefile.solaris
@@ -31,7 +31,7 @@
# read libpng.txt or png.h to see why PNGMAJ is 2. You should not
# have to change it.
PNGMAJ = 2
-PNGMIN = 1.0.7beta16
+PNGMIN = 1.0.7beta17
PNGVER = $(PNGMAJ).$(PNGMIN)
INCPATH=$(prefix)/include
diff --git a/scripts/pngdef.pas b/scripts/pngdef.pas
index 3de3bed..914edbd 100644
--- a/scripts/pngdef.pas
+++ b/scripts/pngdef.pas
@@ -5,7 +5,7 @@
interface
const
- PNG_LIBPNG_VER_STRING = '1.0.7beta16';
+ PNG_LIBPNG_VER_STRING = '1.0.7beta17';
PNG_LIBPNG_VER = 10007;
type
diff --git a/scripts/pngos2.def b/scripts/pngos2.def
index 42fc57f..dcb9a32 100644
--- a/scripts/pngos2.def
+++ b/scripts/pngos2.def
@@ -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.