Blame gtkmm-osx/libpng-1.2.5/README

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