     	               
                       PNG Library for Delphi, v2.4a
                               5 Mar 2001

Project Summary
---------------
This is a freeware port of the popular "libpng" project to Delphi.
It is a free way for you to add PNG image support to a Delphi
program.

However, although it is free, the people who put this together did
not write any introductory documentation - mostly because they are
too busy.  So, this package can be difficult for a first-time 
user to understand.  Please consult the Delphi Graphics Newsgroup
for help - do not address your question to a particular person, 
but include "libpng" or "png" in the subject of your message and
someone may be able to help you.

There are 2 DLL's included here. One of them has the Pentium 
optimizations by David Taylor, and the other one is a "plain
vanilla" DLL.  You can use either one based on how you set up
your $DEFINE symbols in the code.

I put this release together, but I did not do much work on it.
I basically collected everything together and I tried to give the
right people credit for their work. Let me know if I've left anyone
out!

Eric Engler
englere@abraxis.com
eric.engler@zcsterling.com


UPDATES
-------
Updates to this library can be found here:
   http://www.geocities.com/SiliconValley/Network/2114/
      and at the mirror site here:
   http://englere.tripod.com/index.html

To learn more about PNG images, go to the PNG Home Page:
   http://www.libpng.org/pub/png/

This library is a Delphi port of the Open Source "libpng" project, which is here:
   http://www.libpng.org/pub/png/libpng.html


Version 2.4a Notes
------------------
Dominique Louis added some conditional define symbols to PngDef.pas for compatiblity
with 1.0.8 of libpng. 


Version 2.4 notes
-----------------
Added lpng-px.dll for people who want to make use of Pentium processors

PngDef.pas changes :
  Added $IFDEF so that users can decide at compile time which version of the DLL they
  wish to use.
  This file has been partially updated to version 1.0.8 of PNGLIB.

PngImage changes :
  Add standard OnProgress functions, only tested write.
  In this code, moved some up PngImage routines which had
  slipped into the PngGraphic routines.

  Add Software property
  Unify text saving code

  Make CompressionLevel work correctly on save
  Make the three text fields save properly
  Add new FilterChoice property
  Add new ForceColor property for input, default True
  For 8-bit images, save palettes correctly
  For 8-bit images, use palette loaded from PNG

  Minor change to make writing work,
  Make 8-bit greyscale images save correctly

David J Taylor ( david-taylor@blueyonder.co.uk )

Version 2.3 notes
-----------------
  General Code Clean up to make it more readable with consistant naming
  conventions. Sorry Umberto, but I typically freak out when my begin...end or
  try..finally do not stand out on their own.
  This library implements 8 bit png, gamma and callback to show loading progress.
  Added Transparency Code
  Added Background Color Code
  Added Gamma Code
  Fixed various display bugs ( and probably introduced a few )
  Added Read and Write Progress functionality ( Check demo for how to set it up )
  Added preliminary Interlace code
  Rewrote demo to make use of ActionLists ( I hope there are not too many Delphi
  3 or 2 users out there ). Also added options for Open/SavePictureDialogs.
  There are still some issues when displaying some types of images but I currently do
  not have enough time to do more fixes. That is why it is being released as 2.3.
  No changes were made to the writing routines so I assume they still work.

Dominique Louis ( Dominique@SavageSoftware.com.au )


Version 2.2 notes
-----------------

I made some bug fixes and added support for TEXT and TIME
chunks. 

I tested LPNG.DLL with the free file-packing program called UPX. 
It is available here:  http://www.nexus.hu/upx/
I found that LPNG.DLL became 80 Kb, however, it did not work
on Windows 2000 after being compressed.

Uberto Barbini (uberto@usa.net)



Version 2.1 notes
-----------------
Note: we fixed a small bug in the v2.0 release. It prevented the
PNG images written by this library to have a correct end mark.
There have been no other changes since v2.0.


This is the "New and Improved" Delphi Interface for the freeware
"libpng" project. We are now using the newest version of the libpng 
code, version 1.0.5, October 1999.

The "libpng" project is made up of a group of people who want to make
the PNG format more popular, and their web site can be found here:
http://www.cdrom.com/pub/png/pngcode.html

This Delphi version is based on the C/C++ version, but it has been
customized for use with the Delphi language.  You can find updates to 
this Delphi PNG library package here:
http://www.geocities.com/SiliconValley/Network/2114/

The first version of this code was produced by Edmund Hand, and his
code was distributed with LPNG.DLL, version 1.0.1.  His code was very
helpful for many of us Delphi programmers who wanted to support the 
new PNG file format.

After distributing his code for over a year, Edmund apparently 
dropped the project, and he is no longer available through his 
published e-mail address.

Thankfully for us, Uberto Barbini said he was willing to help update
the package, and I agreed to make a new DLL.  I will release the
instructions on how to make a new DLL on my website soon. This DLL
is very complex, and updates are likely (maybe 2 - 4 times a year).

Uberto had a big job trying to use the new DLL, since the interface for
many of the functions changed.  The new version wanted a C language
file pointer passed in with many functions and procedures!  Uberto 
found that he could use streams to do this interface, so he was able
to write the code we needed!

We have not tested every function supported by the DLL, since that
would take months!  Instead, we have tested with most of the standard 
PNG test images, and we have found that this package works with "most"
of the valid PNG formats.

Since the PNG format is so technically comprehensive, it is very difficult
to "fully" support the PNG format. It is common to find that many of the 
best graphics programs only support a subset of PNG, so this should not
be considered a major problem. Our goal was to support most of the typical
PNG images used in the real world, and I think we have met that goal.
  
The file DELPHI.TXT gives you information about using this library.

Eric Engler - I can handle questions on making the DLL 
englere@abraxis.com

Uberto Barbini - Uberto is the person for most other questions!
uberto@usa.net

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

  COPYRIGHT NOTICE:

  The unit is supplied "AS IS".  The Author disclaims all warranties,
  expressed or implied, including, without limitation, the warranties of
  merchantability and of fitness for any purpose.  The Author assumes no
  liability for direct, indirect, incidental, special, exemplary, or
  consequential damages, which may result from the use of this unit, even
  if advised of the possibility of such damage.

  Permission is hereby granted to use, copy, modify, and distribute this
  source code, or portions hereof, for any purpose, without fee, subject
  to the following restrictions:
  1. The origin of this source code must not be misrepresented.
  2. Altered versions must be plainly marked as such and must not be
     misrepresented as being the original source.
  3. This Copyright notice may not be removed or altered from any source or
     altered source distribution.

Edmund Hand, Uberto Barbini (uberto@usa.net)
