summaryrefslogtreecommitdiff
path: root/contrib/gregbook/README
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/gregbook/README')
-rw-r--r--contrib/gregbook/README231
1 files changed, 181 insertions, 50 deletions
diff --git a/contrib/gregbook/README b/contrib/gregbook/README
index fa3871a7d..a8bbc2874 100644
--- a/contrib/gregbook/README
+++ b/contrib/gregbook/README
@@ -1,52 +1,183 @@
-PNG: The Definitive Guide: Source Code
+ ===========================
+ PNG: The Definitive Guide
+ ===========================
-Chapters 13, 14 and 15 of PNG: The Definitive Guide discuss three
+ 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 PPM files (the ``raw'' RGB subset of NetPBM) and converts them
-to PNG.
-
-The source code for all three demo programs currently compiles only under
-Unix and 32-bit Windows. It has been tested with gcc 2.7.2.3 under Linux and
-Solaris and with Microsoft Visual C++ 5.0 under Windows 95. Brief
-instructions for compiling the programs are included at the top of the
-makefiles; makefile.unx is the Unix version, and makefile.w32 is (you
-guessed it!) the version for 32-bit Windows. libpng and zlib are required.
-
-----------------------------------------------------------------------------
-
-License
-
-The source code to the demo programs may be used and distributed freely
-(even if you didn't buy the book--but feel free to do so at any time),
-subject to the terms of the following BSD-like license:
-
- Copyright (c) 1998-1999 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.
-
- 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 documentation 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.
-
-----------------------------------------------------------
-http://www.cdrom.com/pub/png/book/sources.html
+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,
+zinser@decus.de, for making the necessary changes for OpenVMS and for
+providing an appropriate build script.) Build instructions can be
+found below.
+
+Files:
+
+ README this file
+ README.w32 additional Windows-specific information
+ LICENSE terms of distribution and reuse (BSD-like)
+
+ 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 the programs are designed to be functional, but their primary
+purpose is to demonstrate how to use libpng to add PNG support to other
+programs. As such, their user interfaces are crude and definitely not
+intended for everyday use.
+
+Please see http://www.cdrom.com/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
+19 March 2000
+
+
+BUILD INSTRUCTIONS
+
+ - Prerequisites:
+
+ - zlib ftp://ftp.cdrom.com/pub/infozip/zlib/zlib.html
+ - libpng http://www.cdrom.com/pub/png/pngcode.html
+ - pngbook http://www.cdrom.com/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. Unlike the Unix versions, the two windowed programs
+ (rpng and rpng2) do not display a usage screen when invoked without
+ command-line arguments; see README.w32 for brief help or the book for
+ details. Note that the programs use the Unix-style "-" character to
+ specify options, instead of the more common DOS/Windows "/" character.
+
+
+ - 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.ppm > toucan.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.