Files
itgmania212121/extern/libpng/include/contrib/gregbook
Jason Felds 6bb3fa8d0e Downgrade to libpng 1.5.1.
This restores PNG screenshot colors.
2011-05-26 22:52:30 -04:00
..
2011-05-26 22:52:30 -04:00
2011-05-26 22:52:30 -04:00
2011-05-26 22:52:30 -04:00
2011-05-26 22:52:30 -04:00
2011-05-26 22:52:30 -04:00
2011-05-26 22:52:30 -04:00
2011-05-26 22:52:30 -04:00
2011-05-26 22:52:30 -04:00
2011-05-26 22:52:30 -04:00
2011-05-08 17:16:18 -04:00
2011-05-26 22:52:30 -04:00
2011-05-08 17:16:18 -04:00
2011-05-26 22:52:30 -04:00
2011-05-26 22:52:30 -04:00
2011-05-26 22:52:30 -04:00
2011-05-26 22:52:30 -04:00
2011-05-26 22:52:30 -04:00
2011-05-08 17:16:18 -04:00
2011-05-26 22:52:30 -04:00
2011-05-26 22:52:30 -04:00
2011-05-08 17:16:18 -04:00

                     ===========================

                      PNG: The Definitive Guide

                     ===========================



                             Source Code



Chapters 13, 14 and 15 of "PNG: The Definitive Guide" discuss three free,

cross-platform demo programs that show how to use the libpng reference

library:  rpng, rpng2 and wpng.  rpng and rpng2 are viewers; the first is

a very simple example that that shows how a standard file-viewer might use

libpng, while the second is designed to process streaming data and shows

how a web browser might be written.  wpng is a simple command-line program

that reads binary PGM and PPM files (the ``raw'' grayscale and RGB subsets

of PBMPLUS/NetPBM) and converts them to PNG.



The source code for all three demo programs currently compiles under

Unix, OpenVMS, and 32-bit Windows.  (Special thanks to Martin Zinser,

[email protected], for making the necessary changes for OpenVMS and for

providing an appropriate build script.)  Build instructions can be found

below.



Files:



   README             this file

   LICENSE            terms of distribution and reuse (BSD-like or GNU GPL)

   COPYING            GNU General Public License (GPL)



   Makefile.unx       Unix makefile

   Makefile.w32       Windows (MSVC) makefile

   makevms.com        OpenVMS build script



   rpng-win.c         Windows front end for the basic viewer

   rpng-x.c           X Window System (Unix, OpenVMS) front end

   readpng.c          generic back end for the basic viewer

   readpng.h          header file for the basic viewer



   rpng2-win.c        Windows front end for the progressive viewer

   rpng2-x.c          X front end for the progressive viewer

   readpng2.c         generic back end for the progressive viewer

   readpng2.h         header file for the progressive viewer



   wpng.c             generic (text) front end for the converter

   writepng.c         generic back end for the converter

   writepng.h         header file for the converter



   toucan.png         transparent PNG for testing (by Stefan Schneider)



Note that, although the programs are designed to be functional, their

primary purpose is to illustrate how to use libpng to add PNG support to

other programs.  As such, their user interfaces are crude and definitely

are not intended for everyday use.



Please see http://www.libpng.org/pub/png/pngbook.html for further infor-

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.



Greg Roelofs

http://pobox.com/~newt/greg_contact.html

16 March 2008





