Commit e5818880 authored by hybrid's avatar hybrid

Merge the new libpng version. Seems to take care of the WIN_CE problems on its...

Merge the new libpng version. Seems to take care of the WIN_CE problems on its own, so no need for the 'if 0' check anymore. Also fixes the const static warnings.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@1400 dfc29bdd-3216-0410-991c-e03cc46cb475
parent a43e6376
Libpng 1.2.18 - May 15, 2007 Libpng 1.2.29 - May 8, 2008
This is a public release of libpng, intended for use in production codes. This is a public release of libpng, intended for use in production codes.
...@@ -8,38 +8,50 @@ Files available for download: ...@@ -8,38 +8,50 @@ Files available for download:
Source files with LF line endings (for Unix/Linux) and with a Source files with LF line endings (for Unix/Linux) and with a
"configure" script "configure" script
libpng-1.2.18.tar.gz libpng-1.2.29.tar.gz
libpng-1.2.18.tar.bz2 libpng-1.2.29.tar.lzma
(Get the lzma codec from <http://tukaani.org/lzma>).
libpng-1.2.29.tar.bz2
Source files with LF line endings (for Unix/Linux) without the Source files with LF line endings (for Unix/Linux) without the
"configure" script "configure" script
libpng-1.2.18-no-config.tar.gz libpng-1.2.29-no-config.tar.gz
libpng-1.2.18-no-config.tar.bz2 libpng-1.2.29-no-config.tar.lzma
libpng-1.2.29-no-config.tar.bz2
Source files with CRLF line endings (for Windows), without the Source files with CRLF line endings (for Windows), without the
"configure" script "configure" script
lpng1218.zip lpng1229.zip
lpng1218.tar.bz2 lpng1229.7z
lpng1229.tar.bz2
Project files Project files
libpng-1.2.18-project-netware.zip libpng-1.2.29-project-netware.zip
libpng-1.2.18-project-wince.zip libpng-1.2.29-project-wince.zip
Other information: Other information:
libpng-1.2.18-README.txt libpng-1.2.29-README.txt
libpng-1.2.18-KNOWNBUGS.txt libpng-1.2.29-KNOWNBUGS.txt
libpng-1.2.18-LICENSE.txt libpng-1.2.29-LICENSE.txt
libpng-1.2.18-Y2K-compliance.txt libpng-1.2.29-Y2K-compliance.txt
libpng-1.2.29-[previous version]-diff.txt
Changes since the last public release (1.2.17): Changes since the last public release (1.2.28):
version 1.2.18 [May 15, 2007] version 1.2.29 [May 8, 2008]
Reverted the recent change to symbol-handling in configure script Removed some stray *.diff and *.orig files
Reverted Makefile.in, aclocal.m4, and configure to the libpng-1.2.26
versions.
Added --force to autogen libtoolize options and --force-missing to
automake options.
Changed $(ECHO) to echo in Makefile.am and Makefile.in
Updated all configure files to autoconf-2.62
#ifdef out pnggcrd.c code if using MSC_VER
Send comments/corrections/commendations to png-mng-implement at lists.sf.net Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit (subscription required; visit
......
This diff is collapsed.
Installing libpng version 1.2.18 - May 15, 2007 Installing libpng version 1.2.29 - May 8, 2008
On Unix/Linux and similar systems, you can simply type On Unix/Linux and similar systems, you can simply type
...@@ -44,7 +44,7 @@ to have access to the zlib.h and zconf.h include files that ...@@ -44,7 +44,7 @@ to have access to the zlib.h and zconf.h include files that
correspond to the version of zlib that's installed. correspond to the version of zlib that's installed.
You can rename the directories that you downloaded (they You can rename the directories that you downloaded (they
might be called "libpng-1.2.18" or "lpng109" and "zlib-1.2.1" might be called "libpng-1.2.29" or "lpng109" and "zlib-1.2.1"
or "zlib121") so that you have directories called "zlib" and "libpng". or "zlib121") so that you have directories called "zlib" and "libpng".
Your directory structure should look like this: Your directory structure should look like this:
...@@ -101,15 +101,9 @@ include ...@@ -101,15 +101,9 @@ include
CMakeLists.txt => "cmake" script CMakeLists.txt => "cmake" script
makefile.std => Generic UNIX makefile (cc, creates static libpng.a) makefile.std => Generic UNIX makefile (cc, creates static libpng.a)
makefile.elf => Linux/ELF makefile symbol versioning, makefile.elf => Linux/ELF makefile symbol versioning,
gcc, creates libpng12.so.0.1.2.18) gcc, creates libpng12.so.0.1.2.29)
makefile.linux => Linux/ELF makefile makefile.linux => Linux/ELF makefile
(gcc, creates libpng12.so.0.1.2.18) (gcc, creates libpng12.so.0.1.2.29)
makefile.gcmmx => Linux/ELF makefile
(gcc, creates libpng12.so.0.1.2.18,
uses assembler code tuned for Intel MMX platform)
makefile.nommx => Linux/ELF makefile
(gcc, creates libpng12.so.0.1.2.18
does not use Intel MMX assembler code)
makefile.gcc => Generic makefile (gcc, creates static libpng.a) makefile.gcc => Generic makefile (gcc, creates static libpng.a)
makefile.knr => Archaic UNIX Makefile that converts files with makefile.knr => Archaic UNIX Makefile that converts files with
ansi2knr (Requires ansi2knr.c from ansi2knr (Requires ansi2knr.c from
...@@ -131,12 +125,14 @@ include ...@@ -131,12 +125,14 @@ include
makefile.openbsd => OpenBSD makefile makefile.openbsd => OpenBSD makefile
makefile.sgi => Silicon Graphics IRIX makefile (cc, creates static lib) makefile.sgi => Silicon Graphics IRIX makefile (cc, creates static lib)
makefile.sggcc => Silicon Graphics (gcc, makefile.sggcc => Silicon Graphics (gcc,
creates libpng12.so.0.1.2.18) creates libpng12.so.0.1.2.29)
makefile.sunos => Sun makefile makefile.sunos => Sun makefile
makefile.solaris => Solaris 2.X makefile (gcc, makefile.solaris => Solaris 2.X makefile (gcc,
creates libpng12.so.0.1.2.18) creates libpng12.so.0.1.2.29)
makefile.solaris-x86 => Solaris/intelMMX 2.X makefile (gcc,
creates libpng12.so.0.1.2.29)
makefile.so9 => Solaris 9 makefile (gcc, makefile.so9 => Solaris 9 makefile (gcc,
creates libpng12.so.0.1.2.18) creates libpng12.so.0.1.2.29)
makefile.32sunu => Sun Ultra 32-bit makefile makefile.32sunu => Sun Ultra 32-bit makefile
makefile.64sunu => Sun Ultra 64-bit makefile makefile.64sunu => Sun Ultra 64-bit makefile
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
...@@ -152,10 +148,7 @@ include ...@@ -152,10 +148,7 @@ include
makefile.tc3 => Turbo C 3.0 makefile makefile.tc3 => Turbo C 3.0 makefile
makefile.dj2 => DJGPP 2 makefile makefile.dj2 => DJGPP 2 makefile
makefile.msc => Microsoft C makefile makefile.msc => Microsoft C makefile
makefile.vcawin32 => makefile for Microsoft Visual C++ 5.0 and later (uses makefile.vcwin32 => makefile for Microsoft Visual C++ 4.0 and later
assembler code tuned for Intel MMX platform)
makefile.vcwin32 => makefile for Microsoft Visual C++ 4.0 and later (does
not use assembler code)
makefile.os2 => OS/2 Makefile (gcc and emx, requires pngos2.def) makefile.os2 => OS/2 Makefile (gcc and emx, requires pngos2.def)
pngos2.def => OS/2 module definition file used by makefile.os2 pngos2.def => OS/2 module definition file used by makefile.os2
makefile.watcom => Watcom 10a+ Makefile, 32-bit flat memory model makefile.watcom => Watcom 10a+ Makefile, 32-bit flat memory model
......
Known bugs in libpng version 1.2.18 Known bugs in libpng version 1.2.29
1. April 22, 2001: pnggccrd.c has been reported to crash on NetBSD when 1. February 23, 2006: The custom makefiles don't build libpng with -lz.
reading interlaced PNG files, when assembler code is enabled but running
on a non-MMX i386 platform.
STATUS: Under investigation. The change to pnggccrd.c in libpng-1.2.1
fixed a problem under FreeBSD but not the problem with NetBSD, which
still fails as of libpng-1.2.2rc1.
2. February 23, 2006: The custom makefiles don't build libpng with -lz.
STATUS: This is a subject of debate. The change will probably be made STATUS: This is a subject of debate. The change will probably be made
as a part of a major overhaul of the makefiles in libpng version 1.3.0. as a part of a major overhaul of the makefiles in libpng version 1.4.0.
3. February 24, 2006: The Makefile generated by the "configure" script 2. February 24, 2006: The Makefile generated by the "configure" script
fails to install symbolic links fails to install symbolic links
libpng12.so => libpng12.so.0.1.2.9betaN libpng12.so => libpng12.so.0.1.2.9betaN
that are generated by the custom makefiles. that are generated by the custom makefiles.
STATUS: For now, system library builders should use the custom makefiles. 3. September 4, 2007: There is a report that pngtest crashes on MacOS 10.
4. March 2007: Building 1.2.16 with PNG_ASSEMBLER_CODE_SUPPORTED; STATUS: workarounds are
PNG_MMX_CODE_SUPPORTED results in multiple definitions of png_combine_row, 1) Compile without optimization (crashes are observed with
png_do_read_interlace, and png_read_filter_row -arch i386 and -O2 or -O3, using gcc-4.0.1).
2) Compile pngtest.c with PNG_DEBUG defined (the bug goes away if
you try to look at it).
3) Ignore the crash. The library itself seems to be OK.
STATUS: Investigating.
...@@ -8,8 +8,8 @@ COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: ...@@ -8,8 +8,8 @@ COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
If you modify libpng you may insert additional notices immediately following If you modify libpng you may insert additional notices immediately following
this sentence. this sentence.
libpng versions 1.2.6, August 15, 2004, through 1.2.18, May 15, 2007, are libpng versions 1.2.6, August 15, 2004, through 1.2.29, May 8, 2008, are
Copyright (c) 2004, 2006-2007 Glenn Randers-Pehrson, and are Copyright (c) 2004, 2006-2008 Glenn Randers-Pehrson, and are
distributed according to the same disclaimer and license as libpng-1.2.5 distributed according to the same disclaimer and license as libpng-1.2.5
with the following individual added to the list of Contributing Authors with the following individual added to the list of Contributing Authors
...@@ -106,4 +106,4 @@ certification mark of the Open Source Initiative. ...@@ -106,4 +106,4 @@ certification mark of the Open Source Initiative.
Glenn Randers-Pehrson Glenn Randers-Pehrson
glennrp at users.sourceforge.net glennrp at users.sourceforge.net
May 15, 2007 May 8, 2008
README for libpng version 1.2.18 - May 15, 2007 (shared library 12.0) README for libpng version 1.2.29 - May 8, 2008 (shared library 12.0)
See the note about version numbers near the top of png.h See the note about version numbers near the top of png.h
See INSTALL for instructions on how to install libpng. See INSTALL for instructions on how to install libpng.
Libpng comes in several distribution formats. Get libpng-*.tar.gz Libpng comes in several distribution formats. Get libpng-*.tar.gz,
or libpng-*.tar.bz2 if you want UNIX-style line endings in the text libpng-*.tar.lzma, or libpng-*.tar.bz2 if you want UNIX-style line
files, or lpng*.zip if you want DOS-style line endings. endings in the text files, or lpng*.7z or lpng*.zip if you want DOS-style
line endings.
Version 0.89 was the first official release of libpng. Don't let the Version 0.89 was the first official release of libpng. Don't let the
fact that it's the first release fool you. The libpng library has been in fact that it's the first release fool you. The libpng library has been in
...@@ -77,12 +78,12 @@ compression library that is useful for more things than just PNG files. ...@@ -77,12 +78,12 @@ compression library that is useful for more things than just PNG files.
You can use zlib as a drop-in replacement for fread() and fwrite() if You can use zlib as a drop-in replacement for fread() and fwrite() if
you are so inclined. you are so inclined.
zlib should be available at the same place that libpng is, or at. zlib should be available at the same place that libpng is, or at
ftp://ftp.info-zip.org/pub/infozip/zlib ftp://ftp.simplesystems.org/pub/png/src/
You may also want a copy of the PNG specification. It is available You may also want a copy of the PNG specification. It is available
as an RFC, a W3C Recommendation, and an ISO/IEC Standard. You can find as an RFC, a W3C Recommendation, and an ISO/IEC Standard. You can find
these at http://www.libpng.org/pub/png/documents/ these at http://www.libpng.org/pub/png/pngdocs.html
This code is currently being archived at libpng.sf.net in the This code is currently being archived at libpng.sf.net in the
[DOWNLOAD] area, and on CompuServe, Lib 20 (PNG SUPPORT) [DOWNLOAD] area, and on CompuServe, Lib 20 (PNG SUPPORT)
...@@ -113,8 +114,8 @@ given in previous versions of this document. He and Andreas will read mail ...@@ -113,8 +114,8 @@ given in previous versions of this document. He and Andreas will read mail
addressed to the png-implement list, however. addressed to the png-implement list, however.
Please do not send general questions about PNG. Send them to Please do not send general questions about PNG. Send them to
the (png-list at ccrc.wustl.edu, subscription required, write to the (png-mng-misc at lists.sourceforge.net, subscription required, visit
majordomo at ccrc.wustl.edu with "subscribe png-list" in your message). https://lists.sourceforge.net/lists/listinfo/png-mng-implement to subscribe)
On the other hand, On the other hand,
please do not send libpng questions to that address, send them to me please do not send libpng questions to that address, send them to me
or to the png-implement list. I'll or to the png-implement list. I'll
...@@ -125,7 +126,7 @@ and ...". If in doubt, send questions to me. I'll bounce them ...@@ -125,7 +126,7 @@ and ...". If in doubt, send questions to me. I'll bounce them
to others, if necessary. to others, if necessary.
Please do not send suggestions on how to change PNG. We have Please do not send suggestions on how to change PNG. We have
been discussing PNG for nine years now, and it is official and been discussing PNG for twelve years now, and it is official and
finished. If you have suggestions for libpng, however, I'll finished. If you have suggestions for libpng, however, I'll
gladly listen. Even if your suggestion is not used immediately, gladly listen. Even if your suggestion is not used immediately,
it may be used later. it may be used later.
...@@ -140,6 +141,7 @@ Files in this distribution: ...@@ -140,6 +141,7 @@ Files in this distribution:
TODO => Things not implemented in the current library TODO => Things not implemented in the current library
Y2KINFO => Statement of Y2K compliance Y2KINFO => Statement of Y2K compliance
example.c => Example code for using libpng functions example.c => Example code for using libpng functions
libpng-*-*-diff.txt => Diff from previous release
libpng.3 => manual page for libpng (includes libpng.txt) libpng.3 => manual page for libpng (includes libpng.txt)
libpng.txt => Description of libpng and its functions libpng.txt => Description of libpng and its functions
libpngpf.3 => manual page for libpng's private functions libpngpf.3 => manual page for libpng's private functions
...@@ -147,7 +149,6 @@ Files in this distribution: ...@@ -147,7 +149,6 @@ Files in this distribution:
png.c => Basic interface functions common to library png.c => Basic interface functions common to library
png.h => Library function and interface declarations png.h => Library function and interface declarations
pngconf.h => System specific library configuration pngconf.h => System specific library configuration
pngasmrd.h => Header file for assembler-coded functions
pngerror.c => Error/warning message I/O functions pngerror.c => Error/warning message I/O functions
pngget.c => Functions for retrieving info from struct pngget.c => Functions for retrieving info from struct
pngmem.c => Memory handling functions pngmem.c => Memory handling functions
...@@ -190,11 +191,11 @@ Files in this distribution: ...@@ -190,11 +191,11 @@ Files in this distribution:
descrip.mms => VMS makefile for MMS or MMK descrip.mms => VMS makefile for MMS or MMK
makefile.std => Generic UNIX makefile (cc, creates static libpng.a) makefile.std => Generic UNIX makefile (cc, creates static libpng.a)
makefile.elf => Linux/ELF makefile symbol versioning, makefile.elf => Linux/ELF makefile symbol versioning,
gcc, creates libpng12.so.0.1.2.18) gcc, creates libpng12.so.0.1.2.29)
makefile.linux => Linux/ELF makefile makefile.linux => Linux/ELF makefile
(gcc, creates libpng12.so.0.1.2.18) (gcc, creates libpng12.so.0.1.2.29)
makefile.gcmmx => Linux/ELF makefile makefile.gcmmx => Linux/ELF makefile
(gcc, creates libpng12.so.0.1.2.18, (gcc, creates libpng12.so.0.1.2.29,
uses assembler code tuned for Intel MMX platform) uses assembler code tuned for Intel MMX platform)
makefile.gcc => Generic makefile (gcc, creates static libpng.a) makefile.gcc => Generic makefile (gcc, creates static libpng.a)
makefile.knr => Archaic UNIX Makefile that converts files with makefile.knr => Archaic UNIX Makefile that converts files with
...@@ -216,12 +217,12 @@ Files in this distribution: ...@@ -216,12 +217,12 @@ Files in this distribution:
makefile.openbsd => OpenBSD makefile makefile.openbsd => OpenBSD makefile
makefile.sgi => Silicon Graphics IRIX (cc, creates static lib) makefile.sgi => Silicon Graphics IRIX (cc, creates static lib)
makefile.sggcc => Silicon Graphics makefile.sggcc => Silicon Graphics
(gcc, creates libpng12.so.0.1.2.18) (gcc, creates libpng12.so.0.1.2.29)
makefile.sunos => Sun makefile makefile.sunos => Sun makefile
makefile.solaris => Solaris 2.X makefile makefile.solaris => Solaris 2.X makefile
(gcc, creates libpng12.so.0.1.2.18) (gcc, creates libpng12.so.0.1.2.29)
makefile.so9 => Solaris 9 makefile makefile.so9 => Solaris 9 makefile
(gcc, creates libpng12.so.0.1.2.18) (gcc, creates libpng12.so.0.1.2.29)
makefile.32sunu => Sun Ultra 32-bit makefile makefile.32sunu => Sun Ultra 32-bit makefile
makefile.64sunu => Sun Ultra 64-bit makefile makefile.64sunu => Sun Ultra 64-bit makefile
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
...@@ -256,7 +257,7 @@ Good luck, and happy coding. ...@@ -256,7 +257,7 @@ Good luck, and happy coding.
-Andreas Eric Dilger (former maintainer, 1996-1997) -Andreas Eric Dilger (former maintainer, 1996-1997)
Internet: adilger at enel.ucalgary.ca Internet: adilger at enel.ucalgary.ca
Web: http://www-mddsp.enel.ucalgary.ca/People/adilger/ Web: http://members.shaw.ca/adilger/
-Guy Eric Schalnat (original author and former maintainer, 1995-1996) -Guy Eric Schalnat (original author and former maintainer, 1995-1996)
(formerly of Group 42, Inc) (formerly of Group 42, Inc)
......
TODO - list of things to do for libpng:
Final bug fixes.
Improve API by hiding the png_struct and png_info structs.
Finish work on the no-floating-point version (including gamma compensation)
Better C++ wrapper/full C++ implementation?
Fix problem with C++ and EXTERN "C".
cHRM transformation.
Improve setjmp/longjmp usage or remove it in favor of returning error codes.
Add "grayscale->palette" transformation and "palette->grayscale" detection.
Improved dithering.
Multi-lingual error and warning message support.
Complete sRGB transformation (presently it simply uses gamma=0.45455).
Man pages for function calls.
Better documentation.
Better filter selection
(counting huffman bits/precompression? filter inertia? filter costs?).
Histogram creation.
Text conversion between different code pages (Latin-1 -> Mac and DOS).
Should we always malloc 2^bit_depth PLTE/tRNS/hIST entries for safety?
Build gamma tables using fixed point (and do away with floating point entirely).
Use greater precision when changing to linear gamma for compositing against
background and doing rgb-to-gray transformation.
Investigate pre-incremented loop counters and other loop constructions.
Y2K compliance in libpng: Y2K compliance in libpng:
========================= =========================
May 15, 2007 May 8, 2008
Since the PNG Development group is an ad-hoc body, we can't make Since the PNG Development group is an ad-hoc body, we can't make
an official declaration. an official declaration.
This is your unofficial assurance that libpng from version 0.71 and This is your unofficial assurance that libpng from version 0.71 and
upward through 1.2.18 are Y2K compliant. It is my belief that earlier upward through 1.2.29 are Y2K compliant. It is my belief that earlier
versions were also Y2K compliant. versions were also Y2K compliant.
Libpng only has three year fields. One is a 2-byte unsigned integer Libpng only has three year fields. One is a 2-byte unsigned integer
......
#!/bin/sh #!/bin/sh
echo " echo "
There is no \"configure\" script in this distribution of There is no \"configure\" script in this distribution of
libpng-1.2.18. libpng-1.2.29.
Instead, please copy the appropriate makefile for your system from the Instead, please copy the appropriate makefile for your system from the
\"scripts\" directory. Read the INSTALL file for more details. \"scripts\" directory. Read the INSTALL file for more details.
Update, July 2004: you can get a \"configure\" based distribution Update, July 2004: you can get a \"configure\" based distribution
from the libpng distribution sites. Download the file from the libpng distribution sites. Download the file
libpng-1.2.18.tar.gz or libpng-1.2.18.tar.bz2 libpng-1.2.29.tar.gz, libpng-1.2.29.tar.lzma, or libpng-1.2.29.tar.bz2
" "
This diff is collapsed.
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
Copyright (c) 1998-2001 Greg Roelofs. All rights reserved. Copyright (c) 1998-2008 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind, This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of be held liable for any damages arising in any way from the use of
this software. this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose, Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions: it freely, subject to the following restrictions:
...@@ -23,4 +30,21 @@ ...@@ -23,4 +30,21 @@
and contributors for the book, "PNG: The Definitive Guide," and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates. published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
# Sample makefile for rpng-win / rpng2-win / wpng using mingw32-gcc and make.
# Greg Roelofs
# Last modified: 2 June 2007
#
# The programs built by this makefile are described in the book,
# "PNG: The Definitive Guide," by Greg Roelofs (O'Reilly and
# Associates, 1999). Go buy a copy, eh? Well, OK, it's not
# generally for sale anymore, but it's the thought that counts,
# right? (Hint: http://www.libpng.org/pub/png/book/ )
#
# Invoke this makefile from a DOS-prompt window via:
#
# make -f Makefile.mingw32
#
# This makefile assumes libpng and zlib have already been built or downloaded
# and are in subdirectories at the same level as the current subdirectory
# (as indicated by the PNGDIR and ZDIR macros below). It makes no assumptions
# at all about the mingw32 installation tree (W32DIR). Edit as appropriate.
#
# Note that the names of the dynamic and static libpng and zlib libraries
# used below may change in later releases of the libraries. This makefile
# builds both statically and dynamically linked executables by default.
# (You need only one set, but for testing it can be handy to have both.)
# macros --------------------------------------------------------------------
#PNGDIR = ../..# for libpng-x.y.z/contrib/gregbook builds
PNGDIR = ../libpng-win32
PNGINC = -I$(PNGDIR)
PNGLIBd = $(PNGDIR)/libpng.dll.a # dynamically linked
PNGLIBs = $(PNGDIR)/libpng.a # statically linked, local libpng
#ZDIR = ../../../zlib-win32# for libpng-x.y.z/contrib/gregbook builds
ZDIR = ../zlib-win32
ZINC = -I$(ZDIR)
ZLIBd = $(ZDIR)/libzdll.a
ZLIBs = $(ZDIR)/libz.a
# change this to be the path where mingw32 installs its stuff:
W32DIR =
#W32DIR = /usr/local/cross-tools/i386-mingw32msvc
W32INC = -I$(W32DIR)/include
W32LIB = $(W32DIR)/lib/libuser32.a $(W32DIR)/lib/libgdi32.a
CC = gcc
#CC = i386-mingw32msvc-gcc # e.g., Linux -> Win32 cross-compilation
LD = $(CC)
RM = rm -f
CFLAGS = -O -Wall $(INCS) $(MINGW_CCFLAGS)
# [note that -Wall is a gcc-specific compilation flag ("most warnings on")]
# [-ansi, -pedantic and -W can also be used]
LDFLAGS = $(MINGW_LDFLAGS)
O = .o
E = .exe
INCS = $(PNGINC) $(ZINC) $(W32INC)
RLIBSd = $(PNGLIBd) $(ZLIBd) $(W32LIB) -lm
RLIBSs = $(PNGLIBs) $(ZLIBs) $(W32LIB) -lm
WLIBSd = $(PNGLIBd) $(ZLIBd)
WLIBSs = $(PNGLIBs) $(ZLIBs)
RPNG = rpng-win
RPNG2 = rpng2-win
WPNG = wpng
ROBJSd = $(RPNG)$(O) readpng.pic$(O)
ROBJS2d = $(RPNG2)$(O) readpng2.pic$(O)
WOBJSd = $(WPNG)$(O) writepng.pic$(O)
RPNGs = $(RPNG)-static
RPNG2s = $(RPNG2)-static
WPNGs = $(WPNG)-static
ROBJSs = $(RPNG)$(O) readpng$(O)
ROBJS2s = $(RPNG2)$(O) readpng2$(O)
WOBJSs = $(WPNG)$(O) writepng$(O)
STATIC_EXES = $(RPNGs)$(E) $(RPNG2s)$(E) $(WPNGs)$(E)
DYNAMIC_EXES = $(RPNG)$(E) $(RPNG2)$(E) $(WPNG)$(E)
EXES = $(STATIC_EXES) $(DYNAMIC_EXES)
# implicit make rules -------------------------------------------------------
.c$(O):
$(CC) -c $(CFLAGS) $<
%.pic$(O): %.c
$(CC) -c $(CFLAGS) -DPNG_BUILD_DLL -o $@ $<
# dependencies --------------------------------------------------------------
all: $(EXES)
$(RPNGs)$(E): $(ROBJSs)
$(LD) $(LDFLAGS) -o $@ $(ROBJSs) $(RLIBSs)
$(RPNG)$(E): $(ROBJSd)
$(LD) $(LDFLAGS) -o $@ $(ROBJSd) $(RLIBSd)
$(RPNG2s)$(E): $(ROBJS2s)
$(LD) $(LDFLAGS) -o $@ $(ROBJS2s) $(RLIBSs)
$(RPNG2)$(E): $(ROBJS2d)
$(LD) $(LDFLAGS) -o $@ $(ROBJS2d) $(RLIBSd)
$(WPNGs)$(E): $(WOBJSs)
$(LD) $(LDFLAGS) -o $@ $(WOBJSs) $(WLIBSs)
$(WPNG)$(E): $(WOBJSd)
$(LD) $(LDFLAGS) -o $@ $(WOBJSd) $(WLIBSd)
$(RPNG)$(O): $(RPNG).c readpng.h
$(RPNG2)$(O): $(RPNG2).c readpng2.h
$(WPNG)$(O): $(WPNG).c writepng.h
readpng$(O) readpng.pic$(O): readpng.c readpng.h
readpng2$(O) readpng2.pic$(O): readpng2.c readpng2.h
writepng$(O) writepng.pic$(O): writepng.c writepng.h
# maintenance ---------------------------------------------------------------
clean:
$(RM) $(EXES)
$(RM) $(ROBJSs) $(ROBJS2s) $(WOBJSs)
$(RM) $(ROBJSd) $(ROBJS2d) $(WOBJSd)
# Sample makefile for rpng-x / rpng2-x / wpng using gcc and make. # Sample makefile for rpng-x / rpng2-x / wpng using gcc and make.
# Greg Roelofs # Greg Roelofs
# Last modified: 7 March 2002 # Last modified: 2 June 2007
# #
# The programs built by this makefile are described in the book, # The programs built by this makefile are described in the book,
# "PNG: The Definitive Guide," by Greg Roelofs (O'Reilly and # "PNG: The Definitive Guide," by Greg Roelofs (O'Reilly and
# Associates, 1999). Go buy a copy, eh? Buy some for friends # Associates, 1999). Go buy a copy, eh? Well, OK, it's not
# and family, too. (Not that this is a blatant plug or anything.) # generally for sale anymore, but it's the thought that counts,
# right? (Hint: http://www.libpng.org/pub/png/book/ )
# #
# Invoke this makefile from a shell prompt in the usual way; for example: # Invoke this makefile from a shell prompt in the usual way; for example:
# #
# make -f Makefile.unx # make -f Makefile.unx
# #
# This makefile assumes libpng and zlib have already been built or downloaded # This makefile assumes libpng and zlib have already been built or downloaded
# and are both installed in /usr/local/{include,lib} (as indicated by the # and are installed in /usr/local/{include,lib} or as otherwise indicated by
# PNG* and Z* macros below). Edit as appropriate--choose only ONE each of # the PNG* and Z* macros below. Edit as appropriate--choose only ONE each of
# the PNGINC, PNGLIB, ZINC and ZLIB lines. # the PNGINC, PNGLIBd, PNGLIBs, ZINC, ZLIBd and ZLIBs lines.
# #
# This makefile builds statically linked executables (against libpng and zlib, # This makefile builds both dynamically and statically linked executables
# that is), but that can be changed by uncommenting the appropriate PNGLIB and # (against libpng and zlib, that is), but that can be changed by modifying
# ZLIB lines. # the "EXES =" line. (You need only one set, but for testing it can be handy
# to have both.)
# macros -------------------------------------------------------------------- # macros --------------------------------------------------------------------
PNGINC = -I/usr/local/include/libpng12 #PNGDIR = /usr/local/lib
#PNGLIB = -L/usr/local/lib -lpng12 # dynamically linked against libpng #PNGINC = -I/usr/local/include/libpng12
PNGLIB = /usr/local/lib/libpng12.a # statically linked against libpng #PNGLIBd = -L$(PNGDIR) -lpng12 # dynamically linked, installed libpng
#PNGLIBs = $(PNGDIR)/libpng12.a # statically linked, installed libpng
# or: # or:
#PNGINC = -I../libpng PNGDIR = ../..# this one is for libpng-x.y.z/contrib/gregbook builds
#PNGLIB = -L../libpng -lpng #PNGDIR = ../libpng
#PNGLIB = ../libpng/libpng.a PNGINC = -I$(PNGDIR)
PNGLIBd = -Wl,-rpath,$(PNGDIR) -L$(PNGDIR) -lpng12 # dynamically linked
PNGLIBs = $(PNGDIR)/libpng.a # statically linked, local libpng
ZDIR = /usr/local/lib
#ZDIR = /usr/lib64
ZINC = -I/usr/local/include ZINC = -I/usr/local/include
#ZLIB = -L/usr/local/lib -lz # dynamically linked against zlib ZLIBd = -L$(ZDIR) -lz # dynamically linked against zlib
ZLIB = /usr/local/lib/libz.a # statically linked against zlib ZLIBs = $(ZDIR)/libz.a # statically linked against zlib
#ZINC = -I../zlib # or:
#ZLIB = -L../zlib -lz #ZDIR = ../zlib
#ZLIB = ../zlib/libz.a #ZINC = -I$(ZDIR)
#ZLIBd = -Wl,-rpath,$(ZDIR) -L$(ZDIR) -lz # -rpath allows in-place testing
#ZLIBs = $(ZDIR)/libz.a
#XINC = -I/usr/include # old-style, stock X distributions #XINC = -I/usr/include # old-style, stock X distributions
#XLIB = -L/usr/lib/X11 -lX11 #XLIB = -L/usr/lib/X11 -lX11 # (including SGI IRIX)
#XINC = -I/usr/openwin/include # Sun workstations (OpenWindows) #XINC = -I/usr/openwin/include # Sun workstations (OpenWindows)
#XLIB = -L/usr/openwin/lib -lX11 #XLIB = -L/usr/openwin/lib -lX11
XINC = -I/usr/X11R6/include # new X distributions (XFree86, etc.) XINC = -I/usr/X11R6/include # new X distributions (X.org, etc.)
XLIB = -L/usr/X11R6/lib -lX11 XLIB = -L/usr/X11R6/lib -lX11
#XLIB = -L/usr/X11R6/lib64 -lX11 # e.g., Red Hat on AMD64
INCS = $(PNGINC) $(ZINC) $(XINC) INCS = $(PNGINC) $(ZINC) $(XINC)
RLIBS = $(PNGLIB) $(ZLIB) $(XLIB) -lm RLIBSd = $(PNGLIBd) $(ZLIBd) $(XLIB) -lm
WLIBS = $(PNGLIB) $(ZLIB) RLIBSs = $(PNGLIBs) $(ZLIBs) $(XLIB) -lm
WLIBSd = $(PNGLIBd) $(ZLIBd) -lm
WLIBSs = $(PNGLIBs) $(ZLIBs)
CC = gcc CC = gcc
LD = gcc LD = gcc
RM = rm -f RM = rm -f
CFLAGS = -O -Wall $(INCS) CFLAGS = -O -Wall $(INCS) -DFEATURE_LOOP
# [note that -Wall is a gcc-specific compilation flag ("most warnings on")] # [note that -Wall is a gcc-specific compilation flag ("most warnings on")]
# [-ansi, -pedantic and -W can also be used] # [-ansi, -pedantic and -W can also be used]
LDFLAGS = LDFLAGS =
O = .o O = .o
E = E =
RPNG = rpng-x RPNG = rpng-x
RPNG2 = rpng2-x RPNG2 = rpng2-x
WPNG = wpng WPNG = wpng
RPNGs = $(RPNG)-static
RPNG2s = $(RPNG2)-static
WPNGs = $(WPNG)-static
ROBJS = $(RPNG)$(O) readpng$(O) ROBJS = $(RPNG)$(O) readpng$(O)
ROBJS2 = $(RPNG2)$(O) readpng2$(O) ROBJS2 = $(RPNG2)$(O) readpng2$(O)
WOBJS = $(WPNG)$(O) writepng$(O) WOBJS = $(WPNG)$(O) writepng$(O)
EXES = $(RPNG)$(E) $(RPNG2)$(E) $(WPNG)$(E) STATIC_EXES = $(RPNGs)$(E) $(RPNG2s)$(E) $(WPNGs)$(E)
DYNAMIC_EXES = $(RPNG)$(E) $(RPNG2)$(E) $(WPNG)$(E)
EXES = $(STATIC_EXES) $(DYNAMIC_EXES)
# implicit make rules ------------------------------------------------------- # implicit make rules -------------------------------------------------------
...@@ -80,14 +99,23 @@ EXES = $(RPNG)$(E) $(RPNG2)$(E) $(WPNG)$(E) ...@@ -80,14 +99,23 @@ EXES = $(RPNG)$(E) $(RPNG2)$(E) $(WPNG)$(E)
all: $(EXES) all: $(EXES)
$(RPNGs)$(E): $(ROBJS)
$(LD) $(LDFLAGS) -o $@ $(ROBJS) $(RLIBSs)
$(RPNG)$(E): $(ROBJS) $(RPNG)$(E): $(ROBJS)
$(LD) $(LDFLAGS) -o $@ $(ROBJS) $(RLIBS) $(LD) $(LDFLAGS) -o $@ $(ROBJS) $(RLIBSd)
$(RPNG2s)$(E): $(ROBJS2)
$(LD) $(LDFLAGS) -o $@ $(ROBJS2) $(RLIBSs)
$(RPNG2)$(E): $(ROBJS2) $(RPNG2)$(E): $(ROBJS2)
$(LD) $(LDFLAGS) -o $@ $(ROBJS2) $(RLIBS) $(LD) $(LDFLAGS) -o $@ $(ROBJS2) $(RLIBSd)
$(WPNGs)$(E): $(WOBJS)
$(LD) $(LDFLAGS) -o $@ $(WOBJS) $(WLIBSs)
$(WPNG)$(E): $(WOBJS) $(WPNG)$(E): $(WOBJS)
$(LD) $(LDFLAGS) -o $@ $(WOBJS) $(WLIBS) $(LD) $(LDFLAGS) -o $@ $(WOBJS) $(WLIBSd)
$(RPNG)$(O): $(RPNG).c readpng.h $(RPNG)$(O): $(RPNG).c readpng.h
$(RPNG2)$(O): $(RPNG2).c readpng2.h $(RPNG2)$(O): $(RPNG2).c readpng2.h
......
# Sample makefile for rpng-win / rpng2-win / wpng using MSVC and NMAKE. # Sample makefile for rpng-win / rpng2-win / wpng using MSVC and NMAKE.
# Greg Roelofs # Greg Roelofs
# Last modified: 16 February 1999 # Last modified: 2 June 2007
# #
# The programs built by this makefile are described in the book, # The programs built by this makefile are described in the book,
# "PNG: The Definitive Guide," by Greg Roelofs (O'Reilly and # "PNG: The Definitive Guide," by Greg Roelofs (O'Reilly and
# Associates, 1999). Go buy a copy, eh? Buy some for friends # Associates, 1999). Go buy a copy, eh? Well, OK, it's not
# and family, too. (Not that this is a blatant plug or anything.) # generally for sale anymore, but it's the thought that counts,
# right? (Hint: http://www.libpng.org/pub/png/book/ )
# #
# Invoke this makefile from a DOS prompt window via: # Invoke this makefile from a DOS prompt window via:
# #
...@@ -53,7 +54,7 @@ CC = cl ...@@ -53,7 +54,7 @@ CC = cl
LD = link LD = link
RM = del RM = del
CFLAGS = -nologo -O -W3 $(INCS) $(cvars) CFLAGS = -nologo -O -W3 $(INCS) $(cvars)
# [note that -Wall is an MSVC-specific compilation flag ("all warnings on")] # [note that -W3 is an MSVC-specific compilation flag ("all warnings on")]
# [see %devstudio%\vc\include\win32.mak for cvars macro definition] # [see %devstudio%\vc\include\win32.mak for cvars macro definition]
O = .obj O = .obj
E = .exe E = .exe
......
...@@ -22,7 +22,8 @@ below. ...@@ -22,7 +22,8 @@ below.
Files: Files:
README this file README this file
LICENSE terms of distribution and reuse (BSD-like) LICENSE terms of distribution and reuse (BSD-like or GNU GPL)
COPYING GNU General Public License (GPL)
Makefile.unx Unix makefile Makefile.unx Unix makefile
Makefile.w32 Windows (MSVC) makefile Makefile.w32 Windows (MSVC) makefile
...@@ -54,15 +55,15 @@ mation and links to the latest version of the source code, and Chapters ...@@ -54,15 +55,15 @@ mation and links to the latest version of the source code, and Chapters
13-15 of the book for detailed discussion of the three programs. 13-15 of the book for detailed discussion of the three programs.
Greg Roelofs Greg Roelofs
newt@pobox.com http://pobox.com/~newt/greg_contact.html
30 June 2001 16 March 2008
BUILD INSTRUCTIONS BUILD INSTRUCTIONS
- Prerequisites (in order of compilation): - Prerequisites (in order of compilation):
- zlib http://www.gzip.org/zlib/ - zlib http://zlib.net/
- libpng http://www.libpng.org/pub/png/libpng.html - libpng http://www.libpng.org/pub/png/libpng.html
- pngbook http://www.libpng.org/pub/png/book/sources.html - pngbook http://www.libpng.org/pub/png/book/sources.html
...@@ -150,9 +151,9 @@ BUILD INSTRUCTIONS ...@@ -150,9 +151,9 @@ BUILD INSTRUCTIONS
To run the programs, they probably first need to be set up as "foreign To run the programs, they probably first need to be set up as "foreign
symbols," with "disk" and "dir" set appropriately: symbols," with "disk" and "dir" set appropriately:
$ rpng == "$disk:[dir]rpng-x.exe" $ rpng == "$disk:[dir]rpng-x.exe"
$ rpng2 == "$disk:[dir]rpng2-x.exe" $ rpng2 == "$disk:[dir]rpng2-x.exe"
$ wpng == "$disk:[dir]wpng.exe" $ wpng == "$disk:[dir]wpng.exe"
All three will print a basic usage screen when run without any command- All three will print a basic usage screen when run without any command-
line arguments; see the book for more details. Note that the options line arguments; see the book for more details. Note that the options
...@@ -176,7 +177,7 @@ RUNNING THE PROGRAMS: (VERY) BRIEF INTRO ...@@ -176,7 +177,7 @@ RUNNING THE PROGRAMS: (VERY) BRIEF INTRO
wpng is a purely command-line image converter from binary PBMPLUS/NetPBM wpng is a purely command-line image converter from binary PBMPLUS/NetPBM
format (.pgm or .ppm) to PNG; for example, format (.pgm or .ppm) to PNG; for example,
wpng -time < toucan.ppm > toucan.png wpng -time < toucan-notrans.ppm > toucan-notrans.png
would convert the specified PPM file (using redirection) to PNG, auto- would convert the specified PPM file (using redirection) to PNG, auto-
matically setting the PNG modification-time chunk. matically setting the PNG modification-time chunk.
......
...@@ -4,13 +4,20 @@ ...@@ -4,13 +4,20 @@
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
Copyright (c) 1998-2000 Greg Roelofs. All rights reserved. Copyright (c) 1998-2007 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind, This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of be held liable for any damages arising in any way from the use of
this software. this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose, Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions: it freely, subject to the following restrictions:
...@@ -27,6 +34,23 @@ ...@@ -27,6 +34,23 @@
and contributors for the book, "PNG: The Definitive Guide," and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates. published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
---------------------------------------------------------------------------*/ ---------------------------------------------------------------------------*/
#include <stdio.h> #include <stdio.h>
......
...@@ -4,13 +4,20 @@ ...@@ -4,13 +4,20 @@
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
Copyright (c) 1998-2000 Greg Roelofs. All rights reserved. Copyright (c) 1998-2007 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind, This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of be held liable for any damages arising in any way from the use of
this software. this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose, Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions: it freely, subject to the following restrictions:
...@@ -27,6 +34,23 @@ ...@@ -27,6 +34,23 @@
and contributors for the book, "PNG: The Definitive Guide," and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates. published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
---------------------------------------------------------------------------*/ ---------------------------------------------------------------------------*/
#ifndef TRUE #ifndef TRUE
......
...@@ -4,19 +4,20 @@ ...@@ -4,19 +4,20 @@
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
Changelog: Copyright (c) 1998-2007 Greg Roelofs. All rights reserved.
- 1.01: initial public release
- 1.02: added code to skip unused chunks (GR-P)
---------------------------------------------------------------------------
Copyright (c) 1998-2002 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind, This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of be held liable for any damages arising in any way from the use of
this software. this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose, Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions: it freely, subject to the following restrictions:
...@@ -33,6 +34,23 @@ ...@@ -33,6 +34,23 @@
and contributors for the book, "PNG: The Definitive Guide," and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates. published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
---------------------------------------------------------------------------*/ ---------------------------------------------------------------------------*/
...@@ -56,7 +74,7 @@ static void readpng2_error_handler(png_structp png_ptr, png_const_charp msg); ...@@ -56,7 +74,7 @@ static void readpng2_error_handler(png_structp png_ptr, png_const_charp msg);
void readpng2_version_info(void) void readpng2_version_info(void)
{ {
#if defined(PNG_ASSEMBLER_CODE_SUPPORTED) && \ #if defined(PNG_ASSEMBLER_CODE_SUPPORTED) && \
(defined(__i386__) || defined(_M_IX86)) && \ (defined(__i386__) || defined(_M_IX86) || defined(__x86_64__)) && \
defined(PNG_LIBPNG_VER) && (PNG_LIBPNG_VER >= 10200) defined(PNG_LIBPNG_VER) && (PNG_LIBPNG_VER >= 10200)
/* /*
* WARNING: This preprocessor approach means that the following code * WARNING: This preprocessor approach means that the following code
...@@ -79,7 +97,12 @@ void readpng2_version_info(void) ...@@ -79,7 +97,12 @@ void readpng2_version_info(void)
"with MMX support\n (%s version).", PNG_LIBPNG_VER_STRING, "with MMX support\n (%s version).", PNG_LIBPNG_VER_STRING,
png_libpng_ver, compilerID == 1? "MSVC++" : png_libpng_ver, compilerID == 1? "MSVC++" :
(compilerID == 2? "GNU C" : "unknown")); (compilerID == 2? "GNU C" : "unknown"));
fprintf(stderr, " Processor %s MMX instructions.\n", fprintf(stderr, " Processor (x86%s) %s MMX instructions.\n",
#if defined(__x86_64__)
"_64",
#else
"",
#endif
mmxsupport? "supports" : "does not support"); mmxsupport? "supports" : "does not support");
if (mmxsupport > 0) { if (mmxsupport > 0) {
int num_optims = 0; int num_optims = 0;
...@@ -179,40 +202,38 @@ int readpng2_init(mainprog_info *mainprog_ptr) ...@@ -179,40 +202,38 @@ int readpng2_init(mainprog_info *mainprog_ptr)
return 2; return 2;
} }
/* prepare the reader to ignore all recognized chunks whose data isn't
* going to be used, i.e., all chunks recognized by libpng except for
* IHDR, PLTE, IDAT, IEND, tRNS, bKGD, gAMA, and sRGB : */
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) #ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
/* prepare the reader to ignore all recognized chunks whose data won't be
* used, i.e., all chunks recognized by libpng except for IHDR, PLTE, IDAT,
* IEND, tRNS, bKGD, gAMA, and sRGB (small performance improvement) */
{ {
#ifndef HANDLE_CHUNK_NEVER /* These byte strings were copied from png.h. If a future libpng
/* prior to libpng-1.2.5, this macro was internal, so we define it here. */ * version recognizes more chunks, add them to this list. If a
# define HANDLE_CHUNK_NEVER 1 * future version of readpng2.c recognizes more chunks, delete them
#endif * from this list. */
/* these byte strings were copied from png.h. static const png_byte chunks_to_ignore[] = {
* If a future libpng version recognizes more chunks, add them 99, 72, 82, 77, '\0', /* cHRM */
* to this list. If a future version of readpng2.c recognizes 104, 73, 83, 84, '\0', /* hIST */
* more chunks, delete them from this list. */ 105, 67, 67, 80, '\0', /* iCCP */
png_byte png_chunk_types_to_ignore[]= 105, 84, 88, 116, '\0', /* iTXt */
{ 99, 72, 82, 77, '\0', /* cHRM */ 111, 70, 70, 115, '\0', /* oFFs */
104, 73, 83, 84, '\0', /* hIST */ 112, 67, 65, 76, '\0', /* pCAL */
105, 67, 67, 80, '\0', /* iCCP */ 112, 72, 89, 115, '\0', /* pHYs */
105, 84, 88, 116, '\0', /* iTXt */ 115, 66, 73, 84, '\0', /* sBIT */
111, 70, 70, 115, '\0', /* oFFs */ 115, 67, 65, 76, '\0', /* sCAL */
112, 67, 65, 76, '\0', /* pCAL */ 115, 80, 76, 84, '\0', /* sPLT */
115, 67, 65, 76, '\0', /* sCAL */ 115, 84, 69, 82, '\0', /* sTER */
112, 72, 89, 115, '\0', /* pHYs */ 116, 69, 88, 116, '\0', /* tEXt */
115, 66, 73, 84, '\0', /* sBIT */ 116, 73, 77, 69, '\0', /* tIME */
115, 80, 76, 84, '\0', /* sPLT */ 122, 84, 88, 116, '\0' /* zTXt */
116, 69, 88, 116, '\0', /* tEXt */ };
116, 73, 77, 69, '\0', /* tIME */
122, 84, 88, 116, '\0'}; /* zTXt */ png_set_keep_unknown_chunks(png_ptr, 1 /* PNG_HANDLE_CHUNK_NEVER */,
#define NUM_PNG_CHUNK_TYPES_TO_IGNORE 13 chunks_to_ignore, sizeof(chunks_to_ignore)/5);
png_set_keep_unknown_chunks(png_ptr, HANDLE_CHUNK_NEVER,
png_chunk_types_to_ignore, NUM_PNG_CHUNK_TYPES_TO_IGNORE);
} }
#endif #endif /* PNG_UNKNOWN_CHUNKS_SUPPORTED */
/* instead of doing png_init_io() here, now we set up our callback /* instead of doing png_init_io() here, now we set up our callback
* functions for progressive decoding */ * functions for progressive decoding */
...@@ -237,7 +258,7 @@ int readpng2_init(mainprog_info *mainprog_ptr) ...@@ -237,7 +258,7 @@ int readpng2_init(mainprog_info *mainprog_ptr)
* png_set_asm_flags (png_ptr, flags); * png_set_asm_flags (png_ptr, flags);
*/ */
#if (defined(__i386__) || defined(_M_IX86)) && \ #if (defined(__i386__) || defined(_M_IX86) || defined(__x86_64__)) && \
defined(PNG_LIBPNG_VER) && (PNG_LIBPNG_VER >= 10200) defined(PNG_LIBPNG_VER) && (PNG_LIBPNG_VER >= 10200)
/* /*
* WARNING: This preprocessor approach means that the following code * WARNING: This preprocessor approach means that the following code
......
...@@ -4,13 +4,20 @@ ...@@ -4,13 +4,20 @@
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
Copyright (c) 1998-2001 Greg Roelofs. All rights reserved. Copyright (c) 1998-2008 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind, This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of be held liable for any damages arising in any way from the use of
this software. this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose, Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions: it freely, subject to the following restrictions:
...@@ -27,6 +34,23 @@ ...@@ -27,6 +34,23 @@
and contributors for the book, "PNG: The Definitive Guide," and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates. published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
---------------------------------------------------------------------------*/ ---------------------------------------------------------------------------*/
#ifndef TRUE #ifndef TRUE
...@@ -45,6 +69,12 @@ ...@@ -45,6 +69,12 @@
# define Trace(x) ; # define Trace(x) ;
#endif #endif
enum rpng2_states {
kPreInit = 0,
kWindowInit,
kDone
};
typedef unsigned char uch; typedef unsigned char uch;
typedef unsigned short ush; typedef unsigned short ush;
typedef unsigned long ulg; typedef unsigned long ulg;
...@@ -66,12 +96,12 @@ typedef struct _mainprog_info { ...@@ -66,12 +96,12 @@ typedef struct _mainprog_info {
int rowbytes; int rowbytes;
int channels; int channels;
int need_bgcolor; int need_bgcolor;
#if (defined(__i386__) || defined(_M_IX86)) #if (defined(__i386__) || defined(_M_IX86) || defined(__x86_64__))
int nommxfilters; int nommxfilters;
int nommxcombine; int nommxcombine;
int nommxinterlace; int nommxinterlace;
#endif #endif
int done; int state;
uch bg_red; uch bg_red;
uch bg_green; uch bg_green;
uch bg_blue; uch bg_blue;
......
/*---------------------------------------------------------------------------
rpng - simple PNG display program readppm.c
---------------------------------------------------------------------------
This is a special-purpose replacement for readpng.c that allows binary
PPM files to be used in place of PNG images.
---------------------------------------------------------------------------
Copyright (c) 1998-2007 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of
this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions:
1. Redistributions of source code must retain the above copyright
notice, disclaimer, and this list of conditions.
2. Redistributions in binary form must reproduce the above copyright
notice, disclaimer, and this list of conditions in the documenta-
tion and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this
software must display the following acknowledgment:
This product includes software developed by Greg Roelofs
and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
---------------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include "readpng.h" /* typedefs, common macros, public prototypes */
ulg width, height;
int bit_depth, color_type, channels;
uch *image_data = NULL;
FILE *saved_infile;
void readpng_version_info()
{
fprintf(stderr, " Compiled without libpng, zlib or PBMPLUS/NetPBM.\n");
}
/* return value = 0 for success, 1 for bad sig, 2 for bad IHDR, 4 for no mem */
int readpng_init(FILE *infile, ulg *pWidth, ulg *pHeight)
{
static uch ppmline[256];
int maxval;
saved_infile = infile;
fgets(ppmline, 256, infile);
if (ppmline[0] != 'P' || ppmline[1] != '6') {
fprintf(stderr, "ERROR: not a PPM file\n");
return 1;
}
/* possible color types: P5 = grayscale (0), P6 = RGB (2), P8 = RGBA (6) */
if (ppmline[1] == '6') {
color_type = 2;
channels = 3;
} else if (ppmline[1] == '8') {
color_type = 6;
channels = 4;
} else /* if (ppmline[1] == '5') */ {
color_type = 0;
channels = 1;
}
do {
fgets(ppmline, 256, infile);
} while (ppmline[0] == '#');
sscanf(ppmline, "%lu %lu", &width, &height);
do {
fgets(ppmline, 256, infile);
} while (ppmline[0] == '#');
sscanf(ppmline, "%d", &maxval);
if (maxval != 255) {
fprintf(stderr, "ERROR: maxval = %d\n", maxval);
return 2;
}
bit_depth = 8;
*pWidth = width;
*pHeight = height;
return 0;
}
/* returns 0 if succeeds, 1 if fails due to no bKGD chunk, 2 if libpng error;
* scales values to 8-bit if necessary */
int readpng_get_bgcolor(uch *red, uch *green, uch *blue)
{
return 1;
}
/* display_exponent == LUT_exponent * CRT_exponent */
uch *readpng_get_image(double display_exponent, int *pChannels, ulg *pRowbytes)
{
ulg rowbytes;
/* expand palette images to RGB, low-bit-depth grayscale images to 8 bits,
* transparency chunks to full alpha channel; strip 16-bit-per-sample
* images to 8 bits per sample; and convert grayscale to RGB[A] */
/* GRR WARNING: grayscale needs to be expanded and channels reset! */
*pRowbytes = rowbytes = channels*width;
*pChannels = channels;
if ((image_data = (uch *)malloc(rowbytes*height)) == NULL) {
return NULL;
}
Trace((stderr, "readpng_get_image: rowbytes = %ld, height = %ld\n", rowbytes, height));
/* now we can go ahead and just read the whole image */
fread(image_data, 1L, rowbytes*height, saved_infile);
return image_data;
}
void readpng_cleanup(int free_image_data)
{
if (free_image_data && image_data) {
free(image_data);
image_data = NULL;
}
}
...@@ -22,16 +22,25 @@ ...@@ -22,16 +22,25 @@
- 1.02: added extra set of parentheses to png_jmpbuf() macro; fixed - 1.02: added extra set of parentheses to png_jmpbuf() macro; fixed
command-line parsing bug command-line parsing bug
- 1.10: enabled "message window"/console (thanks to David Geldreich) - 1.10: enabled "message window"/console (thanks to David Geldreich)
- 2.00: dual-licensed (added GNU GPL)
- 2.01: fixed improper display of usage screen on PNG error(s)
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
Copyright (c) 1998-2001 Greg Roelofs. All rights reserved. Copyright (c) 1998-2008 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind, This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of be held liable for any damages arising in any way from the use of
this software. this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose, Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions: it freely, subject to the following restrictions:
...@@ -48,11 +57,28 @@ ...@@ -48,11 +57,28 @@
and contributors for the book, "PNG: The Definitive Guide," and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates. published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
---------------------------------------------------------------------------*/ ---------------------------------------------------------------------------*/
#define PROGNAME "rpng-win" #define PROGNAME "rpng-win"
#define LONGNAME "Simple PNG Viewer for Windows" #define LONGNAME "Simple PNG Viewer for Windows"
#define VERSION "1.20 of 28 May 2001" #define VERSION "2.01 of 16 March 2008"
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
...@@ -85,10 +111,9 @@ static void rpng_win_cleanup(void); ...@@ -85,10 +111,9 @@ static void rpng_win_cleanup(void);
LRESULT CALLBACK rpng_win_wndproc(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK rpng_win_wndproc(HWND, UINT, WPARAM, LPARAM);
static char titlebar[1024], *window_name = titlebar; static char titlebar[1024];
static char *progname = PROGNAME; static char *progname = PROGNAME;
static char *appname = LONGNAME; static char *appname = LONGNAME;
static char *icon_name = PROGNAME; /* GRR: not (yet) used */
static char *filename; static char *filename;
static FILE *infile; static FILE *infile;
...@@ -247,9 +272,37 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, PSTR cmd, int showmode) ...@@ -247,9 +272,37 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, PSTR cmd, int showmode)
} }
} }
if (!filename) { if (!filename)
++error; ++error;
} else if (!(infile = fopen(filename, "rb"))) {
/* print usage screen if any errors up to this point */
if (error) {
int ch;
fprintf(stderr, "\n%s %s: %s\n\n", PROGNAME, VERSION, appname);
readpng_version_info();
fprintf(stderr, "\n"
"Usage: %s [-gamma exp] [-bgcolor bg] file.png\n"
" exp \ttransfer-function exponent (``gamma'') of the display\n"
"\t\t system in floating-point format (e.g., ``%.1f''); equal\n"
"\t\t to the product of the lookup-table exponent (varies)\n"
"\t\t and the CRT exponent (usually 2.2); must be positive\n"
" bg \tdesired background color in 7-character hex RGB format\n"
"\t\t (e.g., ``#ff7700'' for orange: same as HTML colors);\n"
"\t\t used with transparent images\n"
"\nPress Q, Esc or mouse button 1 after image is displayed to quit.\n"
"Press Q or Esc to quit this usage screen.\n"
"\n", PROGNAME, default_display_exponent);
do
ch = _getch();
while (ch != 'q' && ch != 'Q' && ch != 0x1B);
exit(1);
}
if (!(infile = fopen(filename, "rb"))) {
fprintf(stderr, PROGNAME ": can't open PNG file [%s]\n", filename); fprintf(stderr, PROGNAME ": can't open PNG file [%s]\n", filename);
++error; ++error;
} else { } else {
...@@ -262,8 +315,7 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, PSTR cmd, int showmode) ...@@ -262,8 +315,7 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, PSTR cmd, int showmode)
break; break;
case 2: case 2:
fprintf(stderr, PROGNAME fprintf(stderr, PROGNAME
": [%s] has bad IHDR (libpng longjmp)\n", ": [%s] has bad IHDR (libpng longjmp)\n", filename);
filename);
break; break;
case 4: case 4:
fprintf(stderr, PROGNAME ": insufficient memory\n"); fprintf(stderr, PROGNAME ": insufficient memory\n");
...@@ -280,29 +332,14 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, PSTR cmd, int showmode) ...@@ -280,29 +332,14 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, PSTR cmd, int showmode)
} }
/* usage screen */
if (error) { if (error) {
int ch; int ch;
fprintf(stderr, "\n%s %s: %s\n\n", PROGNAME, VERSION, appname); fprintf(stderr, PROGNAME ": aborting.\n");
readpng_version_info();
fprintf(stderr, "\n"
"Usage: %s [-gamma exp] [-bgcolor bg] file.png\n"
" exp \ttransfer-function exponent (``gamma'') of the display\n"
"\t\t system in floating-point format (e.g., ``%.1f''); equal\n"
"\t\t to the product of the lookup-table exponent (varies)\n"
"\t\t and the CRT exponent (usually 2.2); must be positive\n"
" bg \tdesired background color in 7-character hex RGB format\n"
"\t\t (e.g., ``#ff7700'' for orange: same as HTML colors);\n"
"\t\t used with transparent images\n"
"\nPress Q, Esc or mouse button 1 after image is displayed to quit.\n"
"Press Q or Esc to quit this usage screen.\n"
"\n", PROGNAME, default_display_exponent);
do do
ch = _getch(); ch = _getch();
while (ch != 'q' && ch != 'Q' && ch != 0x1B); while (ch != 'q' && ch != 'Q' && ch != 0x1B);
exit(1); exit(2);
} else { } else {
fprintf(stderr, "\n%s %s: %s\n", PROGNAME, VERSION, appname); fprintf(stderr, "\n%s %s: %s\n", PROGNAME, VERSION, appname);
fprintf(stderr, fprintf(stderr,
...@@ -325,9 +362,14 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, PSTR cmd, int showmode) ...@@ -325,9 +362,14 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, PSTR cmd, int showmode)
* check for one in the PNG file--if not, the initialized values of 0 * check for one in the PNG file--if not, the initialized values of 0
* (black) will be used */ * (black) will be used */
if (have_bg) if (have_bg) {
sscanf(bgstr+1, "%2x%2x%2x", &bg_red, &bg_green, &bg_blue); unsigned r, g, b; /* this approach quiets compiler warnings */
else if (readpng_get_bgcolor(&bg_red, &bg_green, &bg_blue) > 1) {
sscanf(bgstr+1, "%2x%2x%2x", &r, &g, &b);
bg_red = (uch)r;
bg_green = (uch)g;
bg_blue = (uch)b;
} else if (readpng_get_bgcolor(&bg_red, &bg_green, &bg_blue) > 1) {
readpng_cleanup(TRUE); readpng_cleanup(TRUE);
fprintf(stderr, PROGNAME fprintf(stderr, PROGNAME
": libpng error while checking for background color\n"); ": libpng error while checking for background color\n");
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
by Martin Zinser under OpenVMS; may work under OS/2 with some tweaking). by Martin Zinser under OpenVMS; may work under OS/2 with some tweaking).
to do: to do:
- 8-bit support - 8-bit (colormapped) X support
- use %.1023s to simplify truncation of title-bar string? - use %.1023s to simplify truncation of title-bar string?
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
...@@ -21,18 +21,28 @@ ...@@ -21,18 +21,28 @@
- 1.10: added support for non-default visuals; fixed X pixel-conversion - 1.10: added support for non-default visuals; fixed X pixel-conversion
- 1.11: added extra set of parentheses to png_jmpbuf() macro; fixed - 1.11: added extra set of parentheses to png_jmpbuf() macro; fixed
command-line parsing bug command-line parsing bug
- 1.12: fixed small X memory leak (thanks to Francois Petitjean) - 1.12: fixed some small X memory leaks (thanks to François Petitjean)
- 1.13: fixed XFreeGC() crash bug - 1.13: fixed XFreeGC() crash bug (thanks to Patrick Welche)
- 1.14: added support for X resources (thanks to Gerhard Niklasch)
- 2.00: dual-licensed (added GNU GPL)
- 2.01: fixed improper display of usage screen on PNG error(s)
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
Copyright (c) 1998-2001 Greg Roelofs. All rights reserved. Copyright (c) 1998-2008 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind, This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of be held liable for any damages arising in any way from the use of
this software. this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose, Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions: it freely, subject to the following restrictions:
...@@ -49,11 +59,30 @@ ...@@ -49,11 +59,30 @@
and contributors for the book, "PNG: The Definitive Guide," and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates. published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
---------------------------------------------------------------------------*/ ---------------------------------------------------------------------------*/
#define PROGNAME "rpng-x" #define PROGNAME "rpng-x"
#define LONGNAME "Simple PNG Viewer for X" #define LONGNAME "Simple PNG Viewer for X"
#define VERSION "1.13 of 16 August 2001" #define VERSION "2.01 of 16 March 2008"
#define RESNAME "rpng" /* our X resource application name */
#define RESCLASS "Rpng" /* our X resource class name */
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
...@@ -91,6 +120,8 @@ static int rpng_x_msb(ulg u32val); ...@@ -91,6 +120,8 @@ static int rpng_x_msb(ulg u32val);
static char titlebar[1024], *window_name = titlebar; static char titlebar[1024], *window_name = titlebar;
static char *appname = LONGNAME; static char *appname = LONGNAME;
static char *icon_name = PROGNAME; static char *icon_name = PROGNAME;
static char *res_name = RESNAME;
static char *res_class = RESCLASS;
static char *filename; static char *filename;
static FILE *infile; static FILE *infile;
...@@ -235,9 +266,33 @@ int main(int argc, char **argv) ...@@ -235,9 +266,33 @@ int main(int argc, char **argv)
} }
} }
if (!filename) { if (!filename)
++error; ++error;
} else if (!(infile = fopen(filename, "rb"))) {
/* print usage screen if any errors up to this point */
if (error) {
fprintf(stderr, "\n%s %s: %s\n", PROGNAME, VERSION, appname);
readpng_version_info();
fprintf(stderr, "\n"
"Usage: %s [-display xdpy] [-gamma exp] [-bgcolor bg] file.png\n"
" xdpy\tname of the target X display (e.g., ``hostname:0'')\n"
" exp \ttransfer-function exponent (``gamma'') of the display\n"
"\t\t system in floating-point format (e.g., ``%.1f''); equal\n"
"\t\t to the product of the lookup-table exponent (varies)\n"
"\t\t and the CRT exponent (usually 2.2); must be positive\n"
" bg \tdesired background color in 7-character hex RGB format\n"
"\t\t (e.g., ``#ff7700'' for orange: same as HTML colors);\n"
"\t\t used with transparent images\n"
"\nPress Q, Esc or mouse button 1 (within image window, after image\n"
"is displayed) to quit.\n"
"\n", PROGNAME, default_display_exponent);
exit(1);
}
if (!(infile = fopen(filename, "rb"))) {
fprintf(stderr, PROGNAME ": can't open PNG file [%s]\n", filename); fprintf(stderr, PROGNAME ": can't open PNG file [%s]\n", filename);
++error; ++error;
} else { } else {
...@@ -250,8 +305,7 @@ int main(int argc, char **argv) ...@@ -250,8 +305,7 @@ int main(int argc, char **argv)
break; break;
case 2: case 2:
fprintf(stderr, PROGNAME fprintf(stderr, PROGNAME
": [%s] has bad IHDR (libpng longjmp)\n", ": [%s] has bad IHDR (libpng longjmp)\n", filename);
filename);
break; break;
case 4: case 4:
fprintf(stderr, PROGNAME ": insufficient memory\n"); fprintf(stderr, PROGNAME ": insufficient memory\n");
...@@ -276,25 +330,9 @@ int main(int argc, char **argv) ...@@ -276,25 +330,9 @@ int main(int argc, char **argv)
} }
/* usage screen */
if (error) { if (error) {
fprintf(stderr, "\n%s %s: %s\n", PROGNAME, VERSION, appname); fprintf(stderr, PROGNAME ": aborting.\n");
readpng_version_info(); exit(2);
fprintf(stderr, "\n"
"Usage: %s [-display xdpy] [-gamma exp] [-bgcolor bg] file.png\n"
" xdpy\tname of the target X display (e.g., ``hostname:0'')\n"
" exp \ttransfer-function exponent (``gamma'') of the display\n"
"\t\t system in floating-point format (e.g., ``%.1f''); equal\n"
"\t\t to the product of the lookup-table exponent (varies)\n"
"\t\t and the CRT exponent (usually 2.2); must be positive\n"
" bg \tdesired background color in 7-character hex RGB format\n"
"\t\t (e.g., ``#ff7700'' for orange: same as HTML colors);\n"
"\t\t used with transparent images\n"
"\nPress Q, Esc or mouse button 1 (within image window, after image\n"
"is displayed) to quit.\n"
"\n", PROGNAME, default_display_exponent);
exit(1);
} }
...@@ -399,11 +437,12 @@ static int rpng_x_create_window(void) ...@@ -399,11 +437,12 @@ static int rpng_x_create_window(void)
XEvent e; XEvent e;
XGCValues gcvalues; XGCValues gcvalues;
XSetWindowAttributes attr; XSetWindowAttributes attr;
XSizeHints *size_hints;
XTextProperty windowName, *pWindowName = &windowName; XTextProperty windowName, *pWindowName = &windowName;
XTextProperty iconName, *pIconName = &iconName; XTextProperty iconName, *pIconName = &iconName;
XVisualInfo visual_info; XVisualInfo visual_info;
XSizeHints *size_hints;
XWMHints *wm_hints; XWMHints *wm_hints;
XClassHint *class_hints;
screen = DefaultScreen(display); screen = DefaultScreen(display);
...@@ -526,7 +565,7 @@ static int rpng_x_create_window(void) ...@@ -526,7 +565,7 @@ static int rpng_x_create_window(void)
if (!XStringListToTextProperty(&icon_name, 1, pIconName)) if (!XStringListToTextProperty(&icon_name, 1, pIconName))
pIconName = NULL; pIconName = NULL;
/* OK if either hints allocation fails; XSetWMProperties() allows NULLs */ /* OK if any hints allocation fails; XSetWMProperties() allows NULLs */
if ((size_hints = XAllocSizeHints()) != NULL) { if ((size_hints = XAllocSizeHints()) != NULL) {
/* window will not be resizable */ /* window will not be resizable */
...@@ -542,8 +581,13 @@ static int rpng_x_create_window(void) ...@@ -542,8 +581,13 @@ static int rpng_x_create_window(void)
wm_hints->flags = StateHint | InputHint /* | IconPixmapHint */ ; wm_hints->flags = StateHint | InputHint /* | IconPixmapHint */ ;
} }
if ((class_hints = XAllocClassHint()) != NULL) {
class_hints->res_name = res_name;
class_hints->res_class = res_class;
}
XSetWMProperties(display, window, pWindowName, pIconName, NULL, 0, XSetWMProperties(display, window, pWindowName, pIconName, NULL, 0,
size_hints, wm_hints, NULL); size_hints, wm_hints, class_hints);
/* various properties and hints no longer needed; free memory */ /* various properties and hints no longer needed; free memory */
if (pWindowName) if (pWindowName)
...@@ -554,6 +598,8 @@ static int rpng_x_create_window(void) ...@@ -554,6 +598,8 @@ static int rpng_x_create_window(void)
XFree(size_hints); XFree(size_hints);
if (wm_hints) if (wm_hints)
XFree(wm_hints); XFree(wm_hints);
if (class_hints)
XFree(class_hints);
XMapWindow(display, window); XMapWindow(display, window);
......
...@@ -5,8 +5,10 @@ ...@@ -5,8 +5,10 @@
This program converts certain NetPBM binary files (grayscale and RGB, This program converts certain NetPBM binary files (grayscale and RGB,
maxval = 255) to PNG. Non-interlaced PNGs are written progressively; maxval = 255) to PNG. Non-interlaced PNGs are written progressively;
interlaced PNGs are read and written in one memory-intensive blast. interlaced PNGs are read and written in one memory-intensive blast.
Thanks to Jean-loup Gailly for providing the necessary trick to read Thanks to Jean-loup Gailly for providing the necessary trick to read
interactive text from the keyboard while stdin is redirected. interactive text from the keyboard while stdin is redirected. Thanks
to Cosmin Truta for Cygwin fixes.
NOTE: includes provisional support for PNM type "8" (portable alphamap) NOTE: includes provisional support for PNM type "8" (portable alphamap)
images, presumed to be a 32-bit interleaved RGBA format; no pro- images, presumed to be a 32-bit interleaved RGBA format; no pro-
...@@ -24,16 +26,32 @@ ...@@ -24,16 +26,32 @@
- 1.02: modified to allow abbreviated options - 1.02: modified to allow abbreviated options
- 1.03: removed extraneous character from usage screen; fixed bug in - 1.03: removed extraneous character from usage screen; fixed bug in
command-line parsing command-line parsing
- 1.04: fixed DOS/OS2/Win32 detection, including partial Cygwin fix
(see http://home.att.net/~perlspinr/diffs/GregBook_cygwin.diff)
- 2.00: dual-licensed (added GNU GPL)
[REPORTED BUG (win32 only): "contrib/gregbook/wpng.c - cmd line
dose not work! In order to do something useful I needed to redirect
both input and output, with cygwin and with bcc32 as well. Under
Linux, the same wpng appears to work fine. I don't know what is
the problem."]
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
Copyright (c) 1998-2000 Greg Roelofs. All rights reserved. Copyright (c) 1998-2007 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind, This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of be held liable for any damages arising in any way from the use of
this software. this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose, Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions: it freely, subject to the following restrictions:
...@@ -50,16 +68,35 @@ ...@@ -50,16 +68,35 @@
and contributors for the book, "PNG: The Definitive Guide," and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates. published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
---------------------------------------------------------------------------*/ ---------------------------------------------------------------------------*/
#define PROGNAME "wpng" #define PROGNAME "wpng"
#define VERSION "1.03 of 19 March 2000" #define VERSION "2.00 of 2 June 2007"
#define APPNAME "Simple PGM/PPM/PAM to PNG Converter" #define APPNAME "Simple PGM/PPM/PAM to PNG Converter"
#if defined(__MSDOS__) || defined(__OS2__) #if defined(__MSDOS__) || defined(__OS2__)
# define DOS_OS2_W32 # define DOS_OS2_W32
#elif defined(_WIN32) || defined(__WIN32__) #elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
# define DOS_OS2_W32 # ifndef __GNUC__ /* treat Win32 native ports of gcc as Unix environments */
# define DOS_OS2_W32
# endif
#endif #endif
#include <stdio.h> #include <stdio.h>
......
...@@ -4,13 +4,20 @@ ...@@ -4,13 +4,20 @@
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
Copyright (c) 1998-2000 Greg Roelofs. All rights reserved. Copyright (c) 1998-2007 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind, This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of be held liable for any damages arising in any way from the use of
this software. this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose, Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions: it freely, subject to the following restrictions:
...@@ -27,6 +34,23 @@ ...@@ -27,6 +34,23 @@
and contributors for the book, "PNG: The Definitive Guide," and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates. published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
---------------------------------------------------------------------------*/ ---------------------------------------------------------------------------*/
......
...@@ -4,13 +4,20 @@ ...@@ -4,13 +4,20 @@
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
Copyright (c) 1998-2000 Greg Roelofs. All rights reserved. Copyright (c) 1998-2007 Greg Roelofs. All rights reserved.
This software is provided "as is," without warranty of any kind, This software is provided "as is," without warranty of any kind,
express or implied. In no event shall the author or contributors express or implied. In no event shall the author or contributors
be held liable for any damages arising in any way from the use of be held liable for any damages arising in any way from the use of
this software. this software.
The contents of this file are DUAL-LICENSED. You may modify and/or
redistribute this software according to the terms of one of the
following two licenses (at your option):
LICENSE 1 ("BSD-like with advertising clause"):
Permission is granted to anyone to use this software for any purpose, Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions: it freely, subject to the following restrictions:
...@@ -27,6 +34,23 @@ ...@@ -27,6 +34,23 @@
and contributors for the book, "PNG: The Definitive Guide," and contributors for the book, "PNG: The Definitive Guide,"
published by O'Reilly and Associates. published by O'Reilly and Associates.
LICENSE 2 (GNU GPL v2 or later):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
---------------------------------------------------------------------------*/ ---------------------------------------------------------------------------*/
#ifndef TRUE #ifndef TRUE
......
This demonstrates the use of PNG_USER_CONFIG and pngusr.h
To build a minimal read-only decoder, run
gather.sh # to collect needed files from pngminus, libpng, and zlib
make -f makefile.std
cp ../../pngminus/png2pnm.c pngm2pnm.c
cp ../../../*.h .
cp ../../../*.c .
rm example.c pnggccrd.c pngvcrd.c pngtest.c pngpread.c
# change the following 2 lines if zlib is somewhere else
cp ../../../../zlib/*.h .
cp ../../../../zlib/*.c .
rm minigzip.c example.c compress.c deflate.c
# Makefile for PngMinus (pngm2pnm)
# Linux / Unix
#CC=cc
CC=gcc
LD=$(CC)
RM=rm -f
CFLAGS=-DPNG_USER_CONFIG -DNO_GZCOMPRESS -DNO_GZIP \
-DdeflateParams\(a,b,c\)=Z_OK -I. -O1
C=.c
O=.o
L=.a
E=
ZOBJS = adler32$(O) crc32$(O) gzio$(O) \
infback$(O) inffast$(O) inflate$(O) inftrees$(O) \
trees$(O) uncompr$(O) zutil$(O)
OBJS = pngm2pnm$(O) png$(O) pngerror$(O) pngget$(O) pngmem$(O) \
pngread$(O) pngrio$(O) pngrtran$(O) pngrutil$(O) \
pngset$(O) pngtrans$(O) $(ZOBJS)
# implicit make rules -------------------------------------------------------
.c$(O): png.h pngconf.h pngusr.h zlib.h
$(CC) -c $(CFLAGS) $<
# dependencies
all: pngm2pnm$(E)
pngm2pnm$(E): $(OBJS)
$(LD) -o pngm2pnm$(E) $(OBJS)
strip pngm2pnm$(E)
clean:
$(RM) pngm2pnm$(O)
$(RM) pngm2pnm$(E)
$(RM) $(OBJS)
# End of makefile for pngm2pnm
/* minrdpngconf.h: headers to make a minimal png-read-only library
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 2007 Glenn Randers-Pehrson
* Derived from pngcrush.h, Copyright 1998-2007, Glenn Randers-Pehrson
*/
#ifndef MINRDPNGCONF_H
#define MINRDPNGCONF_H
#define PNG_NO_GLOBAL_ARRAYS
#define PNG_NO_WARNINGS
#define png_warning(s1,s2) ""
#define png_chunk_warning(s1,s2) ""
#define PNG_NO_ERROR_TEXT
#define png_error(s1,s2) png_err(s1)
#define png_chunk_error(s1,s2) png_err(s1)
#define PNG_NO_ASSEMBLER_CODE
#define PNG_NO_OPTIMIZED_CODE
#define PNG_NO_READ_GAMMA
#define PNG_NO_READ_BACKGROUND
#define PNG_NO_READ_DITHER
#define PNG_NO_READ_INVERT
#define PNG_NO_READ_SHIFT
#define PNG_NO_READ_PACK
#define PNG_NO_READ_PACKSWAP
#define PNG_NO_READ_FILLER
#define PNG_NO_READ_SWAP_ALPHA
#define PNG_NO_READ_INVERT_ALPHA
#define PNG_NO_READ_RGB_TO_GRAY
#define PNG_NO_READ_USER_TRANSFORM
#define PNG_NO_READ_bKGD
#define PNG_NO_READ_cHRM
#define PNG_NO_READ_gAMA
#define PNG_NO_READ_hIST
#define PNG_NO_READ_iCCP
#define PNG_NO_READ_pCAL
#define PNG_NO_READ_pHYs
#define PNG_NO_READ_sBIT
#define PNG_NO_READ_sCAL
#define PNG_NO_READ_sPLT
#define PNG_NO_READ_TEXT
#define PNG_NO_READ_tIME
#define PNG_NO_READ_UNKNOWN_CHUNKS
#define PNG_NO_READ_USER_CHUNKS
#define PNG_NO_READ_EMPTY_PLTE
#define PNG_NO_READ_OPT_PLTE
#define PNG_NO_READ_STRIP_ALPHA
#define PNG_NO_READ_oFFs
#define PNG_NO_WARN_UNINITIALIZED_ROW
#define PNG_NO_WRITE_SUPPORTED
#define PNG_NO_INFO_IMAGE
#define PNG_NO_USER_MEM
#define PNG_NO_FIXED_POINT_SUPPORTED
#define PNG_NO_MNG_FEATURES
#define PNG_NO_USER_TRANSFORM_PTR
#define PNG_NO_HANDLE_AS_UNKNOWN
#define PNG_NO_CONSOLE_IO
#define PNG_NO_ZALLOC_ZERO
#define PNG_NO_ERROR_NUMBERS
#define PNG_NO_EASY_ACCESS
#define PNG_NO_PROGRESSIVE_READ
#endif /* MINRDPNGCONF_H */
This demonstrates the use of PNG_USER_CONFIG and pngusr.h
To build a minimal write-only encoder, run
gather.sh # to collect needed files from pngminus, libpng, and zlib
make -f makefile.std
#include "zlib.h"
int ZEXPORT inflate(strm, flush)
z_streamp strm;
int flush;
{ return Z_OK ; }
int ZEXPORT inflateReset(strm)
z_streamp strm;
{ return Z_OK ; }
int ZEXPORT inflateEnd(strm)
z_streamp strm;
{ return Z_STREAM_ERROR ; }
int ZEXPORT inflateInit_(strm, version, stream_size)
z_streamp strm;
const char *version;
int stream_size;
{ return Z_OK ; }
int ZEXPORT inflateInit2_(strm, windowBits, version, stream_size)
z_streamp strm;
int windowBits;
const char *version;
int stream_size;
{ return Z_STREAM_ERROR ; }
cp ../../pngminus/pnm2png.c pnm2pngm.c
cp ../../../*.h .
cp ../../../*.c .
rm example.c pnggccrd.c pngvcrd.c pngtest.c pngr*.c
# Change the next 2 lines if zlib is somewhere else.
cp ../../../../zlib/*.h .
cp ../../../../zlib/*.c .
rm inf*.[ch]
rm minigzip.c example.c
# Makefile for PngMinus (pnm2pngm)
# Linux / Unix
#CC=cc
CC=gcc
LD=$(CC)
RM=rm -f
CFLAGS=-DPNG_USER_CONFIG -DNO_GZIP -I. -O1
C=.c
O=.o
L=.a
E=
ZOBJS = adler32$(O) compress$(O) crc32$(O) deflate$(O) gzio$(O) \
dummy_inflate$(O) \
trees$(O) uncompr$(O) zutil$(O)
OBJS = pnm2pngm$(O) png$(O) pngerror$(O) pngget$(O) pngmem$(O) \
pngset$(O) pngtrans$(O) pngwio$(O) pngwrite$(O) \
pngwtran$(O) pngwutil$(O) $(ZOBJS)
# implicit make rules -------------------------------------------------------
.c$(O): png.h pngconf.h pngusr.h zlib.h
$(CC) -c $(CFLAGS) $<
# dependencies
all: pnm2pngm$(E)
pnm2pngm$(E): $(OBJS)
$(LD) -o pnm2pngm$(E) $(OBJS)
strip pnm2pngm$(E)
clean:
$(RM) pnm2pngm$(O)
$(RM) pnm2pngm$(E)
$(RM) $(OBJS)
# End of makefile for pnm2pngm
/* minwrpngconf.h: headers to make a minimal png-write-only library
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 2007 Glenn Randers-Pehrson
* Derived from pngcrush.h, Copyright 1998-2007, Glenn Randers-Pehrson
*/
#ifndef MINWRPNGCONF_H
#define MINWRPNGCONF_H
#define PNG_NO_GLOBAL_ARRAYS
#define PNG_NO_READ_SUPPORTED
#define PNG_NO_WARNINGS
#define png_warning(s1,s2) ""
#define png_chunk_warning(s1,s2) ""
#define PNG_NO_ERROR_TEXT
#define png_error(s1,s2) png_err(s1)
#define png_chunk_error(s1,s2) png_err(s1)
#define PNG_NO_WRITE_BACKGROUND
#define PNG_NO_WRITE_GAMMA
#define PNG_NO_WRITE_DITHER
#define PNG_NO_WRITE_INVERT
#define PNG_NO_WRITE_SHIFT
#define PNG_NO_WRITE_PACK
#define PNG_NO_WRITE_PACKSWAP
#define PNG_NO_WRITE_FILLER
#define PNG_NO_WRITE_SWAP_ALPHA
#define PNG_NO_WRITE_INVERT_ALPHA
#define PNG_NO_WRITE_RGB_TO_GRAY
#define PNG_NO_WRITE_USER_TRANSFORM
#define PNG_NO_WRITE_bKGD
#define PNG_NO_WRITE_cHRM
#define PNG_NO_WRITE_gAMA
#define PNG_NO_WRITE_sRGB
#define PNG_NO_WRITE_hIST
#define PNG_NO_WRITE_iCCP
#define PNG_NO_WRITE_oFFs
#define PNG_NO_WRITE_pCAL
#define PNG_NO_WRITE_pHYs
#define PNG_NO_WRITE_sBIT
#define PNG_NO_WRITE_sCAL
#define PNG_NO_WRITE_sPLT
#define PNG_NO_WRITE_TEXT
#define PNG_NO_WRITE_tIME
#define PNG_NO_WRITE_UNKNOWN_CHUNKS
#define PNG_NO_WRITE_USER_CHUNKS
#define PNG_NO_WRITE_EMPTY_PLTE
#define PNG_NO_WRITE_OPT_PLTE
#define PNG_NO_WRITE_FILTER
#define PNG_NO_WRITE_WEIGHTED_FILTER
#define PNG_NO_WRITE_INTERLACING_SUPPORTED
#define PNG_NO_INFO_IMAGE
#define PNG_NO_USER_MEM
#define PNG_NO_FIXED_POINT_SUPPORTED
#define PNG_NO_MNG_FEATURES
#define PNG_NO_USER_TRANSFORM_PTR
#define PNG_NO_HANDLE_AS_UNKNOWN
#define PNG_NO_CONSOLE_IO
#define PNG_NO_ZALLOC_ZERO
#define PNG_NO_ERROR_NUMBERS
#define PNG_NO_EASY_ACCESS
#endif /* MINWRPNGCONF_H */
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Last changed in libpng 1.2.13 November 13, 2006 * Last changed in libpng 1.2.13 November 13, 2006
* For conditions of distribution and use, see copyright notice in png.h * For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2002 Glenn Randers-Pehrson * Copyright (c) 1998-2006 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
* *
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment