See the main README file for basic instructions on compiling and running
the programs.  See http://www.cdrom.com/pub/png/pngbook.html for further
information and links to the source code, and Chapters 13-15 of the book
for detailed discussion of the three programs.

Since the two viewers, rpng and rpng2, are both designed to write infor-
mation to the console (i.e., a DOS-window command line) while displaying
the image in a graphical window--and since I haven't yet figured out how
to do that under Windows--here are the usage screens for the two programs:


rpng-win 1.02 of 19 March 2000:  Simple PNG Viewer for Windows
   Compiled with libpng 1.0.5; using libpng 1.0.5.
   Compiled with zlib 1.1.3; using zlib 1.1.3.

Usage:  rpng-win [-gamma exp] [-bgcolor bg] file.png
    exp 	transfer-function exponent (``gamma'') of the display
		  system in floating-point format (e.g., ``2.2''); equal
		  to the product of the lookup-table exponent (varies)
		  and the CRT exponent (usually 2.2); must be positive
    bg  	desired background color in 7-character hex RGB format
		  (e.g., ``#ff7f00'' for orange:  same as HTML colors);
		  used with transparent images

Press Q, Esc or mouse button 1 after image is displayed to quit.


rpng2-win 1.04 of 19 March 2000:  Progressive PNG Viewer for Windows
   Compiled with libpng 1.0.5; using libpng 1.0.5.
   Compiled with zlib 1.1.3; using zlib 1.1.3.

Usage:  rpng2-win [-gamma exp] [-bgcolor bg | -bgpat pat] [-timing] file.png

    exp 	transfer-function exponent (``gamma'') of the display
		  system in floating-point format (e.g., ``2.2''); equal
		  to the product of the lookup-table exponent (varies)
		  and the CRT exponent (usually 2.2); must be positive
    bg  	desired background color in 7-character hex RGB format
		  (e.g., ``#ff7f00'' for orange:  same as HTML colors);
		  used with transparent images; overrides -bgpat
    pat 	desired background pattern number (1-16); used with
		  transparent images; overrides -bgcolor
    -timing	enables delay for every block read, to simulate modem
		  download of image (~36 Kbps)

Press Q, Esc or mouse button 1 after image is displayed to quit.


The usage screen for the third (non-windowed) program, wpng, can be seen
simply by invoking it without any parameters (``wpng'').

Greg Roelofs
19 March 2000
