Blame README

Packit 0ba690
README for libpng version 1.2.57 - December 29, 2016 (shared library 12.0)
Packit 0ba690
See the note about version numbers near the top of png.h
Packit 0ba690
Packit 0ba690
See INSTALL for instructions on how to install libpng.
Packit 0ba690
Packit 0ba690
Libpng comes in several distribution formats.  Get libpng-*.tar.gz or
Packit 0ba690
libpng-*.tar.xz if you want UNIX-style line
Packit 0ba690
endings in the text files, or lpng*.7z or lpng*.zip if you want DOS-style
Packit 0ba690
line endings.  You can get UNIX-style line endings from the *.zip file
Packit 0ba690
by using "unzip -a" but there seems to be no simple way to recover
Packit 0ba690
UNIX-style line endings from the *.7z file.  The *.tar.xz file is
Packit 0ba690
recommended for *NIX users instead.
Packit 0ba690
Packit 0ba690
Version 0.89 was the first official release of libpng.  Don't let the
Packit 0ba690
fact that it's the first release fool you.  The libpng library has been in
Packit 0ba690
extensive use and testing since mid-1995.  By late 1997 it had
Packit 0ba690
finally gotten to the stage where there hadn't been significant
Packit 0ba690
changes to the API in some time, and people have a bad feeling about
Packit 0ba690
libraries with versions < 1.0.  Version 1.0.0 was released in
Packit 0ba690
March 1998.
Packit 0ba690
Packit 0ba690
****
Packit 0ba690
Note that some of the changes to the png_info structure render this
Packit 0ba690
version of the library binary incompatible with libpng-0.89 or
Packit 0ba690
earlier versions if you are using a shared library.  The type of the
Packit 0ba690
"filler" parameter for png_set_filler() has changed from png_byte to
Packit 0ba690
png_uint_32, which will affect shared-library applications that use
Packit 0ba690
this function.
Packit 0ba690
Packit 0ba690
To avoid problems with changes to the internals of png_info_struct,
Packit 0ba690
new APIs have been made available in 0.95 to avoid direct application
Packit 0ba690
access to info_ptr.  These functions are the png_set_<chunk> and
Packit 0ba690
png_get_<chunk> functions.  These functions should be used when
Packit 0ba690
accessing/storing the info_struct data, rather than manipulating it
Packit 0ba690
directly, to avoid such problems in the future.
Packit 0ba690
Packit 0ba690
It is important to note that the APIs do not make current programs
Packit 0ba690
that access the info struct directly incompatible with the new
Packit 0ba690
library.  However, it is strongly suggested that new programs use
Packit 0ba690
the new APIs (as shown in example.c and pngtest.c), and older programs
Packit 0ba690
be converted to the new format, to facilitate upgrades in the future.
Packit 0ba690
****
Packit 0ba690
Packit 0ba690
Additions since 0.90 include the ability to compile libpng as a
Packit 0ba690
Windows DLL, and new APIs for accessing data in the info struct.
Packit 0ba690
Experimental functions include the ability to set weighting and cost
Packit 0ba690
factors for row filter selection, direct reads of integers from buffers
Packit 0ba690
on big-endian processors that support misaligned data access, faster
Packit 0ba690
methods of doing alpha composition, and more accurate 16->8 bit color
Packit 0ba690
conversion.
Packit 0ba690
Packit 0ba690
The additions since 0.89 include the ability to read from a PNG stream
Packit 0ba690
which has had some (or all) of the signature bytes read by the calling
Packit 0ba690
application.  This also allows the reading of embedded PNG streams that
Packit 0ba690
do not have the PNG file signature.  As well, it is now possible to set
Packit 0ba690
the library action on the detection of chunk CRC errors.  It is possible
Packit 0ba690
to set different actions based on whether the CRC error occurred in a
Packit 0ba690
critical or an ancillary chunk.
Packit 0ba690
Packit 0ba690
The changes made to the library, and bugs fixed are based on discussions
Packit 0ba690
on the png-mng-implement mailing list and not on material submitted
Packit 0ba690
privately to Guy, Andreas, or Glenn.  They will forward any good
Packit 0ba690
suggestions to the list.
Packit 0ba690
Packit 0ba690
For a detailed description on using libpng, read libpng.txt.  For
Packit 0ba690
examples of libpng in a program, see example.c and pngtest.c.  For usage
Packit 0ba690
information and restrictions (what little they are) on libpng, see
Packit 0ba690
png.h.  For a description on using zlib (the compression library used by
Packit 0ba690
libpng) and zlib's restrictions, see zlib.h
Packit 0ba690
Packit 0ba690
I have included a general makefile, as well as several machine and
Packit 0ba690
compiler specific ones, but you may have to modify one for your own needs.
Packit 0ba690
Packit 0ba690
You should use zlib 1.0.4 or later to run this, but it MAY work with
Packit 0ba690
versions as old as zlib 0.95.  Even so, there are bugs in older zlib
Packit 0ba690
versions which can cause the output of invalid compression streams for
Packit 0ba690
some images.  You will definitely need zlib 1.0.4 or later if you are
Packit 0ba690
taking advantage of the MS-DOS "far" structure allocation for the small
Packit 0ba690
and medium memory models.  You should also note that zlib is a
Packit 0ba690
compression library that is useful for more things than just PNG files.
Packit 0ba690
You can use zlib as a drop-in replacement for fread() and fwrite() if
Packit 0ba690
you are so inclined.
Packit 0ba690
Packit 0ba690
zlib should be available at the same place that libpng is, or at
Packit 0ba690
ftp://ftp.simplesystems.org/pub/png/src/
Packit 0ba690
Packit 0ba690
You may also want a copy of the PNG specification.  It is available
Packit 0ba690
as an RFC, a W3C Recommendation, and an ISO/IEC Standard.  You can find
Packit 0ba690
these at http://www.libpng.org/pub/png/pngdocs.html
Packit 0ba690
Packit 0ba690
This code is currently being archived at libpng.sf.net in the
Packit 0ba690
[DOWNLOAD] area, and on CompuServe, Lib 20 (PNG SUPPORT)
Packit 0ba690
at GO GRAPHSUP.  If you can't find it in any of those places,
Packit 0ba690
e-mail me, and I'll help you find it.
Packit 0ba690
Packit 0ba690
I am not a lawyer, but I believe that the Export Control Classification
Packit 0ba690
Number (ECCN) for libpng is EAR99, which means not subject to export
Packit 0ba690
controls or International Traffic in Arms Regulations (ITAR) because it
Packit 0ba690
is open source, publicly available software, that does not contain any
Packit 0ba690
encryption software.  See the EAR, paragraphs 734.3(b)(3) and 734.7(b).
Packit 0ba690
Packit 0ba690
If you have any code changes, requests, problems, etc., please e-mail
Packit 0ba690
them to me.  Also, I'd appreciate any make files or project files,
Packit 0ba690
and any modifications you needed to make to get libpng to compile,
Packit 0ba690
along with a #define variable to tell what compiler/system you are on.
Packit 0ba690
If you needed to add transformations to libpng, or wish libpng would
Packit 0ba690
provide the image in a different way, drop me a note (and code, if
Packit 0ba690
possible), so I can consider supporting the transformation.
Packit 0ba690
Finally, if you get any warning messages when compiling libpng
Packit 0ba690
(note: not zlib), and they are easy to fix, I'd appreciate the
Packit 0ba690
fix.  Please mention "libpng" somewhere in the subject line.  Thanks.
Packit 0ba690
Packit 0ba690
This release was created and will be supported by myself (of course
Packit 0ba690
based in a large way on Guy's and Andreas' earlier work), and the PNG
Packit 0ba690
development group.
Packit 0ba690
Packit 0ba690
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
Packit 0ba690
(subscription required; visit 
Packit 0ba690
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
Packit 0ba690
to subscribe) or to glennrp at users.sourceforge.net
Packit 0ba690
Packit 0ba690
You can't reach Guy, the original libpng author, at the addresses
Packit 0ba690
given in previous versions of this document.  He and Andreas will
Packit 0ba690
read mail addressed to the png-mng-implement list, however.
Packit 0ba690
Packit 0ba690
Please do not send general questions about PNG.  Send them to
Packit 0ba690
the (png-mng-misc at lists.sourceforge.net, subscription required, visit
Packit 0ba690
https://lists.sourceforge.net/lists/listinfo/png-mng-misc to
Packit 0ba690
subscribe). On the other hand, please do not send libpng questions to
Packit 0ba690
that address, send them to me or to the png-mng-implement list.  I'll
Packit 0ba690
get them in the end anyway.  If you have a question about something
Packit 0ba690
in the PNG specification that is related to using libpng, send it
Packit 0ba690
to me.  Send me any questions that start with "I was using libpng,
Packit 0ba690
and ...".  If in doubt, send questions to me.  I'll bounce them
Packit 0ba690
to others, if necessary.
Packit 0ba690
Packit 0ba690
Please do not send suggestions on how to change PNG.  We have
Packit 0ba690
been discussing PNG for twenty years now, and it is official and
Packit 0ba690
finished.  If you have suggestions for libpng, however, I'll
Packit 0ba690
gladly listen.  Even if your suggestion is not used immediately,
Packit 0ba690
it may be used later.
Packit 0ba690
Packit 0ba690
Files in this distribution:
Packit 0ba690
Packit 0ba690
      ANNOUNCE      =>  Announcement of this version, with recent changes
