Commits

Anonymous committed 6223ff8

- sync to 1.6.2

Comments (0)

Files changed (38)

+
+  Credits and license terms
+  
+   In order to resolve any possible confusion regarding the authorship of
+   gd, the following copyright statement covers all of the authors who
+   have required such a statement. _If you are aware of any oversights in
+   this copyright notice, please contact Thomas Boutell who will be
+   pleased to correct them._
+
+COPYRIGHT STATEMENT FOLLOWS THIS LINE
+
+     Portions copyright 1994, 1995, 1996, 1997, 1998, 1999, by Cold
+     Spring Harbor Laboratory. Funded under Grant P41-RR02188 by the
+     National Institutes of Health.
+     
+     Portions copyright 1996, 1997, 1998, 1999, by Boutell.Com, Inc.
+     
+     Portions relating to GD2 format copyright 1999 Philip Warner.
+     
+     Portions relating to PNG copyright 1999, Greg Roelofs.
+     
+     Portions relating to libttf copyright 1999, John Ellson
+     (ellson@lucent.com).
+     
+     _Permission has been granted to copy and distribute gd in any
+     context, including a commercial application, provided that this
+     notice is present in user-accessible supporting documentation._
+     
+     This does not affect your ownership of the derived work itself, and
+     the intent is to assure proper credit for the authors of gd, not to
+     interfere with your productive use of gd. If you have questions,
+     ask. "Derived works" includes all programs that utilize the
+     library. Credit must be given in user-accessible documentation.
+     
+     Permission to use, copy, modify, and distribute this software and
+     its documentation for any purpose and without fee is hereby
+     granted, provided that the above copyright notice appear in all
+     copies and that both that copyright notice and this permission
+     notice appear in supporting documentation. This software is
+     provided "as is" without express or implied warranty.
+     
+     Although their code does not appear in gd 1.6.2, the authors wish
+     to thank David Koblas, David Rowley, and Hutchison Avenue Software
+     Corporation for their prior contributions.
+     
+     Permission to use, copy, modify, and distribute this software and
+     its documentation for any purpose and without fee is hereby
+     granted, provided that the above copyright notice appear in all
+     copies and that both that copyright notice and this permission
+     notice appear in supporting documentation. _This software is
+     provided "AS IS."_ The copyright holders disclaim all warranties,
+     either express or implied, including but not limited to implied
+     warranties of merchantability and fitness for a particular purpose,
+     with respect to this code and accompanying documentation.
+     
+END OF COPYRIGHT STATEMENT
+
+  Credits and license terms
+  
+   In order to resolve any possible confusion regarding the authorship of
+   gd, the following copyright statement covers all of the authors who
+   have required such a statement. _If you are aware of any oversights in
+   this copyright notice, please contact Thomas Boutell who will be
+   pleased to correct them._
+
+COPYRIGHT STATEMENT FOLLOWS THIS LINE
+
+     Portions copyright 1994, 1995, 1996, 1997, 1998, 1999, by Cold
+     Spring Harbor Laboratory. Funded under Grant P41-RR02188 by the
+     National Institutes of Health.
+     
+     Portions copyright 1996, 1997, 1998, 1999, by Boutell.Com, Inc.
+     
+     Portions relating to GD2 format copyright 1999 Philip Warner.
+     
+     Portions relating to PNG copyright 1999, Greg Roelofs.
+     
+     Portions relating to libttf copyright 1999, John Ellson
+     (ellson@lucent.com).
+     
+     _Permission has been granted to copy and distribute gd in any
+     context, including a commercial application, provided that this
+     notice is present in user-accessible supporting documentation._
+     
+     This does not affect your ownership of the derived work itself, and
+     the intent is to assure proper credit for the authors of gd, not to
+     interfere with your productive use of gd. If you have questions,
+     ask. "Derived works" includes all programs that utilize the
+     library. Credit must be given in user-accessible documentation.
+     
+     Permission to use, copy, modify, and distribute this software and
+     its documentation for any purpose and without fee is hereby
+     granted, provided that the above copyright notice appear in all
+     copies and that both that copyright notice and this permission
+     notice appear in supporting documentation. This software is
+     provided "as is" without express or implied warranty.
+     
+     Although their code does not appear in gd 1.6.2, the authors wish
+     to thank David Koblas, David Rowley, and Hutchison Avenue Software
+     Corporation for their prior contributions.
+     
+     Permission to use, copy, modify, and distribute this software and
+     its documentation for any purpose and without fee is hereby
+     granted, provided that the above copyright notice appear in all
+     copies and that both that copyright notice and this permission
+     notice appear in supporting documentation. _This software is
+     provided "AS IS."_ The copyright holders disclaim all warranties,
+     either express or implied, including but not limited to implied
+     warranties of merchantability and fitness for a particular purpose,
+     with respect to this code and accompanying documentation.
+     
+END OF COPYRIGHT STATEMENT
+
+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
+
-Installing gd
-=============
+Basic Installation
+==================
 
-Note that this describes system level installation. Each user will
-have to make a shell-alias or -function to use gd. Please see the
-manual pages for how to do that.
+   These are generic installation instructions.
 
-Installing gd is quite simple, just copy `gdprog' to some
-bin-directory, and `gd.1' and `gdprog.1' to a matching
-man/man1-directory.
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
 
-You may also execute `make install'. This will install `gdprog' in
-/usr/local/bin, and `gd.1' and `gdprog.1' in /usr/local/man/man1.
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
 
