990729 Thomas Boutell (TBB)
	- It would probably be a good idea to free the 
	  png_write_struct, wouldn't it.
990727 Thomas Boutell (TBB)
	- Sorted out -lm problem that prevented PNG library
	  from being correctly detected or flagged as absent
	- Got rid of unneeded Makefiles in test directory
	- No version number change (no code changes)
990721 Philip Warner (pjw)
	- Added gdImageCompare
	- Various fixes, including bottom line of polygon
990720 Thomas Boutell (TBB)
	- Removed automatic allocation of variably sized array 
          from gdImagePngCtx, replaced with malloc call

990720 Greg Roelofs
        - Another new version of gd_png.c, with additional fixes
 
990720 John Ellson (ellson@lucent.com)
	- converted to GNU autoconf/automake/libtool
	- added functions: gdImageStringTTF  gdImageColorResolve
	- added source files: gdttf.c gdcache.c gdcche.h gdtestttf.c
	- modified source files: gd.c gd.h
	- renamed:  HISTORY -> ChangeLog
	            readme.txt -> README
	- updated docs: index.html, README
	All changes should be fully backward compatible with gd1.6.1
	If libttf is not found by configure then gdImageStringTTF is a stub.

990718 Thomas Boutell (TBB)

Incorporated Greg Roelofs' superior PNG read and write routines.

990715 Thomas Boutell (TBB)

Removed all GIF capability in favor of PNG
in order to remove any possible LZW patent concerns.

990701 Philip Warner (pjw) as documented by TBB

Implemented gdImageSink (missing in initial 1.5 release),
renamed all new source files to have a gd_ prefix.

990628 Thomas Boutell (TBB)

Removed all C++ style comments for broader compatibility.

990310 Philip Warner (pjw)
--------------------------

Broke gd.c into multiple files; gd.c now has graphics operations, and gd_<zzz> has specific
support for different formats (eg. GD, GD2, GIF).

Restructured I/O so that reading from files/streams/anything is now possible. All handled
through the IOCtx record which must define some basic I/O services. All services are defined
for files, but only some are defined for in-memory pointers. The in-memory pointer 
implementation is primarily for Perl compatibility. Changed basically involved writing some 
low level IO routines, and relpacing most FILE* variables with IOCtx*.

Added gdImageGdPtr, gdImageGd2Ptr, gdImageGifPtr, gdImageLzwPtr for Perl compatibility.

Broke up the GIF handling routines; gd_gif_in.c does all GIF input (this did not change when
support for LZW compression was removed). gd_gif_out.c not handles the miGif compression that
was introduced in version 1.3

Reinstated LZW support through the gdImageLzw function (defined in gd_lzw_out.c). 
This is NOT built by default, and the header file must be modified to include it in the build.

Added 'GD2' support. This is a zlib-compressed internal format useful for extracting portions
of images without having to read entire image files. Informal tests suggest it is only 30% slower
than the old GD format, and file space requirements are similar to GOF. The GD2 header fields 
now contain version information, so the format can probably be considered stable across versions.

Various other functions also added (see index.html).

Informal Tests
--------------

pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t064.gd2 100 3000 2000 400 300
Extracting 100 times from (3000, 2000), size is 400x300
23 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t128.gd2 100 3000 2000 400 300
Extracting 100 times from (3000, 2000), size is 400x300
19 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t256.gd2 100 3000 2000 400 300
Extracting 100 times from (3000, 2000), size is 400x300
33 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t512.gd2 100 3000 2000 400 300
Extracting 100 times from (3000, 2000), size is 400x300
65 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t064.gd2 100 3000 2000 200 100
Extracting 100 times from (3000, 2000), size is 200x100
8 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t128.gd2 100 3000 2000 200 100
Extracting 100 times from (3000, 2000), size is 200x100
8 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t256.gd2 100 3000 2000 200 100
Extracting 100 times from (3000, 2000), size is 200x100
16 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t512.gd2 100 3000 2000 200 100
Extracting 100 times from (3000, 2000), size is 200x100
59 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t064.gd2 100 3000 2000 800 600
Extracting 100 times from (3000, 2000), size is 800x600
71 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t128.gd2 100 3000 2000 800 600
Extracting 100 times from (3000, 2000), size is 800x600
70 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t256.gd2 100 3000 2000 800 600
Extracting 100 times from (3000, 2000), size is 800x600
86 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t512.gd2 100 3000 2000 800 600
Extracting 100 times from (3000, 2000), size is 800x600
160 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ls -lrt t*.gd2
-rw-r--r--   1 pjw      users     1363301 Mar 10 12:03 t512.gd2
-rw-r--r--   1 pjw      users     1339003 Mar 10 12:06 t256.gd2
-rw-r--r--   1 pjw      users     1323925 Mar 10 12:09 t128.gd2
-rw-r--r--   1 pjw      users     1492096 Mar 10 12:12 t064.gd2
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t064.gd2 100 3000 2000 50 25
Extracting 100 times from (3000, 2000), size is 50x25
4 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t128.gd2 100 3000 2000 50 25
Extracting 100 times from (3000, 2000), size is 50x25
2 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t256.gd2 100 3000 2000 50 25
Extracting 100 times from (3000, 2000), size is 50x25
4 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t512.gd2 100 3000 2000 50 25
Extracting 100 times from (3000, 2000), size is 50x25
15 seconds to extract (& destroy) 100 times