Packit 0ba690
      CHANGES       =>  Description of changes between libpng versions
Packit 0ba690
      KNOWNBUG      =>  List of known bugs and deficiencies
Packit 0ba690
      LICENSE       =>  License to use and redistribute libpng
Packit 0ba690
      README        =>  This file
Packit 0ba690
      TODO          =>  Things not implemented in the current library
Packit 0ba690
      Y2KINFO       =>  Statement of Y2K compliance
Packit 0ba690
      example.c     =>  Example code for using libpng functions
Packit 0ba690
      libpng-*-*-diff.txt => Diff from previous release
Packit 0ba690
      libpng.3      =>  manual page for libpng (includes libpng.txt)
Packit 0ba690
      libpng.txt    =>  Description of libpng and its functions
Packit 0ba690
      libpngpf.3    =>  manual page for libpng's private functions
Packit 0ba690
      png.5         =>  manual page for the PNG format
Packit 0ba690
      png.c         =>  Basic interface functions common to library
Packit 0ba690
      png.h         =>  Library function and interface declarations
Packit 0ba690
      pngconf.h     =>  System specific library configuration
Packit 0ba690
      pngerror.c    =>  Error/warning message I/O functions
Packit 0ba690
      pngget.c      =>  Functions for retrieving info from struct
Packit 0ba690
      pngmem.c      =>  Memory handling functions