+   The file `configure.in' is used to create `configure' by a program
+called `autoconf'.  You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.  If you're
+     using `csh' on an old version of System V, you might need to type
+     `sh ./configure' instead to prevent `csh' from trying to execute
+     `configure' itself.
+
+     Running `configure' takes awhile.  While running, it prints some
+     messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.
+
+  5. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  You can give `configure'
+initial values for variables by setting them in the environment.  Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+   If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory.  After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+   By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc.  You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on.  Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+     CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+   If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+     Use and save the results of the tests in FILE instead of
+     `./config.cache'.  Set FILE to `/dev/null' to disable caching, for
+     debugging `configure'.
+
+`--help'
+     Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`--version'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+## Process this file with automake to produce Makefile.in
+
+AUTOMAKE_OPTIONS = 1.4
+
+noinst_HEADERS = gdcache.h 
+
+lib_LTLIBRARIES = libgd.la
+
+include_HEADERS = gd.h gd_io.h gdfontt.h gdfonts.h \
+	gdfontmb.h gdfontl.h gdfontg.h
+
+libgd_la_SOURCES = gd.c gd_io.c gd_io_file.c gd_io_dp.c gd_io_ss.c \
+	gd_png.c gd_ss.c gd_gd.c gd_gd2.c gdfontt.c gdfonts.c gdfontmb.c \
+	gdfontl.c gdfontg.c gdttf.c gdcache.c \
+	gd.h gdcache.h gdfontl.h gdfonts.h gd_io.h gdfontg.h \
+	gdfontmb.h gdfontt.h
+
+libgd_la_LIBADD = @LIBS@ -lm
+
+bin_PROGRAMS = pngtogd pngtogd2 gdtopng gd2topng gd2copypal gdparttopng webpng
+
+noinst_PROGRAMS = gdtest gddemo gd2time gdtestttf
+
+gdtest_SOURCES = gdtest.c gd.h
+gdtest_LDADD = libgd.la
+
+gdtestttf_SOURCES = gdtestttf.c gd.h
+gdtestttf_LDADD = libgd.la
+
+gddemo_SOURCES = gddemo.c gd.h gdfonts.h gdfontg.h
+gddemo_LDADD = libgd.la
+
+pngtogd_SOURCES = pngtogd.c gd.h
+pngtogd_LDADD = libgd.la
+
+pngtogd2_SOURCES = pngtogd2.c gd.h
+pngtogd2_LDADD = libgd.la
+
+gdtopng_SOURCES = gdtopng.c gd.h
+gdtopng_LDADD = libgd.la
+
+gd2topng_SOURCES = gd2topng.c gd.h
+gd2topng_LDADD = libgd.la
+
+gd2copypal_SOURCES = gd2copypal.c gd.h
+gd2copypal_LDADD = libgd.la
+
+gdparttopng_SOURCES = gdparttopng.c gd.h
+gdparttopng_LDADD = libgd.la
+
+gd2time_SOURCES = gd2time.c gd.h
+gd2time_LDADD = libgd.la
+
+webpng_SOURCES = webpng.c gd.h
+webpng_LDADD = libgd.la
+
+EXTRA_DIST = demoin.png index.html test/*
+
+CLEANFILES = demoout.png
+# Makefile.in generated automatically by automake 1.4 from Makefile.am
+
+# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+SHELL = @SHELL@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+
+bindir = @bindir@
+sbindir = @sbindir@
+libexecdir = @libexecdir@
+datadir = @datadir@
+sysconfdir = @sysconfdir@
+sharedstatedir = @sharedstatedir@
+localstatedir = @localstatedir@
+libdir = @libdir@
+infodir = @infodir@
+mandir = @mandir@
+includedir = @includedir@
+oldincludedir = /usr/include
+
+DESTDIR =
+
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+
+top_builddir = .
+
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+transform = @program_transform_name@
+
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_alias = @build_alias@
+build_triplet = @build@
+host_alias = @host_alias@
+host_triplet = @host@
+target_alias = @target_alias@
+target_triplet = @target@
+AS = @AS@
+CC = @CC@
+DLLTOOL = @DLLTOOL@
+LD = @LD@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+MAKEINFO = @MAKEINFO@
+NM = @NM@
+OBJDUMP = @OBJDUMP@
+PACKAGE = @PACKAGE@
+RANLIB = @RANLIB@
+VERSION = @VERSION@
+
+AUTOMAKE_OPTIONS = 1.4
+
+noinst_HEADERS = gdcache.h 
+
+lib_LTLIBRARIES = libgd.la
+
+include_HEADERS = gd.h gd_io.h gdfontt.h gdfonts.h 	gdfontmb.h gdfontl.h gdfontg.h
+
+
+libgd_la_SOURCES = gd.c gd_io.c gd_io_file.c gd_io_dp.c gd_io_ss.c 	gd_png.c gd_ss.c gd_gd.c gd_gd2.c gdfontt.c gdfonts.c gdfontmb.c 	gdfontl.c gdfontg.c gdttf.c gdcache.c 	gd.h gdcache.h gdfontl.h gdfonts.h gd_io.h gdfontg.h 	gdfontmb.h gdfontt.h
+
+
+libgd_la_LIBADD = @LIBS@ -lm
+
+bin_PROGRAMS = pngtogd pngtogd2 gdtopng gd2topng gd2copypal gdparttopng webpng
+
+noinst_PROGRAMS = gdtest gddemo gd2time gdtestttf
+
+gdtest_SOURCES = gdtest.c gd.h
+gdtest_LDADD = libgd.la
+
+gdtestttf_SOURCES = gdtestttf.c gd.h
+gdtestttf_LDADD = libgd.la
+
+gddemo_SOURCES = gddemo.c gd.h gdfonts.h gdfontg.h
+gddemo_LDADD = libgd.la
+
+pngtogd_SOURCES = pngtogd.c gd.h
+pngtogd_LDADD = libgd.la
+
+pngtogd2_SOURCES = pngtogd2.c gd.h
+pngtogd2_LDADD = libgd.la
+
+gdtopng_SOURCES = gdtopng.c gd.h
+gdtopng_LDADD = libgd.la
+
+gd2topng_SOURCES = gd2topng.c gd.h
+gd2topng_LDADD = libgd.la
+
+gd2copypal_SOURCES = gd2copypal.c gd.h
+gd2copypal_LDADD = libgd.la
+
+gdparttopng_SOURCES = gdparttopng.c gd.h
+gdparttopng_LDADD = libgd.la
+
+gd2time_SOURCES = gd2time.c gd.h
+gd2time_LDADD = libgd.la
+
+webpng_SOURCES = webpng.c gd.h
+webpng_LDADD = libgd.la
+
+EXTRA_DIST = demoin.png index.html test/*
+
+CLEANFILES = demoout.png
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_CLEAN_FILES = 
+LTLIBRARIES =  $(lib_LTLIBRARIES)
+
+
+DEFS = @DEFS@ -I. -I$(srcdir) 
+CPPFLAGS = @CPPFLAGS@
+LDFLAGS = @LDFLAGS@
+LIBS = @LIBS@
+libgd_la_LDFLAGS = 
+libgd_la_DEPENDENCIES = 
+libgd_la_OBJECTS =  gd.lo gd_io.lo gd_io_file.lo gd_io_dp.lo gd_io_ss.lo \
+gd_png.lo gd_ss.lo gd_gd.lo gd_gd2.lo gdfontt.lo gdfonts.lo gdfontmb.lo \
+gdfontl.lo gdfontg.lo gdttf.lo gdcache.lo
+PROGRAMS =  $(bin_PROGRAMS) $(noinst_PROGRAMS)
+
+pngtogd_OBJECTS =  pngtogd.o
+pngtogd_DEPENDENCIES =  libgd.la
+pngtogd_LDFLAGS = 
+pngtogd2_OBJECTS =  pngtogd2.o
+pngtogd2_DEPENDENCIES =  libgd.la
+pngtogd2_LDFLAGS = 
+gdtopng_OBJECTS =  gdtopng.o
+gdtopng_DEPENDENCIES =  libgd.la
+gdtopng_LDFLAGS = 
+gd2topng_OBJECTS =  gd2topng.o
+gd2topng_DEPENDENCIES =  libgd.la
+gd2topng_LDFLAGS = 
+gd2copypal_OBJECTS =  gd2copypal.o
+gd2copypal_DEPENDENCIES =  libgd.la
+gd2copypal_LDFLAGS = 
+gdparttopng_OBJECTS =  gdparttopng.o
+gdparttopng_DEPENDENCIES =  libgd.la
+gdparttopng_LDFLAGS = 
+webpng_OBJECTS =  webpng.o
+webpng_DEPENDENCIES =  libgd.la
+webpng_LDFLAGS = 
+gdtest_OBJECTS =  gdtest.o
+gdtest_DEPENDENCIES =  libgd.la
+gdtest_LDFLAGS = 
+gddemo_OBJECTS =  gddemo.o
+gddemo_DEPENDENCIES =  libgd.la
+gddemo_LDFLAGS = 
+gd2time_OBJECTS =  gd2time.o
+gd2time_DEPENDENCIES =  libgd.la
+gd2time_LDFLAGS = 
+gdtestttf_OBJECTS =  gdtestttf.o
+gdtestttf_DEPENDENCIES =  libgd.la
+gdtestttf_LDFLAGS = 
+CFLAGS = @CFLAGS@
+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
+HEADERS =  $(include_HEADERS) $(noinst_HEADERS)
+
+DIST_COMMON =  README AUTHORS COPYING ChangeLog INSTALL Makefile.am \
+Makefile.in NEWS aclocal.m4 config.guess config.sub configure \
+configure.in install-sh ltconfig ltmain.sh missing mkinstalldirs
+
+
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
+
+TAR = tar
+GZIP_ENV = --best
+SOURCES = $(libgd_la_SOURCES) $(pngtogd_SOURCES) $(pngtogd2_SOURCES) $(gdtopng_SOURCES) $(gd2topng_SOURCES) $(gd2copypal_SOURCES) $(gdparttopng_SOURCES) $(webpng_SOURCES) $(gdtest_SOURCES) $(gddemo_SOURCES) $(gd2time_SOURCES) $(gdtestttf_SOURCES)
+OBJECTS = $(libgd_la_OBJECTS) $(pngtogd_OBJECTS) $(pngtogd2_OBJECTS) $(gdtopng_OBJECTS) $(gd2topng_OBJECTS) $(gd2copypal_OBJECTS) $(gdparttopng_OBJECTS) $(webpng_OBJECTS) $(gdtest_OBJECTS) $(gddemo_OBJECTS) $(gd2time_OBJECTS) $(gdtestttf_OBJECTS)
+
+all: all-redirect
+.SUFFIXES:
+.SUFFIXES: .S .c .lo .o .s
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) 
+	cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps Makefile
+
+Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) \
+	  && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(ACLOCAL_M4):  configure.in 
+	cd $(srcdir) && $(ACLOCAL)
+
+config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
+	cd $(srcdir) && $(AUTOCONF)
+
+mostlyclean-libLTLIBRARIES:
+
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+
+distclean-libLTLIBRARIES:
+
+maintainer-clean-libLTLIBRARIES:
+
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libdir)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    echo "$(LIBTOOL)  --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \
+	    $(LIBTOOL)  --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \
+	  else :; fi; \
+	done
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  $(LIBTOOL)  --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
+	done
+
+.c.o:
+	$(COMPILE) -c $<
+
+.s.o:
+	$(COMPILE) -c $<
+
+.S.o:
+	$(COMPILE) -c $<
+
+mostlyclean-compile:
+	-rm -f *.o core *.core
+
+clean-compile:
+
+distclean-compile:
+	-rm -f *.tab.c
+
+maintainer-clean-compile:
+
+.c.lo:
+	$(LIBTOOL) --mode=compile $(COMPILE) -c $<
+
+.s.lo:
+	$(LIBTOOL) --mode=compile $(COMPILE) -c $<
+
+.S.lo:
+	$(LIBTOOL) --mode=compile $(COMPILE) -c $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+
+maintainer-clean-libtool:
+
+libgd.la: $(libgd_la_OBJECTS) $(libgd_la_DEPENDENCIES)
+	$(LINK) -rpath $(libdir) $(libgd_la_LDFLAGS) $(libgd_la_OBJECTS) $(libgd_la_LIBADD) $(LIBS)
+
+mostlyclean-binPROGRAMS:
+
+clean-binPROGRAMS:
+	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+
+distclean-binPROGRAMS:
+
+maintainer-clean-binPROGRAMS:
+
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(bindir)
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    echo " $(LIBTOOL)  --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
+	    $(LIBTOOL)  --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
+	  else :; fi; \
+	done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
+	done
+
+mostlyclean-noinstPROGRAMS:
+
+clean-noinstPROGRAMS:
+	-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+
+distclean-noinstPROGRAMS:
+
+maintainer-clean-noinstPROGRAMS:
+
+pngtogd: $(pngtogd_OBJECTS) $(pngtogd_DEPENDENCIES)
+	@rm -f pngtogd
+	$(LINK) $(pngtogd_LDFLAGS) $(pngtogd_OBJECTS) $(pngtogd_LDADD) $(LIBS)
+
+pngtogd2: $(pngtogd2_OBJECTS) $(pngtogd2_DEPENDENCIES)
+	@rm -f pngtogd2
+	$(LINK) $(pngtogd2_LDFLAGS) $(pngtogd2_OBJECTS) $(pngtogd2_LDADD) $(LIBS)
+
+gdtopng: $(gdtopng_OBJECTS) $(gdtopng_DEPENDENCIES)
+	@rm -f gdtopng
+	$(LINK) $(gdtopng_LDFLAGS) $(gdtopng_OBJECTS) $(gdtopng_LDADD) $(LIBS)
+
+gd2topng: $(gd2topng_OBJECTS) $(gd2topng_DEPENDENCIES)
+	@rm -f gd2topng
+	$(LINK) $(gd2topng_LDFLAGS) $(gd2topng_OBJECTS) $(gd2topng_LDADD) $(LIBS)
+
+gd2copypal: $(gd2copypal_OBJECTS) $(gd2copypal_DEPENDENCIES)
+	@rm -f gd2copypal
+	$(LINK) $(gd2copypal_LDFLAGS) $(gd2copypal_OBJECTS) $(gd2copypal_LDADD) $(LIBS)
+
+gdparttopng: $(gdparttopng_OBJECTS) $(gdparttopng_DEPENDENCIES)
+	@rm -f gdparttopng
+	$(LINK) $(gdparttopng_LDFLAGS) $(gdparttopng_OBJECTS) $(gdparttopng_LDADD) $(LIBS)
+
+webpng: $(webpng_OBJECTS) $(webpng_DEPENDENCIES)
+	@rm -f webpng
+	$(LINK) $(webpng_LDFLAGS) $(webpng_OBJECTS) $(webpng_LDADD) $(LIBS)
+
+gdtest: $(gdtest_OBJECTS) $(gdtest_DEPENDENCIES)
+	@rm -f gdtest
+	$(LINK) $(gdtest_LDFLAGS) $(gdtest_OBJECTS) $(gdtest_LDADD) $(LIBS)
+
+gddemo: $(gddemo_OBJECTS) $(gddemo_DEPENDENCIES)
+	@rm -f gddemo
+	$(LINK) $(gddemo_LDFLAGS) $(gddemo_OBJECTS) $(gddemo_LDADD) $(LIBS)
+
+gd2time: $(gd2time_OBJECTS) $(gd2time_DEPENDENCIES)
+	@rm -f gd2time
+	$(LINK) $(gd2time_LDFLAGS) $(gd2time_OBJECTS) $(gd2time_LDADD) $(LIBS)
+
+gdtestttf: $(gdtestttf_OBJECTS) $(gdtestttf_DEPENDENCIES)
+	@rm -f gdtestttf
+	$(LINK) $(gdtestttf_LDFLAGS) $(gdtestttf_OBJECTS) $(gdtestttf_LDADD) $(LIBS)
+
+install-includeHEADERS: $(include_HEADERS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(includedir)
+	@list='$(include_HEADERS)'; for p in $$list; do \
+	  if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
+	  echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(includedir)/$$p"; \
+	  $(INSTALL_DATA) $$d$$p $(DESTDIR)$(includedir)/$$p; \
+	done
+
+uninstall-includeHEADERS:
+	@$(NORMAL_UNINSTALL)
+	list='$(include_HEADERS)'; for p in $$list; do \
+	  rm -f $(DESTDIR)$(includedir)/$$p; \
+	done
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS)'; \
+	unique=`for i in $$list; do echo $$i; done | \
+	  awk '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	here=`pwd` && cd $(srcdir) \
+	  && mkid -f$$here/ID $$unique $(LISP)
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)'; \
+	unique=`for i in $$list; do echo $$i; done | \
+	  awk '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
+	  || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags  $$unique $(LISP) -o $$here/TAGS)
+
+mostlyclean-tags:
+
+clean-tags:
+
+distclean-tags:
+	-rm -f TAGS ID
+
+maintainer-clean-tags:
+
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	-rm -rf $(distdir)
+	GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
+	mkdir $(distdir)/=build
+	mkdir $(distdir)/=inst
+	dc_install_base=`cd $(distdir)/=inst && pwd`; \
+	cd $(distdir)/=build \
+	  && ../configure --srcdir=.. --prefix=$$dc_install_base \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist
+	-rm -rf $(distdir)
+	@banner="$(distdir).tar.gz is ready for distribution"; \
+	dashes=`echo "$$banner" | sed s/./=/g`; \
+	echo "$$dashes"; \
+	echo "$$banner"; \
+	echo "$$dashes"
+dist: distdir
+	-chmod -R a+r $(distdir)
+	GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
+	-rm -rf $(distdir)
+dist-all: distdir
+	-chmod -R a+r $(distdir)
+	GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
+	-rm -rf $(distdir)
+distdir: $(DISTFILES)
+	-rm -rf $(distdir)
+	mkdir $(distdir)
+	-chmod 777 $(distdir)
+	$(mkinstalldirs) $(distdir)/test
+	@for file in $(DISTFILES); do \
+	  d=$(srcdir); \
+	  if test -d $$d/$$file; then \
+	    cp -pr $$/$$file $(distdir)/$$file; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+	    || cp -p $$d/$$file $(distdir)/$$file || :; \
+	  fi; \
+	done
+gd.lo gd.o : gd.c gd.h gd_io.h
+gd2copypal.o: gd2copypal.c gd.h gd_io.h
+gd2time.o: gd2time.c gd.h gd_io.h
+gd2topng.o: gd2topng.c gd.h gd_io.h
+gd_gd.lo gd_gd.o : gd_gd.c gd.h gd_io.h
+gd_gd2.lo gd_gd2.o : gd_gd2.c gd.h gd_io.h
+gd_io.lo gd_io.o : gd_io.c gd.h gd_io.h
+gd_io_dp.lo gd_io_dp.o : gd_io_dp.c gd.h gd_io.h
+gd_io_file.lo gd_io_file.o : gd_io_file.c gd.h gd_io.h
+gd_io_ss.lo gd_io_ss.o : gd_io_ss.c gd.h gd_io.h
+gd_png.lo gd_png.o : gd_png.c gd.h gd_io.h
+gd_ss.lo gd_ss.o : gd_ss.c gd.h gd_io.h
+gdcache.lo gdcache.o : gdcache.c gdcache.h
+gddemo.o: gddemo.c gd.h gd_io.h gdfontg.h gdfonts.h
+gdfontg.lo gdfontg.o : gdfontg.c gdfontg.h gd.h gd_io.h
+gdfontl.lo gdfontl.o : gdfontl.c gdfontl.h gd.h gd_io.h
+gdfontmb.lo gdfontmb.o : gdfontmb.c gdfontmb.h gd.h gd_io.h
+gdfonts.lo gdfonts.o : gdfonts.c gdfonts.h gd.h gd_io.h
+gdfontt.lo gdfontt.o : gdfontt.c gdfontt.h gd.h gd_io.h
+gdparttopng.o: gdparttopng.c gd.h gd_io.h
+gdtest.o: gdtest.c gd.h gd_io.h
+gdtestttf.o: gdtestttf.c gd.h gd_io.h
+gdtopng.o: gdtopng.c gd.h gd_io.h
+gdttf.lo gdttf.o : gdttf.c gd.h gd_io.h gdcache.h
+pngtogd.o: pngtogd.c gd.h gd_io.h
+pngtogd2.o: pngtogd2.c gd.h gd_io.h
+webpng.o: webpng.c gd.h gd_io.h
+
+info-am:
+info: info-am
+dvi-am:
+dvi: dvi-am
+check-am: all-am
+check: check-am
+installcheck-am:
+installcheck: installcheck-am
+install-exec-am: install-libLTLIBRARIES install-binPROGRAMS
+install-exec: install-exec-am
+
+install-data-am: install-includeHEADERS
+install-data: install-data-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+install: install-am
+uninstall-am: uninstall-libLTLIBRARIES uninstall-binPROGRAMS \
+		uninstall-includeHEADERS
+uninstall: uninstall-am
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS)
+all-redirect: all-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
+installdirs:
+	$(mkinstalldirs)  $(DESTDIR)$(libdir) $(DESTDIR)$(bindir) \
+		$(DESTDIR)$(includedir)
+
+
+mostlyclean-generic:
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+	-rm -f Makefile $(CONFIG_CLEAN_FILES)
+	-rm -f config.cache config.log stamp-h stamp-h[0-9]*
+
+maintainer-clean-generic:
+mostlyclean-am:  mostlyclean-libLTLIBRARIES mostlyclean-compile \
+		mostlyclean-libtool mostlyclean-binPROGRAMS \
+		mostlyclean-noinstPROGRAMS mostlyclean-tags \
+		mostlyclean-generic
+
+mostlyclean: mostlyclean-am
+
+clean-am:  clean-libLTLIBRARIES clean-compile clean-libtool \
+		clean-binPROGRAMS clean-noinstPROGRAMS clean-tags \
+		clean-generic mostlyclean-am
+
+clean: clean-am
+
+distclean-am:  distclean-libLTLIBRARIES distclean-compile \
+		distclean-libtool distclean-binPROGRAMS \
+		distclean-noinstPROGRAMS distclean-tags \
+		distclean-generic clean-am
+	-rm -f libtool
+
+distclean: distclean-am
+	-rm -f config.status
+
+maintainer-clean-am:  maintainer-clean-libLTLIBRARIES \
+		maintainer-clean-compile maintainer-clean-libtool \
+		maintainer-clean-binPROGRAMS \
+		maintainer-clean-noinstPROGRAMS maintainer-clean-tags \
+		maintainer-clean-generic distclean-am
+	@echo "This command is intended for maintainers to use;"
+	@echo "it deletes files that may require special tools to rebuild."
+
+maintainer-clean: maintainer-clean-am
+	-rm -f config.status
+
+.PHONY: mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \
+clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \
+uninstall-libLTLIBRARIES install-libLTLIBRARIES mostlyclean-compile \
+distclean-compile clean-compile maintainer-clean-compile \
+mostlyclean-libtool distclean-libtool clean-libtool \
+maintainer-clean-libtool mostlyclean-binPROGRAMS distclean-binPROGRAMS \
+clean-binPROGRAMS maintainer-clean-binPROGRAMS uninstall-binPROGRAMS \
+install-binPROGRAMS mostlyclean-noinstPROGRAMS distclean-noinstPROGRAMS \
+clean-noinstPROGRAMS maintainer-clean-noinstPROGRAMS \
+uninstall-includeHEADERS install-includeHEADERS tags mostlyclean-tags \
+distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
+dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
+install-exec install-data-am install-data install-am install \
+uninstall-am uninstall all-redirect all-am all installdirs \
+mostlyclean-generic distclean-generic clean-generic \
+maintainer-clean-generic clean mostlyclean distclean maintainer-clean
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
+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
+
-gd - Goto Directory
-===================
+         A MUCH BETTER MANUAL IS IN THE HYPERTEXT DOCUMENT index.html!
+         A MUCH BETTER MANUAL IS IN THE HYPERTEXT DOCUMENT index.html!
+         A MUCH BETTER MANUAL IS IN THE HYPERTEXT DOCUMENT index.html!
+         A MUCH BETTER MANUAL IS IN THE HYPERTEXT DOCUMENT index.html!
 