BUILD INSTRUCTIONS



 - Prerequisites (in order of compilation):



      - zlib            http://zlib.net/

      - libpng          http://www.libpng.org/pub/png/libpng.html

      - pngbook         http://www.libpng.org/pub/png/book/sources.html



     The pngbook demo programs are explicitly designed to demonstrate proper

     coding techniques for using the libpng reference library.  As a result,

     you need to download and build both zlib (on which libpng depends) and

     libpng.  A common build setup is to place the zlib, libpng and pngbook

     subdirectory trees ("folders") in the same parent directory.  Then the

     libpng build can refer to files in ../zlib (or ..\zlib or [-.zlib]),

     and similarly for the pngbook build.



     Note that all three packages are designed to be built from a command

     line by default; those who wish to use a graphical or other integrated

     development environments are on their own.





 - Unix:



     Unpack the latest pngbook sources (which should correspond to this

     README file) into a directory and change into that directory.



     Copy Makefile.unx to Makefile and edit the PNG* and Z* variables

     appropriately (possibly also the X* variables if necessary).



     make



     There is no "install" target, so copy the three executables somewhere

     in your path or run them from the current directory.  All three will

     print a basic usage screen when run without any command-line arguments;

     see the book for more details.





 - Windows:



     Unpack the latest pngbook sources (which should correspond to this

     README file) into a folder, open a "DOS shell" or "command prompt"

     or equivalent command-line window, and cd into the folder where you

     unpacked the source code.



     For MSVC, set up the necessary environment variables by invoking

 

        %devstudio%\vc\bin\vcvars32.bat



     where where %devstudio% is the installation directory for MSVC /

     DevStudio.  If you get "environment out of space" errors under 95/98,

     create a desktop shortcut with "c:\windows\command.com /e:4096" as

     the program command line and set the working directory to the pngbook

     directory.  Then double-click to open the new DOS-prompt window with

     a bigger environment and retry the commands above.



     Copy Makefile.w32 to Makefile and edit the PNGPATH and ZPATH variables

     appropriately (possibly also the "INC" and "LIB" variables if needed).

     Note that the names of the dynamic and static libpng and zlib libraries

     used in the makefile may change in later releases of the libraries.

     Also note that, as of libpng version 1.0.5, MSVC DLL builds do not work.

     This makefile therefore builds statically linked executables, but if

     the DLL problems ever get fixed, uncommenting the appropriate PNGLIB

     and ZLIB lines will build dynamically linked executables instead.



     Do the build by typing



        nmake



     The result should be three executables:  rpng-win.exe, rpng2-win.exe,

     and wpng.exe.  Copy them somewhere in your PATH or run them from the

     current folder.  Like the Unix versions, the two windowed programs

     (rpng and rpng2) now display a usage screen in a console window when

     invoked without command-line arguments; this is new behavior as of

     the June 2001 release.  Note that the programs use the Unix-style "-"

     character to specify options, instead of the more common DOS/Windows

     "/" character.  (For example:  "rpng2-win -bgpat 4 foo.png", not

     "rpng2-win /bgpat 4 foo.png")





 - OpenVMS:



     Unpack the pngbook sources into a subdirectory and change into that

     subdirectory.



     Edit makevms.com appropriately, specifically the zpath and pngpath

     variables.



     @makevms



     To run the programs, they probably first need to be set up as "foreign

     symbols," with "disk" and "dir" set appropriately:



     $ rpng  == "$disk:[dir]rpng-x.exe"

     $ rpng2 == "$disk:[dir]rpng2-x.exe"

     $ wpng  == "$disk:[dir]wpng.exe"



     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

     style is Unix-like, i.e., preceded by "-" rather than "/".





RUNNING THE PROGRAMS:  (VERY) BRIEF INTRO



     rpng is a simple PNG viewer that can display transparent PNGs with a

     specified background color; for example,



        rpng -bgcolor \#ff0000 toucan.png



     would display the image with a red background.  rpng2 is a progressive

     viewer that simulates a web browser in some respects; it can display

     images against either a background color or a dynamically generated

     background image.  For example:



        rpng2 -bgpat 16 toucan.png



     wpng is a purely command-line image converter from binary PBMPLUS/NetPBM

     format (.pgm or .ppm) to PNG; for example,



        wpng -time < toucan-notrans.ppm > toucan-notrans.png



     would convert the specified PPM file (using redirection) to PNG, auto-

     matically setting the PNG modification-time chunk.



     All options can be abbreviated to the shortest unique value; for example,

     "-bgc" for -bgcolor (versus "-bgp" for -bgpat), or "-g" for -gamma.