Packit 0ba690
      pngbar.png    =>  PNG logo, 88x31
Packit 0ba690
      pngnow.png    =>  PNG logo, 98x31
Packit 0ba690
      pngpread.c    =>  Progressive reading functions
Packit 0ba690
      pngread.c     =>  Read data/helper high-level functions
Packit 0ba690
      pngrio.c      =>  Lowest-level data read I/O functions
Packit 0ba690
      pngrtran.c    =>  Read data transformation functions
Packit 0ba690
      pngrutil.c    =>  Read data utility functions
Packit 0ba690
      pngset.c      =>  Functions for storing data into the info_struct
Packit 0ba690
      pngtest.c     =>  Library test program
Packit 0ba690
      pngtest.png   =>  Library test sample image
Packit 0ba690
      pngtrans.c    =>  Common data transformation functions
Packit 0ba690
      pngwio.c      =>  Lowest-level write I/O functions
Packit 0ba690
      pngwrite.c    =>  High-level write functions
Packit 0ba690
      pngwtran.c    =>  Write data transformations
Packit 0ba690
      pngwutil.c    =>  Write utility functions
Packit 0ba690
      contrib       =>  Contributions
Packit 0ba690
       gregbook         =>  source code for PNG reading and writing, from
Packit 0ba690
                            Greg Roelofs' "PNG: The Definitive Guide",