-gd will let you change to a subdirectory within your personal
-home-directory tree just by specifying parts of the directory name. It
-is inspired by old versions (with no tree-visualizer) of Norton Change
-Directory for M$-DOS. To work as expected, the user will have to
-install a shell-alias or -function. Please see the manual pages for
-end user installation.
+                                   gd 1.6.2
+                                       
+A graphics library for fast image creation
 
-The program is written in perl by
+Follow this link to the latest version of this document.
 
-	Sverre H. Huseby
-	Maridalsvn. 122, leil. 101
-	N-0461 Oslo
-	Norway
+     _HEY! READ THIS!_
 
-	sverrehu@ifi.uio.no
+     gd 1.6.2 creates PNG images, not GIF images. This is a good thing.
+     PNG is a more compact format, and full compression is available. 
+     Existing code will need modification to call gdImagePng instead
+     of gdImageGif. <strong>Please do not ask us to send you the old GIF
+     version of GD.</strong> Unisys holds a patent on the LZW compression
+     algorithm, which is used in fully compressed GIF images. We are 
+     still investigating the legal issues surrounding various 
+     alternative means of producing a valid GIF file.
 
-You can use and copy this for free. If you decide to use it, please do
-me three small favours:
+     gd 1.6.2 _requires_ that the following libraries also be installed:
+     
+     libpng
+     
+     zlib
+     
+     Please read the documentation and install the required libraries.
+     Do not send email asking why png.h is not found. See the
+     requirements section for more information. Thank you!
+     
+  Table of Contents
+  
+     * Credits and license terms
+     * What's new in version 1.6.2?
+     * What's new in version 1.6.1?
+     * What's new in version 1.6?
+     * What is gd?
+     * What if I want to use another programming language?
+     * What else do I need to use gd?
+     * How do I get gd?
+     * How do I build gd?
+     * gd basics: using gd in your program
+     * webpng: a useful example
+     * Function and type reference by category
+     * About the additional .gd image file format
+     * Please tell us you're using gd!
+     * If you have problems
+     * Alphabetical quick index
+       
+   Up to the Boutell.Com, Inc. Home Page
+   
+  Credits and license terms
+  
+   In order to resolve any possible confusion regarding the authorship of
+   gd, the following copyright statement covers all of the authors who
+   have required such a statement. _If you are aware of any oversights in
+   this copyright notice, please contact Thomas Boutell who will be
+   pleased to correct them._
 
