xref: /aosp_15_r20/external/giflib/doc/intro.xml (revision 324bb76b8d05e2a05aa88511fff61cf3f9ca5892)
1*324bb76bSAndroid Build Coastguard Worker<?xml version="1.0" encoding="ISO-8859-1"?>
2*324bb76bSAndroid Build Coastguard Worker<!DOCTYPE article PUBLIC
3*324bb76bSAndroid Build Coastguard Worker   "-//OASIS//DTD DocBook XML V4.1.2//EN"
4*324bb76bSAndroid Build Coastguard Worker   "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
5*324bb76bSAndroid Build Coastguard Worker<!ENTITY homepage      "http://catb.org/~esr/">
6*324bb76bSAndroid Build Coastguard Worker<!ENTITY email         "[email protected]">
7*324bb76bSAndroid Build Coastguard Worker]>
8*324bb76bSAndroid Build Coastguard Worker<article><title>Introduction to GIFLIB</title>
9*324bb76bSAndroid Build Coastguard Worker
10*324bb76bSAndroid Build Coastguard Worker<articleinfo>
11*324bb76bSAndroid Build Coastguard Worker
12*324bb76bSAndroid Build Coastguard Worker<author>
13*324bb76bSAndroid Build Coastguard Worker  <firstname>Eric</firstname>
14*324bb76bSAndroid Build Coastguard Worker  <othername>Steven</othername>
15*324bb76bSAndroid Build Coastguard Worker  <surname>Raymond</surname>
16*324bb76bSAndroid Build Coastguard Worker  <affiliation>
17*324bb76bSAndroid Build Coastguard Worker    <orgname><ulink url="&homepage;">
18*324bb76bSAndroid Build Coastguard Worker    Thyrsus Enterprises</ulink></orgname>
19*324bb76bSAndroid Build Coastguard Worker    <address>
20*324bb76bSAndroid Build Coastguard Worker    <email>&email;</email>
21*324bb76bSAndroid Build Coastguard Worker    </address>
22*324bb76bSAndroid Build Coastguard Worker  </affiliation>
23*324bb76bSAndroid Build Coastguard Worker</author>
24*324bb76bSAndroid Build Coastguard Worker<copyright>
25*324bb76bSAndroid Build Coastguard Worker  <year>2012</year>
26*324bb76bSAndroid Build Coastguard Worker  <holder role="mailto:&email;">Eric S. Raymond</holder>
27*324bb76bSAndroid Build Coastguard Worker</copyright>
28*324bb76bSAndroid Build Coastguard Worker
29*324bb76bSAndroid Build Coastguard Worker</articleinfo>
30*324bb76bSAndroid Build Coastguard Worker
31*324bb76bSAndroid Build Coastguard Worker<para>GIFLIB is a package of portable tools and library routines for
32*324bb76bSAndroid Build Coastguard Workerworking with GIF images.</para>
33*324bb76bSAndroid Build Coastguard Worker
34*324bb76bSAndroid Build Coastguard Worker<para>The Graphics Interchange Format(c) specification is the copyrighted
35*324bb76bSAndroid Build Coastguard Workerproperty of CompuServe Incorporated.  GIF(sm) is a service mark
36*324bb76bSAndroid Build Coastguard Workerproperty of CompuServe Incorporated.</para>
37*324bb76bSAndroid Build Coastguard Worker
38*324bb76bSAndroid Build Coastguard Worker<para>This package has been released under an X Consortium-like open-source
39*324bb76bSAndroid Build Coastguard Workerlicense.  Use and copy as you see fit.  If you make useful changes,
40*324bb76bSAndroid Build Coastguard Workeradd new tools, or find and fix bugs, please send your mods to the
41*324bb76bSAndroid Build Coastguard Workermaintainers for general distribution.</para>
42*324bb76bSAndroid Build Coastguard Worker
43*324bb76bSAndroid Build Coastguard Worker<para>The util directory includes programs to clip, rotate, scale, and
44*324bb76bSAndroid Build Coastguard Workerposition GIF images.  These are no replacement for an interactive graphics
45*324bb76bSAndroid Build Coastguard Workereditor, but they can be very useful for scripted image generation or
46*324bb76bSAndroid Build Coastguard Workertransformation.</para>
47*324bb76bSAndroid Build Coastguard Worker
48*324bb76bSAndroid Build Coastguard Worker<para>The library includes program-callable entry points for reading and writing
49*324bb76bSAndroid Build Coastguard WorkerGIF files, an 8x8 utility font for embedding text in GIFs, and an error
50*324bb76bSAndroid Build Coastguard Workerhandler.  GIF manipulation can be done at a relatively low level by
51*324bb76bSAndroid Build Coastguard Workersequential I/O (which automatically does/undoes image compression) or at
52*324bb76bSAndroid Build Coastguard Workera higher level by slurping an entire GIF into allocated core.</para>
53*324bb76bSAndroid Build Coastguard Worker
54*324bb76bSAndroid Build Coastguard Worker<para>This library speaks both GIF87a and GIF89.  The differences
55*324bb76bSAndroid Build Coastguard Workerbetween GIF87 and GIF89 are minor: in the latter, the interpretation
56*324bb76bSAndroid Build Coastguard Workerof some extension block types is defined.  The library never needs to
57*324bb76bSAndroid Build Coastguard Workeractually interpret these, but <ulink
58*324bb76bSAndroid Build Coastguard Workerurl="giftext.html">giftext</ulink> notices them and there are
59*324bb76bSAndroid Build Coastguard Workerfunctions in the API to read and modify them.</para>
60*324bb76bSAndroid Build Coastguard Worker
61*324bb76bSAndroid Build Coastguard Worker<sect1><title>Utilities</title>
62*324bb76bSAndroid Build Coastguard Worker
63*324bb76bSAndroid Build Coastguard Worker<para>Here is a summary of the utilities in this package.  If you're looking
64*324bb76bSAndroid Build Coastguard Workerat this page through a web browser, each utility name should be a
65*324bb76bSAndroid Build Coastguard Workerhotlink to HTML documentation.</para>
66*324bb76bSAndroid Build Coastguard Worker
67*324bb76bSAndroid Build Coastguard Worker<para>Most utilities have a -v (verbose) option that will cause them to print
68*324bb76bSAndroid Build Coastguard Workerthe current input scan line number (counting up) whenever they read
69*324bb76bSAndroid Build Coastguard Workerimage input, and will print output image line number (counting down)
70*324bb76bSAndroid Build Coastguard Workerwhen they dump output.  Utilities that only read or write always print
71*324bb76bSAndroid Build Coastguard Workerin increasing order.</para>
72*324bb76bSAndroid Build Coastguard Worker
73*324bb76bSAndroid Build Coastguard Worker<!--
74*324bb76bSAndroid Build Coastguard WorkerNote: the giflib.1 man page is deliberately omitted from the following
75*324bb76bSAndroid Build Coastguard Workerlist of references. It's meant to be seen through man(1) only as part
76*324bb76bSAndroid Build Coastguard Workerof a local installation of the tools.
77*324bb76bSAndroid Build Coastguard Worker-->
78*324bb76bSAndroid Build Coastguard Worker
79*324bb76bSAndroid Build Coastguard Worker<sect2><title>Conversion Utilities</title>
80*324bb76bSAndroid Build Coastguard Worker
81*324bb76bSAndroid Build Coastguard Worker<variablelist>
82*324bb76bSAndroid Build Coastguard Worker<varlistentry>
83*324bb76bSAndroid Build Coastguard Worker<term><ulink url="gif2rgb.html">gif2rgb</ulink></term>
84*324bb76bSAndroid Build Coastguard Worker<listitem>
85*324bb76bSAndroid Build Coastguard Worker<para>convert images saved as GIF to 24-bit RGB image(s) or vice-versa</para>
86*324bb76bSAndroid Build Coastguard Worker</listitem>
87*324bb76bSAndroid Build Coastguard Worker</varlistentry>
88*324bb76bSAndroid Build Coastguard Worker</variablelist>
89*324bb76bSAndroid Build Coastguard Worker
90*324bb76bSAndroid Build Coastguard Worker</sect2>
91*324bb76bSAndroid Build Coastguard Worker<sect2><title>Image Manipulation Components</title>
92*324bb76bSAndroid Build Coastguard Worker
93*324bb76bSAndroid Build Coastguard Worker<variablelist>
94*324bb76bSAndroid Build Coastguard Worker<varlistentry>
95*324bb76bSAndroid Build Coastguard Worker<term><ulink url="gifclrmp.html">gifclrmp</ulink></term>
96*324bb76bSAndroid Build Coastguard Worker<listitem>
97*324bb76bSAndroid Build Coastguard Worker<para>modify GIF image colormaps</para>
98*324bb76bSAndroid Build Coastguard Worker</listitem>
99*324bb76bSAndroid Build Coastguard Worker</varlistentry>
100*324bb76bSAndroid Build Coastguard Worker<varlistentry>
101*324bb76bSAndroid Build Coastguard Worker<term><ulink url="giffix.html">giffix</ulink></term>
102*324bb76bSAndroid Build Coastguard Worker<listitem>
103*324bb76bSAndroid Build Coastguard Worker<para>clumsily attempts to fix truncated GIF images</para>
104*324bb76bSAndroid Build Coastguard Worker</listitem>
105*324bb76bSAndroid Build Coastguard Worker</varlistentry>
106*324bb76bSAndroid Build Coastguard Worker</variablelist>
107*324bb76bSAndroid Build Coastguard Worker
108*324bb76bSAndroid Build Coastguard Worker</sect2>
109*324bb76bSAndroid Build Coastguard Worker<sect2><title>Report Generators</title>
110*324bb76bSAndroid Build Coastguard Worker
111*324bb76bSAndroid Build Coastguard Worker<variablelist>
112*324bb76bSAndroid Build Coastguard Worker<varlistentry>
113*324bb76bSAndroid Build Coastguard Worker<term><ulink url="giftext.html">giftext</ulink></term>
114*324bb76bSAndroid Build Coastguard Worker<listitem>
115*324bb76bSAndroid Build Coastguard Worker<para>print (text only) general information about a GIF</para>
116*324bb76bSAndroid Build Coastguard Worker</listitem>
117*324bb76bSAndroid Build Coastguard Worker</varlistentry>
118*324bb76bSAndroid Build Coastguard Worker</variablelist>
119*324bb76bSAndroid Build Coastguard Worker
120*324bb76bSAndroid Build Coastguard Worker</sect2>
121*324bb76bSAndroid Build Coastguard Worker<sect2><title>GIF Composition Tools</title>
122*324bb76bSAndroid Build Coastguard Worker
123*324bb76bSAndroid Build Coastguard Worker<variablelist>
124*324bb76bSAndroid Build Coastguard Worker<varlistentry>
125*324bb76bSAndroid Build Coastguard Worker<term><ulink url="gifbuild.html">gifbuild</ulink></term>
126*324bb76bSAndroid Build Coastguard Worker<listitem>
127*324bb76bSAndroid Build Coastguard Worker<para>converter/deconverter to/from an editable text format</para>
128*324bb76bSAndroid Build Coastguard Worker</listitem>
129*324bb76bSAndroid Build Coastguard Worker</varlistentry>
130*324bb76bSAndroid Build Coastguard Worker<varlistentry>
131*324bb76bSAndroid Build Coastguard Worker<term><ulink url="giftool.html">giftool</ulink></term>
132*324bb76bSAndroid Build Coastguard Worker<listitem>
133*324bb76bSAndroid Build Coastguard Worker<para>GIF transformation tool</para>
134*324bb76bSAndroid Build Coastguard Worker</listitem>
135*324bb76bSAndroid Build Coastguard Worker</varlistentry>
136*324bb76bSAndroid Build Coastguard Worker</variablelist>
137*324bb76bSAndroid Build Coastguard Worker
138*324bb76bSAndroid Build Coastguard Worker</sect2>
139*324bb76bSAndroid Build Coastguard Worker<sect2><title>Obsolete utilities</title>
140*324bb76bSAndroid Build Coastguard Worker
141*324bb76bSAndroid Build Coastguard Worker<para>These are used for testing by the GFLIB developers and no longer
142*324bb76bSAndroid Build Coastguard Workerinstalled by a normal build.</para>
143*324bb76bSAndroid Build Coastguard Worker
144*324bb76bSAndroid Build Coastguard Worker<variablelist>
145*324bb76bSAndroid Build Coastguard Worker<varlistentry>
146*324bb76bSAndroid Build Coastguard Worker<term><ulink url="gifbg.html">gifbg</ulink></term>
147*324bb76bSAndroid Build Coastguard Worker<listitem>
148*324bb76bSAndroid Build Coastguard Worker<para>generate a single-color test pattern GIF</para>
149*324bb76bSAndroid Build Coastguard Worker</listitem>
150*324bb76bSAndroid Build Coastguard Worker</varlistentry>
151*324bb76bSAndroid Build Coastguard Worker<varlistentry>
152*324bb76bSAndroid Build Coastguard Worker<term><ulink url="gifcolor.html">gifcolor</ulink></term>
153*324bb76bSAndroid Build Coastguard Worker<listitem>
154*324bb76bSAndroid Build Coastguard Worker<para>generate color test patterns</para>
155*324bb76bSAndroid Build Coastguard Worker</listitem>
156*324bb76bSAndroid Build Coastguard Worker</varlistentry>
157*324bb76bSAndroid Build Coastguard Worker<varlistentry>
158*324bb76bSAndroid Build Coastguard Worker<term><ulink url="gifwedge.html">gifwedge</ulink></term>
159*324bb76bSAndroid Build Coastguard Worker<listitem>
160*324bb76bSAndroid Build Coastguard Worker<para>create a test GIF image resembling a color monitor test pattern</para>
161*324bb76bSAndroid Build Coastguard Worker</listitem>
162*324bb76bSAndroid Build Coastguard Worker</varlistentry>
163*324bb76bSAndroid Build Coastguard Worker<varlistentry>
164*324bb76bSAndroid Build Coastguard Worker<term><ulink url="gifhisto.html">gifhisto</ulink></term>
165*324bb76bSAndroid Build Coastguard Worker<listitem>
166*324bb76bSAndroid Build Coastguard Worker<para>generate color-frequency histogram from a GIF</para>
167*324bb76bSAndroid Build Coastguard Worker</listitem>
168*324bb76bSAndroid Build Coastguard Worker</varlistentry>
169*324bb76bSAndroid Build Coastguard Worker<varlistentry>
170*324bb76bSAndroid Build Coastguard Worker<term><ulink url="gifecho.html">gifecho</ulink></term>
171*324bb76bSAndroid Build Coastguard Worker<listitem>
172*324bb76bSAndroid Build Coastguard Worker<para>generate GIF images out of regular text in 8x8 font</para>
173*324bb76bSAndroid Build Coastguard Worker</listitem>
174*324bb76bSAndroid Build Coastguard Worker</varlistentry>
175*324bb76bSAndroid Build Coastguard Worker<varlistentry>
176*324bb76bSAndroid Build Coastguard Worker<term><ulink url="gifinto.html">gifinto</ulink></term>
177*324bb76bSAndroid Build Coastguard Worker<listitem>
178*324bb76bSAndroid Build Coastguard Worker<para>end-of-pipe fitting for GIF-processing pipelines</para>
179*324bb76bSAndroid Build Coastguard Worker</listitem>
180*324bb76bSAndroid Build Coastguard Worker</varlistentry>
181*324bb76bSAndroid Build Coastguard Worker</variablelist>
182*324bb76bSAndroid Build Coastguard Worker
183*324bb76bSAndroid Build Coastguard Worker
184*324bb76bSAndroid Build Coastguard Worker</sect2>
185*324bb76bSAndroid Build Coastguard Worker</sect1>
186*324bb76bSAndroid Build Coastguard Worker<sect1><title>Library Functions</title>
187*324bb76bSAndroid Build Coastguard Worker
188*324bb76bSAndroid Build Coastguard Worker<para>The library contains two groups of C functions.  One group does
189*324bb76bSAndroid Build Coastguard Workersequential I/O on the stream-oriented GIF format.  The other supports
190*324bb76bSAndroid Build Coastguard Workergrabbing an entire GIF into allocated core, operating on it in core,
191*324bb76bSAndroid Build Coastguard Workerand then writing the modified in-core GIF out to disk.</para>
192*324bb76bSAndroid Build Coastguard Worker
193*324bb76bSAndroid Build Coastguard Worker<para>Unless you are on extremely memory-limited machine, you probably want
194*324bb76bSAndroid Build Coastguard Workerto use the second group.</para>
195*324bb76bSAndroid Build Coastguard Worker
196*324bb76bSAndroid Build Coastguard Worker<para>Detailed documentation on the library entry points is in <ulink
197*324bb76bSAndroid Build Coastguard Workerurl="gif_lib.html">gif_lib.html</ulink>.</para>
198*324bb76bSAndroid Build Coastguard Worker
199*324bb76bSAndroid Build Coastguard Worker</sect1>
200*324bb76bSAndroid Build Coastguard Worker<sect1><title>The GIF Standard</title>
201*324bb76bSAndroid Build Coastguard Worker
202*324bb76bSAndroid Build Coastguard Worker<para>The doc subdirectory includes an <ulink
203*324bb76bSAndroid Build Coastguard Workerurl="gifstandard/GIF89a.html">HTML presentation of the GIF
204*324bb76bSAndroid Build Coastguard Workerstandard</ulink>; an <ulink url="gifstandard/
205*324bb76bSAndroid Build Coastguard WorkerLZW-and-GIF-explained.html">explanation of Lempel-Ziv
206*324bb76bSAndroid Build Coastguard Workercompression</ulink>, and the original flat-ASCII description of <ulink
207*324bb76bSAndroid Build Coastguard Workerurl="gifstandard/gif89.txt">GIF89 format</ulink> . For historical
208*324bb76bSAndroid Build Coastguard Workercompleteness, we also include a copy of the <ulink
209*324bb76bSAndroid Build Coastguard Workerurl="gifstandard/gif87.txt">GIF87 standard.</ulink></para>
210*324bb76bSAndroid Build Coastguard Worker
211*324bb76bSAndroid Build Coastguard Worker<para>You can also read a <ulink url="whatsinagif/index.html">
212*324bb76bSAndroid Build Coastguard Workerdetailed narrative description</ulink> of how GIFs are laid out.  It
213*324bb76bSAndroid Build Coastguard Workerclarifies some points on which the standard is obscure.</para>
214*324bb76bSAndroid Build Coastguard Worker
215*324bb76bSAndroid Build Coastguard Worker</sect1>
216*324bb76bSAndroid Build Coastguard Worker<sect1><title>Package Status</title>
217*324bb76bSAndroid Build Coastguard Worker
218*324bb76bSAndroid Build Coastguard Worker<para>GIFLIB's current maintainer is Eric S. Raymond.  You can find his home
219*324bb76bSAndroid Build Coastguard Workerpage at <ulink url="&homepage;">&homepage;</ulink>.</para>
220*324bb76bSAndroid Build Coastguard Worker
221*324bb76bSAndroid Build Coastguard Worker<para>GIFLIB is not under active development, but bug fixes are being
222*324bb76bSAndroid Build Coastguard Workeraccepted.</para>
223*324bb76bSAndroid Build Coastguard Worker
224*324bb76bSAndroid Build Coastguard Worker</sect1>
225*324bb76bSAndroid Build Coastguard Worker</article>
226