Packit 0ba690
                            O'Reilly, 1999
Packit 0ba690
       pngminim     =>  Minimal pnm2pngm and png2pnmm programs
Packit 0ba690
       pngminus     =>  Simple pnm2png and png2pnm programs
Packit 0ba690
       pngsuite     =>  Test images
Packit 0ba690
       visupng      =>  Contains a MSVC workspace for VisualPng
Packit 0ba690
      projects      =>  Contains project files and workspaces for
Packit 0ba690
                        building a DLL
Packit 0ba690
       beos             =>  Contains a Beos workspace for building libpng
Packit 0ba690
       c5builder        =>  Contains a Borland workspace for building
Packit 0ba690
                            libpng and zlib
Packit 0ba690
       MacOSX           =>  Contains a MacOSX workspace for building libpng
Packit 0ba690
       netware.txt      =>  Contains instructions for downloading a set
Packit 0ba690
                            of project files for building libpng and
Packit 0ba690
                            zlib on Netware.
Packit 0ba690
       visualc6         =>  Contains a Microsoft Visual C++ (MSVC)
Packit 0ba690
                            workspace for building libpng and zlib
Packit 0ba690
       visualc71        =>  Contains a Microsoft Visual C++ (MSVC)
Packit 0ba690
                            workspace for building libpng and zlib
Packit 0ba690
       wince.txt        =>  Contains instructions for downloading a
Packit 0ba690
                            Microsoft Visual C++ (Windows CD Toolkit)
Packit 0ba690
                            workspace for building libpng and zlib on
Packit 0ba690
                            WindowsCE
Packit 0ba690
       xcode            =>  Contains xcode project files
Packit 0ba690
      scripts       =>  Directory containing scripts for building libpng:
Packit 0ba690
       descrip.mms      =>  VMS makefile for MMS or MMK
Packit 0ba690
       makefile.std     =>  Generic UNIX makefile (cc, creates static
Packit 0ba690
                            libpng.a)
Packit 0ba690
       makefile.elf     =>  Linux/ELF gcc makefile symbol versioning,
Packit 0ba690
                            creates libpng12.so.0.1.2.57)
Packit 0ba690
       makefile.linux   =>  Linux/ELF makefile (gcc, creates
Packit 0ba690
                            libpng12.so.0.1.2.57)
Packit 0ba690
       makefile.gcmmx   =>  Linux/ELF makefile (gcc, creates
Packit 0ba690
                            libpng12.so.0.1.2.57, previously
Packit 0ba690
                            used assembler code tuned for Intel MMX
Packit 0ba690
                            platform)
Packit 0ba690
       makefile.gcc     =>  Generic makefile (gcc, creates static
Packit 0ba690
                            libpng.a)
Packit 0ba690
       makefile.knr     =>  Archaic UNIX Makefile that converts files
