summaryrefslogtreecommitdiffstats
path: root/giflib-4.1.6/doc
diff options
context:
space:
mode:
Diffstat (limited to 'giflib-4.1.6/doc')
-rw-r--r--giflib-4.1.6/doc/GifFileType.pngbin0 -> 24597 bytes
-rw-r--r--giflib-4.1.6/doc/Makefile.am41
-rw-r--r--giflib-4.1.6/doc/Makefile.in374
-rw-r--r--giflib-4.1.6/doc/gif2bgi.html136
-rw-r--r--giflib-4.1.6/doc/gif2epsn.html98
-rw-r--r--giflib-4.1.6/doc/gif2herc.html153
-rw-r--r--giflib-4.1.6/doc/gif2iris.html52
-rw-r--r--giflib-4.1.6/doc/gif2ps.html71
-rw-r--r--giflib-4.1.6/doc/gif2rgb.html55
-rw-r--r--giflib-4.1.6/doc/gif2rle.html56
-rw-r--r--giflib-4.1.6/doc/gif2x11.html59
-rw-r--r--giflib-4.1.6/doc/gif89.txt2475
-rw-r--r--giflib-4.1.6/doc/gif_lib.html713
-rw-r--r--giflib-4.1.6/doc/gifasm.html59
-rw-r--r--giflib-4.1.6/doc/gifbg.html86
-rw-r--r--giflib-4.1.6/doc/gifburst.html48
-rw-r--r--giflib-4.1.6/doc/gifclip.html75
-rw-r--r--giflib-4.1.6/doc/gifclrmp.html77
-rw-r--r--giflib-4.1.6/doc/gifcolor.html60
-rw-r--r--giflib-4.1.6/doc/gifcomb.html57
-rw-r--r--giflib-4.1.6/doc/gifcompose.html124
-rw-r--r--giflib-4.1.6/doc/giffiltr.html40
-rw-r--r--giflib-4.1.6/doc/giffix.html47
-rw-r--r--giflib-4.1.6/doc/gifflip.html60
-rw-r--r--giflib-4.1.6/doc/gifhisto.html72
-rw-r--r--giflib-4.1.6/doc/gifinter.html51
-rw-r--r--giflib-4.1.6/doc/gifinto.html56
-rw-r--r--giflib-4.1.6/doc/gifovly.html49
-rw-r--r--giflib-4.1.6/doc/gifpos.html59
-rw-r--r--giflib-4.1.6/doc/gifrotat.html62
-rw-r--r--giflib-4.1.6/doc/gifrsize.html60
-rw-r--r--giflib-4.1.6/doc/gifspnge.html40
-rw-r--r--giflib-4.1.6/doc/giftext.html71
-rw-r--r--giflib-4.1.6/doc/gifwedge.html53
-rw-r--r--giflib-4.1.6/doc/icon2gif.html142
-rw-r--r--giflib-4.1.6/doc/index.html215
-rw-r--r--giflib-4.1.6/doc/liberror.html140
-rw-r--r--giflib-4.1.6/doc/lzgif.txt123
-rw-r--r--giflib-4.1.6/doc/raw2gif.html60
-rw-r--r--giflib-4.1.6/doc/rgb2gif.html59
-rw-r--r--giflib-4.1.6/doc/rle2gif.html58
-rw-r--r--giflib-4.1.6/doc/text2gif.html73
42 files changed, 6459 insertions, 0 deletions
diff --git a/giflib-4.1.6/doc/GifFileType.png b/giflib-4.1.6/doc/GifFileType.png
new file mode 100644
index 0000000..11ccaaa
--- /dev/null
+++ b/giflib-4.1.6/doc/GifFileType.png
Binary files differ
diff --git a/giflib-4.1.6/doc/Makefile.am b/giflib-4.1.6/doc/Makefile.am
new file mode 100644
index 0000000..0918e17
--- /dev/null
+++ b/giflib-4.1.6/doc/Makefile.am
@@ -0,0 +1,41 @@
+UTILHELP = gif2bgi.html \
+ gif2epsn.html \
+ gif2herc.html \
+ gif2iris.html \
+ gif2ps.html \
+ gif2rgb.html \
+ gif2rle.html \
+ gif2x11.html \
+ gifasm.html \
+ gifbg.html \
+ gifburst.html \
+ gifclip.html \
+ gifclrmp.html \
+ gifcolor.html \
+ gifcomb.html \
+ gifcompose.html \
+ giffiltr.html \
+ giffix.html \
+ gifflip.html \
+ gifhisto.html \
+ gifinter.html \
+ gifinto.html \
+ gifovly.html \
+ gifpos.html \
+ gifrotat.html \
+ gifrsize.html \
+ gifspnge.html \
+ giftext.html \
+ gifwedge.html \
+ icon2gif.html \
+ raw2gif.html \
+ rgb2gif.html \
+ rle2gif.html \
+ text2gif.html
+LIBRARYHELP = GifFileType.png \
+ gif89.txt \
+ gif_lib.html \
+ index.html \
+ liberror.html \
+ lzgif.txt
+EXTRA_DIST = $(UTILHELP) $(LIBRARYHELP)
diff --git a/giflib-4.1.6/doc/Makefile.in b/giflib-4.1.6/doc/Makefile.in
new file mode 100644
index 0000000..d2c38ac
--- /dev/null
+++ b/giflib-4.1.6/doc/Makefile.in
@@ -0,0 +1,374 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+COMPILABLE_EXTRAS = @COMPILABLE_EXTRAS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DEVS = @DEVS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GL_S_LIB = @GL_S_LIB@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MATH_LIB = @MATH_LIB@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+RLE_LIB = @RLE_LIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+X11_LIB = @X11_LIB@
+XMKMF = @XMKMF@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+UTILHELP = gif2bgi.html \
+ gif2epsn.html \
+ gif2herc.html \
+ gif2iris.html \
+ gif2ps.html \
+ gif2rgb.html \
+ gif2rle.html \
+ gif2x11.html \
+ gifasm.html \
+ gifbg.html \
+ gifburst.html \
+ gifclip.html \
+ gifclrmp.html \
+ gifcolor.html \
+ gifcomb.html \
+ gifcompose.html \
+ giffiltr.html \
+ giffix.html \
+ gifflip.html \
+ gifhisto.html \
+ gifinter.html \
+ gifinto.html \
+ gifovly.html \
+ gifpos.html \
+ gifrotat.html \
+ gifrsize.html \
+ gifspnge.html \
+ giftext.html \
+ gifwedge.html \
+ icon2gif.html \
+ raw2gif.html \
+ rgb2gif.html \
+ rle2gif.html \
+ text2gif.html
+
+LIBRARYHELP = GifFileType.png \
+ gif89.txt \
+ gif_lib.html \
+ index.html \
+ liberror.html \
+ lzgif.txt
+
+EXTRA_DIST = $(UTILHELP) $(LIBRARYHELP)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
+# 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:
diff --git a/giflib-4.1.6/doc/gif2bgi.html b/giflib-4.1.6/doc/gif2bgi.html
new file mode 100644
index 0000000..7640cbf
--- /dev/null
+++ b/giflib-4.1.6/doc/gif2bgi.html
@@ -0,0 +1,136 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gif2bgi</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gif2bgi</H1></CENTER>
+
+A program to display images saved as GIF files on IBM PC display devices using
+the BGI (Borland) driver interface.<P>
+
+The program operates as follows:<P>
+
+<OL>
+<LI>
+Reads the GIF file header and determines the image size.<P>
+
+<LI>
+Dynamically allocates enough memory to hold all the image internally.
+One byte per pixel is always allocated, so a little bit more than
+width*height (of screen, not image) bytes are required.<P>
+
+<LI>
+Reads all the image in. Interlaced images are read in correctly, although
+they are displayed sequentially.<P>
+
+<LI>
+Display first image using the defaults as set by the command line option.<P>
+
+<LI>
+Goes to interactive mode. For a full description of the interactive mode
+see below.<P>
+</OL>
+
+<H1>Usage:</H1>
+
+<pre>
+gif2bgi [-q] [-d BGI dir] [-u driver] [-z zoom] [-b] [-h] gif-file
+</pre>
+
+If no GIF is given, gif2bgi will try to read a GIF file from stdin.<P>
+
+<H1>Memory required:</H1>
+
+Screen.
+
+<H1>Options:</H1>
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Default off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-d BGI Directory]
+<DD> Where we should look for default drivers (as supplied by Borland).
+ For example '-d c:/tc/bgi'.<P>
+
+<DT> [-u driver]
+<DD> Specifies a user-defined BGI driver. If for example
+ you have a BGI driver for your special vga called MYVGA.BGI and you want
+ to run it in mode 2, then type '-u c:/tc/bgi/myvga.2'. Note the absolute
+ path to the driver must be specified. Also note that we use '/' and not
+ '\' so they won't be treated as options.<P>
+
+<DT> [-z zoom]
+<DD> Sets zoom factor of the view. Zoom factor should be
+ power of 2 up to 256. Default is 1 (no zoom).<P>
+
+<DT> [-h]
+<DD> Print one line of command-line help, similar to Usage above.<P>
+</DL>
+
+<H1>Interactive mode:</H1>
+
+Once the image is displayed, the gif2bgi program goes into interactive mode
+which recognizes the following commands:<P>
+
+<DL>
+<DT> C - get Color and position
+<DD> In this submenu, a cursor appears and the location and color of the
+ pixel underneath it are printed. The 4 arrows may be used (shifted for
+ faster movement) to move the cursor. Any other key will abort this submode.<P>
+
+<DT> D - zoom Down
+<DD> Zoom down by factor of 2 unless current zoom factor is 1.<P>
+
+<DT> R - Redraw
+<DD> Redraw the image.<P>
+
+<DT> S - print Status
+<DD> Print status of image and program.<P>
+
+<DT> U - zoom Up
+<DD> Zoom up by factor of 2 unless current zoom factor is 256.<P>
+
+<DT> arrow keys
+<DD> The 4 arrow keys can be used to pan in the desired direction, if the image
+ overflows in that direction. If the image fits into the screen, arrow
+ keys are ignored. The panning steps are 1/2 screen if not on image end.<P>
+
+<DT> SPC - abort
+<DD> Space bar may be used to abort current image drawing.<P>
+
+<DT> ESC - abort
+<DD> Escape may be used to abort current image drawing.
+</DL>
+
+
+<H1>Notes:</H1>
+
+This program is useless in a Unix environment and is not normally
+built there.<P>
+
+No color quantization is used in this program; thus, if a GIF image has more
+colors than the BGI driver support, this program will abort.<P>
+
+This driver is optimized for drivers with one byte per pixel (256 colors)
+and will run MUCH faster on such drivers.<P>
+
+<H1>Bugs:</H1>
+
+For some reason I could not figure out, on my ATI wonder card, int 10h call
+10h (AH = AL = 10h) to set the color registers sometimes result with wrong
+colors. Direct access of the card registers gives correct results.<P>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
+
diff --git a/giflib-4.1.6/doc/gif2epsn.html b/giflib-4.1.6/doc/gif2epsn.html
new file mode 100644
index 0000000..fc102b7
--- /dev/null
+++ b/giflib-4.1.6/doc/gif2epsn.html
@@ -0,0 +1,98 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gif2bgi</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gif2epsn</H1></CENTER>
+
+A program to dump images saved as GIF files on Epson type printers.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+gif2epsn [-q] [-d dither] [-t bw] [-m map] [-i] [-n] [-p printer] [-h] gif-file
+</pre>
+
+If no gif-file is given, Gif2Epsn will try to read a GIF file from stdin.<p>
+
+
+<H1>Memory required:</H1>
+
+Screen.
+
+<H1>Options:</H1>
+
+<DL>
+<DT>[-q]
+<DD> Quiet mode. Default off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT>[-d dither]
+<DD> Sets size of dithering matrix, where DitherSize can be
+ 2,3 or 4 only (for 2x2, 3x3 and 4x4 dithering matrices). Default is 2.
+ Note image will be displayed in this mode only if the mapping
+ option (see -m) selected this mode.<P>
+
+<DT> [-t bw]
+<DD> Sets threshold level for B&W mapping in percent.
+ This threshold level is used in the different mappings as selected via -m.
+ Default is 19%.<P>
+
+<DT> [-m map]
+<DD> Select method to map colors to B&W. Mapping can be:
+
+ <DL>
+ <DT>0<DD>
+ Every none background color is considered foreground (white color but
+ is drawn as black by printer, unless -i is specified).<P>
+
+ <DT>1<DD>
+ If 0.3 * RED + 0.59 * GREEN + 0.11 * YELLOW > BW the pixel is
+ considered white color.<P>
+
+ <DT>2<DD>
+ Colors are mapped as in 1, and use dithering of size as defined using
+ -d option. BWthreshold is used here as scaler.<P>
+ </DL><P>
+
+The default is option 0.<P>
+
+<DT> [-i]
+<DD> Invert the image, i.e. black -> white, white -> black.<P>
+
+<DT> [-n]
+<DD> Nicer image. Uses double-density feature of Epson printer. This
+ takes more time (and kills your ink cartridge faster...) but results
+ are usually better.<P>
+
+<DT> [-p printer]
+<DD> Under Unix, output goes to stdout by default; under DOS, the
+ default is LPT1:. With this switch you can specify the output
+ target.<P>
+
+<DT> [-h]
+<DD> print one line of command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Notes:</H1>
+
+The output has an aspect ratio of 1, so a square image will be square in
+hardcopy as well.<P>
+
+The widest image can be printed is 640 pixels, on 8 inch paper. You
+probably will need to flip wider images, if height is less than that:
+`<a href="gifflip.html">gifflip</a> -r x29.gif | gif2epsn'. Wider
+images will be clipped.<P>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gif2herc.html b/giflib-4.1.6/doc/gif2herc.html
new file mode 100644
index 0000000..26afe0c
--- /dev/null
+++ b/giflib-4.1.6/doc/gif2herc.html
@@ -0,0 +1,153 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gif2herc</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gif2herc</H1></CENTER>
+
+A program to display images saved as GIF files on an IBM PC Hercules
+graphic card. The program operates as follows:<P>
+
+<OL>
+<LI>
+Read GIF file header and determine size of the image.<P>
+
+<LI>
+Dynamically allocate enough memory to hold all the image internally.
+One byte per pixel is always allocated, so a little bit more than
+width*height (of screen, not image) bytes are required.<P>
+
+<LI>
+Reads the image in. Interlaced images are read correctly, although
+they are displayed sequentially.<P>
+
+<LI>
+Display first image using the defaults as set by the command line option.<P>
+
+<LI>
+Goes to interactive mode. For full description of the interactive mode
+see below.<P>
+</OL>
+
+<H1>Usage:</H1>
+
+<pre>
+gif2herc [-q] [-d dither] [-z zoom] [-t bw] [-m map] [-i] [-b] [-h] gif-file
+</pre>
+
+If no gif-file is given, gif2herc will try to read a GIF file from stdin.<P>
+
+
+<H1>Memory required:</H1>
+
+Screen.
+
+<H1>Options:</H1>
+
+<DT> [-q]
+<DD> Quiet mode. Defaults off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-d dither]
+<DD> Sets size of dithering matrix, where dither can be
+ 2,3 or 4 only (for 2x2, 3x3 and 4x4 dithering matrices). Default is 2.
+ Note: the image will be dithered only if the mapping (see -m)
+ selected dithering mode.<P>
+
+<DT> [-z zoom]
+<DD> Sets zoom factor of the image. Zoom factor should be
+ power of 2 up to 256. Default is 1 (no zoom).<P>
+
+<DT> [-t bw]
+<DD> Sets threshold level for B&W mapping in percent.
+ This threshold level is used in the different mappings as selected via -m.
+ Default is 19%.<P>
+
+<DT> [-m map]
+<DD> Select method to map colors to B&W. Mapping can be:
+
+ <DL>
+ <DT>0<DD>
+ Every non-background color is considered foreground (white).
+
+ <DT>1<DD>
+ 0.3 * RED + 0.59 * GREEN + 0.11 * YELLOW > BWThreshold is considered white.
+
+ <DT>2<DD>
+ Colors are mapped as in 1, and use dithering of size as defined using
+ -d option. BWthreshold is used here as scaler.
+ </DL>
+
+Default is option 0, which is much faster than the other two.<P>
+
+<DT> [-i]
+<DD> Invert the image, i.e. black -> white, white -> black.<P>
+
+<DT> [-b]
+<DD> Disable beeps. Every time the image is complete, or a wrong key was
+ presses, sound is generated. The -b option disables that.<P>
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Interactive mode:</H1>
+
+Once the image is displayed, the program goes into an interactive mode
+which recognizes the following commands:
+
+<DL>
+<DT> C - get Color and position
+<DD> In this submenu, a cursor appears and the location and color of the
+ pixel underneath it are printed. The 4 arrows may be used (shifted for
+ faster movement) to move the cursor. Any other key will abort this
+ submode.<P>
+
+
+<DT> D - zoom Down
+<DD> Zoom down by factor of 2 unless current zoom factor is 1.<P>
+
+<DT>H - Increase dither matrix size
+<DD>...unless current size is maximum (4), in which case size is set
+ to minimum (2).<P>
+
+<DT>I - Invert
+<DD>Invert the image, i.e. white -> black, black -> white.<P>
+
+<DT>M - Method
+<DD>Increment color -> BW mapping method, unless current method is maximum
+ (2), in which case method is set to minimum (0).<P>
+
+<DT> R - Redraw
+<DD> Redraw the image.<P>
+
+<DT> S - print Status
+<DD> Print status of image and program.<P>
+
+<DT> U - zoom Up
+<DD> Zoom up by factor of 2 unless current zoom factor is 256.<P>
+
+<DT> arrow keys
+<DD> The 4 arrow keys can be used to pan in the desired direction, if the image
+ overflows in that direction. If the image fits into the screen, arrow
+ keys are ignored. The panning steps are 1/2 screen if not on image end.<P>
+
+<DT> SPC - abort
+<DD> Space bar may be used to abort current image drawing.<P>
+
+<DT> ESC - abort
+<DD> Escape may be used to abort current image drawing.<P>
+</DL>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gif2iris.html b/giflib-4.1.6/doc/gif2iris.html
new file mode 100644
index 0000000..dd6ae3b
--- /dev/null
+++ b/giflib-4.1.6/doc/gif2iris.html
@@ -0,0 +1,52 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gif2iris</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gif2iris</H1></CENTER>
+
+A program to display images saved as GIF files under the
+SGI NeWs window system.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+Gif2Iris [-q] [-f] [-p PosX PosY] [-f] [-h] gif-file
+</pre>
+
+If no gif-file is given, Gif2Iris will try to read a GIF from stdin.<P>
+
+<H1>Memory required:</H1>
+
+Screen.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Defaults off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-f]
+<DD> Force Gif2Iris to stay in foreground.<P>
+
+<DT> [-p PosX PosY]
+<DD> Defines position of image on screen. By default the
+ program will prompt for position.<P>
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above..<P>
+</DL>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gif2ps.html b/giflib-4.1.6/doc/gif2ps.html
new file mode 100644
index 0000000..7530d85
--- /dev/null
+++ b/giflib-4.1.6/doc/gif2ps.html
@@ -0,0 +1,71 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gif2ps</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gif2ps</H1></CENTER>
+
+GIF-to-PostScript conversion.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+gif2ps [-q] [-x] [-y] [-s sx sy] [-p px py] [-i] [-n copies] [-h] gif-file
+</pre>
+
+If no gif-file is given, Gif2PS will try to read a GIF file from stdin.<P>
+
+
+<H1>Memory required:</H1>
+
+Line.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> quiet mode. Defaults off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-x]
+<DD> Force image to be horizontal (`landscape mode'). By default image
+ will be positioned so it will be the biggest. If -x is given image will be
+ scaled to be biggest possible horizontally.<P>
+
+<DT> [-y]
+<DD> Force vertical (`portrait mode'); analogous to -x.<P>
+
+<DT> [-s sx sy]
+<DD> Force image size to be sx by sy inches.
+ If image will exit page dimensions, it will scream and die.
+ Page dimensions are 8.5 by 11.0 inches but only 7.5 by 9.0 are assumed to
+ be printable.<P>
+
+<DT> [-p pc py]
+<DD> Force image lower left corner to be as px py.
+ If this would overrun the page's dimensions, it will scream and die.<P>
+
+<DT> [-i]
+<DD> Image will be inverted (Black -> White and vice versa).
+ Mapping from colors is done by 0.3 * RED + 0.59 * GREEN + 0.11 * BLUE
+ and sometimes inverting the image will look better.<P>
+
+<DT> [-n copies]
+<DD> Number of copies to print. 1 by default.<P>
+
+<DT> [-h]
+<DD> Print one line of command help, similar to Usage above.<P>
+</DL>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gif2rgb.html b/giflib-4.1.6/doc/gif2rgb.html
new file mode 100644
index 0000000..f47f1e8
--- /dev/null
+++ b/giflib-4.1.6/doc/gif2rgb.html
@@ -0,0 +1,55 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gif2rgb</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gif2rgb</H1></CENTER>
+
+A program to convert images saved as GIF to 24-bit RGB image(s).
+
+
+<H1>Usage:</H1>
+
+<pre>
+gif2rgb [-q] [-1] [-o OutFileName] [-h] gif-file
+</pre>
+
+If no gif-file is given, Gif2RGB will try to read a GIF file from stdin.<P>
+
+<H1>Memory required:</H1>
+
+Screen.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Defaults off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-1]
+<DD> Only one file in the format of RGBRGB... triplets (Each of R, G, B
+ is a byte) is being written. This file size is 3 * Width * Height.
+ If stdout is used for output, this option is implicitly applied.
+ The default (if not `-1') is 3 files with the names OutFileName.R,
+ OutFileName.G, OutFileName.B, each of which is Width * Height bytes.<P>
+
+<DT> [-o OutFileName]
+<DD> specifies the name of the out file (see also `-1' above).<P>
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gif2rle.html b/giflib-4.1.6/doc/gif2rle.html
new file mode 100644
index 0000000..ec69248
--- /dev/null
+++ b/giflib-4.1.6/doc/gif2rle.html
@@ -0,0 +1,56 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gif2rle</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gif2rle</H1></CENTER>
+
+A program to convert images saved as GIF to RLE (Utah raster toolkit)
+format.<p>
+
+<H1>Usage:</H1>
+
+<pre>
+gif2rle [-q] [-a] [-h] gif-file
+</pre>
+
+If no gif-file is given, Gif2Rle will try to read a GIF file from stdin.<p>
+
+
+<H1>Memory required:</H1>
+
+Screen.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Defaults off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-a]
+<DD> Add alpha channel (see rle document) to the output data file.<P>
+
+<DT> [-h]
+<DD> Print one line command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Notes:</H1>
+
+This routine must be linked with the RLE toolkit library librle.a and
+is not built by the normal distribution make. If you want to convert
+images to RLE format, it is reasonable to assume you have this library
+available.<p>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gif2x11.html b/giflib-4.1.6/doc/gif2x11.html
new file mode 100644
index 0000000..5e26729
--- /dev/null
+++ b/giflib-4.1.6/doc/gif2x11.html
@@ -0,0 +1,59 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gif2x11</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gif2x11</H1></CENTER>
+
+A program to display images saved as GIF files under X window system.<P?
+
+<H1>Usage:</H1>
+
+<pre>
+gif2x11 [-q] [-p PosX PosY] [-d Display] [-f] [-h] gif-file
+</pre>
+
+If no gif-file is given, Gif2X11 will try to read a GIF file from stdin.
+Note: this program does <em>not</em> read the X resource data base.<P>
+
+<H1>Memory required:</H1>
+
+Screen.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Defaults off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-p PosX PosY]
+<DD> Set the position of image on screen. By default the
+ program will prompt for position.<P>
+
+<DT> [-d Display]
+<DD> What X server should be connected to.<P>
+
+<DT> [-f]
+<DD> Force attempt to allocate exact colors. This usually will result in a
+ very muddled image if not enough colors can be allocated; the rest of
+ them will be approximated by the closest one. By default the least bits
+ of the colors are stripped until success (in allocation) which looks much
+ better.<P>
+
+<DT> [-h]
+<DD> Print one line command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gif89.txt b/giflib-4.1.6/doc/gif89.txt
new file mode 100644
index 0000000..9516eec
--- /dev/null
+++ b/giflib-4.1.6/doc/gif89.txt
@@ -0,0 +1,2475 @@
+
+
+ Cover Sheet for the GIF89a Specification
+
+
+ DEFERRED CLEAR CODE IN LZW COMPRESSION
+
+ There has been confusion about where clear codes can be found in the
+ data stream. As the specification says, they may appear at anytime. There
+ is not a requirement to send a clear code when the string table is full.
+
+ It is the encoder's decision as to when the table should be cleared. When
+ the table is full, the encoder can chose to use the table as is, making no
+ changes to it until the encoder chooses to clear it. The encoder during
+ this time sends out codes that are of the maximum Code Size.
+
+ As we can see from the above, when the decoder's table is full, it must
+ not change the table until a clear code is received. The Code Size is that
+ of the maximum Code Size. Processing other than this is done normally.
+
+ Because of a large base of decoders that do not handle the decompression in
+ this manner, we ask developers of GIF encoding software to NOT implement
+ this feature until at least January 1991 and later if they see that their
+ particular market is not ready for it. This will give developers of GIF
+ decoding software time to implement this feature and to get it into the
+ hands of their clients before the decoders start "breaking" on the new
+ GIF's. It is not required that encoders change their software to take
+ advantage of the deferred clear code, but it is for decoders.
+
+ APPLICATION EXTENSION BLOCK - APPLICATION IDENTIFIER
+
+ There will be a Courtesy Directory file located on CompuServe in the PICS
+ forum. This directory will contain Application Identifiers for Application
+ Extension Blocks that have been used by developers of GIF applications.
+ This file is intended to help keep developers that wish to create
+ Application Extension Blocks from using the same Application Identifiers.
+ This is not an official directory; it is for voluntary participation only
+ and does not guarantee that someone will not use the same identifier.
+
+ E-Mail can be sent to Larry Wood (forum manager of PICS) indicating the
+ request for inclusion in this file with an identifier.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GRAPHICS INTERCHANGE FORMAT(sm)
+
+ Version 89a
+
+ (c)1987,1988,1989,1990
+
+ Copyright
+ CompuServe Incorporated
+ Columbus, Ohio
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CompuServe Incorporated Graphics Interchange Format
+Document Date : 31 July 1990 Programming Reference
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+Disclaimer................................................................. 1
+
+Foreword................................................................... 1
+
+Licensing.................................................................. 1
+
+About the Document......................................................... 2
+
+General Description........................................................ 2
+
+Version Numbers............................................................ 2
+
+The Encoder................................................................ 3
+
+The Decoder................................................................ 3
+
+Compliance................................................................. 3
+
+About Recommendations...................................................... 4
+
+About Color Tables......................................................... 4
+
+Blocks, Extensions and Scope............................................... 4
+
+Block Sizes................................................................ 5
+
+Using GIF as an embedded protocol.......................................... 5
+
+Data Sub-blocks............................................................ 5
+
+Block Terminator........................................................... 6
+
+Header..................................................................... 7
+
+Logical Screen Descriptor.................................................. 8
+
+Global Color Table......................................................... 10
+
+Image Descriptor........................................................... 11
+
+Local Color Table.......................................................... 13
+
+Table Based Image Data..................................................... 14
+
+Graphic Control Extension.................................................. 15
+
+Comment Extension.......................................................... 17
+
+Plain Text Extension....................................................... 18
+
+Application Extension...................................................... 21
+
+Trailer.................................................................... 23
+
+
+
+
+
+
+
+
+
+
+
+Quick Reference Table...................................................... 24
+
+GIF Grammar................................................................ 25
+
+Glossary................................................................... 27
+
+Conventions................................................................ 28
+
+Interlaced Images.......................................................... 29
+
+Variable-Length-Code LZW Compression....................................... 30
+
+On-line Capabilities Dialogue.............................................. 33
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+1. Disclaimer.
+
+The information provided herein is subject to change without notice. In no
+event will CompuServe Incorporated be liable for damages, including any loss of
+revenue, loss of profits or other incidental or consequential damages arising
+out of the use or inability to use the information; CompuServe Incorporated
+makes no claim as to the suitability of the information.
+
+
+2. Foreword.
+
+This document defines the Graphics Interchange Format(sm). The specification
+given here defines version 89a, which is an extension of version 87a.
+
+The Graphics Interchange Format(sm) as specified here should be considered
+complete; any deviation from it should be considered invalid, including but not
+limited to, the use of reserved or undefined fields within control or data
+blocks, the inclusion of extraneous data within or between blocks, the use of
+methods or algorithms not specifically listed as part of the format, etc. In
+general, any and all deviations, extensions or modifications not specified in
+this document should be considered to be in violation of the format and should
+be avoided.
+
+
+3. Licensing.
+
+The Graphics Interchange Format(c) is the copyright property of CompuServe
+Incorporated. Only CompuServe Incorporated is authorized to define, redefine,
+enhance, alter, modify or change in any way the definition of the format.
+
+CompuServe Incorporated hereby grants a limited, non-exclusive, royalty-free
+license for the use of the Graphics Interchange Format(sm) in computer
+software; computer software utilizing GIF(sm) must acknowledge ownership of the
+Graphics Interchange Format and its Service Mark by CompuServe Incorporated, in
+User and Technical Documentation. Computer software utilizing GIF, which is
+distributed or may be distributed without User or Technical Documentation must
+display to the screen or printer a message acknowledging ownership of the
+Graphics Interchange Format and the Service Mark by CompuServe Incorporated; in
+this case, the acknowledgement may be displayed in an opening screen or leading
+banner, or a closing screen or trailing banner. A message such as the following
+may be used:
+
+ "The Graphics Interchange Format(c) is the Copyright property of
+ CompuServe Incorporated. GIF(sm) is a Service Mark property of
+ CompuServe Incorporated."
+
+For further information, please contact :
+
+ CompuServe Incorporated
+ Graphics Technology Department
+ 5000 Arlington Center Boulevard
+ Columbus, Ohio 43220
+ U. S. A.
+
+CompuServe Incorporated maintains a mailing list with all those individuals and
+organizations who wish to receive copies of this document when it is corrected
+
+
+
+
+
+
+
+ 2
+
+
+or revised. This service is offered free of charge; please provide us with your
+mailing address.
+
+
+4. About the Document.
+
+This document describes in detail the definition of the Graphics Interchange
+Format. This document is intended as a programming reference; it is
+recommended that the entire document be read carefully before programming,
+because of the interdependence of the various parts. There is an individual
+section for each of the Format blocks. Within each section, the sub-section
+labeled Required Version refers to the version number that an encoder will have
+to use if the corresponding block is used in the Data Stream. Within each
+section, a diagram describes the individual fields in the block; the diagrams
+are drawn vertically; top bytes in the diagram appear first in the Data Stream.
+Bits within a byte are drawn most significant on the left end. Multi-byte
+numeric fields are ordered Least Significant Byte first. Numeric constants are
+represented as Hexadecimal numbers, preceded by "0x". Bit fields within a byte
+are described in order from most significant bits to least significant bits.
+
+
+5. General Description.
+
+The Graphics Interchange Format(sm) defines a protocol intended for the on-line
+transmission and interchange of raster graphic data in a way that is
+independent of the hardware used in their creation or display.
+
+The Graphics Interchange Format is defined in terms of blocks and sub-blocks
+which contain relevant parameters and data used in the reproduction of a
+graphic. A GIF Data Stream is a sequence of protocol blocks and sub-blocks
+representing a collection of graphics. In general, the graphics in a Data
+Stream are assumed to be related to some degree, and to share some control
+information; it is recommended that encoders attempt to group together related
+graphics in order to minimize hardware changes during processing and to
+minimize control information overhead. For the same reason, unrelated graphics
+or graphics which require resetting hardware parameters should be encoded
+separately to the extent possible.
+
+A Data Stream may originate locally, as when read from a file, or it may
+originate remotely, as when transmitted over a data communications line. The
+Format is defined with the assumption that an error-free Transport Level
+Protocol is used for communications; the Format makes no provisions for
+error-detection and error-correction.
+
+The GIF Data Stream must be interpreted in context, that is, the application
+program must rely on information external to the Data Stream to invoke the
+decoder process.
+
+
+6. Version Numbers.
+
+The version number in the Header of a Data Stream is intended to identify the
+minimum set of capabilities required of a decoder in order to fully process the
+Data Stream. An encoder should use the earliest possible version number that
+includes all the blocks used in the Data Stream. Within each block section in
+this document, there is an entry labeled Required Version which specifies the
+
+
+
+
+
+
+
+ 3
+
+
+earliest version number that includes the corresponding block. The encoder
+should make every attempt to use the earliest version number covering all the
+blocks in the Data Stream; the unnecessary use of later version numbers will
+hinder processing by some decoders.
+
+
+7. The Encoder.
+
+The Encoder is the program used to create a GIF Data Stream. From raster data
+and other information, the encoder produces the necessary control and data
+blocks needed for reproducing the original graphics.
+
+The encoder has the following primary responsibilities.
+
+ - Include in the Data Stream all the necessary information to
+ reproduce the graphics.
+
+ - Insure that a Data Stream is labeled with the earliest possible
+ Version Number that will cover the definition of all the blocks in
+ it; this is to ensure that the largest number of decoders can
+ process the Data Stream.
+
+ - Ensure encoding of the graphics in such a way that the decoding
+ process is optimized. Avoid redundant information as much as
+ possible.
+
+ - To the extent possible, avoid grouping graphics which might
+ require resetting hardware parameters during the decoding process.
+
+ - Set to zero (off) each of the bits of each and every field
+ designated as reserved. Note that some fields in the Logical Screen
+ Descriptor and the Image Descriptor were reserved under Version
+ 87a, but are used under version 89a.
+
+
+8. The Decoder.
+
+The Decoder is the program used to process a GIF Data Stream. It processes the
+Data Stream sequentially, parsing the various blocks and sub-blocks, using the
+control information to set hardware and process parameters and interpreting the
+data to render the graphics.
+
+The decoder has the following primary responsibilities.
+
+ - Process each graphic in the Data Stream in sequence, without
+ delays other than those specified in the control information.
+
+ - Set its hardware parameters to fit, as closely as possible, the
+ control information contained in the Data Stream.
+
+
+9. Compliance.
+
+An encoder or a decoder is said to comply with a given version of the Graphics
+Interchange Format if and only if it fully conforms with and correctly
+implements the definition of the standard associated with that version. An
+
+
+
+
+
+
+
+ 4
+
+
+encoder or a decoder may be compliant with a given version number and not
+compliant with some subsequent version.
+
+
+10. About Recommendations.
+
+Each block section in this document contains an entry labeled Recommendation;
+this section lists a set of recommendations intended to guide and organize the
+use of the particular blocks. Such recommendations are geared towards making
+the functions of encoders and decoders more efficient, as well as making
+optimal use of the communications bandwidth. It is advised that these
+recommendations be followed.
+
+
+11. About Color Tables.
+
+The GIF format utilizes color tables to render raster-based graphics. A color
+table can have one of two different scopes: global or local. A Global Color
+Table is used by all those graphics in the Data Stream which do not have a
+Local Color Table associated with them. The scope of the Global Color Table is
+the entire Data Stream. A Local Color Table is always associated with the
+graphic that immediately follows it; the scope of a Local Color Table is
+limited to that single graphic. A Local Color Table supersedes a Global Color
+Table, that is, if a Data Stream contains a Global Color Table, and an image
+has a Local Color Table associated with it, the decoder must save the Global
+Color Table, use the Local Color Table to render the image, and then restore
+the Global Color Table. Both types of color tables are optional, making it
+possible for a Data Stream to contain numerous graphics without a color table
+at all. For this reason, it is recommended that the decoder save the last
+Global Color Table used until another Global Color Table is encountered. In
+this way, a Data Stream which does not contain either a Global Color Table or
+a Local Color Table may be processed using the last Global Color Table saved.
+If a Global Color Table from a previous Stream is used, that table becomes the
+Global Color Table of the present Stream. This is intended to reduce the
+overhead incurred by color tables. In particular, it is recommended that an
+encoder use only one Global Color Table if all the images in related Data
+Streams can be rendered with the same table. If no color table is available at
+all, the decoder is free to use a system color table or a table of its own. In
+that case, the decoder may use a color table with as many colors as its
+hardware is able to support; it is recommended that such a table have black and
+white as its first two entries, so that monochrome images can be rendered
+adequately.
+
+The Definition of the GIF Format allows for a Data Stream to contain only the
+Header, the Logical Screen Descriptor, a Global Color Table and the GIF
+Trailer. Such a Data Stream would be used to load a decoder with a Global Color
+Table, in preparation for subsequent Data Streams without a color table at all.
+
+
+12. Blocks, Extensions and Scope.
+
+Blocks can be classified into three groups : Control, Graphic-Rendering and
+Special Purpose. Control blocks, such as the Header, the Logical Screen
+Descriptor, the Graphic Control Extension and the Trailer, contain information
+used to control the process of the Data Stream or information used in setting
+hardware parameters. Graphic-Rendering blocks such as the Image Descriptor and
+
+
+
+
+
+
+
+ 5
+
+
+the Plain Text Extension contain information and data used to render a graphic
+on the display device. Special Purpose blocks such as the Comment Extension and
+the Application Extension are neither used to control the process of the Data
+Stream nor do they contain information or data used to render a graphic on the
+display device. With the exception of the Logical Screen Descriptor and the
+Global Color Table, whose scope is the entire Data Stream, all other Control
+blocks have a limited scope, restricted to the Graphic-Rendering block that
+follows them. Special Purpose blocks do not delimit the scope of any Control
+blocks; Special Purpose blocks are transparent to the decoding process.
+Graphic-Rendering blocks and extensions are used as scope delimiters for
+Control blocks and extensions. The labels used to identify labeled blocks fall
+into three ranges : 0x00-0x7F (0-127) are the Graphic Rendering blocks,
+excluding the Trailer (0x3B); 0x80-0xF9 (128-249) are the Control blocks;
+0xFA-0xFF (250-255) are the Special Purpose blocks. These ranges are defined so
+that decoders can handle block scope by appropriately identifying block labels,
+even when the block itself cannot be processed.
+
+
+13. Block Sizes.
+
+The Block Size field in a block, counts the number of bytes remaining in the
+block, not counting the Block Size field itself, and not counting the Block
+Terminator, if one is to follow. Blocks other than Data Blocks are intended to
+be of fixed length; the Block Size field is provided in order to facilitate
+skipping them, not to allow their size to change in the future. Data blocks
+and sub-blocks are of variable length to accommodate the amount of data.
+
+
+14. Using GIF as an embedded protocol.
+
+As an embedded protocol, GIF may be part of larger application protocols,
+within which GIF is used to render graphics. In such a case, the application
+protocol could define a block within which the GIF Data Stream would be
+contained. The application program would then invoke a GIF decoder upon
+encountering a block of type GIF. This approach is recommended in favor of
+using Application Extensions, which become overhead for all other applications
+that do not process them. Because a GIF Data Stream must be processed in
+context, the application must rely on some means of identifying the GIF Data
+Stream outside of the Stream itself.
+
+
+15. Data Sub-blocks.
+
+ a. Description. Data Sub-blocks are units containing data. They do not
+ have a label, these blocks are processed in the context of control
+ blocks, wherever data blocks are specified in the format. The first byte
+ of the Data sub-block indicates the number of data bytes to follow. A
+ data sub-block may contain from 0 to 255 data bytes. The size of the
+ block does not account for the size byte itself, therefore, the empty
+ sub-block is one whose size field contains 0x00.
+
+ b. Required Version. 87a.
+
+
+
+
+
+
+
+
+
+
+
+ 6
+
+
+ c. Syntax.
+
+ 7 6 5 4 3 2 1 0 Field Name Type
+ +---------------+
+ 0 | | Block Size Byte
+ +---------------+
+ 1 | |
+ +- -+
+ 2 | |
+ +- -+
+ 3 | |
+ +- -+
+ | | Data Values Byte
+ +- -+
+ up | |
+ +- . . . . -+
+ to | |
+ +- -+
+ | |
+ +- -+
+255 | |
+ +---------------+
+
+ i) Block Size - Number of bytes in the Data Sub-block; the size
+ must be within 0 and 255 bytes, inclusive.
+
+ ii) Data Values - Any 8-bit value. There must be exactly as many
+ Data Values as specified by the Block Size field.
+
+ d. Extensions and Scope. This type of block always occurs as part of a
+ larger unit. It does not have a scope of itself.
+
+ e. Recommendation. None.
+
+
+16. Block Terminator.
+
+ a. Description. This zero-length Data Sub-block is used to terminate a
+ sequence of Data Sub-blocks. It contains a single byte in the position of
+ the Block Size field and does not contain data.
+
+ b. Required Version. 87a.
+
+ c. Syntax.
+
+ 7 6 5 4 3 2 1 0 Field Name Type
+ +---------------+
+ 0 | | Block Size Byte
+ +---------------+
+
+ i) Block Size - Number of bytes in the Data Sub-block; this field
+ contains the fixed value 0x00.
+
+ ii) Data Values - This block does not contain any data.
+
+
+
+
+
+
+
+
+
+ 7
+
+
+ d. Extensions and Scope. This block terminates the immediately preceding
+ sequence of Data Sub-blocks. This block cannot be modified by any
+ extension.
+
+ e. Recommendation. None.
+
+
+17. Header.
+
+ a. Description. The Header identifies the GIF Data Stream in context. The
+ Signature field marks the beginning of the Data Stream, and the Version
+ field identifies the set of capabilities required of a decoder to fully
+ process the Data Stream. This block is REQUIRED; exactly one Header must
+ be present per Data Stream.
+
+ b. Required Version. Not applicable. This block is not subject to a
+ version number. This block must appear at the beginning of every Data
+ Stream.
+
+ c. Syntax.
+
+
+ 7 6 5 4 3 2 1 0 Field Name Type
+ +---------------+
+ 0 | | Signature 3 Bytes
+ +- -+
+ 1 | |
+ +- -+
+ 2 | |
+ +---------------+
+ 3 | | Version 3 Bytes
+ +- -+
+ 4 | |
+ +- -+
+ 5 | |
+ +---------------+
+
+ i) Signature - Identifies the GIF Data Stream. This field contains
+ the fixed value 'GIF'.
+
+ ii) Version - Version number used to format the data stream.
+ Identifies the minimum set of capabilities necessary to a decoder
+ to fully process the contents of the Data Stream.
+
+ Version Numbers as of 10 July 1990 : "87a" - May 1987
+ "89a" - July 1989
+
+ Version numbers are ordered numerically increasing on the first two
+ digits starting with 87 (87,88,...,99,00,...,85,86) and
+ alphabetically increasing on the third character (a,...,z).
+
+ iii) Extensions and Scope. The scope of this block is the entire
+ Data Stream. This block cannot be modified by any extension.
+
+
+
+
+
+
+
+
+
+
+ 8
+
+
+ d. Recommendations.
+
+ i) Signature - This field identifies the beginning of the GIF Data
+ Stream; it is not intended to provide a unique signature for the
+ identification of the data. It is recommended that the GIF Data
+ Stream be identified externally by the application. (Refer to
+ Appendix G for on-line identification of the GIF Data Stream.)
+
+ ii) Version - ENCODER : An encoder should use the earliest possible
+ version number that defines all the blocks used in the Data Stream.
+ When two or more Data Streams are combined, the latest of the
+ individual version numbers should be used for the resulting Data
+ Stream. DECODER : A decoder should attempt to process the data
+ stream to the best of its ability; if it encounters a version
+ number which it is not capable of processing fully, it should
+ nevertheless, attempt to process the data stream to the best of its
+ ability, perhaps after warning the user that the data may be
+ incomplete.
+
+
+18. Logical Screen Descriptor.
+
+ a. Description. The Logical Screen Descriptor contains the parameters
+ necessary to define the area of the display device within which the
+ images will be rendered. The coordinates in this block are given with
+ respect to the top-left corner of the virtual screen; they do not
+ necessarily refer to absolute coordinates on the display device. This
+ implies that they could refer to window coordinates in a window-based
+ environment or printer coordinates when a printer is used.
+
+ This block is REQUIRED; exactly one Logical Screen Descriptor must be
+ present per Data Stream.
+
+ b. Required Version. Not applicable. This block is not subject to a
+ version number. This block must appear immediately after the Header.
+
+ c. Syntax.
+
+ 7 6 5 4 3 2 1 0 Field Name Type
+ +---------------+
+ 0 | | Logical Screen Width Unsigned
+ +- -+
+ 1 | |
+ +---------------+
+ 2 | | Logical Screen Height Unsigned
+ +- -+
+ 3 | |
+ +---------------+
+ 4 | | | | | <Packed Fields> See below
+ +---------------+
+ 5 | | Background Color Index Byte
+ +---------------+
+ 6 | | Pixel Aspect Ratio Byte
+ +---------------+
+
+
+
+
+
+
+
+
+
+ 9
+
+
+ <Packed Fields> = Global Color Table Flag 1 Bit
+ Color Resolution 3 Bits
+ Sort Flag 1 Bit
+ Size of Global Color Table 3 Bits
+
+ i) Logical Screen Width - Width, in pixels, of the Logical Screen
+ where the images will be rendered in the displaying device.
+
+ ii) Logical Screen Height - Height, in pixels, of the Logical
+ Screen where the images will be rendered in the displaying device.
+
+ iii) Global Color Table Flag - Flag indicating the presence of a
+ Global Color Table; if the flag is set, the Global Color Table will
+ immediately follow the Logical Screen Descriptor. This flag also
+ selects the interpretation of the Background Color Index; if the
+ flag is set, the value of the Background Color Index field should
+ be used as the table index of the background color. (This field is
+ the most significant bit of the byte.)
+
+ Values : 0 - No Global Color Table follows, the Background
+ Color Index field is meaningless.
+ 1 - A Global Color Table will immediately follow, the
+ Background Color Index field is meaningful.
+
+ iv) Color Resolution - Number of bits per primary color available
+ to the original image, minus 1. This value represents the size of
+ the entire palette from which the colors in the graphic were
+ selected, not the number of colors actually used in the graphic.
+ For example, if the value in this field is 3, then the palette of
+ the original image had 4 bits per primary color available to create
+ the image. This value should be set to indicate the richness of
+ the original palette, even if not every color from the whole
+ palette is available on the source machine.
+
+ v) Sort Flag - Indicates whether the Global Color Table is sorted.
+ If the flag is set, the Global Color Table is sorted, in order of
+ decreasing importance. Typically, the order would be decreasing
+ frequency, with most frequent color first. This assists a decoder,
+ with fewer available colors, in choosing the best subset of colors;
+ the decoder may use an initial segment of the table to render the
+ graphic.
+
+ Values : 0 - Not ordered.
+ 1 - Ordered by decreasing importance, most
+ important color first.
+
+ vi) Size of Global Color Table - If the Global Color Table Flag is
+ set to 1, the value in this field is used to calculate the number
+ of bytes contained in the Global Color Table. To determine that
+ actual size of the color table, raise 2 to [the value of the field
+ + 1]. Even if there is no Global Color Table specified, set this
+ field according to the above formula so that decoders can choose
+ the best graphics mode to display the stream in. (This field is
+ made up of the 3 least significant bits of the byte.)
+
+ vii) Background Color Index - Index into the Global Color Table for
+
+
+
+
+
+
+
+ 10
+
+
+ the Background Color. The Background Color is the color used for
+ those pixels on the screen that are not covered by an image. If the
+ Global Color Table Flag is set to (zero), this field should be zero
+ and should be ignored.
+
+ viii) Pixel Aspect Ratio - Factor used to compute an approximation
+ of the aspect ratio of the pixel in the original image. If the
+ value of the field is not 0, this approximation of the aspect ratio
+ is computed based on the formula:
+
+ Aspect Ratio = (Pixel Aspect Ratio + 15) / 64
+
+ The Pixel Aspect Ratio is defined to be the quotient of the pixel's
+ width over its height. The value range in this field allows
+ specification of the widest pixel of 4:1 to the tallest pixel of
+ 1:4 in increments of 1/64th.
+
+ Values : 0 - No aspect ratio information is given.
+ 1..255 - Value used in the computation.
+
+ d. Extensions and Scope. The scope of this block is the entire Data
+ Stream. This block cannot be modified by any extension.
+
+ e. Recommendations. None.
+
+
+19. Global Color Table.
+
+ a. Description. This block contains a color table, which is a sequence of
+ bytes representing red-green-blue color triplets. The Global Color Table
+ is used by images without a Local Color Table and by Plain Text
+ Extensions. Its presence is marked by the Global Color Table Flag being
+ set to 1 in the Logical Screen Descriptor; if present, it immediately
+ follows the Logical Screen Descriptor and contains a number of bytes
+ equal to
+ 3 x 2^(Size of Global Color Table+1).
+
+ This block is OPTIONAL; at most one Global Color Table may be present
+ per Data Stream.
+
+ b. Required Version. 87a
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 11
+
+
+ c. Syntax.
+
+ 7 6 5 4 3 2 1 0 Field Name Type
+ +===============+
+ 0 | | Red 0 Byte
+ +- -+
+ 1 | | Green 0 Byte
+ +- -+
+ 2 | | Blue 0 Byte
+ +- -+
+ 3 | | Red 1 Byte
+ +- -+
+ | | Green 1 Byte
+ +- -+
+ up | |
+ +- . . . . -+ ...
+ to | |
+ +- -+
+ | | Green 255 Byte
+ +- -+
+767 | | Blue 255 Byte
+ +===============+
+
+
+ d. Extensions and Scope. The scope of this block is the entire Data
+ Stream. This block cannot be modified by any extension.
+
+ e. Recommendation. None.
+
+
+20. Image Descriptor.
+
+ a. Description. Each image in the Data Stream is composed of an Image
+ Descriptor, an optional Local Color Table, and the image data. Each
+ image must fit within the boundaries of the Logical Screen, as defined
+ in the Logical Screen Descriptor.
+
+ The Image Descriptor contains the parameters necessary to process a table
+ based image. The coordinates given in this block refer to coordinates
+ within the Logical Screen, and are given in pixels. This block is a
+ Graphic-Rendering Block, optionally preceded by one or more Control
+ blocks such as the Graphic Control Extension, and may be optionally
+ followed by a Local Color Table; the Image Descriptor is always followed
+ by the image data.
+
+ This block is REQUIRED for an image. Exactly one Image Descriptor must
+ be present per image in the Data Stream. An unlimited number of images
+ may be present per Data Stream.
+
+ b. Required Version. 87a.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 12
+
+
+ c. Syntax.
+
+ 7 6 5 4 3 2 1 0 Field Name Type
+ +---------------+
+ 0 | | Image Separator Byte
+ +---------------+
+ 1 | | Image Left Position Unsigned
+ +- -+
+ 2 | |
+ +---------------+
+ 3 | | Image Top Position Unsigned
+ +- -+
+ 4 | |
+ +---------------+
+ 5 | | Image Width Unsigned
+ +- -+
+ 6 | |
+ +---------------+
+ 7 | | Image Height Unsigned
+ +- -+
+ 8 | |
+ +---------------+
+ 9 | | | | | | <Packed Fields> See below
+ +---------------+
+
+ <Packed Fields> = Local Color Table Flag 1 Bit
+ Interlace Flag 1 Bit
+ Sort Flag 1 Bit
+ Reserved 2 Bits
+ Size of Local Color Table 3 Bits
+
+ i) Image Separator - Identifies the beginning of an Image
+ Descriptor. This field contains the fixed value 0x2C.
+
+ ii) Image Left Position - Column number, in pixels, of the left edge
+ of the image, with respect to the left edge of the Logical Screen.
+ Leftmost column of the Logical Screen is 0.
+
+ iii) Image Top Position - Row number, in pixels, of the top edge of
+ the image with respect to the top edge of the Logical Screen. Top
+ row of the Logical Screen is 0.
+
+ iv) Image Width - Width of the image in pixels.
+
+ v) Image Height - Height of the image in pixels.
+
+ vi) Local Color Table Flag - Indicates the presence of a Local Color
+ Table immediately following this Image Descriptor. (This field is
+ the most significant bit of the byte.)
+
+
+ Values : 0 - Local Color Table is not present. Use
+ Global Color Table if available.
+ 1 - Local Color Table present, and to follow
+ immediately after this Image Descriptor.
+
+
+
+
+
+
+
+
+ 13
+
+
+ vii) Interlace Flag - Indicates if the image is interlaced. An image
+ is interlaced in a four-pass interlace pattern; see Appendix E for
+ details.
+
+ Values : 0 - Image is not interlaced.
+ 1 - Image is interlaced.
+
+ viii) Sort Flag - Indicates whether the Local Color Table is
+ sorted. If the flag is set, the Local Color Table is sorted, in
+ order of decreasing importance. Typically, the order would be
+ decreasing frequency, with most frequent color first. This assists
+ a decoder, with fewer available colors, in choosing the best subset
+ of colors; the decoder may use an initial segment of the table to
+ render the graphic.
+
+ Values : 0 - Not ordered.
+ 1 - Ordered by decreasing importance, most
+ important color first.
+
+ ix) Size of Local Color Table - If the Local Color Table Flag is
+ set to 1, the value in this field is used to calculate the number
+ of bytes contained in the Local Color Table. To determine that
+ actual size of the color table, raise 2 to the value of the field
+ + 1. This value should be 0 if there is no Local Color Table
+ specified. (This field is made up of the 3 least significant bits
+ of the byte.)
+
+ d. Extensions and Scope. The scope of this block is the Table-based Image
+ Data Block that follows it. This block may be modified by the Graphic
+ Control Extension.
+
+ e. Recommendation. None.
+
+
+21. Local Color Table.
+
+ a. Description. This block contains a color table, which is a sequence of
+ bytes representing red-green-blue color triplets. The Local Color Table
+ is used by the image that immediately follows. Its presence is marked by
+ the Local Color Table Flag being set to 1 in the Image Descriptor; if
+ present, the Local Color Table immediately follows the Image Descriptor
+ and contains a number of bytes equal to
+ 3x2^(Size of Local Color Table+1).
+ If present, this color table temporarily becomes the active color table
+ and the following image should be processed using it. This block is
+ OPTIONAL; at most one Local Color Table may be present per Image
+ Descriptor and its scope is the single image associated with the Image
+ Descriptor that precedes it.
+
+ b. Required Version. 87a.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 14
+
+
+ c. Syntax.
+
+ 7 6 5 4 3 2 1 0 Field Name Type
+ +===============+
+ 0 | | Red 0 Byte
+ +- -+
+ 1 | | Green 0 Byte
+ +- -+
+ 2 | | Blue 0 Byte
+ +- -+
+ 3 | | Red 1 Byte
+ +- -+
+ | | Green 1 Byte
+ +- -+
+ up | |
+ +- . . . . -+ ...
+ to | |
+ +- -+
+ | | Green 255 Byte
+ +- -+
+767 | | Blue 255 Byte
+ +===============+
+
+
+ d. Extensions and Scope. The scope of this block is the Table-based Image
+ Data Block that immediately follows it. This block cannot be modified by
+ any extension.
+
+ e. Recommendations. None.
+
+
+22. Table Based Image Data.
+
+ a. Description. The image data for a table based image consists of a
+ sequence of sub-blocks, of size at most 255 bytes each, containing an
+ index into the active color table, for each pixel in the image. Pixel
+ indices are in order of left to right and from top to bottom. Each index
+ must be within the range of the size of the active color table, starting
+ at 0. The sequence of indices is encoded using the LZW Algorithm with
+ variable-length code, as described in Appendix F
+
+ b. Required Version. 87a.
+
+ c. Syntax. The image data format is as follows:
+
+ 7 6 5 4 3 2 1 0 Field Name Type
+ +---------------+
+ | | LZW Minimum Code Size Byte
+ +---------------+
+
+ +===============+
+ | |
+ / / Image Data Data Sub-blocks
+ | |
+ +===============+
+
+
+
+
+
+
+
+
+ 15
+
+
+ i) LZW Minimum Code Size. This byte determines the initial number
+ of bits used for LZW codes in the image data, as described in
+ Appendix F.
+
+ d. Extensions and Scope. This block has no scope, it contains raster
+ data. Extensions intended to modify a Table-based image must appear
+ before the corresponding Image Descriptor.
+
+ e. Recommendations. None.
+
+
+23. Graphic Control Extension.
+
+ a. Description. The Graphic Control Extension contains parameters used
+ when processing a graphic rendering block. The scope of this extension is
+ the first graphic rendering block to follow. The extension contains only
+ one data sub-block.
+
+ This block is OPTIONAL; at most one Graphic Control Extension may precede
+ a graphic rendering block. This is the only limit to the number of
+ Graphic Control Extensions that may be contained in a Data Stream.
+
+ b. Required Version. 89a.
+
+ c. Syntax.
+
+ 7 6 5 4 3 2 1 0 Field Name Type
+ +---------------+
+ 0 | | Extension Introducer Byte
+ +---------------+
+ 1 | | Graphic Control Label Byte
+ +---------------+
+
+ +---------------+
+ 0 | | Block Size Byte
+ +---------------+
+ 1 | | | | | <Packed Fields> See below
+ +---------------+
+ 2 | | Delay Time Unsigned
+ +- -+
+ 3 | |
+ +---------------+
+ 4 | | Transparent Color Index Byte
+ +---------------+
+
+ +---------------+
+ 0 | | Block Terminator Byte
+ +---------------+
+
+
+ <Packed Fields> = Reserved 3 Bits
+ Disposal Method 3 Bits
+ User Input Flag 1 Bit
+ Transparent Color Flag 1 Bit
+
+ i) Extension Introducer - Identifies the beginning of an extension
+
+
+
+
+
+
+
+ 16
+
+
+ block. This field contains the fixed value 0x21.
+
+ ii) Graphic Control Label - Identifies the current block as a
+ Graphic Control Extension. This field contains the fixed value
+ 0xF9.
+
+ iii) Block Size - Number of bytes in the block, after the Block
+ Size field and up to but not including the Block Terminator. This
+ field contains the fixed value 4.
+
+ iv) Disposal Method - Indicates the way in which the graphic is to
+ be treated after being displayed.
+
+ Values : 0 - No disposal specified. The decoder is
+ not required to take any action.
+ 1 - Do not dispose. The graphic is to be left
+ in place.
+ 2 - Restore to background color. The area used by the
+ graphic must be restored to the background color.
+ 3 - Restore to previous. The decoder is required to
+ restore the area overwritten by the graphic with
+ what was there prior to rendering the graphic.
+ 4-7 - To be defined.
+
+ v) User Input Flag - Indicates whether or not user input is
+ expected before continuing. If the flag is set, processing will
+ continue when user input is entered. The nature of the User input
+ is determined by the application (Carriage Return, Mouse Button
+ Click, etc.).
+
+ Values : 0 - User input is not expected.
+ 1 - User input is expected.
+
+ When a Delay Time is used and the User Input Flag is set,
+ processing will continue when user input is received or when the
+ delay time expires, whichever occurs first.
+
+ vi) Transparency Flag - Indicates whether a transparency index is
+ given in the Transparent Index field. (This field is the least
+ significant bit of the byte.)
+
+ Values : 0 - Transparent Index is not given.
+ 1 - Transparent Index is given.
+
+ vii) Delay Time - If not 0, this field specifies the number of
+ hundredths (1/100) of a second to wait before continuing with the
+ processing of the Data Stream. The clock starts ticking immediately
+ after the graphic is rendered. This field may be used in
+ conjunction with the User Input Flag field.
+
+ viii) Transparency Index - The Transparency Index is such that when
+ encountered, the corresponding pixel of the display device is not
+ modified and processing goes on to the next pixel. The index is
+ present if and only if the Transparency Flag is set to 1.
+
+ ix) Block Terminator - This zero-length data block marks the end of
+
+
+
+
+
+
+
+ 17
+
+ the Graphic Control Extension.
+
+ d. Extensions and Scope. The scope of this Extension is the graphic
+ rendering block that follows it; it is possible for other extensions to
+ be present between this block and its target. This block can modify the
+ Image Descriptor Block and the Plain Text Extension.
+
+ e. Recommendations.
+
+ i) Disposal Method - The mode Restore To Previous is intended to be
+ used in small sections of the graphic; the use of this mode imposes
+ severe demands on the decoder to store the section of the graphic
+ that needs to be saved. For this reason, this mode should be used
+ sparingly. This mode is not intended to save an entire graphic or
+ large areas of a graphic; when this is the case, the encoder should
+ make every attempt to make the sections of the graphic to be
+ restored be separate graphics in the data stream. In the case where
+ a decoder is not capable of saving an area of a graphic marked as
+ Restore To Previous, it is recommended that a decoder restore to
+ the background color.
+
+ ii) User Input Flag - When the flag is set, indicating that user
+ input is expected, the decoder may sound the bell (0x07) to alert
+ the user that input is being expected. In the absence of a
+ specified Delay Time, the decoder should wait for user input
+ indefinitely. It is recommended that the encoder not set the User
+ Input Flag without a Delay Time specified.
+
+
+24. Comment Extension.
+
+ a. Description. The Comment Extension contains textual information which
+ is not part of the actual graphics in the GIF Data Stream. It is suitable
+ for including comments about the graphics, credits, descriptions or any
+ other type of non-control and non-graphic data. The Comment Extension
+ may be ignored by the decoder, or it may be saved for later processing;
+ under no circumstances should a Comment Extension disrupt or interfere
+ with the processing of the Data Stream.
+
+ This block is OPTIONAL; any number of them may appear in the Data Stream.
+
+ b. Required Version. 89a.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 18
+
+
+ c. Syntax.
+
+ 7 6 5 4 3 2 1 0 Field Name Type
+ +---------------+
+ 0 | | Extension Introducer Byte
+ +---------------+
+ 1 | | Comment Label Byte
+ +---------------+
+
+ +===============+
+ | |
+ N | | Comment Data Data Sub-blocks
+ | |
+ +===============+
+
+ +---------------+
+ 0 | | Block Terminator Byte
+ +---------------+
+
+ i) Extension Introducer - Identifies the beginning of an extension
+ block. This field contains the fixed value 0x21.
+
+ ii) Comment Label - Identifies the block as a Comment Extension.
+ This field contains the fixed value 0xFE.
+
+ iii) Comment Data - Sequence of sub-blocks, each of size at most
+ 255 bytes and at least 1 byte, with the size in a byte preceding
+ the data. The end of the sequence is marked by the Block
+ Terminator.
+
+ iv) Block Terminator - This zero-length data block marks the end of
+ the Comment Extension.
+
+ d. Extensions and Scope. This block does not have scope. This block
+ cannot be modified by any extension.
+
+ e. Recommendations.
+
+ i) Data - This block is intended for humans. It should contain
+ text using the 7-bit ASCII character set. This block should
+ not be used to store control information for custom processing.
+
+ ii) Position - This block may appear at any point in the Data
+ Stream at which a block can begin; however, it is recommended that
+ Comment Extensions do not interfere with Control or Data blocks;
+ they should be located at the beginning or at the end of the Data
+ Stream to the extent possible.
+
+
+25. Plain Text Extension.
+
+ a. Description. The Plain Text Extension contains textual data and the
+ parameters necessary to render that data as a graphic, in a simple form.
+ The textual data will be encoded with the 7-bit printable ASCII
+ characters. Text data are rendered using a grid of character cells
+
+
+
+
+
+
+
+
+ 19
+
+
+ defined by the parameters in the block fields. Each character is rendered
+ in an individual cell. The textual data in this block is to be rendered
+ as mono-spaced characters, one character per cell, with a best fitting
+ font and size. For further information, see the section on
+ Recommendations below. The data characters are taken sequentially from
+ the data portion of the block and rendered within a cell, starting with
+ the upper left cell in the grid and proceeding from left to right and
+ from top to bottom. Text data is rendered until the end of data is
+ reached or the character grid is filled. The Character Grid contains an
+ integral number of cells; in the case that the cell dimensions do not
+ allow for an integral number, fractional cells must be discarded; an
+ encoder must be careful to specify the grid dimensions accurately so that
+ this does not happen. This block requires a Global Color Table to be
+ available; the colors used by this block reference the Global Color Table
+ in the Stream if there is one, or the Global Color Table from a previous
+ Stream, if one was saved. This block is a graphic rendering block,
+ therefore it may be modified by a Graphic Control Extension. This block
+ is OPTIONAL; any number of them may appear in the Data Stream.
+
+ b. Required Version. 89a.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 20
+
+
+ c. Syntax.
+
+ 7 6 5 4 3 2 1 0 Field Name Type
+ +---------------+
+ 0 | | Extension Introducer Byte
+ +---------------+
+ 1 | | Plain Text Label Byte
+ +---------------+
+
+ +---------------+
+ 0 | | Block Size Byte
+ +---------------+
+ 1 | | Text Grid Left Position Unsigned
+ +- -+
+ 2 | |
+ +---------------+
+ 3 | | Text Grid Top Position Unsigned
+ +- -+
+ 4 | |
+ +---------------+
+ 5 | | Text Grid Width Unsigned
+ +- -+
+ 6 | |
+ +---------------+
+ 7 | | Text Grid Height Unsigned
+ +- -+
+ 8 | |
+ +---------------+
+ 9 | | Character Cell Width Byte
+ +---------------+
+ 10 | | Character Cell Height Byte
+ +---------------+
+ 11 | | Text Foreground Color Index Byte
+ +---------------+
+ 12 | | Text Background Color Index Byte
+ +---------------+
+
+ +===============+
+ | |
+ N | | Plain Text Data Data Sub-blocks
+ | |
+ +===============+
+
+ +---------------+
+ 0 | | Block Terminator Byte
+ +---------------+
+
+ i) Extension Introducer - Identifies the beginning of an extension
+ block. This field contains the fixed value 0x21.
+
+ ii) Plain Text Label - Identifies the current block as a Plain Text
+ Extension. This field contains the fixed value 0x01.
+
+ iii) Block Size - Number of bytes in the extension, after the Block
+ Size field and up to but not including the beginning of the data
+ portion. This field contains the fixed value 12.
+
+
+
+
+
+
+
+ 21
+
+
+ iv) Text Grid Left Position - Column number, in pixels, of the left
+ edge of the text grid, with respect to the left edge of the Logical
+ Screen.
+
+ v) Text Grid Top Position - Row number, in pixels, of the top edge
+ of the text grid, with respect to the top edge of the Logical
+ Screen.
+
+ vi) Image Grid Width - Width of the text grid in pixels.
+
+ vii) Image Grid Height - Height of the text grid in pixels.
+
+ viii) Character Cell Width - Width, in pixels, of each cell in the
+ grid.
+
+ ix) Character Cell Height - Height, in pixels, of each cell in the
+ grid.
+
+ x) Text Foreground Color Index - Index into the Global Color Table
+ to be used to render the text foreground.
+
+ xi) Text Background Color Index - Index into the Global Color Table
+ to be used to render the text background.
+
+ xii) Plain Text Data - Sequence of sub-blocks, each of size at most
+ 255 bytes and at least 1 byte, with the size in a byte preceding
+ the data. The end of the sequence is marked by the Block
+ Terminator.
+
+ xiii) Block Terminator - This zero-length data block marks the end
+ of the Plain Text Data Blocks.
+
+ d. Extensions and Scope. The scope of this block is the Plain Text Data
+ Block contained in it. This block may be modified by the Graphic Control
+ Extension.
+
+ e. Recommendations. The data in the Plain Text Extension is assumed to be
+ preformatted. The selection of font and size is left to the discretion of
+ the decoder. If characters less than 0x20 or greater than 0xf7 are
+ encountered, it is recommended that the decoder display a Space character
+ (0x20). The encoder should use grid and cell dimensions such that an
+ integral number of cells fit in the grid both horizontally as well as
+ vertically. For broadest compatibility, character cell dimensions should
+ be around 8x8 or 8x16 (width x height); consider an image for unusual
+ sized text.
+
+
+26. Application Extension.
+
+ a. Description. The Application Extension contains application-specific
+ information; it conforms with the extension block syntax, as described
+ below, and its block label is 0xFF.
+
+ b. Required Version. 89a.
+
+
+
+
+
+
+
+
+
+ 22
+
+
+ c. Syntax.
+
+ 7 6 5 4 3 2 1 0 Field Name Type
+ +---------------+
+ 0 | | Extension Introducer Byte
+ +---------------+
+ 1 | | Extension Label Byte
+ +---------------+
+
+ +---------------+
+ 0 | | Block Size Byte
+ +---------------+
+ 1 | |
+ +- -+
+ 2 | |
+ +- -+
+ 3 | | Application Identifier 8 Bytes
+ +- -+
+ 4 | |
+ +- -+
+ 5 | |
+ +- -+
+ 6 | |
+ +- -+
+ 7 | |
+ +- -+
+ 8 | |
+ +---------------+
+ 9 | |
+ +- -+
+ 10 | | Appl. Authentication Code 3 Bytes
+ +- -+
+ 11 | |
+ +---------------+
+
+ +===============+
+ | |
+ | | Application Data Data Sub-blocks
+ | |
+ | |
+ +===============+
+
+ +---------------+
+ 0 | | Block Terminator Byte
+ +---------------+
+
+ i) Extension Introducer - Defines this block as an extension. This
+ field contains the fixed value 0x21.
+
+ ii) Application Extension Label - Identifies the block as an
+ Application Extension. This field contains the fixed value 0xFF.
+
+ iii) Block Size - Number of bytes in this extension block,
+ following the Block Size field, up to but not including the
+ beginning of the Application Data. This field contains the fixed
+ value 11.
+
+
+
+
+
+
+
+ 23
+
+
+ iv) Application Identifier - Sequence of eight printable ASCII
+ characters used to identify the application owning the Application
+ Extension.
+
+ v) Application Authentication Code - Sequence of three bytes used
+ to authenticate the Application Identifier. An Application program
+ may use an algorithm to compute a binary code that uniquely
+ identifies it as the application owning the Application Extension.
+
+
+ d. Extensions and Scope. This block does not have scope. This block
+ cannot be modified by any extension.
+
+ e. Recommendation. None.
+
+
+27. Trailer.
+
+ a. Description. This block is a single-field block indicating the end of
+ the GIF Data Stream. It contains the fixed value 0x3B.
+
+ b. Required Version. 87a.
+
+ c. Syntax.
+
+ 7 6 5 4 3 2 1 0 Field Name Type
+ +---------------+
+ 0 | | GIF Trailer Byte
+ +---------------+
+
+ d. Extensions and Scope. This block does not have scope, it terminates
+ the GIF Data Stream. This block may not be modified by any extension.
+
+ e. Recommendations. None.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 24
+
+
+Appendix
+A. Quick Reference Table.
+
+Block Name Required Label Ext. Vers.
+Application Extension Opt. (*) 0xFF (255) yes 89a
+Comment Extension Opt. (*) 0xFE (254) yes 89a
+Global Color Table Opt. (1) none no 87a
+Graphic Control Extension Opt. (*) 0xF9 (249) yes 89a
+Header Req. (1) none no N/A
+Image Descriptor Opt. (*) 0x2C (044) no 87a (89a)
+Local Color Table Opt. (*) none no 87a
+Logical Screen Descriptor Req. (1) none no 87a (89a)
+Plain Text Extension Opt. (*) 0x01 (001) yes 89a
+Trailer Req. (1) 0x3B (059) no 87a
+
+Unlabeled Blocks
+Header Req. (1) none no N/A
+Logical Screen Descriptor Req. (1) none no 87a (89a)
+Global Color Table Opt. (1) none no 87a
+Local Color Table Opt. (*) none no 87a
+
+Graphic-Rendering Blocks
+Plain Text Extension Opt. (*) 0x01 (001) yes 89a
+Image Descriptor Opt. (*) 0x2C (044) no 87a (89a)
+
+Control Blocks
+Graphic Control Extension Opt. (*) 0xF9 (249) yes 89a
+
+Special Purpose Blocks
+Trailer Req. (1) 0x3B (059) no 87a
+Comment Extension Opt. (*) 0xFE (254) yes 89a
+Application Extension Opt. (*) 0xFF (255) yes 89a
+
+legend: (1) if present, at most one occurrence
+ (*) zero or more occurrences
+ (+) one or more occurrences
+
+Notes : The Header is not subject to Version Numbers.
+(89a) The Logical Screen Descriptor and the Image Descriptor retained their
+syntax from version 87a to version 89a, but some fields reserved under version
+87a are used under version 89a.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 25
+
+
+Appendix
+B. GIF Grammar.
+
+A Grammar is a form of notation to represent the sequence in which certain
+objects form larger objects. A grammar is also used to represent the number of
+objects that can occur at a given position. The grammar given here represents
+the sequence of blocks that form the GIF Data Stream. A grammar is given by
+listing its rules. Each rule consists of the left-hand side, followed by some
+form of equals sign, followed by the right-hand side. In a rule, the
+right-hand side describes how the left-hand side is defined. The right-hand
+side consists of a sequence of entities, with the possible presence of special
+symbols. The following legend defines the symbols used in this grammar for GIF.
+
+Legend: <> grammar word
+ ::= defines symbol
+ * zero or more occurrences
+ + one or more occurrences
+ | alternate element
+ [] optional element
+
+Example:
+
+<GIF Data Stream> ::= Header <Logical Screen> <Data>* Trailer
+
+This rule defines the entity <GIF Data Stream> as follows. It must begin with a
+Header. The Header is followed by an entity called Logical Screen, which is
+defined below by another rule. The Logical Screen is followed by the entity
+Data, which is also defined below by another rule. Finally, the entity Data is
+followed by the Trailer. Since there is no rule defining the Header or the
+Trailer, this means that these blocks are defined in the document. The entity
+Data has a special symbol (*) following it which means that, at this position,
+the entity Data may be repeated any number of times, including 0 times. For
+further reading on this subject, refer to a standard text on Programming
+Languages.
+
+
+The Grammar.
+
+<GIF Data Stream> ::= Header <Logical Screen> <Data>* Trailer
+
+<Logical Screen> ::= Logical Screen Descriptor [Global Color Table]
+
+<Data> ::= <Graphic Block> |
+ <Special-Purpose Block>
+
+<Graphic Block> ::= [Graphic Control Extension] <Graphic-Rendering Block>
+
+<Graphic-Rendering Block> ::= <Table-Based Image> |
+ Plain Text Extension
+
+<Table-Based Image> ::= Image Descriptor [Local Color Table] Image Data
+
+<Special-Purpose Block> ::= Application Extension |
+ Comment Extension
+
+
+
+
+
+
+
+
+
+ 26
+
+
+NOTE : The grammar indicates that it is possible for a GIF Data Stream to
+contain the Header, the Logical Screen Descriptor, a Global Color Table and the
+GIF Trailer. This special case is used to load a GIF decoder with a Global
+Color Table, in preparation for subsequent Data Streams without color tables at
+all.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 27
+
+
+Appendix
+C. Glossary.
+
+Active Color Table - Color table used to render the next graphic. If the next
+graphic is an image which has a Local Color Table associated with it, the
+active color table becomes the Local Color Table associated with that image.
+If the next graphic is an image without a Local Color Table, or a Plain Text
+Extension, the active color table is the Global Color Table associated with the
+Data Stream, if there is one; if there is no Global Color Table in the Data
+Stream, the active color table is a color table saved from a previous Data
+Stream, or one supplied by the decoder.
+
+Block - Collection of bytes forming a protocol unit. In general, the term
+includes labeled and unlabeled blocks, as well as Extensions.
+
+Data Stream - The GIF Data Stream is composed of blocks and sub-blocks
+representing images and graphics, together with control information to render
+them on a display device. All control and data blocks in the Data Stream must
+follow the Header and must precede the Trailer.
+
+Decoder - A program capable of processing a GIF Data Stream to render the
+images and graphics contained in it.
+
+Encoder - A program capable of capturing and formatting image and graphic
+raster data, following the definitions of the Graphics Interchange Format.
+
+Extension - A protocol block labeled by the Extension Introducer 0x21.
+
+Extension Introducer - Label (0x21) defining an Extension.
+
+Graphic - Data which can be rendered on the screen by virtue of some algorithm.
+The term graphic is more general than the term image; in addition to images,
+the term graphic also includes data such as text, which is rendered using
+character bit-maps.
+
+Image - Data representing a picture or a drawing; an image is represented by an
+array of pixels called the raster of the image.
+
+Raster - Array of pixel values representing an image.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 28
+
+
+Appendix
+D. Conventions.
+
+Animation - The Graphics Interchange Format is not intended as a platform for
+animation, even though it can be done in a limited way.
+
+Byte Ordering - Unless otherwise stated, multi-byte numeric fields are ordered
+with the Least Significant Byte first.
+
+Color Indices - Color indices always refer to the active color table, either
+the Global Color Table or the Local Color Table.
+
+Color Order - Unless otherwise stated, all triple-component RGB color values
+are specified in Red-Green-Blue order.
+
+Color Tables - Both color tables, the Global and the Local, are optional; if
+present, the Global Color Table is to be used with every image in the Data
+Stream for which a Local Color Table is not given; if present, a Local Color
+Table overrides the Global Color Table. However, if neither color table is
+present, the application program is free to use an arbitrary color table. If
+the graphics in several Data Streams are related and all use the same color
+table, an encoder could place the color table as the Global Color Table in the
+first Data Stream and leave subsequent Data Streams without a Global Color
+Table or any Local Color Tables; in this way, the overhead for the table is
+eliminated. It is recommended that the decoder save the previous Global Color
+Table to be used with the Data Stream that follows, in case it does not contain
+either a Global Color Table or any Local Color Tables. In general, this allows
+the application program to use past color tables, significantly reducing
+transmission overhead.
+
+Extension Blocks - Extensions are defined using the Extension Introducer code
+to mark the beginning of the block, followed by a block label, identifying the
+type of extension. Extension Codes are numbers in the range from 0x00 to 0xFF,
+inclusive. Special purpose extensions are transparent to the decoder and may be
+omitted when transmitting the Data Stream on-line. The GIF capabilities
+dialogue makes the provision for the receiver to request the transmission of
+all blocks; the default state in this regard is no transmission of Special
+purpose blocks.
+
+Reserved Fields - All Reserved Fields are expected to have each bit set to zero
+(off).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 29
+
+
+Appendix
+E. Interlaced Images.
+
+The rows of an Interlaced images are arranged in the following order:
+
+ Group 1 : Every 8th. row, starting with row 0. (Pass 1)
+ Group 2 : Every 8th. row, starting with row 4. (Pass 2)
+ Group 3 : Every 4th. row, starting with row 2. (Pass 3)
+ Group 4 : Every 2nd. row, starting with row 1. (Pass 4)
+
+The Following example illustrates how the rows of an interlaced image are
+ordered.
+
+ Row Number Interlace Pass
+
+ 0 ----------------------------------------- 1
+ 1 ----------------------------------------- 4
+ 2 ----------------------------------------- 3
+ 3 ----------------------------------------- 4
+ 4 ----------------------------------------- 2
+ 5 ----------------------------------------- 4
+ 6 ----------------------------------------- 3
+ 7 ----------------------------------------- 4
+ 8 ----------------------------------------- 1
+ 9 ----------------------------------------- 4
+ 10 ----------------------------------------- 3
+ 11 ----------------------------------------- 4
+ 12 ----------------------------------------- 2
+ 13 ----------------------------------------- 4
+ 14 ----------------------------------------- 3
+ 15 ----------------------------------------- 4
+ 16 ----------------------------------------- 1
+ 17 ----------------------------------------- 4
+ 18 ----------------------------------------- 3
+ 19 ----------------------------------------- 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 30
+
+
+Appendix
+F. Variable-Length-Code LZW Compression.
+
+The Variable-Length-Code LZW Compression is a variation of the Lempel-Ziv
+Compression algorithm in which variable-length codes are used to replace
+patterns detected in the original data. The algorithm uses a code or
+translation table constructed from the patterns encountered in the original
+data; each new pattern is entered into the table and its index is used to
+replace it in the compressed stream.
+
+The compressor takes the data from the input stream and builds a code or
+translation table with the patterns as it encounters them; each new pattern is
+entered into the code table and its index is added to the output stream; when a
+pattern is encountered which had been detected since the last code table
+refresh, its index from the code table is put on the output stream, thus
+achieving the data compression. The expander takes input from the compressed
+data stream and builds the code or translation table from it; as the compressed
+data stream is processed, codes are used to index into the code table and the
+corresponding data is put on the decompressed output stream, thus achieving
+data decompression. The details of the algorithm are explained below. The
+Variable-Length-Code aspect of the algorithm is based on an initial code size
+(LZW-initial code size), which specifies the initial number of bits used for
+the compression codes. When the number of patterns detected by the compressor
+in the input stream exceeds the number of patterns encodable with the current
+number of bits, the number of bits per LZW code is increased by one.
+
+The Raster Data stream that represents the actual output image can be
+represented as:
+
+ 7 6 5 4 3 2 1 0
+ +---------------+
+ | LZW code size |
+ +---------------+
+
+ +---------------+ ----+
+ | block size | |
+ +---------------+ |
+ | | +-- Repeated as many
+ | data bytes | | times as necessary.
+ | | |
+ +---------------+ ----+
+
+ . . . . . . ------- The code that terminates the LZW
+ compressed data must appear before
+ Block Terminator.
+ +---------------+
+ |0 0 0 0 0 0 0 0| Block Terminator
+ +---------------+
+
+The conversion of the image from a series of pixel values to a transmitted or
+stored character stream involves several steps. In brief these steps are:
+
+1. Establish the Code Size - Define the number of bits needed to represent the
+actual data.
+
+2. Compress the Data - Compress the series of image pixels to a series of
+
+
+
+
+
+
+
+ 31
+
+
+compression codes.
+
+3. Build a Series of Bytes - Take the set of compression codes and convert to a
+string of 8-bit bytes.
+
+4. Package the Bytes - Package sets of bytes into blocks preceded by character
+counts and output.
+
+ESTABLISH CODE SIZE
+
+The first byte of the Compressed Data stream is a value indicating the minimum
+number of bits required to represent the set of actual pixel values. Normally
+this will be the same as the number of color bits. Because of some algorithmic
+constraints however, black & white images which have one color bit must be
+indicated as having a code size of 2.
+This code size value also implies that the compression codes must start out one
+bit longer.
+
+COMPRESSION
+
+The LZW algorithm converts a series of data values into a series of codes which
+may be raw values or a code designating a series of values. Using text
+characters as an analogy, the output code consists of a character or a code
+representing a string of characters.
+
+The LZW algorithm used in GIF matches algorithmically with the standard LZW
+algorithm with the following differences:
+
+1. A special Clear code is defined which resets all compression/decompression
+parameters and tables to a start-up state. The value of this code is 2**<code
+size>. For example if the code size indicated was 4 (image was 4 bits/pixel)
+the Clear code value would be 16 (10000 binary). The Clear code can appear at
+any point in the image data stream and therefore requires the LZW algorithm to
+process succeeding codes as if a new data stream was starting. Encoders should
+output a Clear code as the first code of each image data stream.
+
+2. An End of Information code is defined that explicitly indicates the end of
+the image data stream. LZW processing terminates when this code is encountered.
+It must be the last code output by the encoder for an image. The value of this
+code is <Clear code>+1.
+
+3. The first available compression code value is <Clear code>+2.
+
+4. The output codes are of variable length, starting at <code size>+1 bits per
+code, up to 12 bits per code. This defines a maximum code value of 4095
+(0xFFF). Whenever the LZW code value would exceed the current code length, the
+code length is increased by one. The packing/unpacking of these codes must then
+be altered to reflect the new code length.
+
+BUILD 8-BIT BYTES
+
+Because the LZW compression used for GIF creates a series of variable length
+codes, of between 3 and 12 bits each, these codes must be reformed into a
+series of 8-bit bytes that will be the characters actually stored or
+transmitted. This provides additional compression of the image. The codes are
+formed into a stream of bits as if they were packed right to left and then
+
+
+
+
+
+
+
+ 32
+
+
+picked off 8 bits at a time to be output.
+
+Assuming a character array of 8 bits per character and using 5 bit codes to be
+packed, an example layout would be similar to:
+
+
+ +---------------+
+ 0 | | bbbaaaaa
+ +---------------+
+ 1 | | dcccccbb
+ +---------------+
+ 2 | | eeeedddd
+ +---------------+
+ 3 | | ggfffffe
+ +---------------+
+ 4 | | hhhhhggg
+ +---------------+
+ . . .
+ +---------------+
+ N | |
+ +---------------+
+
+
+Note that the physical packing arrangement will change as the number of bits
+per compression code change but the concept remains the same.
+
+PACKAGE THE BYTES
+
+Once the bytes have been created, they are grouped into blocks for output by
+preceding each block of 0 to 255 bytes with a character count byte. A block
+with a zero byte count terminates the Raster Data stream for a given image.
+These blocks are what are actually output for the GIF image. This block format
+has the side effect of allowing a decoding program the ability to read past the
+actual image data if necessary by reading block counts and then skipping over
+the data.
+
+
+
+FURTHER READING
+
+[1] Ziv, J. and Lempel, A. : "A Universal Algorithm for Sequential Data
+Compression", IEEE Transactions on Information Theory, May 1977.
+[2] Welch, T. : "A Technique for High-Performance Data Compression", Computer,
+June 1984.
+[3] Nelson, M.R. : "LZW Data Compression", Dr. Dobb's Journal, October 1989.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 33
+
+
+Appendix
+G. On-line Capabilities Dialogue.
+
+NOTE : This section is currently (10 July 1990) under revision; the information
+provided here should be used as general guidelines. Code written based on this
+information should be designed in a flexible way to accommodate any changes
+resulting from the revisions.
+
+The following sequences are defined for use in mediating control between a GIF
+sender and GIF receiver over an interactive communications line. These
+sequences do not apply to applications that involve downloading of static GIF
+files and are not considered part of a GIF file.
+
+GIF CAPABILITIES ENQUIRY
+
+The GIF Capabilities Enquiry sequence is issued from a host and requests an
+interactive GIF decoder to return a response message that defines the graphics
+parameters for the decoder. This involves returning information about available
+screen sizes, number of bits/color supported and the amount of color detail
+supported. The escape sequence for the GIF Capabilities Enquiry is defined as:
+
+ESC[>0g 0x1B 0x5B 0x3E 0x30 0x67
+
+GIF CAPABILITIES RESPONSE
+
+The GIF Capabilities Response message is returned by an interactive GIF decoder
+and defines the decoder's display capabilities for all graphics modes that are
+supported by the software. Note that this can also include graphics printers as
+well as a monitor screen. The general format of this message is:
+
+#version;protocol{;dev, width, height, color-bits, color-res}...<CR>
+
+
+'#' GIF Capabilities Response identifier character.
+version GIF format version number; initially '87a'.
+protocol='0' No end-to-end protocol supported by decoder Transfer as direct
+ 8-bit data stream.
+protocol='1' Can use CIS B+ error correction protocol to transfer GIF data
+ interactively from the host directly to the display.
+dev = '0' Screen parameter set follows.
+dev = '1' Printer parameter set follows.
+width Maximum supported display width in pixels.
+height Maximum supported display height in pixels.
+color-bits Number of bits per pixel supported. The number of supported
+ colors is therefore 2**color-bits.
+color-res Number of bits per color component supported in the hardware
+ color palette. If color-res is '0' then no hardware palette
+ table is available.
+
+Note that all values in the GIF Capabilities Response are returned as ASCII
+decimal numbers and the message is terminated by a Carriage Return character.
+
+The following GIF Capabilities Response message describes three standard IBM PC
+Enhanced Graphics Adapter configurations with no printer; the GIF data stream
+
+
+
+
+
+
+
+
+
+ 34
+
+
+can be processed within an error correcting protocol:
+
+#87a;1;0,320,200,4,0;0,640,200,2,2;0,640,350,4,2<CR>
+
+ENTER GIF GRAPHICS MODE
+
+Two sequences are currently defined to invoke an interactive GIF decoder into
+action. The only difference between them is that different output media are
+selected. These sequences are:
+
+ESC[>1g Display GIF image on screen
+
+ 0x1B 0x5B 0x3E 0x31 0x67
+
+ESC[>2g Display image directly to an attached graphics printer. The image may
+optionally be displayed on the screen as well.
+
+ 0x1B 0x5B 0x3E 0x32 0x67
+
+Note that the 'g' character terminating each sequence is in lowercase.
+
+INTERACTIVE ENVIRONMENT
+
+The assumed environment for the transmission of GIF image data from an
+interactive application is a full 8-bit data stream from host to micro. All
+256 character codes must be transferrable. The establishing of an 8-bit data
+path for communications will normally be taken care of by the host application
+programs. It is however up to the receiving communications programs supporting
+GIF to be able to receive and pass on all 256 8-bit codes to the GIF decoder
+software.
+
+
diff --git a/giflib-4.1.6/doc/gif_lib.html b/giflib-4.1.6/doc/gif_lib.html
new file mode 100644
index 0000000..df2ada4
--- /dev/null
+++ b/giflib-4.1.6/doc/gif_lib.html
@@ -0,0 +1,713 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gif_lib</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>The GIFLIB Library</H1></CENTER>
+
+<CENTER><BLOCKQUOTE>
+Gershon Elber, May 1991<BR>
+Eric S. Raymond, Sep 1992<BR>
+Toshio Kuratomi, May 2004<br>
+</BLOCKQUOTE></CENTER>
+
+The Graphics Interchange Format(c) is the Copyright property of
+CompuServe Incorporated. GIF(sm) is a Service Mark property of CompuServe
+Incorporated.<P>
+
+Gershon wrote: "This library was written because I couldn't find
+anything similar and I wanted one. I was inspired by the RLE Utah tool kit,
+which I hoped to port to an IBM PC, but found it to be too machine specific,
+and its compression ratio too low. I compromised on the GIF format, but I am
+not sure how long 8 bits per pixel will be enough."<P>
+
+This document explains the GIF library code in directory `lib'. The
+code is collected into libgif.a which is used in all the utilities in
+`util'. It can be used in any application needs to read/write the GIF
+file format. This document does </em>not</em> explain the GIF file
+format and assumes you know it, at least to the level of the GIF file
+structure.<P>
+
+When a GIF file is opened, a GIF file descriptor is created which
+is a pointer to GifFileType structure as follows:<P>
+
+<pre><code>
+typedef struct GifFileType {
+ int SWidth, SHeight, /* Screen dimensions. */
+ SColorResolution, /* How many colors can we generate? */
+ SBackGroundColor; /* I hope you understand this one... */
+ ColorMapObject *SColorMap; /* NULL if not exists. */
+ int ImageCount; /* Number of current image */
+ GifImageDesc Image; /* Block describing current image */
+ struct SavedImage *SavedImages; /* Use this to accumulate file state */
+ VoidPtr Private; /* The regular user should not mess with this one! */
+} GifFileType;
+</code></pre>
+
+This structure was copied from gif_lib.h - the header file for the GIF
+library. Any application program that uses the libgif.a library should
+include it. Members beginning with S refer to GIF Screen; others hold
+properties of the current image (a GIF file may have more than one image)
+or point to allocated store used by various routines.<P>
+
+The user almost never writes into this structure (exception: it may
+occasionally useful to alter things in the SavedImages array), but can read
+any of these items at any time it is valid (image information is invalid
+until first image was read/write).<P>
+
+As the library needs to keep its own internal data, a Private pointer
+to hidden data is included. Applications should ignore this item.<P>
+
+The library has no static data. This means that it is fully reentrant
+and any number of GIF files (up to memory limits) can be opened for
+read/write. Instead of the static data, internal structure pointed by the
+Private pointer is used.<P>
+
+The library allocates its own memory dynamically, on opening of files,
+and releases that once closed. The user is never required to allocate
+any memory for any of the functions of this library nor to free them
+directly.<P>
+
+In order to reduce disk access, the file buffer is increased to
+FILE_BUFFER_SIZE (defined in gif_lib.h). The library was compiled in large
+model on the PC as the memory allocated per file is quite big: about 17k for
+decoding (DGIF_LIB.C), and 32k for encoding (EGIF_LIB.C), excluding the
+FILE_BUFFER_SIZE.<P>
+
+Here is a module summary:<P>
+
+<DL>
+<DT>egif_lib.c <DD> Encoding routines, all prefixed with E.<P>
+
+<DT>dgif_lib.c <DD> Decoding routines, all prefixed with D.<P>
+
+<DT>dev2gif.c <DD> Routines to convert specific device buffers into GIF files.<P>
+
+<DT>gifalloc.c <DD> Routines for colormap handling and GIF record allocation.<P>
+
+<DT>gif_font.c <DD> The 8x8 font table for the GIF utility font.<P>
+
+<DT>gif_err.c <DD> Error handler for the library.<P>
+</DL>
+
+The library includes a sixth file of hash-function code which is accessed
+internally only.<P>
+
+<P>Most of the routines return GIF_ERROR (see gif_lib.h) if something
+went wrong, GIF_OK otherwise. After an error return, the code in the
+gif_err.c module can be used to do something about it.<P>
+
+In addition, a module to parse command line arguments is supplied.
+This module is called getarg.c and its headers are in getarg.h. See the header
+of getarg.c for details on its usage.<P>
+
+<H1>Decoding (dgif_lib.c)</H1>
+
+The following functions are used to set up input from a GIF:<P>
+
+<pre><code>
+GifFileType *DGifOpenFileName(char *GifFileName)
+</code></pre>
+
+Open a new GIF file using the given GifFileName, and read its Screen
+information.
+</code></pre>
+
+If any error occurs, NULL is returned and the error handler can be
+used to get the exact error (see gif_err.c).
+</code></pre>
+
+The file is opened in binary mode, and its buffer size is set to
+FILE_BUFFER_SIZE bytes.
+</code></pre>
+
+<pre><code>
+GifFileType *DGifOpenFileHandle(int GifFileHandle)
+</code></pre>
+
+Open a new GIF file using the given GifFileHandle, and read its Screen
+information.<P>
+
+If any error occurs, NULL is returned and the error handler can be
+used to get the exact error (see gif_err.c).<P>
+
+The file is opened in binary mode, and its buffer size is set to
+FILE_BUFFER_SIZE bytes.<P>
+
+Once you have acquired a handle on a GIF, there are two ways to read it in.
+The high-level function
+
+<pre><code>
+int DGifSlurp(GifFileType)
+</code></pre>
+
+reads the rest of a complete (possibly multi-image) GIF file from the
+indicated file handle into in-core allocated structures. It returns
+GIF_OK on success, GIF_ERROR on failure.<P>
+
+Once you have done this, all image, raster, and extension-block data in the
+GIF is accessable in the SavedImages member (see the structures in fif_lib.h).
+When you have modified the image to taste, write it out with EGifSpew().<P>
+
+If you are handling large images on a memory-limited machine, you may need
+to use the following functions for sequential read.<P>
+
+<pre><code>
+int DGifGetScreenDesc(GifFileType *GifFile)
+</code></pre>
+
+Reads the screen information into the GifFile structure. Note this
+routine is automatically called once a file is opened, and therefore
+usually need not be called explicitly.<P>
+
+Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
+
+<pre><code>
+int DGifGetRecordType(GifFileType *GifFile, GifRecordType *GifType)
+</code></pre>
+
+As the GIF file can have different records in arbitrary order, this
+routine should be called once the file was open to detect the next
+record type, and act upon it. It can return these types in GifType:<P>
+
+<DL>
+<DT> 1. UndefinedRecordType <DD> something is wrong!<P>
+
+<DT> 2. ScreenDescRecordType <DD> screen information. As the screen info
+ is automatically read in when the file is open, this should
+ not happen.<P>
+
+<DT> 3. ImageDescRecordType <DD> next record is an image descriptor.<P>
+
+<DT> 4. ExtensionRecordType <DD> next record is extension block.<P>
+
+<DT> 5. TerminateRecordType <DD> last record reached, can close the file.<P>
+</DL>
+The first two types can usually be ignored. The function
+returns GIF_ERROR if something went wrong, GIF_OK otherwise.
+
+<pre><code>
+int DGifGetImageDesc(GifFileType *GifFile)
+</code></pre>
+
+Reads image information into the GifFile structure.
+Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
+
+<pre><code><A NAME="DGifGetLine">
+int DGifGetLine(GifFileType *GifFile, PixelType *GifLine, int GifLineLen)
+</A></code></pre>
+
+Load a block of pixels from the GIF file. The line can be
+of any length. More than that, this routine may be interleaved with
+DGifGetPixel until all pixels have been read.<P>
+
+Returns GIF_ERROR if something went wrong, GIF_OK otherwise.</P>
+
+<pre><code>
+int DGifGetPixel(GifFileType *GifFile, PixelType GifPixel)
+</code></pre>
+
+Loads one pixel from the GIF file. This routine may be interleaved
+with <a href="#DGifGetLine">DGifGetLine</a>, until all pixels are
+read. Because of the overhead per each call, use of this routine is
+not recommended.<P>
+
+Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
+
+<pre><code>
+int DGifGetComment(GifFileType *GifFile, char *GifComment)
+</code></pre>
+
+Load a comment from the GIF file. Because DGifGetRecordType will
+only tell if the record is of type extension, this routine should be
+called iff it is known %100 that is must be a comment.<P>
+
+For the definition of a comment, see <a
+href="#EGifPutComment">EGifPutComment</a>. Returns GIF_ERROR if
+something went wrong, GIF_OK otherwise.<P>
+
+<pre><code>
+int DGifGetExtension(
+ GifFileType *GifFile,
+ int *GifExtCode,
+ ByteType **GifExtension)
+</code></pre>
+
+Loads an extension block from the GIF file. Extension blocks
+are optional in GIF files. This routine should be followed by
+<a href="#DGifGetExtensionNext">DGifGetExtensionNext</a>.<P>
+
+Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
+
+<pre><code><A NAME="DGifGetExtensionNext">
+int DGifGetExtensionNext(GifFileType *GifFile, ByteType **GifExtension)
+</A> </code></pre>
+
+As extensions may contain more than one block, use this routine to
+continue after DGifGetExtension, until *GifExtension is NULL.<P>
+
+Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
+
+
+<pre><code>
+int DGifGetCode(
+ GifFileType *GifFile,
+ int *GifCodeSize, ByteType **GifCodeBlock)
+</code></pre>
+
+It sometimes may be desired to read the compressed code as is
+without decoding it. This routine does exactly that (with
+DGifGetCodeNext), and can be used instead of DGifGetLine.<P>
+
+This compressed code information can be written out using the
+EGifPutCode/EGifPutCodeNext sequence (see gifpos.c for example).
+Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
+
+<pre><code>
+int DGifGetCodeNext(GifFileType *GifFile, ByteType **GifCodeBlock)
+</code></pre>
+
+See DGifGetCode above.<P>
+
+<pre><code>
+int DGifGetLZCodes(GifFileType *GifFile, int *GifCode)
+</code></pre>
+
+This routine can be called instead of DGifGetLine/DGifGetPixel or
+DGifGetCode/DGifGetCodeNext to get the 12 bits LZ codes of the images.
+It will be used mainly for debugging purposes (see GifText.c for
+example).<P>
+
+Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
+
+<pre><code>
+int DGifCloseFile(GifFileType *GifFile)
+</code></pre>
+
+Close GIF file and free all memory allocated for it. GifFile should
+not be used after this routine has been called.<P>
+
+Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
+
+<H1>Encoding (egif_lib.c)</H1>
+
+There are two ways to write out a GIF. The high-level function<P>
+
+<pre>
+int EGifSpew(GifFileType *GifFile, int GifFileHandle)
+</pre>
+
+Writes a complete (possibly multi-image) GIF file to the indicated file
+handle from in-core allocated structures created by a previous DGifSlurp()
+or equivalent operations. Its arguments are a GIF file descriptor (as
+above) and an ordinary output file descriptor.<P>
+
+The file is written with a GIF87 stamp unless it contains one of the four
+special extension blocks defined in GIF89, in which case it is written
+with a GIF89 stamp.<P>
+
+If you are handling large images on a memory-limited machine, you may need
+to use the following functions for sequential write.<P>
+
+<pre><code>
+GifFileType *EGifOpenFileName(char *GifFileName, int GifTestExistance)
+</code></pre>
+
+Open a new GIF file using the given GifFileName. If GifTestExistance
+is TRUE, and file exists, the file is not destroyed, and NULL
+returned.<P>
+
+If any error occurs, NULL is returned and the error handler can be
+used to get the exact error (see gif_err.c).<P>
+
+The file is opened in binary mode, and its buffer size is set to
+FILE_BUFFER_SIZE bytes.<P>
+
+<pre><code>
+GifFileType *EGifOpenFileHandle(int GifFileHandle)
+</code></pre>
+
+Open a new GIF file using the given GifFileHandle.<P>
+
+If any error occurs, NULL is returned and the error handler can be
+used to get the exact error (see gif_err.c).<P>
+
+The file is opened in binary mode, and its buffer size is set to
+FILE_BUFFER_SIZE bytes.<P>
+
+<pre><code>
+void EGifSetGifVersion(char *Version)
+</code></pre>
+
+Sets the GIF version of all files opened, until another call to this
+routine is made. Version is a 3 characters string of the form "87a"
+or "89a". No test is made to validate this string.<P>
+
+<pre><code>
+int EGifPutScreenDesc(GifFileType *GifFile,
+ int GifWidth, int GifHeight,
+ int GifColorRes, int GifBackGround,
+ ColorMapObject *GifColorMap)
+</code></pre>
+
+Update the GifFile Screen parameters, in GifFile structure and in
+the real file. If error occurs, returns GIF_ERROR (see gif_lib.h),
+otherwise GIF_OK.<P>
+
+This routine should be called immediately after the GIF file was
+opened.<P>
+
+<pre><code>
+int EGifPutImageDesc(GifFileType *GifFile,
+ int GifLeft, int GifTop,
+ int Width, int GifHeight,
+ int GifInterlace,
+ ColorMapObject *GifColorMap)
+</code></pre>
+
+Update GifFile Image parameters, in GifFile structure and in the real
+file. if error occurs returns GIF_ERROR (see gif_lib.h), otherwise
+GIF_OK.<P>
+
+This routine should be called each time a new image must be
+dumped to the file.<P>
+
+<pre><code><A NAME="EGifPutLine">
+int EGifPutLine(GifFileType *GifFile, PixelType *GifLine, int GifLineLen)
+</A> </code></pre>
+
+Dumps a block of pixels out to the GIF file. The slab can be
+of any length. More than that, this routine may be interleaved with
+<a href="#EGifPutPixel"></a>, until all pixels have been sent.<P>
+
+Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
+
+<pre><code><A NAME="EGifPutPixel">
+int EGifPutPixel(GifFileType *GifFile, PixelType GifPixel)
+</A></code></pre>
+
+Dumps one pixel to the GIF file. This routine may be interleaved with
+<a href="#EGifPutLine">EGifPutLine</a>, until all pixels were sent.
+Because of the overhead for each call, use of this routine is not
+recommended.<P>
+
+Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
+
+<pre><code><A NAME="EGifPutComment">
+int EGifPutComment(GifFileType *GifFile, char *GifComment)
+</A></code></pre>
+
+Uses extension GIF records to save a string as a comment is the file.
+The extension code is 'C' (for Comment).<P>
+
+Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
+
+<pre><code>
+int EGifPutExtension(
+ GifFileType *GifFile,
+ int GifExtCode,
+ int GifExtLen,
+ void *GifExtension)
+</code></pre>
+
+Dumps the given extension block into the GIF file. Extension blocks
+are optional in GIF file. Extension blocks of more than 255 bytes or
+more than one block are not supported in this function. Please use
+EGifPutExtensionFirst, EGifPutExtensionNext, and EGifPutExtensionLast
+if your extension blocks may fall into this category.<P>
+
+Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
+
+<pre><code>
+int EGifPutExtensionFirst(
+ GifFileType * GifFile,
+ int GifExtCode,
+ int GifExtLen,
+ const VoidPtr GifExtension)
+</code></pre>
+Dumps the beginning of a GIF extension block to a GIF file. Extension blocks
+are optional in GIF files. This function outputs the meta information
+necessary to a GIF extension block and the extension data described in the
+GifExtension argument.<P>
+
+Further blocks of the GIF Extension should be dumped using
+EGifPutExtensionNext. When finished with this extension block,
+EGifPutExtensionLast should be called to output the block termination.<P>
+
+Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
+
+<pre><code>
+int EGifPutExtensionNext(
+ GifFileType * GifFile,
+ int GifExtCode,
+ int GifExtLen,
+ const VoidPtr GifExtension)
+</code></pre>
+Dumps a subblock of a GIF extension to a GIF File. Extension blocks are
+optional in GIF files. This function will write the Extension Data in
+GifExtension to the file as a subblock of the preceding Extension Block.
+Repeat calling of this function until all data subblocks have been output.<P>
+
+Note that EGifPutExtensionFirst needs to be called before any calls to this
+function. EGifPutExtensionLast should be called to finish the Extension
+block after all data subblocks have been output.<P>
+
+Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
+
+<pre><code>
+int EGifPutExtensionLast(
+ GifFileType * GifFile,
+ int GifExtCode,
+ int GifExtLen,
+ const VoidPtr GifExtension)
+</code></pre>
+Dumps an optional GIF extension data subblock and the GIF extension block
+terminator to a GIF File. Extension blocks are optional in GIF files. This
+function will write the Extension Data in GifExtension to the file as a
+subblock of the preceding Extension Block. Then it will output the GIF
+extension block terminator to end the current Extension block. As a special
+case, if GifExtLen is zero, the function will assume there isn't another
+data block to output and will simply write the block terminator.<P>
+
+Note that a call to EGifPutExtensionFirst is needed to open the GIF
+Extension Block prior to calling this function.<P>
+
+Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
+
+<pre><code>
+int EGifPutCode(
+ GifFileType *GifFile,
+ int *GifCodeSize,
+ ByteType **GifCodeBlock)
+</code></pre>
+
+It sometimes may be desired to write the compressed code as is
+without decoding it. For example a filter for a GIF file that change
+only screen size (GifPos), does not need the exact pixel values.
+Piping out the compressed image as is makes this process much
+faster.<P>
+
+This routine does exactly that (with EGifPutCodeNext), and can be
+used instead of EGifPutLine. You'll usually use this with the
+DGifGetCode/DgifGetCodeNext routines, which reads the compressed
+code, while EGifPutCode/EGifPutCodeNext write it out. See gifpos.c
+for example.<P>
+
+Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
+
+<pre><code>
+int EGifPutCodeNext(GifFileType *GifFile, ByteType **GifCodeBlock)
+</code></pre>
+
+See EGifPutCode above.<P>
+
+<pre><code>
+int EGifCloseFile(GifFileType *GifFile)
+</code></pre>
+
+Close a GIF file and free all memory allocated for it. gif-file$
+should not be used, once this routine was called.<P>
+
+Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
+
+<H1>Color map handling and allocation routines</H1>
+
+<pre><code>
+ColorMapObject *MakeMapObject(int ColorCount, GifColorType *ColorMap)
+</code></pre>
+
+Allocate storage for a color map object with the given number of
+RGB triplet slots. If the second argument is non-NULL, initialize
+the color table portion of the new map from it. Returns NULL if
+memory is exhausted or if the size is not a power of 2 <= 256.<P>
+
+<pre><code>
+void FreeMapObject(ColorMapObject *Object)
+</code></pre>
+
+Free the storage occupied by a ColorMapObject that is no longer needed.<P>
+
+<pre><code>
+ColorMapObject *UnionColorMap(
+ ColorMapObject *ColorIn1, ColorMapObject *ColorIn2,
+ GifPixelType ColorTransIn2[])
+</code></pre>
+
+Create the union of two given color maps and return it. If the result
+won't fit into 256 colors, NULL is returned, the allocated union
+otherwise. ColorIn1 is copied as it to ColorUnion, while colors from
+ColorIn2 are copied iff they didn't exist before. ColorTransIn2 maps
+the old ColorIn2 into ColorUnion color map table.<P>
+
+<pre><code>
+SavedImage *GifAttachImage(GifFileType *GifFile)
+</code></pre>
+
+Add an image block to the SavedImages array. The image block is
+initially zeroed out. This image block will be seen by any following
+EGifSpew() calls.
+</code></pre>
+
+<H1>The GIF Utility Font</H1>
+
+The 8x8 utility font used in text2gif and gifcolor lives in the library
+module gif_font.c, in a table called AsciiTable. The library header file
+includes suitable externs and defines.<P>
+
+The GIF utility font support includes entry points for drawing legends
+on in-core images, drawing boxes and rectangles, and boxing text.
+These entry points are as follows:<P>
+
+<pre><code>
+void DrawText(
+ SavedImage *Image,
+ const int x, const int y,
+ const char *legend,
+ const int color)
+</code></pre>
+
+Draw text using the 8x8 utility font on the saved image. Upper left
+corner of the text is at image pixel (x, y). Use the specified
+color index.<P>
+
+<pre><code>
+void DrawBox(SavedImage *Image,
+ const int x, const int y,
+ const int w, const int h,
+ const int color)
+</code></pre>
+
+Draw a box on the saved image. Upper left corner of the box is at
+image pixels (x, y), width is w, height is h. Use the specified color
+index.<P>
+
+<pre><code>
+void DrawRectangle(SavedImage *Image,
+ const int x, const int y,
+ const int w, const int h,
+ const int color)
+</code></pre>
+
+Draw a (filled) rectangle on the saved image. Upper left corner of
+the box is at image pixels (x, y), width is w, height is h. Use the
+specified color index.<P>
+
+<pre><code>
+void DrawBoxedText(SavedImage *Image,
+ const int x, const int y,
+ const char *legend,
+ const int border,
+ const int bg, const int fg)
+</code></pre>
+
+Draw text on a filled rectangle. The rectangle will be sized to fit
+the text, with upper left hand corner at (x, y) on the saved image.
+The `border' argument specifies a pixel margin around the text. The
+`bg' argument is the color table index to fill the rectangle with;
+`fg' is the color table index to draw the text with.<P>
+
+This function interprets some characters in the legend string
+specially. A tab (\t) is interpreted as a command to center the
+following text in the box. A carriage return (\r) is interpreted
+as a request for a line break.<P>
+
+<H1>Error Handling (egif_lib.c)</H1>
+
+<pre><code>
+void PrintGifError(void)
+</code></pre>
+
+Print a one-line diagnostic on the last giflib error to stderr.<P>
+
+<pre><code>
+int GifLastError(void)
+</code></pre>
+
+Return the number of the last giflib error, and clear the error.
+The error types are defined in gif_lib.h.<P>
+
+Note it is the user's responsibility to call the file closing
+routine, so the file will be closed (if was opened), and allocated
+memory will be released.<P>
+
+<H1>Device Specific (XXX2gif.c)</H1>
+
+<pre><code>
+int DumpScreen2Gif(char *FileName, int ReqGraphDriver, int ReqGraphMode1,
+ int ReqGraphMode2)
+</code></pre>
+
+Dumps the whole device buffer as specified by GraphDriver and
+GraphMode (as defined in TC 2.0 graphics.h) into FileName as GIF file.
+Current devices supported:<P>
+
+<pre>
+ 1. Hercules.
+
+ 2. EGA, EGA64, EGAMONO (all modes - see TC graphics.h).
+
+ 3. VGA (all modes - see TC graphics.h).
+
+ 4. SVGA_SPECIAL. This mode is special and not supported by Borland
+ graphics.h. ReqGraphDriver must be equal to 999, and ReqGraphMode
+ is ignored. This modes assumes 800 by 600 in 16 colors.
+ Returns GIF_ERROR if something went wrong, GIF_OK otherwise.
+
+ 5. SGI 4D using gl graphic library - window dump.
+
+ 6. X11 window dump.
+</pre>
+
+
+<H1>Command Line Parsing</H1>
+
+<pre><code>
+int GAGetArgs(int argc, char **argv, char *CtrlStr, ...)
+</code></pre>
+
+Main routine of this module. Given argc & argv as received by
+the main procedure, the command line CtrlStr, and the addresses of
+all parameters, parse the command line, and update the parameters.<P>
+
+The CtrlStr defines what types of variables should follow. Look at the
+beginning of getarg.c for exact usage.<P>
+
+Returns 0 if successful, error number (as defined by getarg.h) otherwise.<P>
+
+<pre><code>
+void GAPrintErrMsg(int Error)
+</code></pre>
+
+If an error occurred in GAGetARgs, this routine may be used to print
+one line diagnostic to stderr.<P>
+
+<pre><code>
+void GAPrintHowTo(char *CtrlStr)
+</code></pre>
+
+Given the same CtrlStr as for GAGetArgs, can be used to print a one line
+'how to use'. <P>
+
+<H1>Skeletons of GIF filters</H1>
+
+If you are developing on a virtual-memory OS such as most flavors of
+UNIX, or are otherwise sure of having enough memory to keep all of GIFs you
+need to operate in core, writing a filter is trivial. See the file
+gifspnge.c in util.<P>
+
+A sequential filter skeleton will usually look like the example file
+giffiltr.c in util.<P>
+
+<P>Please look at the utilities in the util directory for more ideas once
+you feel comfortable with these skeletons. Also try to follow the coding
+standards of this package if you want the maintainer to officially add your new
+utility to it.<P>
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gifasm.html b/giflib-4.1.6/doc/gifasm.html
new file mode 100644
index 0000000..ae28751
--- /dev/null
+++ b/giflib-4.1.6/doc/gifasm.html
@@ -0,0 +1,59 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gifasm</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gifasm</H1></CENTER>
+
+A program to assemble multiple GIF files into one, or disassemble a single GIF
+file with multiple images into single image files.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+gifasm [-q] [-a] [-d OutFileName] [-h] gif-file...
+</pre>
+
+If no gif-file is given, GifAsm will try to read a GIF file from stdin, if
+in disassembly mode only (-d).<P>
+
+<H1>Memory required:</H1>
+
+Line.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Defaults off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-a]
+<DD> Assemble. This is the default, and the GifFile(s) are assembled to
+ stdout. Note the screen descriptor (including screen color map) is taken
+ from the first file, while other screen descriptors are ignored.
+ As this tool requires at least 2 GIF files as input, no attempt will be
+ made to read stdin if none specified on command line.<P>
+
+<DT> [-d OutFileName]
+<DD> Disassemble GifFile (if specified on command line) or
+ stdin, into several files of the form OutFileNameXX, where XX are two
+ decimal digits. Obviously up to 100 files can be generated this way.
+ Note: in this mode nothing is sent to stdout.<P>
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gifbg.html b/giflib-4.1.6/doc/gifbg.html
new file mode 100644
index 0000000..4f107c3
--- /dev/null
+++ b/giflib-4.1.6/doc/gifbg.html
@@ -0,0 +1,86 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gifbg</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gifbg</H1></CENTER>
+
+A program to generate a single-color test pattern GIF with gradually changing
+intensity in any of the basic 8 directions.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+gifbg [-q] [-d Dir] [-l #Lvls] [-c R G B] [-m MinI] [-M MaxI] [-s W H] [-h]
+</pre>
+
+The gifbg program reads no input, and will dump the created GIF file
+to stdout.<P>
+
+<H1>Memory required:</H1>
+
+Line.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Defaults off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-d Dir]
+<DD> Select direction the intensity of the background should increase.
+ Direction can be one of the 8 principal directions:<P>
+
+<pre>
+ "T" - for Top "TR" - for Top Right
+ "R" - for Right "BR" - for Bottom Right
+ "B" - for Bottom "BL" - for Bottom Left
+ "L" - for left "TL" - for Top Left
+</pre>
+
+ The compass directions may be use as synonyms for the above directions, so
+ for example "NE" is equal to "TR".<P>
+
+ Direction is case insensitive. The default direction is Top (North).<P>
+
+<DT> [-l #Lvls]
+<DD> Number of levels the color will be scaled to. Default is 16.<P>
+
+<DT> [-c R G B]
+<DD> What to use as the primary background color to scale.
+ This color is scaled between the minimum intensity (MinI) and maximum
+ intensity (MaxI) from one end of the screen to the other as defined by Dir.
+ See below (-m & -M) for MinI & MaxI. Default is Blue (0, 0, 255).<P>
+
+<DT> [-m MinI]
+<DD> Minimum intensity (in percent) to scale color. Default 10%<P>
+
+<DT> [-M MaxI]
+<DD> Maximum intensity (in percent) to scale color. Default 100%<P>
+
+<DT> [-s W H]
+<DD> Size of image to create. Default 640 by 350.<P>
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Notes:</H1>
+
+If MinI == MaxI = 100 (%) and #Lvls == 2 then boolean mask image of specified
+size will be created - all foreground. This can be used as a square mask for
+the <a href="gifcomb.html"></a>gifcomb utility.<P>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gifburst.html b/giflib-4.1.6/doc/gifburst.html
new file mode 100644
index 0000000..3088b36
--- /dev/null
+++ b/giflib-4.1.6/doc/gifburst.html
@@ -0,0 +1,48 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gifburst</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gifburst</H1></CENTER>
+
+The gifburst program takes a named GIF file and breaks it into equal-sized
+tiles. This is useful if a GIF is too large for your viewer, so you have
+to look at it in sections.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+gifburst [-s n] [-p b] gif-file
+</pre>
+
+<H1>Memory required:</H1>
+
+Proportional to the size of the largest pasted image.
+
+<H1>Options:</H1>
+
+<DT> [-s nnn]
+<DD> Specify the number of pieces. Valid values are presently 4 (2x2)
+ and 6 (2x3). Default is 4.
+
+<DT> [-p nnn]
+<DD> Specify the number of pixels of overlap between interior boundaries
+ of pieces. Default 20.
+
+<H1>Note:</H1>
+
+The gifburst program is written on Perl, using the C utilities. You must have
+both the giflib utilities and Perl installed to run it.<P>
+
+<H1>Author:</H1>
+
+Eric S. Raymond &lt;esr@snark.thyrsus.com&gt;<P>
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gifclip.html b/giflib-4.1.6/doc/gifclip.html
new file mode 100644
index 0000000..9710b4f
--- /dev/null
+++ b/giflib-4.1.6/doc/gifclip.html
@@ -0,0 +1,75 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gifclip</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gifclip</H1></CENTER>
+
+A program to clip images in GIF files. Only one image in a GIF file can be
+modified at a time. Neither the image position on screen nor the screen size
+is modified (use <a href="gifpos.html">gifpos</a> for that).<P>
+
+<H1>Usage:</H1>
+
+<pre>
+gifclip [-q] [-i Xmin Ymin Xmax Ymax] [-n n Xmin Ymin Xmax Ymax] [-c] [-h] gif-file
+</pre>
+
+If no gif-file is given, GifClip will try to read a GIF file from stdin.<P>
+
+<H1>Memory required:</H1>
+
+Line.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Default off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-i Xmin Ymin Xmax Ymax]
+<DD> Clip first image to the dimensions as specified
+ by the 4 coordinates (Xmin Ymin Xmax Ymax) of a box clipping region.<P>
+
+ For example: '-i 11 22 33 44' will crop the box from top left [11,22]
+ to bottom right [33,44] out of the first image.<P>
+
+ If the first parameter is bigger than third one (Xmin > Xmax) they are
+ swapped. Same for Y.<P>
+
+ The dimensions of the clipped image must be confined to original image
+ width and height. Note the clipped image includes both the min & max
+ boundary; an image of width W can have coordinates 0 to W-1 (zero based).<P>
+
+ Only one of -i or -n can be specified.<P>
+
+<DT> [-n n Xmin Ymin Xmax Ymax]
+<DD> Same as -i above but for the nth image:
+ `-n 1 11 22 33 44' is exactly the same as the example in -i. Only one of
+ -i or -n can be specified.<P>
+
+<DT> [-c]
+<DD> Complement. This removes horizontal and/or vertical bands of the
+ image. For example `-c -i 638 3 658 13' would remove a horizontal band
+ 11 pixels deep beginning at raster line 3, and a vertical band 21 pixels
+ right beginning at pixel 658.<P>
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above.<P>
+</DL>
+
+Note: all coordinates are 0-based --- the top left corner is (0, 0).<P>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gifclrmp.html b/giflib-4.1.6/doc/gifclrmp.html
new file mode 100644
index 0000000..6ca3a9d
--- /dev/null
+++ b/giflib-4.1.6/doc/gifclrmp.html
@@ -0,0 +1,77 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gifclrmp</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gifclrmp</H1></CENTER>
+
+A program to modify GIF image colormaps. Any local colormap in a GIF file can
+be modified at a time, or the global screen one.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+gifclrmap [-q] [-s] [-t trans] [-l map] [-g Gamma] [-i image] [-h] gif-file
+</pre>
+
+If no gif-file is given, GifClip will try to read a GIF file from stdin.<P>
+
+<H1>Memory required:</H1>
+
+Line.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Defaults off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-s]
+<DD> Select the global screen color map.<P>
+
+<DT> [-l map]
+<DD> Load color map from this file instead of selected color map.<P>
+
+<DT> [-t trans]
+<DD> Change color index values. The change is made to both
+ the selected color table and the raster bits of the selected image. A
+ translation file is a list of pairs of `before' and `after' index values.
+ At present, the `before' index values must be in ascending order starting
+ from 0.<P>
+
+<DT> [-g Gamma]
+<DD> Apply gamma correction to selected color map.<P>
+
+<DT>[-i image]
+<DD> Select the color map of the numbered image.<P>
+
+<DT>[-h]
+<DD> Print one command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Notes:</H1>
+
+<UL>
+<LI>
+The default operation is to dump out the selected color map in text
+format.<P>
+
+<LI>
+The file to load/dump is simply one color map entry per line. Each such
+entry line has four integers: "ColorIndex Red Green Blue", where color
+index is in ascending order starting from 1.<P>
+</UL>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gifcolor.html b/giflib-4.1.6/doc/gifcolor.html
new file mode 100644
index 0000000..8276070
--- /dev/null
+++ b/giflib-4.1.6/doc/gifcolor.html
@@ -0,0 +1,60 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gifcolor</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gifcolor</H1></CENTER>
+
+A program to generate color test patterns. Feed it a color map file (as
+generated, say, by the -s otion of GifClrMp) and it will generate a GIF
+containing lines of the form
+
+<pre>
+ Color %-3d: [%-3d, %-3d, %-3d]:
+</pre>
+
+where the first number is the zero-based color index, and the triple is the
+index's [Red, Green, Blue] value. There will be one such line for each color.
+Each line will be set in a simple 8x8 font in the color it describes; thus,
+any lines corresponding to the GIF's background color will be blank.<p>
+
+<H1>Usage:</H1>
+
+<pre>
+gifcolor [-q] [-b Background] [-h] &ltColorMapFile
+</pre>
+
+As gifcolor can generate huge amounts of data, ^C will kill it, but 'q' will
+stop only the printing (of one of -e, -z, -p), while file integrity will still
+be checked.<P>
+
+<H1>Memory required:</H1>
+
+Line.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Defaults off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-b]
+<DD> Set the image's backround color to a given numeric index.<P>
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gifcomb.html b/giflib-4.1.6/doc/gifcomb.html
new file mode 100644
index 0000000..2728835
--- /dev/null
+++ b/giflib-4.1.6/doc/gifcomb.html
@@ -0,0 +1,57 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gifcomb</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gifcomb</H1></CENTER>
+
+A program to combine 2 GIF images of exactly the same size into one.
+The color maps are merged, but the result may not exceed 256 colors.
+A boolean mask GIF file can be used to set which pixel from two images
+to use at each location. Otherwise any background color from first
+image is converted to second image color at that point. Only the
+first image of each file is combined; again, all files' first images
+must be of exactly the same size.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+gifcomb [-q] [-m MaskGIFFile] [-h] gif-file...
+</pre>
+
+Two GIF files must be specified; a third mask GIF file is optional.<P>
+
+<H1>Memory required:</H1>
+
+Line.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Default off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-m MaskGIFFile]
+<DD> the MaskGIFfile can be regular GIF file whose first
+ image has same dimensions as the combined images. Any non-background color
+ in it will select Image 1 Pixel to output, otherwise Image2 pixel will be
+ selected. Usually this image will be boolean (two colors only) but
+ it does not have to be.<P>
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gifcompose.html b/giflib-4.1.6/doc/gifcompose.html
new file mode 100644
index 0000000..7e56232
--- /dev/null
+++ b/giflib-4.1.6/doc/gifcompose.html
@@ -0,0 +1,124 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gifcompose</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gifcompose</H1></CENTER>
+
+The gifcompose program uses the GIFLIB utility tools to support a minilanguage
+for describing GIF pasteup sequences.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+gifcompose [-v] &lt;specfile
+</pre>
+
+<H1>Specification Syntax</H1>
+
+The gifcompose tool takes a series of text lines and interprets them as
+commands to do pasteup operations. The commands are:<P>
+
+<CENTER><H2>Generators</H2></CENTER>
+
+<DL>
+<DT><CODE>gif &lt;name&gt;</CODE><DD>
+ Paste in &lt;name&gt;.gif<P>
+
+<DT><CODE>raw &lt;name&gt; &lt;width&gt; &lt;height&gt;</CODE><DD>
+ Paste in the given raw-format file (no suffix supplied). Raw format
+ is a stream of 8-bit indices into the EGA color map. Accordingly, the
+ width and height must be specified, and the source must be exactly
+ width times height bytes long.<P>
+
+<DT><CODE>rgb &lt;name&gt; &lt;width&gt; &lt;height&gt;</CODE><DD>
+ Paste in the given RGB-format file (no suffix supplied). Raw format
+ is a stream of 24-bit color values. Accordingly, the width and height
+ must be specified, and the source must be exactly 3 times width times
+ height bytes long.<P>
+
+<DT><CODE>rle &lt;name&gt;</CODE><DD>
+ Paste in the given RLE-format file (no suffix supplied). This converts
+ the Utah Raster Kit format to GIF.<P>
+
+<DT><CODE>text &lt;text&gt; [foreground &lt;index&gt;] [color &lt;r&gt; &lt;g&gt; &lt;b&gt;]</CODE><DD>
+ Copy 8x8 monospace font, with transparent background and index 1 as
+ foreground. If the text string contains whitespaces, they must be
+ escaped or the string must be quoted (shell conventions).<P>
+
+ The optional suffix `foreground &lt;n&gt;' sets the foreground color index.
+ The optional suffix `color &lt;r&gt; &lt;g&gt; &lt;b&gt;' sets the RGB color to be used
+ for the foreground index.<P>
+</DL>
+
+Each generator operation may be followed by any combination of the
+following suffixes:
+
+<CENTER><H2>Modifiers</H2></CENTER>
+
+<DT><CODE>at &lt;x&gt; &lt;y&gt;</CODE><DD>
+ Place the image at the given (upper-left-hand-corner) coordinates
+ in the pasted-up result.<P>
+
+<DT><CODE>clip &lt;name&gt; &lt;top-x&gt; &lt;top-y&gt; &lt;bottom-x&gt; &lt;bottom-y&gt;</CODE><DD>
+ Clip image using the given rectange, paste it onto.<P>
+
+<DT><CODE>xflip</CODE><DD>
+ Flip the image around the X axis before placing it.<P>
+
+<DT><CODE>yflip</CODE><DD>
+ Flip the image around the Y axis before placing it.<P>
+
+<DT><CODE>left</CODE><DD>
+ Rotate the image 90 degrees counterclockwise before placing it.<P>
+
+<DT><CODE>right</CODE><DD>
+ Rotate the image 90 degrees clockwise before placing it.<P>
+
+<CENTER><H2>Target Operations</H2></CENTER>
+
+<DT><CODE>screen size &lt;x-size&gt; &lt;y-size&gt;</CODE><DD>
+ Set the global screen size of the final image.<P>
+
+<DT><CODE>screen position &lt;x&gt; &lt;y&gt;</CODE><DD>
+ Set the global screen position of the final image.<P>
+
+<CENTER><H2>Comments</H2></CENTER>
+
+Comments or comment lines may be preceded with `#' and will be ignored.<P>
+
+<H1>Memory required:</H1>
+
+Proportional to the size of the largest pasted image.<P>
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-v]
+<DD> Emit a report on each composition action to stderr as it happens.
+</DL>
+
+<H1>Bugs:</H1>
+
+The suffix sequence `left left' sometimes mysteriously fails to work,
+probably due to some restriction in <a href="gifflip.html">gifflip</a>.<P>
+
+No support for resizing or odd-angle rotations yet.<P>
+
+The `color' suffix of text is a no-op, because the present version of
+<a href="gifovly.html">gifovly</a> throws away color tables.<P>
+
+Error checking is rudimentary.<P>
+
+<H1>Author:</H1>
+
+Eric S. Raymond &lt;esr@snark.thyrsus.com&gt;
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/giffiltr.html b/giflib-4.1.6/doc/giffiltr.html
new file mode 100644
index 0000000..13a590e
--- /dev/null
+++ b/giflib-4.1.6/doc/giffiltr.html
@@ -0,0 +1,40 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>giffiltr</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>giffiltr</H1></CENTER>
+
+This is an expensive way to copy a GIF. The source is included as a skeleton
+for more sophisticated filters. See the source in the util directory for
+details.<P>
+
+I suppose this does have some utility as a test of the sequential GIF record
+I/O routines. The output should be bytewise identical to the input.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+giffiltr &lt;GifFile &gt;GifCopy
+</pre>
+
+<H1>Memory required:</H1>
+
+Line.
+
+<H1>Options:</H1>
+
+None.
+
+<H1>Author</H1>
+
+Eric S. Raymond &lt;esr@snark.thyrsus.com&gt;<P>
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/giffix.html b/giflib-4.1.6/doc/giffix.html
new file mode 100644
index 0000000..c65ca32
--- /dev/null
+++ b/giflib-4.1.6/doc/giffix.html
@@ -0,0 +1,47 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>giffix</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>giffix</H1></CENTER>
+
+A program that attempts to fix broken GIF images. Currently will "fix"
+images terminated prematurely by filling the rest of the image with
+the darkest color found in image.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+giffix [-q] [-h] gif-file
+</pre>
+
+If no gif-file is given, GifFix will try to read a GIF file from
+stdin. The fixed file is dumped to stdout.<P>
+
+<H1>Memory required:</H1>
+
+Line.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Defaults off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above..<P>
+</DL>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gifflip.html b/giflib-4.1.6/doc/gifflip.html
new file mode 100644
index 0000000..a0c1106
--- /dev/null
+++ b/giflib-4.1.6/doc/gifflip.html
@@ -0,0 +1,60 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gifflip</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gifflip</H1></CENTER>
+
+A program to flip (mirror) GIF file along X or Y axes, or rotate the GIF
+file 90 degrees to the left or to the right.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+gifflip [-q] [-r] [-l] [-x] [-y] [-h] gif-file
+</pre>
+
+If no gif-file is given, GifFlip will try to read a GIF file from stdin.<P>
+
+<H1>Memory required:</H1>
+
+Image.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Default off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-r]
+<DD> Rotate the GIF file to the right.<P>
+
+<DT> [-l]
+<DD> Rotate the GIF file to the left.<P>
+
+<DT> [-x]
+<DD> Mirror the GIF file along the X axis. Very useful if GIF file was
+ created from another format in with the first line in at image bottom.
+ Effectively exchanges first row with last.<P>
+
+<DT> [-y]
+<DD> Mirror the GIF file along Y axis.
+ Effectively exchanges first column with last.<P>
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gifhisto.html b/giflib-4.1.6/doc/gifhisto.html
new file mode 100644
index 0000000..9992a9c
--- /dev/null
+++ b/giflib-4.1.6/doc/gifhisto.html
@@ -0,0 +1,72 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gifhisto</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gifhisto</H1></CENTER>
+
+A program to create histogram of number of pixels using each color. The output
+can be formatted into a GIF histogram file, or as text file - both go to
+stdout.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+gifhisto [-q] [-t] [-s Width Height] [-n ImageNumber] [-b] [-h] gif-file
+</pre>
+
+If no gif-file is given, GifHisto will try to read a GIF file from stdin.<P>
+
+<H1>Memory required:</H1>
+
+Line.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Default off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-t]
+<DD> Force output to be text file of the following form: (colormap size)
+ lines each containing two integers: number of times color appeared, and
+ color index. Lines are in increasing color index order. This output can be
+ fed directly to a sort program if ordering by color frequency
+ is desired.<P>
+
+ The colrmap picked is the one to be used for the image to generate
+ histogram for, as defined in GIF format.<P>
+
+<DT> [-s Width Height]
+<DD> Size of GIF histogram file. The Height of the
+ histogram should be power of 2 dividable by number of colors in colormap.<P>
+
+ Width sets the resolution (accuracy if you like) of the histogram as
+ the maximum histogram bar is scaled to fit it.<P>
+
+<DT> [-n ImageNumber]
+<DD> Image number to test. Default is one.<P>
+
+<DT> [-b]
+<DD> Zeros the background color count. As only linear scale bars are
+ supported and usually the background appears much more often then other
+ colors, deleting the background count will improve the scaling of other
+ colors.
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gifinter.html b/giflib-4.1.6/doc/gifinter.html
new file mode 100644
index 0000000..007186e
--- /dev/null
+++ b/giflib-4.1.6/doc/gifinter.html
@@ -0,0 +1,51 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gifinter</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gifinter</H1></CENTER>
+
+A program to convert between interlaced and non-interlaced GIF images.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+gifinter [-q] [-i] [-s] [-h] gif-file
+</pre>
+
+If no gif-file is given, GifInter will try to read a GIF file from stdin.<P>
+
+
+<H1>Memory required:</H1>
+
+Image.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Defaults off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-i]
+<DD> Force all images in GIF file be interlaced.<P>
+
+<DT> [-s]
+<DD> Force all images in GIF file be sequential (default).<P>
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gifinto.html b/giflib-4.1.6/doc/gifinto.html
new file mode 100644
index 0000000..635286c
--- /dev/null
+++ b/giflib-4.1.6/doc/gifinto.html
@@ -0,0 +1,56 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gifinto</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gifinto</H1></CENTER>
+
+A program to save stdin into a file with given name, iff the result file has
+size bigger than specified (see below). This can be used to save result in
+same files name we started a chain of pipes.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+gifinto [-q] [-s MinFileSize] [-h] gif-file
+</pre>
+
+Gifinto always reads a GIF file from stdin.<P>
+
+<H1>Memory required:</H1>
+
+Line.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Default off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-s MinFileSize]
+<DD> If file is less than MinFileSize, it is deleted and
+ not renamed to given name. This will prevent killing the file we
+ started with if the result is an empty file, or the pipeline did not
+ complete.<P>
+
+ The default file threshold size is 14 bytes which is 1 bigger than GIF file
+ stamp (6 bytes) and GIF file screen descriptor (7 bytes), so a GIF file with
+ only GIF stamp and screen descriptor will not be renamed.<P>
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gifovly.html b/giflib-4.1.6/doc/gifovly.html
new file mode 100644
index 0000000..d287baa
--- /dev/null
+++ b/giflib-4.1.6/doc/gifovly.html
@@ -0,0 +1,49 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gifovly</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gifovly</H1></CENTER>
+
+This program takes a multi-image GIF file and generates a single GIF
+consisting of all the images overlayed. Each image's screen position
+is used. Thus, you can use this together with <a
+href="gifpos.html">gifpos</a> and <a href="gifasm.html">gifasm</a> to
+paste together images.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+gifovly [-s TransparentColor] [-h]
+</pre>
+
+The GIF to be operated is read in from stdin. The result GIF is written to
+stdout.<P>
+
+<H1>Memory required:</H1>
+
+Proportional to the size of the input file.<P>
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-t num]
+<DD> If this index is given, any pixel in images after the first that
+ has this value is not copied.<P>
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above..<P>
+</DL>
+
+<H1>Author:</H1>
+
+Eric S. Raymond &lt;esr@snark.thyrsus.com&gt;<P>
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gifpos.html b/giflib-4.1.6/doc/gifpos.html
new file mode 100644
index 0000000..b5999ab
--- /dev/null
+++ b/giflib-4.1.6/doc/gifpos.html
@@ -0,0 +1,59 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gifpos</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gifpos</H1></CENTER>
+
+A program to change GIF screen size and/or reposition images. No test is made
+to make sure changes will generate valid GIF files (i.e. images are still
+confined to screen etc.)<P>
+
+<H1>Usage:</H1>
+
+<pre>
+gifpos [-q] [-s Width Height] [-i Left Top] [-n n Left Top] [-h] gif-file
+</pre>
+
+If no gif-file is given, GifPos will try to read a GIF file from stdin.<P>
+
+<H1>Memory required:</H1>
+
+Line.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Default off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-s Width Height]
+<DD> Set the new screen dimensions, so for example
+ `-s 1000 800' will set screen to width of 1000 and height of 800.<P>
+
+<DT> [-i Left Top]
+<DD> set image relative to screen position, so for example
+ `-i 100 80' will set image left position to 100 and top position to 80.
+ This sets the position of the first image only.<P>
+
+<DT> [-n n Left Top]
+<DD> set image n relative to screen position, so for
+ example '-n 3 100 80' will set the third image position as in 2.<P>
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gifrotat.html b/giflib-4.1.6/doc/gifrotat.html
new file mode 100644
index 0000000..77bea98
--- /dev/null
+++ b/giflib-4.1.6/doc/gifrotat.html
@@ -0,0 +1,62 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gifrotat</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gifrotat</H1></CENTER>
+
+A program to rotate a GIF image by a specified angle.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+gifrotat -a Angle [-q] [-s Width Height] [-h] gif-file
+</pre>
+
+If no gif-file is given, GifRotat will try to read a GIF file from stdin.<P>
+
+
+<H1>Memory required:</H1>
+
+Screen (of source image).<P>
+
+<H1>Options:</H1>
+
+<DL>
+<DT> -a Angle
+<DD> Specifies the angle to rotate in degrees with respect to
+ the X (horizontal) axis.<P>
+
+<DT> [-q]
+<DD> Quiet mode. Defaults off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-s Width Height]
+<DD> Since the rotated image will have the same image size as
+ the original, some parts of the image will by clipped out and lost. By
+ specifing a (bigger) size explicitly using the `-s' option, these parts
+ may be saved.<P>
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Notes:</H1>
+
+The image is rotated around its center. No filtering is performed on the
+output, which have the same color map as the input. This is mainly since
+filtering would require color quantization which is very memory/time intensive
+and out of MSDOS memory limits even for small images.<P>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gifrsize.html b/giflib-4.1.6/doc/gifrsize.html
new file mode 100644
index 0000000..1797a20
--- /dev/null
+++ b/giflib-4.1.6/doc/gifrsize.html
@@ -0,0 +1,60 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gifrsize</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gifrsize</H1></CENTER>
+
+A program to resize image size by an integer factor, deleting bits when scaling
+down and duplicating bits when scaling up.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+gifrsize [-q] [-S X Y] [-s Scale] [-x XScale] [-y YScale] [-h] gif-file
+</pre>
+
+If no gif-file is given, GifRSize will try to read a GIF file from stdin.<P>
+
+<H1>Memory required:</H1>
+
+Line.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Defaults off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-S X Y]
+<DD> specifies the exact screen dimension of the output GIF.<P>
+
+<DT> [-s Scale]
+<DD> Set scaling factor for both x & y direction to Scale.
+ Default is 0.5. Note this is a floating point number.<P>
+
+<DT> [-x XScale]
+<DD> Set scaling factor for x direction to Scale. Default is 0.5.
+ Note: this is a floating point number.<P>
+
+<DT> [-y YScale]
+<DD> Set scaling factor for y direction to Scale. Default is 0.5.
+ Note: this is a floating point number.<P>
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gifspnge.html b/giflib-4.1.6/doc/gifspnge.html
new file mode 100644
index 0000000..412ca00
--- /dev/null
+++ b/giflib-4.1.6/doc/gifspnge.html
@@ -0,0 +1,40 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gifspnge</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gifspnge</H1></CENTER>
+
+This is an expensive way to copy a GIF. The source is included as a skeleton
+for more sophisticated filters using DGifSlurp() and EGifSpew(). See the
+source in the util directory for details.<P>
+
+I suppose this does have some utility as a test of DGifSlurp() and EGifSpew().
+The output should be bytewise identical to the input.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+gifspnge &lt;GifFile &gt;GifCopy
+</pre>
+
+<H1>Memory required:</H1>
+
+The size of the input GIF, plus malloc overhead.
+
+<H1>Options:</H1>
+
+None.
+
+<H1>Author:</H1>
+
+Eric S. Raymond &lt;esr@snark.thyrsus.com&gt;<P>
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/giftext.html b/giflib-4.1.6/doc/giftext.html
new file mode 100644
index 0000000..5707795
--- /dev/null
+++ b/giflib-4.1.6/doc/giftext.html
@@ -0,0 +1,71 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>giftext</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>giftext</H1></CENTER>
+
+A program to dump (text only) general information about GIF file.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+giftext [-q] [-c] [-e] [-z] [-p] [-r] [-h] gif-file
+</pre>
+
+If no gif-file is given, GifText will try to read a GIF file from stdin.<P>
+
+As giftext can generate huge amounts of data, ^C will kill it, but 'q' will
+stop only the printing (of one of -e, -z, -p), while file integrity will still
+be checked.<P>
+
+<H1>Memory required:</H1>
+
+Line.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Defaults off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-c]
+<DD> Dumps the color maps.<P>
+
+<DT> [-e]
+<DD> Dumps encoded bytes - the pixels after compressed using LZ
+ algorithm and chained to form bytes. This is the form the data is saved
+ in the GIF file. Dumps in hex - 2 digit per byte.<P>
+
+<DT> [-z]
+<DD> Dumps the LZ codes of the image. Dumps in hex - 3 digits per
+ code (as we are limited to 12 bits).<P>
+
+<DT> [-p]
+<DD> Dumps the pixels of the image. Dumps in hex - 2 digit per
+ pixel (<=byte).<P>
+
+<DT> [-r]
+<DD> Dumps raw pixels as one byte per pixel. This option inhibits all
+ other options and only the pixels are dumped. This option may be used to
+ convert GIF files into raw data. Note: the color map can be extracted by
+ gifclrmp utility. If more than one image is included in the file, all
+ images will be dumped in order.<P>
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/gifwedge.html b/giflib-4.1.6/doc/gifwedge.html
new file mode 100644
index 0000000..35ce5a5
--- /dev/null
+++ b/giflib-4.1.6/doc/gifwedge.html
@@ -0,0 +1,53 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>gifwedge</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>gifwedge</H1></CENTER>
+
+A program to create a test GIF image with intensity levels of the RGB colors
+YCM colors and white.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+gifwedge [-q] [-l #Lvls] [-s SizeX SizeY] [-h]
+</pre>
+
+<H1>Memory required:</H1>
+
+Line.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Defaults off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-l #Lvls]
+<DD> Set number of intensity levels per color. This number must be
+ power of two up to 32, as Gif format can only have 256 color simultanuously
+ and 7 basic colors are to be displayed.<P>
+
+<DT> [-s SizeX SizeY]
+<DD> Force image size to be SizeX by SizeY pixels.
+ Image size will be rounded down to be a multiple of number of intensities
+ horizontally, and 7 (colors) vertically.<P>
+
+<DT> [-h]
+<DD> Print one line command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/icon2gif.html b/giflib-4.1.6/doc/icon2gif.html
new file mode 100644
index 0000000..a68127e
--- /dev/null
+++ b/giflib-4.1.6/doc/icon2gif.html
@@ -0,0 +1,142 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>icon2gif</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>icon2gif</H1></CENTER>
+
+A program to convert a series of editable text GIF icon specifications and
+named GIF files into a multi-image GIF, usable as a graphic resource file.
+It can also dump existing GIFs in this format.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+icon2gif [-q] [-a] [-d] [t TranslationTable] [-h] gif-file...
+</pre>
+
+If no gif-file is given, icon2gif will try to read a text input from stdin.<P>
+
+<H1>Specification Syntax</H1>
+
+Here is a syntax summary in informal BNF. The token `NL' represents a
+required newline.<P>
+
+<pre>
+&lt;gif-spec&gt; ::= &lt;header-block&gt; &lt;image-block&gt;...
+
+&lt;header-block&gt; ::= &lt;header-declaration&gt;...
+
+&lt;header-declaration ::=
+ | screen width &lt;digits&gt; NL
+ | screen height &lt;digits&gt; NL
+ | screen colors &lt;digits&gt; NL
+ | screen background &lt;digits&gt; NL
+ | screen map &lt;color-table&gt; NL
+
+&lt;color-table&gt; ::= &lt;color-declaration&gt;... end NL
+
+&lt;color-declaration&gt; ::= rgb &lt;digits&gt; &lt;digits&gt; &lt;digits&gt; is &lt;key&gt; NL
+
+&lt;image-block&gt; ::= include &lt;file-name&gt; NL
+ | image NL
+ &lt;image-declaration&gt;...
+ &lt;raster-picture&gt;
+ [ &lt;extension&gt; ]
+
+&lt;image-declarations&gt; ::= image top &lt;digits&gt; NL
+ | image left &lt;digits&gt; NL
+ | image interlaced NL
+ | image map &lt;color-table&gt; NL
+ | image bits &lt;digits&gt; by &lt;digits&gt; NL &lt;raster-block&gt;
+
+&lt;extension&gt; := &lt;comment&gt; NL &lt;extension-block&gt; NL end NL
+ | &lt;plaintext&gt; NL &lt;extension-block&gt; NL end NL
+ | extension &lt;hex-digits&gt; NL &lt;extension-block&gt; NL end NL
+</pre>
+
+If the semantics of the `screen height', `screen width', `screen background',
+`image top', `image left' declarations aren't obvious to you, what are you
+doing with this software?<P>
+
+A color table declares color indices (in ascending order from 0) and
+assiciates them with key characters. These characters can later be used in
+raster blocks. As these must be printable and non-whitespace, you can only
+specify 94 colors per icon. Life is like that sometimes.<P>
+
+A raster block is just a block of key characters. It should be sized correctly
+for the `image bits' declaration that leads it.<P>
+
+The `comment' or `plaintext' keywords lead defined GIF89 extension
+record data (the other two GIF89 types, graphics control and application
+block, are not yet supported). You can also say `extension' followed
+by a hexadecimal record type. All of these extension declarations
+must be followed by an extension block, which is terminated by the
+keyword `end' on its own line.<P>
+
+An extension block is a series of text lines, each interpreted as a string of
+bytes to fill an argument block (the terminating newline is stripped). Text
+may include standard C-style octal and hex escapes preceded by a backslash.<P>
+
+All <digits> tokens are interpreted as decimal numerals; <hex-digits>
+tokens are interpreted as two hex digits (a byte). All coordinates are
+zero-origin with the top left corner (0,0). Range checking is weak and
+signedness checking nonexistent; caveat hacker!<P>
+
+In general, the amount of whitespace and order of declarations within a
+header or image block is not significant, except that a raster picture
+must immediately follow its `image bits' bits declaration.<P>
+
+The `include' declaration includes a named GIF as the next image. The global
+color maps of included GIFs are merged with the base table defined by any
+`screen color' declaration. All images of an included multi-image GIF will
+be included in order.<P>
+
+Comments may be preceded with `#' and will be ignored.<P>
+
+<H1>Memory required:</H1>
+
+For the compilation mode, proportional to the size of the input file. For
+dumping, proportional to the line size of the widest GIF.<P>
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Defaults off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-d]
+<DD> Dump the input GIF file(s) into the text form described above.<P>
+
+<DT> [-t]
+<DD> Specify name characters to use when dumping raster blocks. Only
+ valid with -d option.<P>
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Bugs:</H1>
+
+Because there are only 94 characters unambiguously usable for raster blocks,
+an attempt to dump a GIF with a larger color map will fail.<P>
+
+Error checking is rudimentary.<P>
+
+<H1>Example:</H1>
+
+A sample icon file called `sample.ico' is included in the pic directory.<P>
+
+<H1>Author:</H1>
+
+Eric S. Raymond &lt;esr@snark.thyrsus.com&gt;
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/index.html b/giflib-4.1.6/doc/index.html
new file mode 100644
index 0000000..0b62c0c
--- /dev/null
+++ b/giflib-4.1.6/doc/index.html
@@ -0,0 +1,215 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>Introduction to GIFLIB</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+<CENTER><H1>Introduction to GIFLIB</H1></CENTER>
+
+GIFLIB is a package of portable tools and library routines for working
+with GIF images. You can find the latest version at the GIFLIB home
+page <a
+href="http://www.ccil.org/~esr/giflib">http://www.ccil.org/~esr/giflib</a>.<P>
+
+The Graphics Interchange Format(c) specification is the copyrighted
+property of CompuServe Incorporated. GIF(sm) is a service mark
+property of CompuServe Incorporated. As this package existed before
+UniSys's lawyeritis attack of New Years' Day 1995, it is grandfathered
+in under their license terms and you do <em>not</em> have to pay fees
+for using it.<P>
+
+This package has been released under an X Consortium-life freeware
+license. Use and copy as you see fit. If you make useful changes,
+add new tools, or find and fix bugs, please send your mods to the
+maintainers for general distribution.</P>
+
+The util directory includes programs to clip, rotate, scale, and
+position GIF images. It includes an X11 viewer, code to dump GIFs to
+an Epson-compatible printer in graphics mode, and many conversion
+utilities. These are no replacement for an interactive graphics
+editor, but they can be very useful for scripted image generation or
+transformation.<P>
+
+The library includes program-callable entry points for reading and writing
+GIF files, an 8x8 utility font for embedding text in GIFs, and an error
+handler. GIF manipulation can be done at a relatively low level by
+sequential I/O (which automatically does/undoes image compression) or at
+a higher level by slurping an entire GIF into allocated core.<P>
+
+This library speaks both GIF87a and GIF89. The differences between
+GIF87 and GIF89 are minor: in the latter, the interpretation of some
+extension block types is defined. The library never needs to actually
+interpret these, but <a href="giftext.html">giftext</a> notices them.<P>
+
+<H1>Utilities</H1>
+
+Here is a summary of the utilities in this package. If you're looking
+at this page through a web browser, each utility name should be a
+hotlink to HTML documentation.<P>
+
+<H2>Conversion Utilities</H2>
+
+<DL>
+<DT><a href="gif2bgi.html">gif2bgi</a>
+<DD>display GIFs on IBM PC displays using the BGI (Borland) driver
+<DT><a href="gif2epsn.html">gif2epsn</a>
+<DD>dump images saved as GIF files on Epson type printers
+<DT><a href="gif2herc.html">gif2herc</a>
+<DD>display GIFs on IBM PC displays using the Hercules graphic card
+<DT><a href="gif2iris.html">gif2iris</a>
+<DD>display GIFs under SGI NeWs window system
+<DT><a href="gif2ps.html">gif2ps</a>
+<DD>print GIF file on laser printers supporting PostScript
+<DT><a href="gif2rgb.html">gif2rgb</a>
+<DD>convert images saved as GIF to 24-bit RGB image(s)
+<DT><a href="gif2rle.html">gif2rle</a>
+<DD>convert images saved as GIF to RLE (Utah raster toolkit) format
+<DT><a href="gif2x11.html">gif2x11</a>
+<DD>display images saved as GIF files under X window system
+<DT><a href="raw2gif.html">raw2gif</a>
+<DD>convert raw 8-bit image data into GIF files
+<DT><a href="rgb2gif.html">rgb2gif</a>
+<DD>convert 24 bit images to a GIF image using color quantization
+<DT><a href="rle2gif.html">rle2gif</a>
+<DD>convert images saved as RLE (Utah raster toolkit) to GIF format
+</DL>
+
+<H2>Test Pattern Generators</H2>
+
+<DL>
+<DT><a href="gifbg.html">gifbg</a>
+<DD>generate a single-color test pattern GIF
+<DT><a href="gifcolor.html">gifcolor</a>
+<DD>generate color test patterns
+<DT><a href="gifwedge.html">gifwedge</a>
+<DD>create a test GIF image resembling a color monitor test pattern
+</DL>
+
+<H2>Image Manipulation Components</H2>
+
+<DL>
+<DT><a href="gifasm.html">gifasm</a>
+<DD>assemble multiple GIFs into one, or burst a multiple-mage GIF
+<DT><a href="gifclip.html">gifclip</a>
+<DD>clip or crop a GIF image
+<DT><a href="gifclrmp.html">gifclrmp</a>
+<DD>modify GIF image colormaps
+<DT><a href="gifcomb.html">gifcomb</a>
+<DD>combine 2 GIF images of exactly the same size into one
+<DT><a href="giffix.html">giffix</a>
+<DD>clumsily attempts to fix truncated GIF images
+<DT><a href="gifflip.html">gifflip</a>
+<DD>flip GIF image along X or Y axis or rotate by 90 degrees
+<DT><a href="gifinter.html">gifinter</a>
+<DD>convert between interlaced and non interlaced images
+<DT><a href="gifovly.html">gifovly</a>
+<DD>generate one composite GIF from a multiple-image GIF
+<DT><a href="gifpos.html">gifpos</a>
+<DD>change a GIF's screen size or recondition it.
+<DT><a href="gifrotat.html">gifrotat</a>
+<DD>rotate a GIF through any desired angle
+<DT><a href="gifrsize.html">gifrsize</a>
+<DD>resize a GIF by deletion or duplication of bits
+<DT><a href="gifburst.html">gifburst</a>
+<DD>burst a GIF image into subrectangles.
+</DL>
+
+<H2>Report Generators</H2>
+
+<DL>
+<DT><a href="giftext.html">giftext</a>
+<DD>print (text only) general information about a GIF
+<DT><a href="gifhisto.html">gifhisto</a>
+<DD>generate color-frequency histogram from a GIF
+</DL>
+
+<H2>GIF Composition Tools</H2>
+
+<DL>
+<DT><a href="icon2gif.html">icon2gif</a>
+<DD>converter/deconverter to/from an editable text format
+<DT><a href="text2gif.html">text2gif</a>
+<DD>generate GIF images out of regular text in 8x8 font
+<DT><a href="gifinto.html">gifinto</a>
+<DD>end-of-pipe fitting for GIF-processing pipelines
+<DT><a href="gifcompose.html">gifcompose</a>
+<DD>use giflib tools to compose images
+</DL>
+
+<H2>C Code Templates</H2>
+
+<DL>
+<DT><a href="giffiltr.html">giffiltr</a>
+<DD>template code for filtering a GIF sequentially
+<DT><a href="gifspnge.html">gifspnge</a>
+<DD>template code for filtering a GIF with in-core operations
+</DL>
+
+Under MS-DOS, most filters will print the current input scan line number
+(counting up) whenever they read image input, and will print output image line
+number (counting down) when they dump output. Utilities that only read or
+write always print in increasing order. Utilities (like GifPos that only
+change positions) that copy the image as a block of compressed data will print
+nothing --- they cannot identify a scan line number, and are enough faster that
+the feedback to the user doesn't seem necessary.<P>
+
+Some of the utilities require memory on the order of the whole screen, while
+others read one scan line at a time. Each utility HTML file has entry called
+<em>Memory Usage</em> which will be one of:<P>
+
+<DL>
+<DT> Line <DD> memory required is on the order of one scan line
+<DT> Image <DD> proportional to the size of the biggest image in GIF file
+<DT> Screen <DD> proportional to GIF screen size
+</DL>
+
+In all cases a byte is allocated per pixel, so an image of 320 by 200 pixels
+will requires approximately 64k bytes of main memory.<P>
+
+<H1>Library Functions</H1>
+
+The library contains two groups of C functions. One group does sequential
+I/O on the stream-oriented GIF format. The other supports grabbing an
+entire GIF into allocated core, operating on it in core, and then writing
+the modified in-core GIF out to disk.<P>
+
+Unless you are on a 286 or some other very memory-limited machine
+running under DOS, you probably want to use the second group.<P>
+
+Detailed documentation on the library entry points is in <a
+href="gif_lib.html">gif_lib.html</a>. Library error codes are
+described in <a href="liberror.html">liberror.html</a><P>
+
+<H1>The GIF Standard</H1>
+
+The doc subdurector includes flat-ASCII descriptions of <a
+href="gif89.txt">GIF89 format</a> and <a href="lzgif.txt">Lempel-Ziv
+Compression</a>.<P>
+
+<H1>History</H1>
+
+This package was originally written by Gershon Elber <gershon@cs.utah.edu>
+in 1990 on an IBM PC under MS-DOS using Borland Turbo C. He made it portable
+to several UNIX environments.<P>
+
+The 2.1 version featured substantial changes and additions by Eric
+S. Raymond <esr@snark.thyrsus.com>. These included the
+DGifSlurp/EGifSpew function pair for enabling non-sequential
+operations on GIF images and the tools icon2gif, gifovly, gifburst, and
+gifcompose.<P>
+
+The 2.4 version converted all the docs from an idiosyncratic
+plain-text formal to to HTML.<P>
+
+<H1>Package Status</H1>
+
+GIFLIB's current maintainer is Eric S. Raymond. You can find his home
+page at <a href="http://www.ccil.org/esr">http://www.ccil.org/esr</a>.<P>
+
+GIFLIB is not under active development, but bug fixes are being accepted.<P>
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/liberror.html b/giflib-4.1.6/doc/liberror.html
new file mode 100644
index 0000000..35356b3
--- /dev/null
+++ b/giflib-4.1.6/doc/liberror.html
@@ -0,0 +1,140 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>GIFLIB error codes</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>GIFLIB error codes</H1></CENTER>
+
+Errors as reported from the GIF_LIB library are divided to two major
+categoriess: the encoder (errors prefixed by E_GIF_ERR), and the
+decoder (errors prefixed by D_GIF_ERR). This document explains them
+briefly:<P>
+
+<H1>Encoding errors:</H1>
+
+<DL>
+<DT><CODE>E_GIF_ERR_OpenFailed</CODE><DD>
+ Message printed using PrintGifError: "Failed to open given file"
+ IO error result when attempt to open the given GIF file.<P>
+
+<DT><CODE>E_GIF_ERR_WriteFailed</CODE><DD>
+ Message printed using PrintGifError: "Failed to Write to given file"
+ IO error result when attempt to write to the given GIF file.<P>
+
+<DT><CODE>E_GIF_ERR_HasScrnDscr</CODE><DD>
+ Message printed using PrintGifError: "Screen Descriptor already been set"
+ Attempt to write second screen descriptor to same GIF file. GIF file should
+ have exactly one screen descriptor which should be set directly after the
+ file is opened.<P>
+
+<DT><CODE>E_GIF_ERR_HasImagDscr</CODE><DD>
+ Message printed using PrintGifError: "Image Descriptor is still active"
+ Image descriptor should be sent before and image dump, and no second
+ image descriptor should be sent before current image dump ended. This error
+ occurred probably because current image was not complete.<P>
+
+<DT><CODE>E_GIF_ERR_NoColorMap</CODE><DD>
+ Message printed using PrintGifError: "Neither Global Nor Local color map"
+ An image must have either global (screen) or local (image) color map.
+ Neither were given in this case.<P>
+
+<DT><CODE>E_GIF_ERR_DataTooBig</CODE><DD>
+ Message printed using PrintGifError: "#Pixels bigger than Width * Height"
+ The number of pixels dumped for this image is bigger than specified by
+ image Height times image Width.<P>
+
+<DT><CODE>E_GIF_ERR_NotEnoughMem</CODE><DD>
+ Message printed using PrintGifError: "Fail to allocate required memory"
+ Once an attemp is made to open GIF file, special structures are allocated
+ to hold internal data for it. If allocation fails this error is returned.<P>
+
+<DT><CODE>E_GIF_ERR_DiskIsFull</CODE><DD>
+ Message printed using PrintGifError: "Write failed (disk full?)"
+ Writing encoded data failed.<P>
+
+<DT><CODE>E_GIF_ERR_CloseFailed</CODE><DD>
+ Message printed using PrintGifError: "Failed to close given file"
+ Closing file failed.<P>
+
+<DT><CODE> E_GIF_ERR_NotWriteable</CODE><DD>
+ Message printed using PrintGifError: "Given file was not opened for write"
+ GIF files can be opened both for read (DGIF part of library) and write
+ (EGIF part of library). This error occurs when a file is opened for read
+ (using DGIF) is given to one of the encoding (EGIF) routines.<P>
+</DL>
+
+<H1>Encoding errors:</H1>
+
+<DL>
+<DT><CODE>D_GIF_ERR_OpenFailed</CODE><DD>
+ Message printed using PrintGifError: "Failed to open given file"
+ IO error result when attempt to open the given GIF file.<P>
+
+<DT><CODE>D_GIF_ERR_ReadFailed</CODE><DD>
+ Message printed using PrintGifError: "Failed to Read from given file"
+ IO error result when attempt to write to the given GIF file.<P>
+
+<DT><CODE>D_GIF_ERR_Notgif-file$</CODE><DD>
+ Message printed using PrintGifError: "Given file is NOT GIF file"
+ GIF files should have special stamp identifies them as such, If that stamp
+ is not found, this error is issued.<P>
+
+<DT><CODE>D_GIF_ERR_NoScrnDscr</CODE><DD>
+ Message printed using PrintGifError: "No Screen Descriptor detected"
+ Each GIF file should have screen descriptor in its header. This error will
+ be generated if no such descriptor was found.<P>
+
+<DT><CODE>D_GIF_ERR_NoImagDscr</CODE><DD>
+ Message printed using PrintGifError: "No Image Descriptor detected"
+ Each image should have image descriptor in its header. This error will
+ be generated if no such descriptor was found.<P>
+
+<DT><CODE>D_GIF_ERR_NoColorMap</CODE><DD>
+ Message printed using PrintGifError: "Neither Global Nor Local color map"
+ An image must have either global (screen) or local (image) color map.
+ Neither were given in this case.<P>
+
+<DT><CODE>D_GIF_ERR_WrongRecord</CODE><DD>
+ Message printed using PrintGifError: "Wrong record type detected"
+ Each record in GIF file has special identifier, in its header. If the
+ record has wrong identifier, this error is generated.<P>
+
+<DT><CODE>D_GIF_ERR_DataTooBig</CODE><DD>
+ Message printed using PrintGifError: "#Pixels bigger than Width * Height"
+ The number of pixels dumped for this image is bigger than specified by
+ image Height times image Width.<P>
+
+<DT><CODE>D_GIF_ERR_NotEnoughMem</CODE><DD>
+ Message printed using PrintGifError: "Fail to allocate required memory"
+ Once an attemp is made to open GIF file, special structures are allocated
+ to hold internal data for it. If allocation fails this error is returned.<P>
+
+<DT><CODE>D_GIF_ERR_CloseFailed</CODE><DD>
+ Message printed using PrintGifError: "Failed to close given file"
+ Closing file failed.<P>
+
+<DT><CODE>D_GIF_ERR_NotReadable</CODE><DD>
+ Message printed using PrintGifError: "Given file was not opened for read"
+ GIF files can be opened both for read (DGIF part of library) and write
+ (EGIF part of library). This error occurs when a file is opened for write
+ (using EGIF) is given to one of the decoding (DGIF) routines.<P>
+
+<DT><CODE>D_GIF_ERR_ImageDefect</CODE><DD>
+ Message printed using PrintGifError: "Image is defective, decoding aborted"
+ This error is generated, once the decoding failed - probably image is
+ defect.<P>
+
+<DT><CODE>D_GIF_ERR_EOFTooSoon</CODE><DD>
+ Message printed using PrintGifError: "Image EOF detected, before image complete"
+ This error is generated once EOF code is detected in encoded image before
+ all the pixels (Width * Height) has be decoded.<P>
+</DL>
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/lzgif.txt b/giflib-4.1.6/doc/lzgif.txt
new file mode 100644
index 0000000..526b3ff
--- /dev/null
+++ b/giflib-4.1.6/doc/lzgif.txt
@@ -0,0 +1,123 @@
+LZW compression used to encode/decode a GIF file by Bob Montgomery [73357,3140]
+
+ENCODER
+Consider the following input data stream in a 4 color (A, B, C, D) system.
+We will build a table of codes which represent strings of colors. Each time
+we find a new string, we will give it the next code, and break it into a
+prefix string and a suffix color. The symbols \ or --- represent the prefix
+string, and / represents the suffix color. The first 4 entries in the table
+are the 4 colors with codes 0 thru 3, each of which represents a single
+color. The next 2 codes (4 and 5) are the clear code and the end of image
+code. The first available code to represent a string of colors is 6. Each
+time we find a new code, we will send the prefix for that code to the
+output data stream.
+
+A B A B A B A B B B A B A B A A C D A C D A D C A B A A A B A B .....
+\/\/---/-----/\/---/-------/\/ \/ \ /\/---/---/\ /\/-----/---/---/
+6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Code
+ 6 8 10 8 14 16 8 13 7 Prefix
+
+The encoder table is built from input data stream. Always start with the
+suffix of last code, and keep getting colors until you have a new
+combination.
+
+Color Code Prefix Suffix String Output
+ A 0 -
+ B 1 -
+ C 2 -
+ D 3 -
+Clear 4 -
+End 5 -
+ A \ A A First color is a special case.
+ B / \ 6 A B AB A
+ A | / 7 B A BA B
+ B |
+ A / | 8 6 A ABA 6
+ B |
+ A |
+ B \ / 9 8 B ABAB 8
+ B / | 10 B B BB B
+ B |
+ A | / 11 10 A BBA 10
+ B |
+ A |
+ B |
+ A / \ 12 9 A ABABA 9
+ A \ / 13 A A AA A
+ C / \ 14 A C AC A
+ D \ / 15 C D CD C
+ A / | 16 D A DA D
+ C |
+ D | / 17 14 D ACD 14
+ A |
+ D / \ 18 16 D DAD 16
+ C \ / 19 D C DC D
+ A / | 20 C A CA C
+ B |
+ A |
+ A | / 21 8 A ABAA 8
+ A |
+ B / | 22 13 B AAB 13
+ A |
+ B / 23 7 B BAB 7
+
+The resultant output stream is: A B 6 8 B 10 9 A A C D 14 16 D C 8 ....
+The GIF encoder starts with a code length of 2+1=3 bits for 4 colors, so
+when the code reaches 8 we will have to increase the code size to 4 bits.
+Similarly, when the code gets to 16 we will have to increse the code size
+to 5 bits, etc. If the code gets to 13 bits, we send a clear code and start
+over. See GIFENCOD.GIF for a flow diagram of the encoding process. This
+uses a tree method to search if a new string is already in the table, which
+is much simpler, faster, and easier to understand than hashing.
+
+===========================================================================
+
+DECODER
+
+We will now see if we can regenerate the original data stream and duplicate
+the table looking only at the output data stream generated by the encoder
+on the previous page. The output data stream is:
+
+ A B 6 8 B 10 9 A A C D 14 16 D C 8 ....
+
+The docoding process is harder to see, but easier to implement, than the
+encoding process. The data is taken in pairs, and a new code is assigned to
+each pair. The prefix is the left side of the pair, and the suffix is the
+color that the right side of the pair decomposes to from the table. The
+decomposition is done by outputing the suffix of the code, and using the
+prefix as the new code. The process repeats until the prefix is a single
+color, and it is output too. The output of the decomposition is pushed onto
+a stack, and then poped off the stack to the display, which restores the
+original order that the colors were seen by the encoder. We will go thru
+the first few entries in detail, which will hopefully make the process
+clearer.
+ The first pair is (A B), so the prefix of code 6 is A and the suffix
+is B, and 6 represents the string AB. The color A is sent to the display.
+ The 2nd pair is (B 6), so the prefix of code 7 is B and the suffix is
+the the last color in the decomposition of code 6. Code 6 decomposes into
+BA, so code 7 = BA, and has a suffix A. The color B is sent to the display.
+ The 3rd pair is (6 8) and the next code is 8. How can we decompose 8.
+We know that the prefix of code 8 is 6, but we don't know the suffix. The
+answer is that we use the suffix of the prefix code; A in this case since
+the suffix of 6 is A. Thus, code 8 = ABA and has a suffix A. We decompose 6
+to get BA, which becomes AB when we pop it off the stack to the display.
+ The 4th pair is (8 B), so code 9 has a prefix of 8 and a suffix of B,
+and code 9 = ABAB. We output ABA to the stack, and pop it off to the
+display as ABA.
+ The 5th pair is (B 10) and the next code is 10. The prefix of code 10
+is B and the suffix is B (since the prefix is B). Code 10 = BB, and we
+output the prefix B to the display.
+ The 6th pair is (10 9) and the next code is 11. Thus the prefix of
+code 11 is 10 and the suffix is the last color in the decomposition of 9,
+which is A. Thus code 11 = BBA, And we output BB to the display.
+ So far, we have output the correct colors stream A B AB ABA B BB to
+the display, and have duplicated the codes 6 thru 11 in the encoder table.
+This process is repeated for the whole data stream to reconstruct the
+original color stream and build a table identical to the one built by the
+encoder. We start the table with codes 0-5 representing the 4 colors, the
+clear code, and the end code. When we get to code 8, we must increse the
+code size to 5 bits, etc. See GIFDECOD.GIF for a flow diagram of the
+decoding process.
+
+I Hope this helps take some of the mystery out of LZW compression, which is
+really quite easy once you 'see' it. Bob Montgomery
diff --git a/giflib-4.1.6/doc/raw2gif.html b/giflib-4.1.6/doc/raw2gif.html
new file mode 100644
index 0000000..5870ba5
--- /dev/null
+++ b/giflib-4.1.6/doc/raw2gif.html
@@ -0,0 +1,60 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>raw2gif</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>raw2gif</H1></CENTER>
+
+A program to convert RAW image data into GIF files. Only one image can be
+handled. The RAW image file is assumed to hold one pixel color in one byte,
+and therefore the file size must be Width times Height as specified by the
+-s option below.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+raw2gif [-q] -s Width Height [-p ColorMapFile] [-h] RawFile
+</pre>
+
+If no RawFile is given, Raw2Gif will try to read RAW data from stdin.
+The generated GIF File is dumped to stdout.<P>
+
+<H1>Memory required:</H1>
+
+Line.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Defaults off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> -s Width Height
+<DD> the dimensions of the image MUST be specified in the
+ command line. The RAW image file size must be exactly Width times Height
+ bytes (each byte is one pixel color).<P>
+
+<DT> [-p ColorMapFile]
+<DD> Color map to load for given RAW image. This file has
+ 4 integers in line (ColorIndex Red Green Blue), and the ColorIndex is
+ in order starting from 1. See GifClrMp, which can also use/create these
+ bitmap files. If no color map is specified, uses the EGA 16 color pallete
+ as default color map.<P>
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/rgb2gif.html b/giflib-4.1.6/doc/rgb2gif.html
new file mode 100644
index 0000000..e21b3dc
--- /dev/null
+++ b/giflib-4.1.6/doc/rgb2gif.html
@@ -0,0 +1,59 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>rgb2gif</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>rgb2gif</H1></CENTER>
+
+A program to convert 24 bit images to a GIF image using color quantization.<P>
+
+
+<H1>Usage:</H1>
+
+<pre>
+rgb2gif [-q] [-c #Colors] [-1] -s Width Height [-h] RGBFile
+</pre>
+
+If no RGBFile is given, RGB2Gif will try to read a GIF file from stdin.<P>
+
+<H1>Memory required:</H1>
+
+Screen.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Defaulte off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-c #Colors]
+<DD> Specifies number of colors to use, in bits per pixels, so
+ '-c 8' specifies actually 256 colors (maximum and default).<P>
+
+<DT> [-1]
+<DD> Only one file in the format of RGBRGB... triplets (Each of R, G, B
+ is a byte) is read from input. This file size is 3 * Width * Height (see
+ '-s' below. If stdin is used for input, this option is implicitly applied.
+ The default (if not '-1') is 3 files with the names RGBFile.R, RGBFile.G,
+ RGBFile.B, each of which is Width * Height bytes.<P>
+
+<DT> [-s Width Height]
+<DD> Specifies the size of the image to read.<P>
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above.<P>
+</DL>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/rle2gif.html b/giflib-4.1.6/doc/rle2gif.html
new file mode 100644
index 0000000..8d56206
--- /dev/null
+++ b/giflib-4.1.6/doc/rle2gif.html
@@ -0,0 +1,58 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>rle2gif</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>rle2gif</H1></CENTER>
+
+A program to convert images saved as RLE (Utah raster toolkit) to GIF
+format.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+rle2Gif [-q] [-c #Colors] [-h] RleFile
+</pre>
+
+If no RleFile is given, Rle2Gif will try to read an Rle file from stdin.<P>
+
+<H1>Memory required:</H1>
+
+Screen.
+
+<H1>Options:</H1>
+
+<DL>
+<DT> [-q]
+<DD> Quiet mode. Defaults off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT> [-c #Colors]
+<DD> Select size of color map in the output Gif file. #Colors
+ should be given as the based 2 log of number of colors. Default is 8
+ which is 256 colors, and which is also the maximum.
+
+<DT> [-h]
+<DD> Print one line of command line help, similar to Usage above..<P>
+</DL>
+
+<H1>Notes:</H1>
+
+As the RLE format allows full 24 bits per pixel (8 per primary color)
+Colors must be quantized to the number of colors as set by the [-c]
+option, above. This process is quite slow. See the quantize.c file
+in the lib directory for the code for this quantization algorithm
+(median cut).<P>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>
diff --git a/giflib-4.1.6/doc/text2gif.html b/giflib-4.1.6/doc/text2gif.html
new file mode 100644
index 0000000..f44d4fc
--- /dev/null
+++ b/giflib-4.1.6/doc/text2gif.html
@@ -0,0 +1,73 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>text2gif</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+</HEAD>
+<BODY>
+Go to <a href="index.html">index page</a>.
+
+<CENTER><H1>text2gif</H1></CENTER>
+
+A program to generate GIF images out of regular text. Text can be one line
+or multi-line, and is converted using 8 by 8 fixed font.<P>
+
+<H1>Usage:</H1>
+
+<pre>
+text2gif [-q] [-s ClrMapSize] [-f FGClr] [-c R G B] [-t "Text"] [-h]
+</pre>
+
+This program reads stdin if no text is provided on the command line (-t),
+and will dump the created GIF file to stdout.<P>
+
+<H1>Memory required:</H1>
+
+Line.
+
+<H1>Options:</H1>
+
+<DT> [-q]
+<DD> Quiet mode. Defaults off on MSDOS, on under UNIX. Controls printout
+ of running scan lines. Use -q- to invert.<P>
+
+<DT>[-s ClrMapSize]
+<DD>Explicitly defines the size of the color map of the
+ resulting gif image. Usually the image will be bicolor with fg as color
+ 1, unless [-f] is explicitly given in case the color map size will be
+ big enough to hold it. However it is sometimes convenient to set the
+ color map size to certain size while the fg color is small mainly so
+ this image may be merged with another (images must match color map size).<P>
+
+<DT>[-f FG]
+<DD> Select foreground index (background is always 0). By default
+ it is one and therefore the image result is bicolored.
+ if FG is set to n then color map will be created with 2^k entries where
+ 2^k > n for minimum k, assuming k <= 8. This color map will be all zeros
+ except this forground index. This option is useful if this text image
+ should be integrated into other image colormap using their colors.<P>
+
+<DT> [-c R G B]
+<DD> The color to use as the foreground color. White by default.<P>
+
+<DT> [-t "Text"]
+<DD> One line of text can be provided on the command
+ line. Note you must encapsulate the Text within quotes if it has spaces
+ (The quotes themselves are not treated as part of the text). If no -t
+ option is provided, stdin is read until end of file.<P>
+
+<DT> [-h]
+<DD> Print one line command line help, similar to Usage above.<P>
+
+<H1>Notes:</H1>
+
+There is a hardcoded limit of 100 the number of lines.<P>
+
+<H1>Author:</H1>
+
+Gershon Elber
+
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>