-	1. Tell me! (E-mail, postcard, letter, whatever. If you wish
-	   to give me something, please send a bottle of your
-	   favourite beer (making this BeerWare))
-	2. Let your friends and favourite download site have a copy!
-	   (with all files intact, please..)
-	3. Report any bugs you find!
+COPYRIGHT STATEMENT FOLLOWS THIS LINE
 
+     Portions copyright 1994, 1995, 1996, 1997, 1998, 1999, by Cold
+     Spring Harbor Laboratory. Funded under Grant P41-RR02188 by the
+     National Institutes of Health.
+     
+     Portions copyright 1996, 1997, 1998, 1999, by Boutell.Com, Inc.
+     
+     Portions relating to GD2 format copyright 1999 Philip Warner.
+     
+     Portions relating to PNG copyright 1999, Greg Roelofs.
+     
+     Portions relating to libttf copyright 1999, John Ellson
+     (ellson@lucent.com).
+     
+     _Permission has been granted to copy and distribute gd in any
+     context, including a commercial application, provided that this
+     notice is present in user-accessible supporting documentation._
+     
+     This does not affect your ownership of the derived work itself, and
+     the intent is to assure proper credit for the authors of gd, not to
+     interfere with your productive use of gd. If you have questions,
+     ask. "Derived works" includes all programs that utilize the
+     library. Credit must be given in user-accessible documentation.
+     
+     Permission to use, copy, modify, and distribute this software and
+     its documentation for any purpose and without fee is hereby
+     granted, provided that the above copyright notice appear in all
+     copies and that both that copyright notice and this permission
+     notice appear in supporting documentation. This software is
+     provided "as is" without express or implied warranty.
+     
+     Although their code does not appear in gd 1.6.2, the authors wish
+     to thank David Koblas, David Rowley, and Hutchison Avenue Software
+     Corporation for their prior contributions.
+     
+     Permission to use, copy, modify, and distribute this software and
+     its documentation for any purpose and without fee is hereby
+     granted, provided that the above copyright notice appear in all
+     copies and that both that copyright notice and this permission
+     notice appear in supporting documentation. _This software is
+     provided "AS IS."_ The copyright holders disclaim all warranties,
+     either express or implied, including but not limited to implied
+     warranties of merchantability and fitness for a particular purpose,
+     with respect to this code and accompanying documentation.
+     
+END OF COPYRIGHT STATEMENT
+
+  What is gd?
+  
+   gd is a graphics library. It allows your code to quickly draw images
+   complete with lines, arcs, text, multiple colors, cut and paste from
+   other images, and flood fills, and write out the result as a .PNG
+   file. This is particularly useful in World Wide Web applications,
+   where .PNG is one of the formats accepted for inline images by most
+   browsers.
+   
+   gd is not a paint program. If you are looking for a paint program, you
+   are looking in the wrong place. If you are not a programmer, you are
+   looking in the wrong place.
+   
+   gd does not provide for every possible desirable graphics operation.
+   It is not necessary or desirable for gd to become a kitchen-sink
+   graphics package, but version 1.6.2 incorporates most of the commonly
+   requested features for an 8-bit 2D package. Support for scalable
+   fonts, and truecolor images, JPEG and truecolor PNG is planned for
+   version 2.0.
+   
+  What if I want to use another programming language?
+  
+    Perl
+    
+   gd can also be used from Perl, courtesy of Lincoln Stein's GD.pm
+   library, which uses gd as the basis for a set of Perl 5.x classes. Not
+   yet updated for gd 1.6.2.
+   
+    Any Language
+    
+   There are, at the moment, at least three simple interpreters that
+   perform gd operations. You can output the desired commands to a simple
+   text file from whatever scripting language you prefer to use, then
+   invoke the interpreter.
+   
+   These packages have not been updated to gd 1.6.2 as of this writing.
+     * tgd, by Bradley K. Sherman
+     * fly, by Martin Gleeson
+       
+  What's new in version 1.6.2?
+  
+   Version 1.6.2 from John Ellson adds two new functions:
+     * gdImageStringTTF - scalable, rotatable, anti-aliased, TrueType
+       strings using the FreeType library, but only if libttf is found by
+       configure. _We do not provide TrueType fonts. Obtaining them is
+       entirely up to you._
+     * gdImageColorResolve - an efficient alternative for the common code
+       fragment:
+
+
+      if ((color=gdImageColorExact(im,R,G,B)) < 0)
+          if ((color=gdImageColorAllocate(im,R,G,B)) < 0)
+              color=gdImageColorClosest(im,R,G,B);
+
+   Also in this release the build process has been converted to GNU
+   autoconf/automake/libtool conventions so that both (or either) static
+   and shared libraries can be built.
+   
+  What's new in version 1.6.1?
+  
+   Version 1.6.1 incorporates superior PNG reading and writing code from
+   Greg Roelofs, with minor modifications by Tom Boutell. Specifically, I
+   altered his code to read non-palette images (converting them to
+   palette images badly, by dithering them), and to tolerate palette
+   images with types of transparency that gd doesn't actually support (it
+   just ignores the advanced transparency features). Any bugs in this
+   area are therefore my fault, not Greg's.
+   
+   Unlike gd 1.6, users should have no trouble linking with gd 1.6.1 if
+   they follow the instructions and install all of the pieces. However,
+   _If you get undefined symbol errors, be sure to check for older
+   versions of libpng in your library directories!_
+   
+  What's new in version 1.6?
+  
+   Version 1.6 features the following changes:
+   
+   _Support for 8-bit palette PNG images has been added. Support for GIF
+   has been removed._ This step was taken to completely avoid the legal
+   controversy regarding the LZW compression algorithm used in GIF.
+   Unisys holds a patent which is relevant to LZW compression. PNG is a
+   superior image format in any case. Now that PNG is supported by both
+   Microsoft Internet Explorer and Netscape (in their recent releases),
+   we highly recommend that GD users upgrade in order to get
+   well-compressed images in a format which is legally unemcumbered.
+   
+  What's new in version 1.5?
+  
+   Version 1.5 featured the following changes:
+   
+   _New GD2 format_
+          An improvement over the GD format, the GD2 format uses the zlib
+          compression library to compress the image in chunks. This
+          results in file sizes comparable to GIFs, with the ability to
+          access parts of large images without having to read the entire
+          image into memory.
+          
+          This format also supports version numbers and rudimentary
+          validity checks, so it should be more 'supportable' than the
+          previous GD format.
+          
+   _Re-arranged source files_
+          gd.c has been broken into constituant parts: io, gif, gd, gd2
+          and graphics functions are now in separate files.
+          
+   _Extended I/O capabilities._
+          The source/sink feature has been extended to support GD2 file
+          formats (which require seek/tell functions), and to allow more
+          general non-file I/O.
+          
+   _Better support for Lincoln Stein's Perl Module_
+          The new gdImage*Ptr function returns the chosen format stored
+          in a block of memory. This can be directly used by the GD perl
+          module.
+          
+   _Added functions_
+          gdImageCreateFromGd2Part - allows retrieval of part of an image
+          (good for huge images, like maps),
+          gdImagePaletteCopy - Copies a palette from one image to
+          another, doing it's best to match the colors in the target
+          image to the colors in the source palette.
+          gdImageGd2, gdImageCreateFromGd2 - Support for new format
+          gdImageCopyMerge - Merges two images (useful to highlight part
+          of an image)
+          gdImageCopyMergeGray - Similar to gdImageCopyMerge, but tries
+          to preserve source image hue.
+          gdImagePngPtr, gdImageGdPtr, gdImageGd2Ptr - return memort
+          blocks for each type of image.
+          gdImageCreateFromPngCtx, gdImageCreateFromGdCtx,
+          gdImageCreateFromGd2Ctx, gdImageCreateFromGd2PartCtx - Support
+          for new I/O context.
+          
+   _NOTE:_ In fairness to Thomas Boutell, any bug/problems with any of
+   the above features should probably be reported to Philip Warner.
+   
+  What's new in version 1.4?
+  
+   Version 1.4 features the following changes:
+   
+   Fixed polygon fill routine (again)
+          Thanks to Kirsten Schulz, version 1.4 is able to fill numerous
+          types of polygons that caused problems with previous releases,
+          including version 1.3.
+          
+   Support for alternate data sources
+          Programmers who wish to load a GIF from something other than a
+          stdio FILE * stream can use the new gdImageCreateFromPngSource
+          function.
+          
+   Support for alternate data destinations
+          Programmers who wish to write a GIF to something other than a
+          stdio FILE * stream can use the new gdImagePngToSink function.
+          
+   More tolerant when reading GIFs
+          Version 1.4 does not crash when reading certain animated GIFs,
+          although it still only reads the first frame. Version 1.4 also
+          has overflow testing code to prevent crashes when reading
+          damaged GIFs.
+          
+  What's new in version 1.3?
+  
+   Version 1.3 features the following changes:
+   
+   Non-LZW-based GIF compression code
+          Version 1.3 contained GIF compression code that uses simple Run
+          Length Encoding instead of LZW compression, while still
+          retaining compatibility with normal LZW-based GIF decoders
+          (your browser will still like your GIFs). _LZW compression is
+          patented by Unisys. We are currently reevaluating the approach
+          taken by gd 1.3. The current release of gd does not support
+          this approach. We recommend that you use the current release,
+          and generate PNG images._ Thanks to Hutchison Avenue Software
+          Corporation for contributing the RLE GIF code.
+          
+   8-bit fonts, and 8-bit font support
+          This improves support for European languages. Thanks are due to
+          Honza Pazdziora and also to Jan Pazdziora . Also see the
+          provided bdftogd Perl script if you wish to convert fixed-width
+          X11 fonts to gd fonts.
+          
+   16-bit font support (no fonts provided)
+          Although no such fonts are provided in the distribution, fonts
+          containing more than 256 characters should work if the
+          gdImageString16 and gdImageStringUp16 routines are used.
+          
+   Improvements to the "webpng" example/utility
+          The "webpng" utility is now a slightly more useful application.
+          Thanks to Brian Dowling for this code.
+          
+   Corrections to the color resolution field of GIF output
+          Thanks to Bruno Aureli.
+          
+   Fixed polygon fills
+          A one-line patch for the infamous polygon fill bug, courtesy of
+          Jim Mason. I believe this fix is sufficient. However, if you
+          find a situation where polygon fills still fail to behave
+          properly, please send code that demonstrates the problem, _and_
+          a fix if you have one. Verifying the fix is important.
+          
+   Row-major, not column-major
+          Internally, gd now represents the array of pixels as an array
+          of rows of pixels, rather than an array of columns of pixels.
+          This improves the performance of compression and decompression
+          routines slightly, because horizontally adjacent pixels are now
+          next to each other in memory. _This should not affect properly
+          written gd applications, but applications that directly
+          manipulate the pixels array will require changes._
+          
+  What else do I need to use gd?
+  
+   To use gd, you will need an ANSI C compiler. _All popular Windows 95
+   and NT C compilers are ANSI C compliant._ Any full-ANSI-standard C
+   compiler should be adequate. _The cc compiler released with SunOS
+   4.1.3 is not an ANSI C compiler. Most Unix users who do not already
+   have gcc should get it. gcc is free, ANSI compliant and a de facto
+   industry standard. Ask your ISP why it is missing._
+   
+   As of version 1.6, you also need the zlib compression library, and the
+   libpng library. As of version 1.6.2, you can draw text using
+   antialiased TrueType fonts if you also have the libttf library
+   installed, but this is not mandatory. zlib is available for a variety
+   of platforms from the zlib web site. libpng is available for a variety
+   of platforms from the PNG web site.
+   
+   You will also want a PNG viewer, if you do not already have one for
+   your system, since you will need a good way to check the results of
+   your work. Netscape 4.04 and higher, and Microsoft Internet Explorer
+   4.0 or higher, both support PNG. For some purposes you might be
+   happier with a package like Lview Pro for Windows or xv for X. There
+   are PNG viewers available for every graphics-capable modern operating
+   system, so consult newsgroups relevant to your particular system.
+   
+  How do I get gd?
+  
+    By HTTP
+    
+     * Gzipped Tar File (Unix)
+     * .ZIP File (Windows)
+       
+    By FTP
+    
+     * Gzipped Tar File (Unix)
+     * .ZIP File (Windows)
+       
+  How do I build gd?
+  
+   In order to build gd, you must first unpack the archive you have
+   downloaded. If you are not familiar with tar and gunzip (Unix) or ZIP
+   (Windows), please consult with an experienced user of your system.
+   Sorry, we cannot answer questions about basic Internet skills.
+   
+   Unpacking the archive will produce a directory called "gd1.6.2".
+   
+    For Unix
+    
+   cd to the gd1.6.2 directory and type "./configure", followed by
+   "make". If you are the system administrator, and you wish to make the
+   gd library available to other programs, you may also wish to type
+   "make install".
+   
+    For Windows, Mac, Et Cetera
+    
+   Create a project using your favorite programming environment. Copy all
+   of the gd files to the project directory. Add gd.c to your project.
+   Add other source files as appropriate. Learning the basic skills of
+   creating projects with your chosen C environment is up to you.
+   
+   You have now built both the gd library and a demonstration program
+   which shows off the capabilities of gd. To see it in action, type
+   "gddemo".
+   
+   gddemo should execute without incident, creating the file demoout.png.
+   (Note there is also a file named demoin.png, which is provided in the
+   package as part of the demonstration.)
+   
+   Display demoout.png in your PNG viewer. The image should be 128x128
+   pixels and should contain an image of the space shuttle with quite a
+   lot of graphical elements drawn on top of it.
+   
+   (If you are missing the demoin.png file, the other items should appear
+   anyway.)
+   
+   Look at demoin.png to see the original space shuttle image which was
+   scaled and copied into the output image.
+   
+  gd basics: using gd in your program
+  
+   gd lets you create PNG images on the fly. To use gd in your program,
+   include the file gd.h, and link with the libgd.a library produced by
+   "make libgd.a", under Unix. Under other operating systems you will add
+   gd.c to your own project.
+   
+   If you want to use the provided fonts, include gdfontt.h, gdfonts.h,
+   gdfontmb.h, gdfontl.h and/or gdfontg.h. For more impressive results,
+   install libttf and use the new gdImageStringTTF function. If you are
+   not using the provided Makefile and/or a library-based approach, be
+   sure to include the source modules as well in your project. (They may
+   be too large for 16-bit memory models, that is, 16-bit DOS and
+   Windows.)
+   
+   Here is a short example program. _(For a more advanced example, see
+   gddemo.c, included in the distribution. gddemo.c is NOT the same
+   program; it demonstrates additional features!)_
+   
+/* Bring in gd library functions */
+#include "gd.h"
+
+/* Bring in standard I/O so we can output the PNG to a file */
+#include <stdio.h>
+
+int main() {
+        /* Declare the image */
+        gdImagePtr im;
+        /* Declare an output file */
+        FILE *out;
+        /* Declare color indexes */
+        int black;
+        int white;
+
+        /* Allocate the image: 64 pixels across by 64 pixels tall */
+        im = gdImageCreate(64, 64);
+
+        /* Allocate the color black (red, green and blue all minimum).
+                Since this is the first color in a new image, it will
+                be the background color. */
+        black = gdImageColorAllocate(im, 0, 0, 0);
+
+        /* Allocate the color white (red, green and blue all maximum). */
+        white = gdImageColorAllocate(im, 255, 255, 255);
+        
+        /* Draw a line from the upper left to the lower right,
+                using white color index. */
+        gdImageLine(im, 0, 0, 63, 63, white);
+
+        /* Open a file for writing. "wb" means "write binary", important
+                under MSDOS, harmless under Unix. */
+        out = fopen("test.png", "wb");
+
+        /* Output the image to the disk file. */
+        gdImagePng(im, out);
+
+        /* Close the file. */
+        fclose(out);
+
+        /* Destroy the image in memory. */
+        gdImageDestroy(im);
+}
+
+   When executed, this program creates an image, allocates two colors
+   (the first color allocated becomes the background color), draws a
+   diagonal line (note that 0, 0 is the upper left corner), writes the
+   image to a PNG file, and destroys the image.
+   
+   The above example program should give you an idea of how the package
+   works. gd provides many additional functions, which are listed in the
+   following reference chapters, complete with code snippets
+   demonstrating each. There is also an alphabetical index.
+   
+  Webpng: a more powerful gd example
+  
+   Webpng is a simple utility program to manipulate PNGs from the command
+   line. It is written for Unix and similar command-line systems, but
+   should be easily adapted for other environments. Webpng allows you to
+   set transparency and interlacing and output interesting information
+   about the PNG in question.
+   
+   webpng.c is provided in the distribution. Unix users can simply type
+   "make webpng" to compile the program. Type "webpng" with no arguments
+   to see the available options.
+   
+Function and type reference
+
+     * Types
+     * Image creation, destruction, loading and saving
+     * Drawing, styling, brushing, tiling and filling functions
+     * Query functions (not color-related)
+     * Font and text-handling functions
+     * Color handling functions
+     * Copying and resizing functions
+     * Miscellaneous Functions
+     * Constants
+       
+  Types
+  
+   gdImage_(TYPE)_
+          The data structure in which gd stores images. gdImageCreate
+          returns a pointer to this type, and the other functions expect
+          to receive a pointer to this type as their first argument. You
+          may read the members sx (size on X axis), sy (size on Y axis),
+          colorsTotal (total colors), red (red component of colors; an
+          array of 256 integers between 0 and 255), green (green
+          component of colors, as above), blue (blue component of colors,
+          as above), and transparent (index of transparent color, -1 if
+          none); please do so using the macros provided. Do NOT set the
+          members directly from your code; use the functions provided.
+          
+
+typedef struct {
+        unsigned char ** pixels;
+        int sx;
+        int sy;
+        int colorsTotal;
+        int red[gdMaxColors];
+        int green[gdMaxColors];
+        int blue[gdMaxColors];
+        int open[gdMaxColors];
+        int transparent;
+} gdImage;
+
+   gdImagePtr _(TYPE)_
+          A pointer to an image structure. gdImageCreate returns this
+          type, and the other functions expect it as the first argument.
+          
+   gdFont _(TYPE)_
+          A font structure. Used to declare the characteristics of a
+          font. Plese see the files gdfontl.c and gdfontl.h for an
+          example of the proper declaration of this structure. You can
+          provide your own font data by providing such a structure and
+          the associated pixel array. You can determine the width and
+          height of a single character in a font by examining the w and h
+          members of the structure. If you will not be creating your own
+          fonts, you will not need to concern yourself with the rest of
+          the components of this structure.
+          
+
+typedef struct {
+        /* # of characters in font */
+        int nchars;
+        /* First character is numbered... (usually 32 = space) */
+        int offset;
+        /* Character width and height */
+        int w;
+        int h;
+        /* Font data; array of characters, one row after another.
+                Easily included in code, also easily loaded from
+                data files. */
+        char *data;
+} gdFont;
+
+   gdFontPtr _(TYPE)_
+          A pointer to a font structure. Text-output functions expect
+          these as their second argument, following the gdImagePtr
+          argument. Two such pointers are declared in the provided
+          include files gdfonts.h and gdfontl.h.
+          
+   gdPoint _(TYPE)_
+          Represents a point in the coordinate space of the image; used
+          by gdImagePolygon and gdImageFilledPolygon.
+          
+
+typedef struct {
+        int x, y;
+} gdPoint, *gdPointPtr;
+
+   gdPointPtr _(TYPE)_
+          A pointer to a gdPoint structure; passed as an argument to
+          gdImagePolygon and gdImageFilledPolygon.
+          
+   gdSource _(TYPE)_
+
+typedef struct {
+        int (*source) (void *context, char *buffer, int len);
+        void *context;
+} gdSource, *gdSourcePtr;
+
+   Represents a source from which a PNG can be read. Programmers who do
+   not wish to read PNGs from a file can provide their own alternate
+   input mechanism, using the gdImageCreateFromPngSource function. See
+   the documentation of that function for an example of the proper use of
+   this type.
+   
+   gdSink _(TYPE)_
+
+typedef struct {
+        int (*sink) (void *context, char *buffer, int len);
+        void *context;
+} gdSink, *gdSinkPtr;
+
+   Represents a "sink" (destination) to which a PNG can be written.
+   Programmers who do not wish to write PNGs to a file can provide their
+   own alternate output mechanism, using the gdImagePngToSink function.
+   See the documentation of that function for an example of the proper
+   use of this type.
+   
+  Image creation, destruction, loading and saving
+  
+   gdImageCreate(sx, sy) _(FUNCTION)_
+          gdImageCreate is called to create images. Invoke gdImageCreate
+          with the x and y dimensions of the desired image. gdImageCreate
+          returns a gdImagePtr to the new image, or NULL if unable to
+          allocate the image. The image must eventually be destroyed
+          using gdImageDestroy().
+          
+
+... inside a function ...
+gdImagePtr im;
+im = gdImageCreate(64, 64);
+/* ... Use the image ... */
+gdImageDestroy(im);
+
+   gdImageCreateFromPng(FILE *in) _(FUNCTION)_
+          gdImageCreateFromPngCtx(gdIOCtx *in) _(FUNCTION)_
+          
+          
+          gdImageCreateFromPng is called to load images from PNG format
+          files. Invoke gdImageCreateFromPng with an already opened
+          pointer to a file containing the desired image.
+          gdImageCreateFromPng returns a gdImagePtr to the new image, or
+          NULL if unable to load the image (most often because the file
+          is corrupt or does not contain a PNG image).
+          gdImageCreateFromPng does _not_ close the file. You can inspect
+          the sx and sy members of the image to determine its size. The
+          image must eventually be destroyed using gdImageDestroy().
+          
+
+gdImagePtr im;
+... inside a function ...
+FILE *in;
+in = fopen("mypng.png", "rb");
+im = gdImageCreateFromPng(in);
+fclose(in);
+/* ... Use the image ... */
+gdImageDestroy(im);
+
+   gdImageCreateFromPngSource(gdSourcePtr in) _(FUNCTION)_
+          gdImageCreateFromPngSource is called to load a PNG from a data
+          source other than a file. Usage is very similar to the
+          gdImageCreateFromPng function, except that the programmer
+          provides a custom data source.
+          
+          The programmer must write an input function which accepts a
+          context pointer, a buffer, and a number of bytes to be read as
+          arguments. This function must read the number of bytes
+          requested, unless the end of the file has been reached, in
+          which case the function should return zero, or an error has
+          occurred, in which case the function should return -1. The
+          programmer then creates a gdSource structure and sets the
+          source pointer to the input function and the context pointer to
+          any value which is useful to the programmer.
+          
+          The example below implements gdImageCreateFromPng by creating a
+          custom data source and invoking gdImageCreateFromPngSource.
+          
+
+static int freadWrapper(void *context, char *buf, int len);
+
+gdImagePtr gdImageCreateFromPng(FILE *in)
+{
+        gdSource s;
+        s.source = freadWrapper;
+        s.context = in;
+        return gdImageCreateFromPngSource(&s);
+}
+
+static int freadWrapper(void *context, char *buf, int len)
+{
+        int got = fread(buf, 1, len, (FILE *) context);
+        return got;
+}
+
+   gdImageCreateFromGd(FILE *in) _(FUNCTION)_
+          gdImageCreateFromGdCtx(gdIOCtx *in) _(FUNCTION)_
+          
+          
+          gdImageCreateFromGd is called to load images from gd format
+          files. Invoke gdImageCreateFromGd with an already opened
+          pointer to a file containing the desired image in the gd file
+          format, which is specific to gd and intended for very fast
+          loading. (It is _not_ intended for compression; for
+          compression, use PNG.) gdImageCreateFromGd returns a gdImagePtr
+          to the new image, or NULL if unable to load the image (most
+          often because the file is corrupt or does not contain a gd
+          format image). gdImageCreateFromGd does _not_ close the file.
+          You can inspect the sx and sy members of the image to determine
+          its size. The image must eventually be destroyed using
+          gdImageDestroy().
+          
+
+... inside a function ...
+gdImagePtr im;
+FILE *in;
+in = fopen("mygd.gd", "rb");
+im = gdImageCreateFromGd(in);
+fclose(in);
+/* ... Use the image ... */
+gdImageDestroy(im);
+
+   gdImageCreateFromGd2(FILE *in) _(FUNCTION)_
+          gdImageCreateFromGd2Ctx(gdIOCtx *in) _(FUNCTION)_
+          
+          
+          gdImageCreateFromGd2 is called to load images from gd2 format
+          files. Invoke gdImageCreateFromGd2 with an already opened
+          pointer to a file containing the desired image in the gd2 file
+          format, which is specific to gd2 and intended for fast loading
+          of parts of large images. (It is a compressed format, but
+          generally not as good a LZW compression). gdImageCreateFromGd
+          returns a gdImagePtr to the new image, or NULL if unable to
+          load the image (most often because the file is corrupt or does
+          not contain a gd format image). gdImageCreateFromGd2 does _not_
+          close the file. You can inspect the sx and sy members of the
+          image to determine its size. The image must eventually be
+          destroyed using gdImageDestroy().
+          
+
+... inside a function ...
+gdImagePtr im;
+FILE *in;
+in = fopen("mygd.gd2", "rb");
+im = gdImageCreateFromGd2(in);
+fclose(in);
+/* ... Use the image ... */
+gdImageDestroy(im);
+
+   gdImageCreateFromGd2Part(FILE *in, int srcX, int srcY, int w, int h)
+          _(FUNCTION)_
+          gdImageCreateFromGd2PartCtx(gdIOCtx *in) _(FUNCTION)_
+          
+          
+          gdImageCreateFromGd2Part is called to load parts of images from
+          gd2 format files. Invoked in the same way as
+          gdImageCreateFromGd2, but with extra parameters indicating the
+          source (x, y) and width/height of the desired image.
+          gdImageCreateFromGd2Part returns a gdImagePtr to the new image,
+          or NULL if unable to load the image. The image must eventually
+          be destroyed using gdImageDestroy().
+          
+   gdImageCreateFromXbm(FILE *in) _(FUNCTION)_
+          gdImageCreateFromXbm is called to load images from X bitmap
+          format files. Invoke gdImageCreateFromXbm with an already
+          opened pointer to a file containing the desired image.
+          gdImageCreateFromXbm returns a gdImagePtr to the new image, or
+          NULL if unable to load the image (most often because the file
+          is corrupt or does not contain an X bitmap format image).
+          gdImageCreateFromXbm does _not_ close the file. You can inspect
+          the sx and sy members of the image to determine its size. The
+          image must eventually be destroyed using gdImageDestroy().
+          
+
+... inside a function ...
+gdImagePtr im;
+FILE *in;
+in = fopen("myxbm.xbm", "rb");
+im = gdImageCreateFromXbm(in);
+fclose(in);
+/* ... Use the image ... */
+gdImageDestroy(im);
+
+   gdImageDestroy(gdImagePtr im) _(FUNCTION)_
+          gdImageDestroy is used to free the memory associated with an
+          image. It is important to invoke gdImageDestroy before exiting
+          your program or assigning a new image to a gdImagePtr variable.
+          
+
+... inside a function ...
+gdImagePtr im;
+im = gdImageCreate(10, 10);
+/* ... Use the image ... */
+/* Now destroy it */
+gdImageDestroy(im);
+
+   void gdImagePng(gdImagePtr im, FILE *out) _(FUNCTION)_
+          gdImagePng outputs the specified image to the specified file in
+          PNG format. The file must be open for writing. Under MSDOS and
+          all versions of Windows, it is important to use "wb" as opposed
+          to simply "w" as the mode when opening the file, and under Unix
+          there is no penalty for doing so. gdImagePng does _not_ close
+          the file; your code must do so.
+          
+
+... inside a function ...
+gdImagePtr im;
+int black, white;
+FILE *out;
+/* Create the image */
+im = gdImageCreate(100, 100);
+/* Allocate background */
+white = gdImageColorAllocate(im, 255, 255, 255);
+/* Allocate drawing color */
+black = gdImageColorAllocate(im, 0, 0, 0);
+/* Draw rectangle */
+gdImageRectangle(im, 0, 0, 99, 99, black);
+/* Open output file in binary mode */
+out = fopen("rect.png", "wb");
+/* Write PNG */
+gdImagePng(im, out);
+/* Close file */
+fclose(out);
+/* Destroy image */
+gdImageDestroy(im);
+
+   void* gdImagePngPtr(gdImagePtr im, int *size) _(FUNCTION)_
+          Identical to gdImagePng except that it returns a pointer to a
+          memory area with the PNG data. This memory must be freed by the
+          caller when it is no longer needed. The 'size' parameter
+          received the total size of the block of memory.
+          
+   gdImagePngToSink(gdImagePtr im, gdSinkPtr out) _(FUNCTION)_
+          gdImagePngToSink is called to write a PNG to a data "sink"
+          (destination) other than a file. Usage is very similar to the
+          gdImagePng function, except that the programmer provides a
+          custom data sink.
+          
+          The programmer must write an output function which accepts a
+          context pointer, a buffer, and a number of bytes to be written
+          as arguments. This function must write the number of bytes
+          requested and return that number, unless an error has occurred,
+          in which case the function should return -1. The programmer
+          then creates a gdSink structure and sets the sink pointer to
+          the output function and the context pointer to any value which
+          is useful to the programmer.
+          
+          The example below implements gdImagePng by creating a custom
+          data source and invoking gdImagePngFromSink.
+          
+
+static int stdioSink(void *context, char *buffer, int len)
+{
+        return fwrite(buffer, 1, len, (FILE *) context);
+}
+
+void gdImagePng(gdImagePtr im, FILE *out)
+{
+        gdSink mySink;
+        mySink.context = (void *) out;
+        mySink.sink = stdioSink;
+        gdImagePngToSink(im, &mySink);
+}
+
+   void gdImageGd(gdImagePtr im, FILE *out) _(FUNCTION)_
+          gdImageGd outputs the specified image to the specified file in
+          the gd image format. The file must be open for writing. Under
+          MSDOS and all versions of Windows, it is important to use "wb"
+          as opposed to simply "w" as the mode when opening the file, and
+          under Unix there is no penalty for doing so. gdImagePng does
+          _not_ close the file; your code must do so.
+          
+          The gd image format is intended for fast reads and writes of
+          images your program will need frequently to build other images.
+          It is _not_ a compressed format, and is not intended for
+          general use.
+          
+
+... inside a function ...
+gdImagePtr im;
+int black, white;
+FILE *out;
+/* Create the image */
+im = gdImageCreate(100, 100);
+/* Allocate background */
+white = gdImageColorAllocate(im, 255, 255, 255);
+/* Allocate drawing color */
+black = gdImageColorAllocate(im, 0, 0, 0);
+/* Draw rectangle */
+gdImageRectangle(im, 0, 0, 99, 99, black);
+/* Open output file in binary mode */
+out = fopen("rect.gd", "wb");
+/* Write gd format file */
+gdImageGd(im, out);
+/* Close file */
+fclose(out);
+/* Destroy image */
+gdImageDestroy(im);
+
+   void* gdImageGdPtr(gdImagePtr im, int *size) _(FUNCTION)_
+          Identical to gdImageGd except that it returns a pointer to a
+          memory area with the GD data. This memory must be freed by the
+          caller when it is no longer needed. The 'size' parameter
+          received the total size of the block of memory.
+          
+   void gdImageGd2(gdImagePtr im, FILE *out, int chunkSize, int fmt)
+          _(FUNCTION)_
+          gdImageGd2 outputs the specified image to the specified file in
+          the gd2 image format. The file must be open for writing. Under
+          MSDOS and all versions of Windows, it is important to use "wb"
+          as opposed to simply "w" as the mode when opening the file, and
+          under Unix there is no penalty for doing so. gdImageGd2 does
+          _not_ close the file; your code must do so.
+          
+          The gd2 image format is intended for fast reads and writes of
+          parts of images. It is a compressed format, and well suited to
+          retrieving smll sections of much larger images. The third and
+          fourth parameters are the 'chunk size' and format
+          resposectively.
+          
+          The file is stored as a series of compressed subimages, and the
+          _Chunk Size_ determines the sub-image size - a value of zero
+          causes the GD library to use the default.
+          
+          It is also possible to store GD2 files in an uncompressed
+          format, in which case the fourth parameter should be
+          GD2_FMT_RAW.
+          
+
+... inside a function ...
+gdImagePtr im;
+int black, white;
+FILE *out;
+/* Create the image */
+im = gdImageCreate(100, 100);
+/* Allocate background */
+white = gdImageColorAllocate(im, 255, 255, 255);
+/* Allocate drawing color */
+black = gdImageColorAllocate(im, 0, 0, 0);
+/* Draw rectangle */
+gdImageRectangle(im, 0, 0, 99, 99, black);
+/* Open output file in binary mode */
+out = fopen("rect.gd", "wb");
+/* Write gd2 format file */
+gdImageGd2(im, out, 0, GD2_FMT_COMPRESSED);
+/* Close file */
+fclose(out);
+/* Destroy image */
+gdImageDestroy(im);
+
+   void* gdImageGd2Ptr(gdImagePtr im, int chunkSize, int fmt, int *size)
+          _(FUNCTION)_
+          Identical to gdImageGd2 except that it returns a pointer to a
+          memory area with the GD2 data. This memory must be freed by the
+          caller when it is no longer needed. The 'size' parameter
+          received the total size of the block of memory.
+          
+  Drawing Functions
+  
+   void gdImageSetPixel(gdImagePtr im, int x, int y, int color)
+          _(FUNCTION)_
+          gdImageSetPixel sets a pixel to a particular color index.
+          Always use this function or one of the other drawing functions
+          to access pixels; do not access the pixels of the gdImage
+          structure directly.
+          
+
+... inside a function ...
+gdImagePtr im;
+int black;
+int white;
+im = gdImageCreate(100, 100);
+/* Background color (first allocated) */
+black = gdImageColorAllocate(im, 0, 0, 0);
+/* Allocate the color white (red, green and blue all maximum). */
+white = gdImageColorAllocate(im, 255, 255, 255);
+/* Set a pixel near the center. */
+gdImageSetPixel(im, 50, 50, white);
+/* ... Do something with the image, such as saving it to a file... */
+/* Destroy it */
+gdImageDestroy(im);
+
+   void gdImageLine(gdImagePtr im, int x1, int y1, int x2, int y2, int
+          color) _(FUNCTION)_
+          gdImageLine is used to draw a line between two endpoints (x1,y1
+          and x2, y2). The line is drawn using the color index specified.
+          Note that the color index can be an actual color returned by
+          gdImageColorAllocate or one of gdStyled, gdBrushed or
+          gdStyledBrushed.
+          
+
+... inside a function ...
+gdImagePtr im;
+int black;
+int white;
+im = gdImageCreate(100, 100);
+/* Background color (first allocated) */
+black = gdImageColorAllocate(im, 0, 0, 0);
+/* Allocate the color white (red, green and blue all maximum). */
+white = gdImageColorAllocate(im, 255, 255, 255);
+/* Draw a line from the upper left corner to the lower right corner. */
+gdImageLine(im, 0, 0, 99, 99, white);
+/* ... Do something with the image, such as saving it to a file... */
+/* Destroy it */
+gdImageDestroy(im);
+
+   void gdImageDashedLine(gdImagePtr im, int x1, int y1, int x2, int y2,
+          int color) _(FUNCTION)_
+          gdImageDashedLine is provided _solely for backwards
+          compatibility _with gd 1.0. New programs should draw dashed
+          lines using the normal gdImageLine function and the new
+          gdImageSetStyle function.
+          
+          gdImageDashedLine is used to draw a dashed line between two
+          endpoints (x1,y1 and x2, y2). The line is drawn using the color
+          index specified. The portions of the line that are not drawn
+          are left transparent so the background is visible.
+          
+
+... inside a function ...
+gdImagePtr im;
+int black;
+int white;
+im = gdImageCreate(100, 100);
+/* Background color (first allocated) */
+black = gdImageColorAllocate(im, 0, 0, 0);
+/* Allocate the color white (red, green and blue all maximum). */
+white = gdImageColorAllocate(im, 255, 255, 255);
+/* Draw a dashed line from the upper left corner to the lower right corner. */
+gdImageDashedLine(im, 0, 0, 99, 99);
+/* ... Do something with the image, such as saving it to a file... */
+/* Destroy it */
+gdImageDestroy(im);
+
+   void gdImagePolygon(gdImagePtr im, gdPointPtr points, int pointsTotal,
+          int color) _(FUNCTION)_
+          gdImagePolygon is used to draw a polygon with the verticies (at
+          least 3) specified, using the color index specified. See also
+          gdImageFilledPolygon.
+          
+
+... inside a function ...
+gdImagePtr im;
+int black;
+int white;
+/* Points of polygon */
+gdPoint points[3];
+im = gdImageCreate(100, 100);
+/* Background color (first allocated) */
+black = gdImageColorAllocate(im, 0, 0, 0);
+/* Allocate the color white (red, green and blue all maximum). */
+white = gdImageColorAllocate(im, 255, 255, 255);
+/* Draw a triangle. */
+points[0].x = 50;
+points[0].y = 0;
+points[1].x = 99;
+points[1].y = 99;
+points[2].x = 0;
+points[2].y = 99;
+gdImagePolygon(im, points, 3, white);
+/* ... Do something with the image, such as saving it to a file... */
+/* Destroy it */
+gdImageDestroy(im);
+
+   void gdImageRectangle(gdImagePtr im, int x1, int y1, int x2, int y2,
+          int color) _(FUNCTION)_
+          gdImageRectangle is used to draw a rectangle with the two
+          corners (upper left first, then lower right) specified, using
+          the color index specified.
+          
+