Microsoft Developer Studio Build File, Format Version 6.00 for VisualPng
------------------------------------------------------------------------

Copyright 2000, Willem van Schaik.

This code is released under the libpng license.
For conditions of distribution and use, see the disclaimer
and license in png.h

As a PNG .dll demo VisualPng is finished. More features would only hinder
the program's objective. However, further extensions (like support for other 
graphics formats) are in development. To get these, or for pre-compiled 
binaries, go to "http://www.schaik.com/png/visualpng.html".

------------------------------------------------------------------------

Assumes that

   libpng DLLs and LIBs are in ..\..\projects\msvc\win32\libpng
   zlib DLLs and LIBs are in   ..\..\projects\msvc\win32\zlib
   libpng header files are in  ..\..\..\libpng
   zlib header files are in    ..\..\..\zlib
   the pngsuite images are in  ..\pngsuite

To build:

1) On the main menu Select "Build|Set Active configuration".
   Choose the configuration that corresponds to the library you want to test.
   This library must have been built using the libpng MS project located in
   the "..\..\mscv" subdirectory.

2) Select "Build|Clean"

3) Select "Build|Rebuild All"

4) After compiling and linking VisualPng will be started to view an image
   from the PngSuite directory.  Press Ctrl-N (and Ctrl-V) for other images.


To install:

When distributing VisualPng (or a further development) the following options
are available:

1) Build the program with the configuration "Win32 LIB" and you only need to
   include the executable from the ./lib directory in your distribution.

2) Build the program with the configuration "Win32 DLL" and you need to put
   in your distribution the executable from the ./dll directory and the dll's
   libpng1.dll, zlib.dll and msvcrt.dll.  These need to be in the user's PATH.


Willem van Schaik
Calgary, June 6th 2000

P.S. VisualPng was written based on preliminary work of:

    - Simon-Pierre Cadieux
    - Glenn Randers-Pehrson
    - Greg Roelofs