Packit 0ba690
                            with ansi2knr (Requires ansi2knr.c from
Packit 0ba690
                            ftp://ftp.cs.wisc.edu/ghost)
Packit 0ba690
       makefile.aix     =>  AIX makefile
Packit 0ba690
       makefile.cygwin  =>  Cygwin/gcc makefile
Packit 0ba690
       makefile.darwin  =>  Darwin makefile
Packit 0ba690
       makefile.dec     =>  DEC Alpha UNIX makefile
Packit 0ba690
       makefile.freebsd =>  FreeBSD makefile
Packit 0ba690
       makefile.hpgcc   =>  HPUX makefile using gcc
Packit 0ba690
       makefile.hpux    =>  HPUX (10.20 and 11.00) makefile
Packit 0ba690
       makefile.hp64    =>  HPUX (10.20 and 11.00) makefile, 64 bit
Packit 0ba690
       makefile.ibmc    =>  IBM C/C++ version 3.x for Win32 and OS/2
Packit 0ba690
                            (static)
Packit 0ba690
       makefile.intel   =>  Intel C/C++ version 4.0 and later
Packit 0ba690
       libpng.icc       =>  Project file, IBM VisualAge/C++ 4.0 or later
Packit 0ba690
       makefile.netbsd  =>  NetBSD/cc makefile, makes libpng.so.
Packit 0ba690
       makefile.ne12bsd  =>  NetBSD/cc makefile, makes libpng12.so
Packit 0ba690
       makefile.openbsd =>  OpenBSD makefile
Packit 0ba690
       makefile.sgi     =>  Silicon Graphics IRIX (cc, creates static lib)
Packit 0ba690
       makefile.sggcc   =>  Silicon Graphics
Packit 0ba690
                            (gcc, creates libpng12.so.0.1.2.57)
Packit 0ba690
       makefile.sunos   =>  Sun makefile
Packit 0ba690
       makefile.solaris =>  Solaris 2.X makefile
Packit 0ba690
                            (gcc, creates libpng12.so.0.1.2.57)
Packit 0ba690
       makefile.so9     =>  Solaris 9 makefile
Packit 0ba690
                            (gcc, creates libpng12.so.0.1.2.57)
Packit 0ba690
       makefile.32sunu  =>  Sun Ultra 32-bit makefile
Packit 0ba690
       makefile.64sunu  =>  Sun Ultra 64-bit makefile
Packit 0ba690
       makefile.sco     =>  For SCO OSr5  ELF and Unixware 7 with Native cc
Packit 0ba690
       makefile.mips    =>  MIPS makefile
Packit 0ba690
       makefile.acorn   =>  Acorn makefile
Packit 0ba690
       makefile.amiga   =>  Amiga makefile
Packit 0ba690
       smakefile.ppc    =>  AMIGA smakefile for SAS C V6.58/7.00 PPC
Packit 0ba690
                            compiler (Requires SCOPTIONS, copied from
Packit 0ba690
                            scripts/SCOPTIONS.ppc)
Packit 0ba690
       makefile.atari   =>  Atari makefile
Packit 0ba690
       makefile.beos    =>  BEOS makefile for X86
Packit 0ba690
       makefile.bor     =>  Borland makefile (uses bcc)
Packit 0ba690
       makefile.bc32    =>  32-bit Borland C++ (all modules compiled in C mode)
Packit 0ba690
       makefile.tc3     =>  Turbo C 3.0 makefile
Packit 0ba690
       makefile.dj2     =>  DJGPP 2 makefile
Packit 0ba690
       makefile.msc     =>  Microsoft C makefile
Packit 0ba690
       makefile.vcawin32=>  makefile for Microsoft Visual C++ 5.0 and
Packit 0ba690
                            later (previously used assembler code tuned
Packit 0ba690
                            for Intel MMX platform)
Packit 0ba690
       makefile.vcwin32 =>  makefile for Microsoft Visual C++ 4.0 and
Packit 0ba690
                            later (does not use assembler code)
Packit 0ba690
       makefile.os2     =>  OS/2 Makefile (gcc and emx, requires pngos2.def)
Packit 0ba690
       pngos2.def       =>  OS/2 module definition file used by makefile.os2
Packit 0ba690
       makefile.watcom  =>  Watcom 10a+ Makefile, 32-bit flat memory model
Packit 0ba690
       makevms.com      =>  VMS build script
Packit 0ba690
       SCOPTIONS.ppc    =>  Used with smakefile.ppc
Packit 0ba690
Packit 0ba690
Good luck, and happy coding.
Packit 0ba690
Packit 0ba690
-Glenn Randers-Pehrson (current maintainer, since 1998)
Packit 0ba690
 Internet: glennrp at users.sourceforge.net
Packit 0ba690
Packit 0ba690
-Andreas Eric Dilger (former maintainer, 1996-1997)
Packit 0ba690
 Internet: adilger at enel.ucalgary.ca
Packit 0ba690
 Web: http://members.shaw.ca/adilger/
Packit 0ba690
Packit 0ba690
-Guy Eric Schalnat (original author and former maintainer, 1995-1996)
Packit 0ba690
 (formerly of Group 42, Inc)
Packit 0ba690
 Internet: gschal at infinet.com