xref: /aosp_15_r20/external/giflib/doc/gifstandard/GIF89a.html (revision 324bb76b8d05e2a05aa88511fff61cf3f9ca5892)
1*324bb76bSAndroid Build Coastguard Worker<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2*324bb76bSAndroid Build Coastguard Worker<link rel="stylesheet" type="text/css" href="main.css">
3*324bb76bSAndroid Build Coastguard Worker<link rel="stylesheet" type="text/css" href="gif89a.css">
4*324bb76bSAndroid Build Coastguard Worker<script type="text/javascript" src="gif89a.js"></script>
5*324bb76bSAndroid Build Coastguard Worker<title>Graphics Interchange Format Version 89a</title>
6*324bb76bSAndroid Build Coastguard Worker</head>
7*324bb76bSAndroid Build Coastguard Worker<body><h1>Graphics Interchange Format Version 89a</h1>
8*324bb76bSAndroid Build Coastguard Worker<!-- source best viewed with tab width 4 -->
9*324bb76bSAndroid Build Coastguard Worker
10*324bb76bSAndroid Build Coastguard Worker<div id="notes">
11*324bb76bSAndroid Build Coastguard Worker
12*324bb76bSAndroid Build Coastguard Worker<p>The document below is a copy of <a
13*324bb76bSAndroid Build Coastguard Workerhref="http://www.w3.org/Graphics/GIF/spec-gif89a.txt">http://www.w3.org/Graphics/GIF/spec-gif89a.txt</a>,
14*324bb76bSAndroid Build Coastguard Workerreformatted into HTML to make it easier to read and print.</p>
15*324bb76bSAndroid Build Coastguard Worker
16*324bb76bSAndroid Build Coastguard Worker<p>Notable changes:</p>
17*324bb76bSAndroid Build Coastguard Worker
18*324bb76bSAndroid Build Coastguard Worker<ul>
19*324bb76bSAndroid Build Coastguard Worker<li>moved chapter "Cover Sheet for the GIF89a Specification" from the
20*324bb76bSAndroid Build Coastguard Worker    beginning to the end</li>
21*324bb76bSAndroid Build Coastguard Worker<li>removed page numbers</li>
22*324bb76bSAndroid Build Coastguard Worker<li>removed redundant rows from <a href="#quickreferencetable">Quick
23*324bb76bSAndroid Build Coastguard Worker    Reference Table</a></li>
24*324bb76bSAndroid Build Coastguard Worker</ul>
25*324bb76bSAndroid Build Coastguard Worker
26*324bb76bSAndroid Build Coastguard WorkerYou can also read <a href="gif89.txt">the original flat text.</a>
27*324bb76bSAndroid Build Coastguard Worker</div>
28*324bb76bSAndroid Build Coastguard Worker
29*324bb76bSAndroid Build Coastguard Worker<hr>
30*324bb76bSAndroid Build Coastguard Worker
31*324bb76bSAndroid Build Coastguard Worker<p>© 1987, 1988, 1989, 1990</p>
32*324bb76bSAndroid Build Coastguard Worker
33*324bb76bSAndroid Build Coastguard Worker<p>Copyright<br>
34*324bb76bSAndroid Build Coastguard WorkerCompuServe Incorporated<br>
35*324bb76bSAndroid Build Coastguard WorkerColumbus, Ohio</p>
36*324bb76bSAndroid Build Coastguard Worker
37*324bb76bSAndroid Build Coastguard Worker<p>Graphics Interchange Format Programming Reference</p>
38*324bb76bSAndroid Build Coastguard Worker
39*324bb76bSAndroid Build Coastguard Worker<p>CompuServe Incorporated</p>
40*324bb76bSAndroid Build Coastguard Worker
41*324bb76bSAndroid Build Coastguard Worker<p>Document Date: 31 July 1990</p>
42*324bb76bSAndroid Build Coastguard Worker
43*324bb76bSAndroid Build Coastguard Worker<div class="togglevisall">
44*324bb76bSAndroid Build Coastguard Worker<span onclick="SetEveryVis(0);">hide all chapters</span> |
45*324bb76bSAndroid Build Coastguard Worker<span onclick="SetEveryVis(1);">show all chapters</span>
46*324bb76bSAndroid Build Coastguard Worker</div>
47*324bb76bSAndroid Build Coastguard Worker
48*324bb76bSAndroid Build Coastguard Worker<h2>Table of Contents <span onclick="ToggleVis(0);">(hide/show)</span></h2>
49*324bb76bSAndroid Build Coastguard Worker
50*324bb76bSAndroid Build Coastguard Worker<div id="p0">
51*324bb76bSAndroid Build Coastguard Worker
52*324bb76bSAndroid Build Coastguard Worker<ol>
53*324bb76bSAndroid Build Coastguard Worker	<li><a href="#disclaimer">Disclaimer</a>
54*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#foreword">Foreword</a>
55*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#licensing">Licensing</a>
56*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#aboutthedocument">About the Document</a>
57*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#generaldescription">General Description</a>
58*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#versionnumbers">Version Numbers</a>
59*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#encoder">The Encoder</a>
60*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#decoder">The Decoder</a>
61*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#compliance">Compliance</a>
62*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#recommendations">About Recommendations</a>
63*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#colortables">About Color Tables</a>
64*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#blocksextensionsandscope">Blocks, Extensions and Scope</a>
65*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#blocksizes">Block Sizes</a>
66*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#embeddedprotocol">Using GIF as an embedded protocol</a>
67*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#subblocks">Data Sub-blocks</a>
68*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#blockterminator">Block Terminator</a>
69*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#header">Header</a>
70*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#logicalscreendescriptor">Logical Screen Descriptor</a>
71*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#globalcolortable">Global Color Table</a>
72*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#imagedescriptor">Image Descriptor</a>
73*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#localcolortable">Local Color Table</a>
74*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#tablebasedimagedata">Table Based Image Data</a>
75*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#graphiccontrolextension">Graphic Control Extension</a>
76*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#commentextension">Comment Extension</a>
77*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#plaintextextension">Plain Text Extension</a>
78*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#applicationextension">Application Extension</a>
79*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#trailer">Trailer</a>
80*324bb76bSAndroid Build Coastguard Worker</li></ol>
81*324bb76bSAndroid Build Coastguard Worker
82*324bb76bSAndroid Build Coastguard Worker<p>Appendices:</p>
83*324bb76bSAndroid Build Coastguard Worker
84*324bb76bSAndroid Build Coastguard Worker<ol style="list-style-type:upper-latin;">
85*324bb76bSAndroid Build Coastguard Worker	<li><a href="#quickreferencetable">Quick Reference Table</a>
86*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#gifgrammar">GIF Grammar</a>
87*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#glossary">Glossary</a>
88*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#conventions">Conventions</a>
89*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#interlacedimages">Interlaced Images</a>
90*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#lzw">Variable-Length-Code LZW Compression</a>
91*324bb76bSAndroid Build Coastguard Worker	</li><li><a href="#onlinecapabilities">On-line Capabilities Dialogue</a>
92*324bb76bSAndroid Build Coastguard Worker</li></ol>
93*324bb76bSAndroid Build Coastguard Worker
94*324bb76bSAndroid Build Coastguard Worker<p>Other:</p>
95*324bb76bSAndroid Build Coastguard Worker
96*324bb76bSAndroid Build Coastguard Worker<ul>
97*324bb76bSAndroid Build Coastguard Worker	<li><a href="#coversheet">Cover Sheet for the GIF89a Specification</a>
98*324bb76bSAndroid Build Coastguard Worker</li></ul>
99*324bb76bSAndroid Build Coastguard Worker
100*324bb76bSAndroid Build Coastguard Worker</div>
101*324bb76bSAndroid Build Coastguard Worker
102*324bb76bSAndroid Build Coastguard Worker<h2 id="disclaimer">1. Disclaimer <span onclick="ToggleVis(1);">(hide/show)</span></h2>
103*324bb76bSAndroid Build Coastguard Worker
104*324bb76bSAndroid Build Coastguard Worker<div id="p1">
105*324bb76bSAndroid Build Coastguard Worker
106*324bb76bSAndroid Build Coastguard Worker<p>The information provided herein is subject to change without notice. In no
107*324bb76bSAndroid Build Coastguard Workerevent will CompuServe Incorporated be liable for damages, including any loss of
108*324bb76bSAndroid Build Coastguard Workerrevenue, loss of profits or other incidental or consequential damages arising
109*324bb76bSAndroid Build Coastguard Workerout of the use or inability to use the information; CompuServe Incorporated
110*324bb76bSAndroid Build Coastguard Workermakes no claim as to the suitability of the information.</p>
111*324bb76bSAndroid Build Coastguard Worker
112*324bb76bSAndroid Build Coastguard Worker</div>
113*324bb76bSAndroid Build Coastguard Worker
114*324bb76bSAndroid Build Coastguard Worker<h2 id="foreword">2. Foreword <span onclick="ToggleVis(2);">(hide/show)</span></h2>
115*324bb76bSAndroid Build Coastguard Worker
116*324bb76bSAndroid Build Coastguard Worker<div id="p2">
117*324bb76bSAndroid Build Coastguard Worker
118*324bb76bSAndroid Build Coastguard Worker<p>This document defines the Graphics Interchange Format℠. The
119*324bb76bSAndroid Build Coastguard Workerspecification given here defines version 89a, which is an extension of version
120*324bb76bSAndroid Build Coastguard Worker87a.</p>
121*324bb76bSAndroid Build Coastguard Worker
122*324bb76bSAndroid Build Coastguard Worker<p>The Graphics Interchange Format℠ as specified here should be
123*324bb76bSAndroid Build Coastguard Workerconsidered complete; any deviation from it should be considered invalid,
124*324bb76bSAndroid Build Coastguard Workerincluding but not limited to, the use of reserved or undefined fields within
125*324bb76bSAndroid Build Coastguard Workercontrol or data blocks, the inclusion of extraneous data within or between
126*324bb76bSAndroid Build Coastguard Workerblocks, the use of methods or algorithms not specifically listed as part of the
127*324bb76bSAndroid Build Coastguard Workerformat, etc. In general, any and all deviations, extensions or modifications
128*324bb76bSAndroid Build Coastguard Workernot specified in this document should be considered to be in violation of the
129*324bb76bSAndroid Build Coastguard Workerformat and should be avoided.</p>
130*324bb76bSAndroid Build Coastguard Worker
131*324bb76bSAndroid Build Coastguard Worker</div>
132*324bb76bSAndroid Build Coastguard Worker
133*324bb76bSAndroid Build Coastguard Worker<h2 id="licensing">3. Licensing <span onclick="ToggleVis(3);">(hide/show)</span></h2>
134*324bb76bSAndroid Build Coastguard Worker
135*324bb76bSAndroid Build Coastguard Worker<div id="p3">
136*324bb76bSAndroid Build Coastguard Worker
137*324bb76bSAndroid Build Coastguard Worker<p>The Graphics Interchange Format© is the copyright property of
138*324bb76bSAndroid Build Coastguard WorkerCompuServe Incorporated. Only CompuServe Incorporated is authorized to define,
139*324bb76bSAndroid Build Coastguard Workerredefine, enhance, alter, modify or change in any way the definition of the
140*324bb76bSAndroid Build Coastguard Workerformat.</p>
141*324bb76bSAndroid Build Coastguard Worker
142*324bb76bSAndroid Build Coastguard Worker<p>CompuServe Incorporated hereby grants a limited, non-exclusive, royalty-free
143*324bb76bSAndroid Build Coastguard Workerlicense for the use of the Graphics Interchange Format℠ in computer
144*324bb76bSAndroid Build Coastguard Workersoftware; computer software utilizing GIF℠ must acknowledge ownership of
145*324bb76bSAndroid Build Coastguard Workerthe Graphics Interchange Format and its Service Mark by CompuServe
146*324bb76bSAndroid Build Coastguard WorkerIncorporated, in User and Technical Documentation. Computer software utilizing
147*324bb76bSAndroid Build Coastguard WorkerGIF, which is distributed or may be distributed without User or Technical
148*324bb76bSAndroid Build Coastguard WorkerDocumentation must display to the screen or printer a message acknowledging
149*324bb76bSAndroid Build Coastguard Workerownership of the Graphics Interchange Format and the Service Mark by CompuServe
150*324bb76bSAndroid Build Coastguard WorkerIncorporated; in this case, the acknowledgement may be displayed in an opening
151*324bb76bSAndroid Build Coastguard Workerscreen or leading banner, or a closing screen or trailing banner. A message
152*324bb76bSAndroid Build Coastguard Workersuch as the following may be used:</p>
153*324bb76bSAndroid Build Coastguard Worker
154*324bb76bSAndroid Build Coastguard Worker<blockquote>
155*324bb76bSAndroid Build Coastguard Worker	<p><i>The Graphics Interchange Format© is the Copyright property of
156*324bb76bSAndroid Build Coastguard Worker	CompuServe Incorporated. GIF℠ is a Service Mark property of
157*324bb76bSAndroid Build Coastguard Worker	CompuServe Incorporated.</i></p>
158*324bb76bSAndroid Build Coastguard Worker</blockquote>
159*324bb76bSAndroid Build Coastguard Worker
160*324bb76bSAndroid Build Coastguard Worker<p>For further information, please contact:</p>
161*324bb76bSAndroid Build Coastguard Worker
162*324bb76bSAndroid Build Coastguard Worker<blockquote>
163*324bb76bSAndroid Build Coastguard Worker	<p>CompuServe Incorporated<br>
164*324bb76bSAndroid Build Coastguard Worker	Graphics Technology Department<br>
165*324bb76bSAndroid Build Coastguard Worker	5000 Arlington Center Boulevard<br>
166*324bb76bSAndroid Build Coastguard Worker	Columbus, Ohio 43220<br>
167*324bb76bSAndroid Build Coastguard Worker	U. S. A.</p>
168*324bb76bSAndroid Build Coastguard Worker</blockquote>
169*324bb76bSAndroid Build Coastguard Worker
170*324bb76bSAndroid Build Coastguard Worker<p>CompuServe Incorporated maintains a mailing list with all those individuals
171*324bb76bSAndroid Build Coastguard Workerand organizations who wish to receive copies of this document when it is
172*324bb76bSAndroid Build Coastguard Workercorrected or revised. This service is offered free of charge; please provide us
173*324bb76bSAndroid Build Coastguard Workerwith your mailing address.</p>
174*324bb76bSAndroid Build Coastguard Worker
175*324bb76bSAndroid Build Coastguard Worker</div>
176*324bb76bSAndroid Build Coastguard Worker
177*324bb76bSAndroid Build Coastguard Worker<h2 id="aboutthedocument">4. About the Document <span onclick="ToggleVis(4);">(hide/show)</span></h2>
178*324bb76bSAndroid Build Coastguard Worker
179*324bb76bSAndroid Build Coastguard Worker<div id="p4">
180*324bb76bSAndroid Build Coastguard Worker
181*324bb76bSAndroid Build Coastguard Worker<p>This document describes in detail the definition of the Graphics Interchange
182*324bb76bSAndroid Build Coastguard WorkerFormat. This document is intended as a programming reference; it is recommended
183*324bb76bSAndroid Build Coastguard Workerthat the entire document be read carefully before programming, because of the
184*324bb76bSAndroid Build Coastguard Workerinterdependence of the various parts. There is an individual section for each
185*324bb76bSAndroid Build Coastguard Workerof the Format blocks. Within each section, the sub-section labeled Required
186*324bb76bSAndroid Build Coastguard WorkerVersion refers to the version number that an encoder will have to use if the
187*324bb76bSAndroid Build Coastguard Workercorresponding block is used in the Data Stream. Within each section, a diagram
188*324bb76bSAndroid Build Coastguard Workerdescribes the individual fields in the block; the diagrams are drawn
189*324bb76bSAndroid Build Coastguard Workervertically; top bytes in the diagram appear first in the Data Stream. Bits
190*324bb76bSAndroid Build Coastguard Workerwithin a byte are drawn most significant on the left end. Multi-byte numeric
191*324bb76bSAndroid Build Coastguard Workerfields are ordered Least Significant Byte first. Numeric constants are
192*324bb76bSAndroid Build Coastguard Workerrepresented as Hexadecimal numbers, preceded by <tt>"0x"</tt>. Bit fields
193*324bb76bSAndroid Build Coastguard Workerwithin a byte are described in order from most significant bits to least
194*324bb76bSAndroid Build Coastguard Workersignificant bits.</p>
195*324bb76bSAndroid Build Coastguard Worker
196*324bb76bSAndroid Build Coastguard Worker</div>
197*324bb76bSAndroid Build Coastguard Worker
198*324bb76bSAndroid Build Coastguard Worker<h2 id="generaldescription">5. General Description <span onclick="ToggleVis(5);">(hide/show)</span></h2>
199*324bb76bSAndroid Build Coastguard Worker
200*324bb76bSAndroid Build Coastguard Worker<div id="p5">
201*324bb76bSAndroid Build Coastguard Worker
202*324bb76bSAndroid Build Coastguard Worker<p>The Graphics Interchange Format℠ defines a protocol intended for the
203*324bb76bSAndroid Build Coastguard Workeron-line transmission and interchange of raster graphic data in a way that is
204*324bb76bSAndroid Build Coastguard Workerindependent of the hardware used in their creation or display.</p>
205*324bb76bSAndroid Build Coastguard Worker
206*324bb76bSAndroid Build Coastguard Worker<p>The Graphics Interchange Format is defined in terms of blocks and
207*324bb76bSAndroid Build Coastguard Worker<a href="#subblocks">sub-blocks</a> which contain relevant parameters and data
208*324bb76bSAndroid Build Coastguard Workerused in the reproduction of a graphic. A GIF Data Stream is a sequence of
209*324bb76bSAndroid Build Coastguard Workerprotocol blocks and sub-blocks representing a collection of graphics. In
210*324bb76bSAndroid Build Coastguard Workergeneral, the graphics in a Data Stream are assumed to be related to some
211*324bb76bSAndroid Build Coastguard Workerdegree, and to share some control information; it is recommended that encoders
212*324bb76bSAndroid Build Coastguard Workerattempt to group together related graphics in order to minimize hardware
213*324bb76bSAndroid Build Coastguard Workerchanges during processing and to minimize control information overhead. For the
214*324bb76bSAndroid Build Coastguard Workersame reason, unrelated graphics or graphics which require resetting hardware
215*324bb76bSAndroid Build Coastguard Workerparameters should be encoded separately to the extent possible.</p>
216*324bb76bSAndroid Build Coastguard Worker
217*324bb76bSAndroid Build Coastguard Worker<p>A Data Stream may originate locally, as when read from a file, or it may
218*324bb76bSAndroid Build Coastguard Workeroriginate remotely, as when transmitted over a data communications line. The
219*324bb76bSAndroid Build Coastguard WorkerFormat is defined with the assumption that an error-free Transport Level
220*324bb76bSAndroid Build Coastguard WorkerProtocol is used for communications; the Format makes no provisions for
221*324bb76bSAndroid Build Coastguard Workererror-detection and error-correction.</p>
222*324bb76bSAndroid Build Coastguard Worker
223*324bb76bSAndroid Build Coastguard Worker<p>The GIF Data Stream must be interpreted in context, that is, the application
224*324bb76bSAndroid Build Coastguard Workerprogram must rely on information external to the Data Stream to invoke the
225*324bb76bSAndroid Build Coastguard Workerdecoder process.</p>
226*324bb76bSAndroid Build Coastguard Worker
227*324bb76bSAndroid Build Coastguard Worker</div>
228*324bb76bSAndroid Build Coastguard Worker
229*324bb76bSAndroid Build Coastguard Worker<h2 id="versionnumbers">6. Version Numbers <span onclick="ToggleVis(6);">(hide/show)</span></h2>
230*324bb76bSAndroid Build Coastguard Worker
231*324bb76bSAndroid Build Coastguard Worker<div id="p6">
232*324bb76bSAndroid Build Coastguard Worker
233*324bb76bSAndroid Build Coastguard Worker<p>The version number in the <a href="#header">Header</a> of a Data Stream is
234*324bb76bSAndroid Build Coastguard Workerintended to identify the minimum set of capabilities required of a decoder in
235*324bb76bSAndroid Build Coastguard Workerorder to fully process the Data Stream. An encoder should use the earliest
236*324bb76bSAndroid Build Coastguard Workerpossible version number that includes all the blocks used in the Data Stream.
237*324bb76bSAndroid Build Coastguard WorkerWithin each block section in this document, there is an entry labeled Required
238*324bb76bSAndroid Build Coastguard WorkerVersion which specifies the earliest version number that includes the
239*324bb76bSAndroid Build Coastguard Workercorresponding block. The encoder should make every attempt to use the earliest
240*324bb76bSAndroid Build Coastguard Workerversion number covering all the blocks in the Data Stream; the unnecessary use
241*324bb76bSAndroid Build Coastguard Workerof later version numbers will hinder processing by some decoders.</p>
242*324bb76bSAndroid Build Coastguard Worker
243*324bb76bSAndroid Build Coastguard Worker</div>
244*324bb76bSAndroid Build Coastguard Worker
245*324bb76bSAndroid Build Coastguard Worker<h2 id="encoder">7. The Encoder <span onclick="ToggleVis(7);">(hide/show)</span></h2>
246*324bb76bSAndroid Build Coastguard Worker
247*324bb76bSAndroid Build Coastguard Worker<div id="p7">
248*324bb76bSAndroid Build Coastguard Worker
249*324bb76bSAndroid Build Coastguard Worker<p>The Encoder is the program used to create a GIF Data Stream. From raster
250*324bb76bSAndroid Build Coastguard Workerdata and other information, the encoder produces the necessary control and data
251*324bb76bSAndroid Build Coastguard Workerblocks needed for reproducing the original graphics.</p>
252*324bb76bSAndroid Build Coastguard Worker
253*324bb76bSAndroid Build Coastguard Worker<p>The encoder has the following primary responsibilities.</p>
254*324bb76bSAndroid Build Coastguard Worker
255*324bb76bSAndroid Build Coastguard Worker<ul>
256*324bb76bSAndroid Build Coastguard Worker	<li>Include in the Data Stream all the necessary information to reproduce
257*324bb76bSAndroid Build Coastguard Worker	the graphics.
258*324bb76bSAndroid Build Coastguard Worker	</li><li>Insure that a Data Stream is labeled with the earliest possible Version
259*324bb76bSAndroid Build Coastguard Worker	Number that will cover the definition of all the blocks in it; this is to
260*324bb76bSAndroid Build Coastguard Worker	ensure that the largest number of decoders can process the Data Stream.
261*324bb76bSAndroid Build Coastguard Worker	</li><li>Ensure encoding of the graphics in such a way that the decoding process
262*324bb76bSAndroid Build Coastguard Worker	is optimized. Avoid redundant information as much as possible.
263*324bb76bSAndroid Build Coastguard Worker	</li><li>To the extent possible, avoid grouping graphics which might require
264*324bb76bSAndroid Build Coastguard Worker	resetting hardware parameters during the decoding process.
265*324bb76bSAndroid Build Coastguard Worker	</li><li>Set to zero (off) each of the bits of each and every field designated
266*324bb76bSAndroid Build Coastguard Worker	as reserved. Note that some fields in the Logical Screen Descriptor and the
267*324bb76bSAndroid Build Coastguard Worker	<a href="#imagedescriptor">Image Descriptor</a> were reserved under Version
268*324bb76bSAndroid Build Coastguard Worker	87a, but are used under version 89a.
269*324bb76bSAndroid Build Coastguard Worker</li></ul>
270*324bb76bSAndroid Build Coastguard Worker
271*324bb76bSAndroid Build Coastguard Worker</div>
272*324bb76bSAndroid Build Coastguard Worker
273*324bb76bSAndroid Build Coastguard Worker<h2 id="decoder">8. The Decoder <span onclick="ToggleVis(8);">(hide/show)</span></h2>
274*324bb76bSAndroid Build Coastguard Worker
275*324bb76bSAndroid Build Coastguard Worker<div id="p8">
276*324bb76bSAndroid Build Coastguard Worker
277*324bb76bSAndroid Build Coastguard Worker<p>The Decoder is the program used to process a GIF Data Stream. It processes
278*324bb76bSAndroid Build Coastguard Workerthe Data Stream sequentially, parsing the various blocks and
279*324bb76bSAndroid Build Coastguard Worker<a href="#subblocks">sub-blocks</a>, using the control information to set
280*324bb76bSAndroid Build Coastguard Workerhardware and process parameters and interpreting the data to render the
281*324bb76bSAndroid Build Coastguard Workergraphics.</p>
282*324bb76bSAndroid Build Coastguard Worker
283*324bb76bSAndroid Build Coastguard Worker<p>The decoder has the following primary responsibilities.</p>
284*324bb76bSAndroid Build Coastguard Worker
285*324bb76bSAndroid Build Coastguard Worker<ul>
286*324bb76bSAndroid Build Coastguard Worker	<li>Process each graphic in the Data Stream in sequence, without delays
287*324bb76bSAndroid Build Coastguard Worker	other than those specified in the control information.
288*324bb76bSAndroid Build Coastguard Worker	</li><li>Set its hardware parameters to fit, as closely as possible, the control
289*324bb76bSAndroid Build Coastguard Worker	information contained in the Data Stream.
290*324bb76bSAndroid Build Coastguard Worker</li></ul>
291*324bb76bSAndroid Build Coastguard Worker
292*324bb76bSAndroid Build Coastguard Worker</div>
293*324bb76bSAndroid Build Coastguard Worker
294*324bb76bSAndroid Build Coastguard Worker<h2 id="compliance">9. Compliance <span onclick="ToggleVis(9);">(hide/show)</span></h2>
295*324bb76bSAndroid Build Coastguard Worker
296*324bb76bSAndroid Build Coastguard Worker<div id="p9">
297*324bb76bSAndroid Build Coastguard Worker
298*324bb76bSAndroid Build Coastguard Worker<p>An encoder or a decoder is said to comply with a given version of the
299*324bb76bSAndroid Build Coastguard WorkerGraphics Interchange Format if and only if it fully conforms with and correctly
300*324bb76bSAndroid Build Coastguard Workerimplements the definition of the standard associated with that version. An
301*324bb76bSAndroid Build Coastguard Workerencoder or a decoder may be compliant with a given version number and not
302*324bb76bSAndroid Build Coastguard Workercompliant with some subsequent version.</p>
303*324bb76bSAndroid Build Coastguard Worker
304*324bb76bSAndroid Build Coastguard Worker</div>
305*324bb76bSAndroid Build Coastguard Worker
306*324bb76bSAndroid Build Coastguard Worker<h2 id="recommendations">10. About Recommendations <span onclick="ToggleVis(10);">(hide/show)</span></h2>
307*324bb76bSAndroid Build Coastguard Worker
308*324bb76bSAndroid Build Coastguard Worker<div id="p10">
309*324bb76bSAndroid Build Coastguard Worker
310*324bb76bSAndroid Build Coastguard Worker<p>Each block section in this document contains an entry labeled
311*324bb76bSAndroid Build Coastguard WorkerRecommendation; this section lists a set of recommendations intended to guide
312*324bb76bSAndroid Build Coastguard Workerand organize the use of the particular blocks. Such recommendations are geared
313*324bb76bSAndroid Build Coastguard Workertowards making the functions of encoders and decoders more efficient, as well
314*324bb76bSAndroid Build Coastguard Workeras making optimal use of the communications bandwidth. It is advised that these
315*324bb76bSAndroid Build Coastguard Workerrecommendations be followed.</p>
316*324bb76bSAndroid Build Coastguard Worker
317*324bb76bSAndroid Build Coastguard Worker</div>
318*324bb76bSAndroid Build Coastguard Worker
319*324bb76bSAndroid Build Coastguard Worker<h2 id="colortables">11. About Color Tables <span onclick="ToggleVis(11);">(hide/show)</span></h2>
320*324bb76bSAndroid Build Coastguard Worker
321*324bb76bSAndroid Build Coastguard Worker<div id="p11">
322*324bb76bSAndroid Build Coastguard Worker
323*324bb76bSAndroid Build Coastguard Worker<p>The GIF format utilizes color tables to render raster-based graphics. A
324*324bb76bSAndroid Build Coastguard Workercolor table can have one of two different scopes: global or local.</p>
325*324bb76bSAndroid Build Coastguard Worker
326*324bb76bSAndroid Build Coastguard Worker<p>A <a href="#globalcolortable">Global Color Table</a> is used by all those
327*324bb76bSAndroid Build Coastguard Workergraphics in the Data Stream which do not have a
328*324bb76bSAndroid Build Coastguard Worker<a href="#localcolortable">Local Color Table</a> associated with them. The
329*324bb76bSAndroid Build Coastguard Workerscope of the Global Color Table is the entire Data Stream.</p>
330*324bb76bSAndroid Build Coastguard Worker
331*324bb76bSAndroid Build Coastguard Worker<p>A Local Color Table is always associated with the graphic that immediately
332*324bb76bSAndroid Build Coastguard Workerfollows it; the scope of a Local Color Table is limited to that single graphic.
333*324bb76bSAndroid Build Coastguard WorkerA Local Color Table supersedes a Global Color Table, that is, if a Data Stream
334*324bb76bSAndroid Build Coastguard Workercontains a Global Color Table, and an image has a Local Color Table associated
335*324bb76bSAndroid Build Coastguard Workerwith it, the decoder must save the Global Color Table, use the Local Color
336*324bb76bSAndroid Build Coastguard WorkerTable to render the image, and then restore the Global Color Table.</p>
337*324bb76bSAndroid Build Coastguard Worker
338*324bb76bSAndroid Build Coastguard Worker<p>Both types of color tables are optional, making it possible for a Data
339*324bb76bSAndroid Build Coastguard WorkerStream to contain numerous graphics without a color table at all. For this
340*324bb76bSAndroid Build Coastguard Workerreason, it is recommended that the decoder save the last Global Color Table
341*324bb76bSAndroid Build Coastguard Workerused until another Global Color Table is encountered. In this way, a Data
342*324bb76bSAndroid Build Coastguard WorkerStream which does not contain either a Global Color Table or a Local Color
343*324bb76bSAndroid Build Coastguard WorkerTable may be processed using the last Global Color Table saved. If a Global
344*324bb76bSAndroid Build Coastguard WorkerColor Table from a previous Stream is used, that table becomes the Global Color
345*324bb76bSAndroid Build Coastguard WorkerTable of the present Stream. This is intended to reduce the overhead incurred
346*324bb76bSAndroid Build Coastguard Workerby color tables. In particular, it is recommended that an encoder use only one
347*324bb76bSAndroid Build Coastguard WorkerGlobal Color Table if all the images in related Data Streams can be rendered
348*324bb76bSAndroid Build Coastguard Workerwith the same table. If no color table is available at all, the decoder is free
349*324bb76bSAndroid Build Coastguard Workerto use a system color table or a table of its own. In that case, the decoder
350*324bb76bSAndroid Build Coastguard Workermay use a color table with as many colors as its hardware is able to support;
351*324bb76bSAndroid Build Coastguard Workerit is recommended that such a table have black and white as its first two
352*324bb76bSAndroid Build Coastguard Workerentries, so that monochrome images can be rendered adequately.</p>
353*324bb76bSAndroid Build Coastguard Worker
354*324bb76bSAndroid Build Coastguard Worker<p>The Definition of the GIF Format allows for a Data Stream to contain only
355*324bb76bSAndroid Build Coastguard Workerthe <a href="#header">Header</a>, the
356*324bb76bSAndroid Build Coastguard Worker<a href="#logicalscreendescriptor">Logical Screen Descriptor</a>, a Global
357*324bb76bSAndroid Build Coastguard WorkerColor Table and the <a href="#trailer">GIF Trailer</a>. Such a Data Stream
358*324bb76bSAndroid Build Coastguard Workerwould be used to load a decoder with a Global Color Table, in preparation for
359*324bb76bSAndroid Build Coastguard Workersubsequent Data Streams without a color table at all.</p>
360*324bb76bSAndroid Build Coastguard Worker
361*324bb76bSAndroid Build Coastguard Worker</div>
362*324bb76bSAndroid Build Coastguard Worker
363*324bb76bSAndroid Build Coastguard Worker<h2 id="blocksextensionsandscope">12. Blocks, Extensions and Scope <span onclick="ToggleVis(12);">(hide/show)</span></h2>
364*324bb76bSAndroid Build Coastguard Worker
365*324bb76bSAndroid Build Coastguard Worker<div id="p12">
366*324bb76bSAndroid Build Coastguard Worker
367*324bb76bSAndroid Build Coastguard Worker<p>Blocks can be classified into three groups: Control, Graphic-Rendering and
368*324bb76bSAndroid Build Coastguard WorkerSpecial Purpose.</p>
369*324bb76bSAndroid Build Coastguard Worker
370*324bb76bSAndroid Build Coastguard Worker<p>Control blocks, such as the <a href="#header">Header</a>, the Logical Screen
371*324bb76bSAndroid Build Coastguard WorkerDescriptor, the <a href="#graphiccontrolextension">Graphic Control
372*324bb76bSAndroid Build Coastguard WorkerExtension</a> and the <a href="#trailer">Trailer</a>, contain information used
373*324bb76bSAndroid Build Coastguard Workerto control the process of the Data Stream or information used in setting
374*324bb76bSAndroid Build Coastguard Workerhardware parameters.</p>
375*324bb76bSAndroid Build Coastguard Worker
376*324bb76bSAndroid Build Coastguard Worker<p>Graphic-Rendering blocks such as the <a href="#imagedescriptor">Image
377*324bb76bSAndroid Build Coastguard WorkerDescriptor</a> and the <a href="#plaintextextension">Plain Text Extension</a>
378*324bb76bSAndroid Build Coastguard Workercontain information and data used to render a graphic on the display
379*324bb76bSAndroid Build Coastguard Workerdevice.</p>
380*324bb76bSAndroid Build Coastguard Worker
381*324bb76bSAndroid Build Coastguard Worker<p>Special Purpose blocks such as the <a href="#commentextension">Comment
382*324bb76bSAndroid Build Coastguard WorkerExtension</a> and the <a href="#applicationextension">Application Extension</a>
383*324bb76bSAndroid Build Coastguard Workerare neither used to control the process of the Data Stream nor do they contain
384*324bb76bSAndroid Build Coastguard Workerinformation or data used to render a graphic on the display device.</p>
385*324bb76bSAndroid Build Coastguard Worker
386*324bb76bSAndroid Build Coastguard Worker<p>With the exception of the <a href="#logicalscreendescriptor">Logical Screen
387*324bb76bSAndroid Build Coastguard WorkerDescriptor</a> and the <a href="#globalcolortable">Global Color Table</a>,
388*324bb76bSAndroid Build Coastguard Workerwhose scope is the entire Data Stream, all other Control blocks have a limited
389*324bb76bSAndroid Build Coastguard Workerscope, restricted to the Graphic-Rendering block that follows them. Special
390*324bb76bSAndroid Build Coastguard WorkerPurpose blocks do not delimit the scope of any Control blocks; Special Purpose
391*324bb76bSAndroid Build Coastguard Workerblocks are transparent to the decoding process. Graphic-Rendering blocks and
392*324bb76bSAndroid Build Coastguard Workerextensions are used as scope delimiters for Control blocks and extensions.</p>
393*324bb76bSAndroid Build Coastguard Worker
394*324bb76bSAndroid Build Coastguard Worker<p>The labels used to identify labeled blocks fall into three ranges:</p>
395*324bb76bSAndroid Build Coastguard Worker
396*324bb76bSAndroid Build Coastguard Worker<ul>
397*324bb76bSAndroid Build Coastguard Worker	<li><tt>0x00</tt>–<tt>0x7F</tt> (0–127) are the Graphic
398*324bb76bSAndroid Build Coastguard Worker	Rendering blocks, excluding the <a href="#trailer">Trailer</a>
399*324bb76bSAndroid Build Coastguard Worker	(<tt>0x3B</tt>, 59)
400*324bb76bSAndroid Build Coastguard Worker	</li><li><tt>0x80</tt>–<tt>0xF9</tt> (128–249) are the Control
401*324bb76bSAndroid Build Coastguard Worker	blocks
402*324bb76bSAndroid Build Coastguard Worker	</li><li><tt>0xFA</tt>–<tt>0xFF</tt> (250–255) are the Special
403*324bb76bSAndroid Build Coastguard Worker	Purpose blocks
404*324bb76bSAndroid Build Coastguard Worker</li></ul>
405*324bb76bSAndroid Build Coastguard Worker
406*324bb76bSAndroid Build Coastguard Worker<p>These ranges are defined so that decoders can handle block scope by
407*324bb76bSAndroid Build Coastguard Workerappropriately identifying block labels, even when the block itself cannot be
408*324bb76bSAndroid Build Coastguard Workerprocessed.</p>
409*324bb76bSAndroid Build Coastguard Worker
410*324bb76bSAndroid Build Coastguard Worker</div>
411*324bb76bSAndroid Build Coastguard Worker
412*324bb76bSAndroid Build Coastguard Worker<h2 id="blocksizes">13. Block Sizes <span onclick="ToggleVis(13);">(hide/show)</span></h2>
413*324bb76bSAndroid Build Coastguard Worker
414*324bb76bSAndroid Build Coastguard Worker<div id="p13">
415*324bb76bSAndroid Build Coastguard Worker
416*324bb76bSAndroid Build Coastguard Worker<p>The Block Size field in a block, counts the number of bytes remaining in the
417*324bb76bSAndroid Build Coastguard Workerblock, not counting the Block Size field itself, and not counting the
418*324bb76bSAndroid Build Coastguard Worker<a href="#blockterminator">Block Terminator</a>, if one is to follow. Blocks
419*324bb76bSAndroid Build Coastguard Workerother than Data Blocks are intended to be of fixed length; the Block Size field
420*324bb76bSAndroid Build Coastguard Workeris provided in order to facilitate skipping them, not to allow their size to
421*324bb76bSAndroid Build Coastguard Workerchange in the future. Data blocks and <a href="#subblocks">sub-blocks</a> are
422*324bb76bSAndroid Build Coastguard Workerof variable length to accommodate the amount of data.</p>
423*324bb76bSAndroid Build Coastguard Worker
424*324bb76bSAndroid Build Coastguard Worker</div>
425*324bb76bSAndroid Build Coastguard Worker
426*324bb76bSAndroid Build Coastguard Worker<h2 id="embeddedprotocol">14. Using GIF as an embedded protocol <span onclick="ToggleVis(14);">(hide/show)</span></h2>
427*324bb76bSAndroid Build Coastguard Worker
428*324bb76bSAndroid Build Coastguard Worker<div id="p14">
429*324bb76bSAndroid Build Coastguard Worker
430*324bb76bSAndroid Build Coastguard Worker<p>As an embedded protocol, GIF may be part of larger application protocols,
431*324bb76bSAndroid Build Coastguard Workerwithin which GIF is used to render graphics. In such a case, the application
432*324bb76bSAndroid Build Coastguard Workerprotocol could define a block within which the GIF Data Stream would be
433*324bb76bSAndroid Build Coastguard Workercontained. The application program would then invoke a GIF decoder upon
434*324bb76bSAndroid Build Coastguard Workerencountering a block of type GIF. This approach is recommended in favor of
435*324bb76bSAndroid Build Coastguard Workerusing <a href="#applicationextension">Application Extensions</a>, which become
436*324bb76bSAndroid Build Coastguard Workeroverhead for all other applications that do not process them. Because a GIF
437*324bb76bSAndroid Build Coastguard WorkerData Stream must be processed in context, the application must rely on some
438*324bb76bSAndroid Build Coastguard Workermeans of identifying the GIF Data Stream outside of the Stream itself.</p>
439*324bb76bSAndroid Build Coastguard Worker
440*324bb76bSAndroid Build Coastguard Worker</div>
441*324bb76bSAndroid Build Coastguard Worker
442*324bb76bSAndroid Build Coastguard Worker<h2 id="subblocks">15. Data Sub-blocks <span onclick="ToggleVis(15);">(hide/show)</span></h2>
443*324bb76bSAndroid Build Coastguard Worker
444*324bb76bSAndroid Build Coastguard Worker<div id="p15">
445*324bb76bSAndroid Build Coastguard Worker
446*324bb76bSAndroid Build Coastguard Worker<h3>a. Description</h3>
447*324bb76bSAndroid Build Coastguard Worker
448*324bb76bSAndroid Build Coastguard Worker<p>Data Sub-blocks are units containing data. They do not have a label, these
449*324bb76bSAndroid Build Coastguard Workerblocks are processed in the context of control blocks, wherever data blocks are
450*324bb76bSAndroid Build Coastguard Workerspecified in the format. The first byte of the Data sub-block indicates the
451*324bb76bSAndroid Build Coastguard Workernumber of data bytes to follow. A data sub-block may contain from 0 to 255 data
452*324bb76bSAndroid Build Coastguard Workerbytes. The size of the block does not account for the size byte itself,
453*324bb76bSAndroid Build Coastguard Workertherefore, the empty sub-block is one whose size field contains <tt>0x00</tt>
454*324bb76bSAndroid Build Coastguard Worker(0).</p>
455*324bb76bSAndroid Build Coastguard Worker
456*324bb76bSAndroid Build Coastguard Worker<h3>b. Required Version</h3>
457*324bb76bSAndroid Build Coastguard Worker
458*324bb76bSAndroid Build Coastguard Worker<p>87a.</p>
459*324bb76bSAndroid Build Coastguard Worker
460*324bb76bSAndroid Build Coastguard Worker<h3>c. Syntax</h3>
461*324bb76bSAndroid Build Coastguard Worker
462*324bb76bSAndroid Build Coastguard Worker<table>
463*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
464*324bb76bSAndroid Build Coastguard Worker		<th>Byte #
465*324bb76bSAndroid Build Coastguard Worker		</th><th>Field Name
466*324bb76bSAndroid Build Coastguard Worker		</th><th>Type
467*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
468*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">0
469*324bb76bSAndroid Build Coastguard Worker		</td><td>Block Size
470*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
471*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
472*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">1
473*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="5">Data Values
474*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="5">Byte
475*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
476*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">2
477*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
478*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">3
479*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
480*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">⋮
481*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
482*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">up to 255
483*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
484*324bb76bSAndroid Build Coastguard Worker
485*324bb76bSAndroid Build Coastguard Worker<ol style="list-style-type:lower-roman;">
486*324bb76bSAndroid Build Coastguard Worker	<li>Block Size:
487*324bb76bSAndroid Build Coastguard Worker	<ul>
488*324bb76bSAndroid Build Coastguard Worker		<li>Number of bytes in the Data Sub-block; the size must be within 0
489*324bb76bSAndroid Build Coastguard Worker		and 255 bytes, inclusive.
490*324bb76bSAndroid Build Coastguard Worker	</li></ul>
491*324bb76bSAndroid Build Coastguard Worker	</li><li>Data Values:
492*324bb76bSAndroid Build Coastguard Worker	<ul>
493*324bb76bSAndroid Build Coastguard Worker		<li>Any 8-bit value. There must be exactly as many Data Values as
494*324bb76bSAndroid Build Coastguard Worker		specified by the Block Size field.
495*324bb76bSAndroid Build Coastguard Worker	</li></ul>
496*324bb76bSAndroid Build Coastguard Worker</li></ol>
497*324bb76bSAndroid Build Coastguard Worker
498*324bb76bSAndroid Build Coastguard Worker<h3>d. Extensions and Scope</h3>
499*324bb76bSAndroid Build Coastguard Worker
500*324bb76bSAndroid Build Coastguard Worker<p>This type of block always occurs as part of a larger unit. It does not have
501*324bb76bSAndroid Build Coastguard Workera scope of itself.</p>
502*324bb76bSAndroid Build Coastguard Worker
503*324bb76bSAndroid Build Coastguard Worker<h3>e. Recommendation</h3>
504*324bb76bSAndroid Build Coastguard Worker
505*324bb76bSAndroid Build Coastguard Worker<p>None.</p>
506*324bb76bSAndroid Build Coastguard Worker
507*324bb76bSAndroid Build Coastguard Worker</div>
508*324bb76bSAndroid Build Coastguard Worker
509*324bb76bSAndroid Build Coastguard Worker<h2 id="blockterminator">16. Block Terminator <span onclick="ToggleVis(16);">(hide/show)</span></h2>
510*324bb76bSAndroid Build Coastguard Worker
511*324bb76bSAndroid Build Coastguard Worker<div id="p16">
512*324bb76bSAndroid Build Coastguard Worker
513*324bb76bSAndroid Build Coastguard Worker<h3>a. Description</h3>
514*324bb76bSAndroid Build Coastguard Worker
515*324bb76bSAndroid Build Coastguard Worker<p>This zero-length <a href="#subblocks">Data Sub-block</a> is used to
516*324bb76bSAndroid Build Coastguard Workerterminate a sequence of Data Sub-blocks. It contains a single byte in the
517*324bb76bSAndroid Build Coastguard Workerposition of the Block Size field and does not contain data.</p>
518*324bb76bSAndroid Build Coastguard Worker
519*324bb76bSAndroid Build Coastguard Worker<h3>b. Required Version</h3>
520*324bb76bSAndroid Build Coastguard Worker
521*324bb76bSAndroid Build Coastguard Worker<p>87a.</p>
522*324bb76bSAndroid Build Coastguard Worker
523*324bb76bSAndroid Build Coastguard Worker<h3>c. Syntax</h3>
524*324bb76bSAndroid Build Coastguard Worker
525*324bb76bSAndroid Build Coastguard Worker<table>
526*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
527*324bb76bSAndroid Build Coastguard Worker		<th>Byte #
528*324bb76bSAndroid Build Coastguard Worker		</th><th>Field Name
529*324bb76bSAndroid Build Coastguard Worker		</th><th>Type
530*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
531*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">0
532*324bb76bSAndroid Build Coastguard Worker		</td><td>Block Size
533*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
534*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
535*324bb76bSAndroid Build Coastguard Worker
536*324bb76bSAndroid Build Coastguard Worker<ol style="list-style-type:lower-roman;">
537*324bb76bSAndroid Build Coastguard Worker	<li>Block Size:
538*324bb76bSAndroid Build Coastguard Worker	<ul>
539*324bb76bSAndroid Build Coastguard Worker		<li>Number of bytes in the Data Sub-block; this field contains the
540*324bb76bSAndroid Build Coastguard Worker		fixed value <tt>0x00</tt> (0).
541*324bb76bSAndroid Build Coastguard Worker	</li></ul>
542*324bb76bSAndroid Build Coastguard Worker	</li><li>Data Values:
543*324bb76bSAndroid Build Coastguard Worker	<ul>
544*324bb76bSAndroid Build Coastguard Worker		<li>This block does not contain any data.
545*324bb76bSAndroid Build Coastguard Worker	</li></ul>
546*324bb76bSAndroid Build Coastguard Worker</li></ol>
547*324bb76bSAndroid Build Coastguard Worker
548*324bb76bSAndroid Build Coastguard Worker<h3>d. Extensions and Scope</h3>
549*324bb76bSAndroid Build Coastguard Worker
550*324bb76bSAndroid Build Coastguard Worker<p>This block terminates the immediately preceding sequence of Data Sub-blocks.
551*324bb76bSAndroid Build Coastguard WorkerThis block cannot be modified by any extension.</p>
552*324bb76bSAndroid Build Coastguard Worker
553*324bb76bSAndroid Build Coastguard Worker<h3>e. Recommendation</h3>
554*324bb76bSAndroid Build Coastguard Worker
555*324bb76bSAndroid Build Coastguard Worker<p>None.</p>
556*324bb76bSAndroid Build Coastguard Worker
557*324bb76bSAndroid Build Coastguard Worker</div>
558*324bb76bSAndroid Build Coastguard Worker
559*324bb76bSAndroid Build Coastguard Worker<h2 id="header">17. Header <span onclick="ToggleVis(17);">(hide/show)</span></h2>
560*324bb76bSAndroid Build Coastguard Worker
561*324bb76bSAndroid Build Coastguard Worker<div id="p17">
562*324bb76bSAndroid Build Coastguard Worker
563*324bb76bSAndroid Build Coastguard Worker<h3>a. Description</h3>
564*324bb76bSAndroid Build Coastguard Worker
565*324bb76bSAndroid Build Coastguard Worker<p>The Header identifies the GIF Data Stream in context. The Signature field
566*324bb76bSAndroid Build Coastguard Workermarks the beginning of the Data Stream, and the Version field identifies the
567*324bb76bSAndroid Build Coastguard Workerset of capabilities required of a decoder to fully process the Data Stream.
568*324bb76bSAndroid Build Coastguard WorkerThis block is <i>required</i>; exactly one Header must be present per Data
569*324bb76bSAndroid Build Coastguard WorkerStream.</p>
570*324bb76bSAndroid Build Coastguard Worker
571*324bb76bSAndroid Build Coastguard Worker<h3>b. Required Version</h3>
572*324bb76bSAndroid Build Coastguard Worker
573*324bb76bSAndroid Build Coastguard Worker<p>Not applicable. This block is not subject to a version number. This block
574*324bb76bSAndroid Build Coastguard Workermust appear at the beginning of every Data Stream.</p>
575*324bb76bSAndroid Build Coastguard Worker
576*324bb76bSAndroid Build Coastguard Worker<h3>c. Syntax</h3>
577*324bb76bSAndroid Build Coastguard Worker
578*324bb76bSAndroid Build Coastguard Worker<table>
579*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
580*324bb76bSAndroid Build Coastguard Worker		<th>Byte #
581*324bb76bSAndroid Build Coastguard Worker		</th><th>Field Name
582*324bb76bSAndroid Build Coastguard Worker		</th><th>Type
583*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
584*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">0
585*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="3">Signature
586*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="3">3 Bytes
587*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
588*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">1
589*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
590*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">2
591*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
592*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">3
593*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="3">Version
594*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="3">3 Bytes
595*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
596*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">4
597*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
598*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">5
599*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
600*324bb76bSAndroid Build Coastguard Worker
601*324bb76bSAndroid Build Coastguard Worker<ol style="list-style-type:lower-roman;">
602*324bb76bSAndroid Build Coastguard Worker	<li>Signature:
603*324bb76bSAndroid Build Coastguard Worker	<ul>
604*324bb76bSAndroid Build Coastguard Worker		<li>Identifies the GIF Data Stream. This field contains the fixed value
605*324bb76bSAndroid Build Coastguard Worker		<tt>'GIF'</tt> (<tt>0x47 0x49 0x46</tt>).
606*324bb76bSAndroid Build Coastguard Worker	</li></ul>
607*324bb76bSAndroid Build Coastguard Worker	</li><li>Version:
608*324bb76bSAndroid Build Coastguard Worker	<ul>
609*324bb76bSAndroid Build Coastguard Worker		<li>Version number used to format the data stream. Identifies the
610*324bb76bSAndroid Build Coastguard Worker		minimum set of capabilities necessary to a decoder to fully process the
611*324bb76bSAndroid Build Coastguard Worker		contents of the Data Stream.
612*324bb76bSAndroid Build Coastguard Worker		</li><li>Version Numbers as of 10 July 1990:
613*324bb76bSAndroid Build Coastguard Worker		<ul>
614*324bb76bSAndroid Build Coastguard Worker			<li><tt>"87a"</tt> (<tt>0x38 0x37 0x61</tt>) – May 1987
615*324bb76bSAndroid Build Coastguard Worker			</li><li><tt>"89a"</tt> (<tt>0x38 0x39 0x61</tt>) – July 1989
616*324bb76bSAndroid Build Coastguard Worker		</li></ul>
617*324bb76bSAndroid Build Coastguard Worker		</li><li>Version numbers are ordered numerically increasing on the first two
618*324bb76bSAndroid Build Coastguard Worker		digits starting with 87 (87, 88, …, 99, 00, …, 85, 86)
619*324bb76bSAndroid Build Coastguard Worker		and alphabetically increasing on the third character (a, …, z).
620*324bb76bSAndroid Build Coastguard Worker	</li></ul>
621*324bb76bSAndroid Build Coastguard Worker	</li><li>Extensions and Scope:
622*324bb76bSAndroid Build Coastguard Worker	<ul>
623*324bb76bSAndroid Build Coastguard Worker		<li>The scope of this block is the entire Data Stream. This block
624*324bb76bSAndroid Build Coastguard Worker		cannot be modified by any extension.
625*324bb76bSAndroid Build Coastguard Worker	</li></ul>
626*324bb76bSAndroid Build Coastguard Worker</li></ol>
627*324bb76bSAndroid Build Coastguard Worker
628*324bb76bSAndroid Build Coastguard Worker<h3>d. Recommendations</h3>
629*324bb76bSAndroid Build Coastguard Worker
630*324bb76bSAndroid Build Coastguard Worker<ol style="list-style-type:lower-roman;">
631*324bb76bSAndroid Build Coastguard Worker	<li>Signature:
632*324bb76bSAndroid Build Coastguard Worker	<ul>
633*324bb76bSAndroid Build Coastguard Worker		<li>This field identifies the beginning of the GIF Data Stream; it is
634*324bb76bSAndroid Build Coastguard Worker		not intended to provide a unique signature for the identification of
635*324bb76bSAndroid Build Coastguard Worker		the data. It is recommended that the GIF Data Stream be identified
636*324bb76bSAndroid Build Coastguard Worker		externally by the application. (Refer to <a href="#online">Appendix
637*324bb76bSAndroid Build Coastguard Worker		G</a> for on-line identification of the GIF Data Stream.)
638*324bb76bSAndroid Build Coastguard Worker	</li></ul>
639*324bb76bSAndroid Build Coastguard Worker	</li><li>Version:
640*324bb76bSAndroid Build Coastguard Worker	<ul>
641*324bb76bSAndroid Build Coastguard Worker		<li>Encoder: An encoder should use the earliest possible version number
642*324bb76bSAndroid Build Coastguard Worker		that defines all the blocks used in the Data Stream. When two or more
643*324bb76bSAndroid Build Coastguard Worker		Data Streams are combined, the latest of the individual version numbers
644*324bb76bSAndroid Build Coastguard Worker		should be used for the resulting Data Stream.
645*324bb76bSAndroid Build Coastguard Worker		</li><li>Decoder: A decoder should attempt to process the data stream to the
646*324bb76bSAndroid Build Coastguard Worker		best of its ability; if it encounters a version number which it is not
647*324bb76bSAndroid Build Coastguard Worker		capable of processing fully, it should nevertheless, attempt to process
648*324bb76bSAndroid Build Coastguard Worker		the data stream to the best of its ability, perhaps after warning the
649*324bb76bSAndroid Build Coastguard Worker		user that the data may be incomplete.
650*324bb76bSAndroid Build Coastguard Worker	</li></ul>
651*324bb76bSAndroid Build Coastguard Worker</li></ol>
652*324bb76bSAndroid Build Coastguard Worker
653*324bb76bSAndroid Build Coastguard Worker</div>
654*324bb76bSAndroid Build Coastguard Worker
655*324bb76bSAndroid Build Coastguard Worker<h2 id="logicalscreendescriptor">18. Logical Screen Descriptor <span onclick="ToggleVis(18);">(hide/show)</span></h2>
656*324bb76bSAndroid Build Coastguard Worker
657*324bb76bSAndroid Build Coastguard Worker<div id="p18">
658*324bb76bSAndroid Build Coastguard Worker
659*324bb76bSAndroid Build Coastguard Worker<h3>a. Description</h3>
660*324bb76bSAndroid Build Coastguard Worker
661*324bb76bSAndroid Build Coastguard Worker<p>The Logical Screen Descriptor contains the parameters necessary to define
662*324bb76bSAndroid Build Coastguard Workerthe area of the display device within which the images will be rendered. The
663*324bb76bSAndroid Build Coastguard Workercoordinates in this block are given with respect to the top-left corner of the
664*324bb76bSAndroid Build Coastguard Workervirtual screen; they do not necessarily refer to absolute coordinates on the
665*324bb76bSAndroid Build Coastguard Workerdisplay device. This implies that they could refer to window coordinates in a
666*324bb76bSAndroid Build Coastguard Workerwindow-based environment or printer coordinates when a printer is used.</p>
667*324bb76bSAndroid Build Coastguard Worker
668*324bb76bSAndroid Build Coastguard Worker<p>This block is <i>required</i>; exactly one Logical Screen Descriptor must be
669*324bb76bSAndroid Build Coastguard Workerpresent per Data Stream.</p>
670*324bb76bSAndroid Build Coastguard Worker
671*324bb76bSAndroid Build Coastguard Worker<h3>b. Required Version</h3>
672*324bb76bSAndroid Build Coastguard Worker
673*324bb76bSAndroid Build Coastguard Worker<p>Not applicable. This block is not subject to a version number. This block
674*324bb76bSAndroid Build Coastguard Workermust appear immediately after the <a href="#header">Header</a>.</p>
675*324bb76bSAndroid Build Coastguard Worker
676*324bb76bSAndroid Build Coastguard Worker<h3>c. Syntax</h3>
677*324bb76bSAndroid Build Coastguard Worker
678*324bb76bSAndroid Build Coastguard Worker<table>
679*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
680*324bb76bSAndroid Build Coastguard Worker		<th rowspan="2">Byte #
681*324bb76bSAndroid Build Coastguard Worker		</th><th colspan="8">Bits
682*324bb76bSAndroid Build Coastguard Worker		</th><th rowspan="2">Field Name
683*324bb76bSAndroid Build Coastguard Worker		</th><th rowspan="2">Type
684*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
685*324bb76bSAndroid Build Coastguard Worker		<th>7
686*324bb76bSAndroid Build Coastguard Worker		</th><th>6
687*324bb76bSAndroid Build Coastguard Worker		</th><th>5
688*324bb76bSAndroid Build Coastguard Worker		</th><th>4
689*324bb76bSAndroid Build Coastguard Worker		</th><th>3
690*324bb76bSAndroid Build Coastguard Worker		</th><th>2
691*324bb76bSAndroid Build Coastguard Worker		</th><th>1
692*324bb76bSAndroid Build Coastguard Worker		</th><th>0
693*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
694*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">0
695*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2" colspan="8">
696*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Logical Screen Width
697*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Unsigned
698*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
699*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">1
700*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
701*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">2
702*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2" colspan="8">
703*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Logical Screen Height
704*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Unsigned
705*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
706*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">3
707*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
708*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">4
709*324bb76bSAndroid Build Coastguard Worker		</td><td>
710*324bb76bSAndroid Build Coastguard Worker		</td><td colspan="3">
711*324bb76bSAndroid Build Coastguard Worker		</td><td>
712*324bb76bSAndroid Build Coastguard Worker		</td><td colspan="3">
713*324bb76bSAndroid Build Coastguard Worker		</td><td>&lt;Packed Fields&gt;
714*324bb76bSAndroid Build Coastguard Worker		</td><td>See below
715*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
716*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">5
717*324bb76bSAndroid Build Coastguard Worker		</td><td colspan="8">
718*324bb76bSAndroid Build Coastguard Worker		</td><td>Background Color Index
719*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
720*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
721*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">6
722*324bb76bSAndroid Build Coastguard Worker		</td><td colspan="8">
723*324bb76bSAndroid Build Coastguard Worker		</td><td>Pixel Aspect Ratio
724*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
725*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
726*324bb76bSAndroid Build Coastguard Worker
727*324bb76bSAndroid Build Coastguard Worker<p>&lt;Packed Fields&gt; =</p>
728*324bb76bSAndroid Build Coastguard Worker
729*324bb76bSAndroid Build Coastguard Worker<table>
730*324bb76bSAndroid Build Coastguard Worker<tbody><tr>
731*324bb76bSAndroid Build Coastguard Worker	<td><a href="#globalcolortable">Global Color Table</a> Flag
732*324bb76bSAndroid Build Coastguard Worker	</td><td>1 Bit
733*324bb76bSAndroid Build Coastguard Worker</td></tr><tr>
734*324bb76bSAndroid Build Coastguard Worker	<td>Color Resolution
735*324bb76bSAndroid Build Coastguard Worker	</td><td>3 Bits
736*324bb76bSAndroid Build Coastguard Worker</td></tr><tr>
737*324bb76bSAndroid Build Coastguard Worker	<td>Sort Flag
738*324bb76bSAndroid Build Coastguard Worker	</td><td>1 Bit
739*324bb76bSAndroid Build Coastguard Worker</td></tr><tr>
740*324bb76bSAndroid Build Coastguard Worker	<td>Size of Global Color Table
741*324bb76bSAndroid Build Coastguard Worker	</td><td>3 Bits
742*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
743*324bb76bSAndroid Build Coastguard Worker
744*324bb76bSAndroid Build Coastguard Worker<ol style="list-style-type:lower-roman;">
745*324bb76bSAndroid Build Coastguard Worker	<li>Logical Screen Width:
746*324bb76bSAndroid Build Coastguard Worker	<ul>
747*324bb76bSAndroid Build Coastguard Worker		<li>Width, in pixels, of the Logical Screen where the images will be
748*324bb76bSAndroid Build Coastguard Worker		rendered in the displaying device.
749*324bb76bSAndroid Build Coastguard Worker	</li></ul>
750*324bb76bSAndroid Build Coastguard Worker	</li><li>Logical Screen Height:
751*324bb76bSAndroid Build Coastguard Worker	<ul>
752*324bb76bSAndroid Build Coastguard Worker		<li>Height, in pixels, of the Logical Screen where the images will be
753*324bb76bSAndroid Build Coastguard Worker		rendered in the displaying device.
754*324bb76bSAndroid Build Coastguard Worker	</li></ul>
755*324bb76bSAndroid Build Coastguard Worker	</li><li>Global Color Table Flag:
756*324bb76bSAndroid Build Coastguard Worker	<ul>
757*324bb76bSAndroid Build Coastguard Worker		<li>Flag indicating the presence of a Global Color Table; if the flag
758*324bb76bSAndroid Build Coastguard Worker		is set, the Global Color Table will immediately follow the Logical
759*324bb76bSAndroid Build Coastguard Worker		Screen Descriptor. This flag also selects the interpretation of the
760*324bb76bSAndroid Build Coastguard Worker		Background Color Index; if the flag is set, the value of the Background
761*324bb76bSAndroid Build Coastguard Worker		Color Index field should be used as the table index of the background
762*324bb76bSAndroid Build Coastguard Worker		color. (This field is the most significant bit of the byte.)
763*324bb76bSAndroid Build Coastguard Worker		</li><li>Values:
764*324bb76bSAndroid Build Coastguard Worker		<ul>
765*324bb76bSAndroid Build Coastguard Worker			<li>0: No Global Color Table follows, the Background Color Index
766*324bb76bSAndroid Build Coastguard Worker			field is meaningless.
767*324bb76bSAndroid Build Coastguard Worker			</li><li>1: A Global Color Table will immediately follow, the Background
768*324bb76bSAndroid Build Coastguard Worker			Color Index field is meaningful.
769*324bb76bSAndroid Build Coastguard Worker		</li></ul>
770*324bb76bSAndroid Build Coastguard Worker	</li></ul>
771*324bb76bSAndroid Build Coastguard Worker	</li><li>Color Resolution:
772*324bb76bSAndroid Build Coastguard Worker	<ul>
773*324bb76bSAndroid Build Coastguard Worker		<li>Number of bits per primary color available to the original image,
774*324bb76bSAndroid Build Coastguard Worker		minus 1. This value represents the size of the entire palette from
775*324bb76bSAndroid Build Coastguard Worker		which the colors in the graphic were selected, not the number of colors
776*324bb76bSAndroid Build Coastguard Worker		actually used in the graphic. For example, if the value in this field
777*324bb76bSAndroid Build Coastguard Worker		is 3, then the palette of the original image had 4 bits per primary
778*324bb76bSAndroid Build Coastguard Worker		color available to create the image. This value should be set to
779*324bb76bSAndroid Build Coastguard Worker		indicate the richness of the original palette, even if not every color
780*324bb76bSAndroid Build Coastguard Worker		from the whole palette is available on the source machine.
781*324bb76bSAndroid Build Coastguard Worker	</li></ul>
782*324bb76bSAndroid Build Coastguard Worker	</li><li>Sort Flag:
783*324bb76bSAndroid Build Coastguard Worker	<ul>
784*324bb76bSAndroid Build Coastguard Worker		<li>Indicates whether the Global Color Table is sorted. If the flag is
785*324bb76bSAndroid Build Coastguard Worker		set, the Global Color Table is sorted, in order of decreasing
786*324bb76bSAndroid Build Coastguard Worker		importance. Typically, the order would be decreasing frequency, with
787*324bb76bSAndroid Build Coastguard Worker		most frequent color first. This assists a decoder, with fewer available
788*324bb76bSAndroid Build Coastguard Worker		colors, in choosing the best subset of colors; the decoder may use an
789*324bb76bSAndroid Build Coastguard Worker		initial segment of the table to render the graphic.
790*324bb76bSAndroid Build Coastguard Worker		</li><li>Values:
791*324bb76bSAndroid Build Coastguard Worker		<ul>
792*324bb76bSAndroid Build Coastguard Worker			<li>0: Not ordered.
793*324bb76bSAndroid Build Coastguard Worker			</li><li>1: Ordered by decreasing importance, most important color
794*324bb76bSAndroid Build Coastguard Worker			first.
795*324bb76bSAndroid Build Coastguard Worker		</li></ul>
796*324bb76bSAndroid Build Coastguard Worker	</li></ul>
797*324bb76bSAndroid Build Coastguard Worker	</li><li>Size of Global Color Table:
798*324bb76bSAndroid Build Coastguard Worker	<ul>
799*324bb76bSAndroid Build Coastguard Worker		<li>If the Global Color Table Flag is set to 1, the value in this field
800*324bb76bSAndroid Build Coastguard Worker		is used to calculate the number of bytes contained in the Global Color
801*324bb76bSAndroid Build Coastguard Worker		Table. To determine that actual size of the color table, raise 2 to
802*324bb76bSAndroid Build Coastguard Worker		[the value of the field + 1]. Even if there is no Global Color Table
803*324bb76bSAndroid Build Coastguard Worker		specified, set this field according to the above formula so that
804*324bb76bSAndroid Build Coastguard Worker		decoders can choose the best graphics mode to display the stream in.
805*324bb76bSAndroid Build Coastguard Worker		(This field is made up of the 3 least significant bits of the byte.)
806*324bb76bSAndroid Build Coastguard Worker	</li></ul>
807*324bb76bSAndroid Build Coastguard Worker	</li><li>Background Color Index:
808*324bb76bSAndroid Build Coastguard Worker	<ul>
809*324bb76bSAndroid Build Coastguard Worker		<li>Index into the Global Color Table for the Background Color. The
810*324bb76bSAndroid Build Coastguard Worker		Background Color is the color used for those pixels on the screen that
811*324bb76bSAndroid Build Coastguard Worker		are not covered by an image. If the Global Color Table Flag is set to
812*324bb76bSAndroid Build Coastguard Worker		(zero), this field should be zero and should be ignored.
813*324bb76bSAndroid Build Coastguard Worker	</li></ul>
814*324bb76bSAndroid Build Coastguard Worker	</li><li>Pixel Aspect Ratio:
815*324bb76bSAndroid Build Coastguard Worker	<ul>
816*324bb76bSAndroid Build Coastguard Worker		<li>Factor used to compute an approximation of the aspect ratio of the
817*324bb76bSAndroid Build Coastguard Worker		pixel in the original image. If the value of the field is not 0, this
818*324bb76bSAndroid Build Coastguard Worker		approximation of the aspect ratio is computed based on the formula:<br>
819*324bb76bSAndroid Build Coastguard Worker		<img src="gif-aspectratio.png" alt="Aspect Ratio = (Pixel Aspect Ratio + 15) ÷ 64">
820*324bb76bSAndroid Build Coastguard Worker		</li><li>The Pixel Aspect Ratio is defined to be the quotient of the pixel's
821*324bb76bSAndroid Build Coastguard Worker		width over its height. The value range in this field allows
822*324bb76bSAndroid Build Coastguard Worker		specification of the widest pixel of 4:1 to the tallest pixel of 1:4 in
823*324bb76bSAndroid Build Coastguard Worker		increments of <img src="gif-1over64.png" alt="1/64">.
824*324bb76bSAndroid Build Coastguard Worker		</li><li>Values:
825*324bb76bSAndroid Build Coastguard Worker		<ul>
826*324bb76bSAndroid Build Coastguard Worker			<li>0: No aspect ratio information is given.
827*324bb76bSAndroid Build Coastguard Worker			</li><li>1…255: Value used in the computation.
828*324bb76bSAndroid Build Coastguard Worker		</li></ul>
829*324bb76bSAndroid Build Coastguard Worker	</li></ul>
830*324bb76bSAndroid Build Coastguard Worker</li></ol>
831*324bb76bSAndroid Build Coastguard Worker
832*324bb76bSAndroid Build Coastguard Worker<h3>d. Extensions and Scope</h3>
833*324bb76bSAndroid Build Coastguard Worker
834*324bb76bSAndroid Build Coastguard Worker<p>The scope of this block is the entire Data Stream. This block cannot be
835*324bb76bSAndroid Build Coastguard Workermodified by any extension.</p>
836*324bb76bSAndroid Build Coastguard Worker
837*324bb76bSAndroid Build Coastguard Worker<h3>e. Recommendations</h3>
838*324bb76bSAndroid Build Coastguard Worker
839*324bb76bSAndroid Build Coastguard Worker<p>None.</p>
840*324bb76bSAndroid Build Coastguard Worker
841*324bb76bSAndroid Build Coastguard Worker</div>
842*324bb76bSAndroid Build Coastguard Worker
843*324bb76bSAndroid Build Coastguard Worker<h2 id="globalcolortable">19. Global Color Table <span onclick="ToggleVis(19);">(hide/show)</span></h2>
844*324bb76bSAndroid Build Coastguard Worker
845*324bb76bSAndroid Build Coastguard Worker<div id="p19">
846*324bb76bSAndroid Build Coastguard Worker
847*324bb76bSAndroid Build Coastguard Worker<h3>a. Description</h3>
848*324bb76bSAndroid Build Coastguard Worker
849*324bb76bSAndroid Build Coastguard Worker<p>This block contains a color table, which is a sequence of bytes representing
850*324bb76bSAndroid Build Coastguard Worker<span class="rcomp">red</span>-<span class="gcomp">green</span>-<span class="bcomp">blue</span> color triplets. The Global Color Table is used by
851*324bb76bSAndroid Build Coastguard Workerimages without a <a href="#localcolortable">Local Color Table</a> and by <a href="#plaintextextension">Plain Text Extensions</a>. Its presence is marked by
852*324bb76bSAndroid Build Coastguard Workerthe Global Color Table Flag being set to 1 in the <a href="#logicalscreendescriptor">Logical Screen Descriptor</a>; if present, it
853*324bb76bSAndroid Build Coastguard Workerimmediately follows the Logical Screen Descriptor and contains a number of
854*324bb76bSAndroid Build Coastguard Workerbytes equal to:</p>
855*324bb76bSAndroid Build Coastguard Worker
856*324bb76bSAndroid Build Coastguard Worker<blockquote>
857*324bb76bSAndroid Build Coastguard Worker	<p>3 × 2<sup>Size of Global Color Table + 1</sup></p>
858*324bb76bSAndroid Build Coastguard Worker</blockquote>
859*324bb76bSAndroid Build Coastguard Worker
860*324bb76bSAndroid Build Coastguard Worker<p>This block is <i>optional</i>; at most one Global Color Table may be present
861*324bb76bSAndroid Build Coastguard Workerper Data Stream.</p>
862*324bb76bSAndroid Build Coastguard Worker
863*324bb76bSAndroid Build Coastguard Worker<h3>b. Required Version</h3>
864*324bb76bSAndroid Build Coastguard Worker
865*324bb76bSAndroid Build Coastguard Worker<p>87a.</p>
866*324bb76bSAndroid Build Coastguard Worker
867*324bb76bSAndroid Build Coastguard Worker<h3>c. Syntax</h3>
868*324bb76bSAndroid Build Coastguard Worker
869*324bb76bSAndroid Build Coastguard Worker<table>
870*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
871*324bb76bSAndroid Build Coastguard Worker		<th>Byte #
872*324bb76bSAndroid Build Coastguard Worker		</th><th>Field Name
873*324bb76bSAndroid Build Coastguard Worker		</th><th>Type
874*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
875*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">0
876*324bb76bSAndroid Build Coastguard Worker		</td><td><span class="rcomp">Red</span> 0
877*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
878*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
879*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">1
880*324bb76bSAndroid Build Coastguard Worker		</td><td><span class="gcomp">Green</span> 0
881*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
882*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
883*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">2
884*324bb76bSAndroid Build Coastguard Worker		</td><td><span class="bcomp">Blue</span> 0
885*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
886*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
887*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">3
888*324bb76bSAndroid Build Coastguard Worker		</td><td><span class="rcomp">Red</span> 1
889*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
890*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
891*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">4
892*324bb76bSAndroid Build Coastguard Worker		</td><td><span class="gcomp">Green</span> 1
893*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
894*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
895*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">⋮
896*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">⋮
897*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">⋮
898*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
899*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">766
900*324bb76bSAndroid Build Coastguard Worker		</td><td><span class="gcomp">Green</span> 255
901*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
902*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
903*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">up to 767
904*324bb76bSAndroid Build Coastguard Worker		</td><td><span class="bcomp">Blue</span> 255
905*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
906*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
907*324bb76bSAndroid Build Coastguard Worker
908*324bb76bSAndroid Build Coastguard Worker<h3>d. Extensions and Scope</h3>
909*324bb76bSAndroid Build Coastguard Worker
910*324bb76bSAndroid Build Coastguard Worker<p>The scope of this block is the entire Data Stream. This block cannot be
911*324bb76bSAndroid Build Coastguard Workermodified by any extension.</p>
912*324bb76bSAndroid Build Coastguard Worker
913*324bb76bSAndroid Build Coastguard Worker<h3>e. Recommendation</h3>
914*324bb76bSAndroid Build Coastguard Worker
915*324bb76bSAndroid Build Coastguard Worker<p>None.</p>
916*324bb76bSAndroid Build Coastguard Worker
917*324bb76bSAndroid Build Coastguard Worker</div>
918*324bb76bSAndroid Build Coastguard Worker
919*324bb76bSAndroid Build Coastguard Worker<h2 id="imagedescriptor">20. Image Descriptor <span onclick="ToggleVis(20);">(hide/show)</span></h2>
920*324bb76bSAndroid Build Coastguard Worker
921*324bb76bSAndroid Build Coastguard Worker<div id="p20">
922*324bb76bSAndroid Build Coastguard Worker
923*324bb76bSAndroid Build Coastguard Worker<h3>a. Description</h3>
924*324bb76bSAndroid Build Coastguard Worker
925*324bb76bSAndroid Build Coastguard Worker<p>Each image in the Data Stream is composed of an Image Descriptor, an
926*324bb76bSAndroid Build Coastguard Workeroptional <a href="#localcolortable">Local Color Table</a>, and the <a href="#tablebasedimagedata">image data</a>. Each image must fit within the
927*324bb76bSAndroid Build Coastguard Workerboundaries of the Logical Screen, as defined in the <a href="#logicalscreendescriptor">Logical Screen Descriptor</a>.</p>
928*324bb76bSAndroid Build Coastguard Worker
929*324bb76bSAndroid Build Coastguard Worker<p>The Image Descriptor contains the parameters necessary to process a table
930*324bb76bSAndroid Build Coastguard Workerbased image. The coordinates given in this block refer to coordinates within
931*324bb76bSAndroid Build Coastguard Workerthe Logical Screen, and are given in pixels. This block is a Graphic-Rendering
932*324bb76bSAndroid Build Coastguard WorkerBlock, optionally preceded by one or more Control blocks such as the <a href="#graphiccontrolextension">Graphic Control Extension</a>, and may be
933*324bb76bSAndroid Build Coastguard Workeroptionally followed by a Local Color Table; the Image Descriptor is always
934*324bb76bSAndroid Build Coastguard Workerfollowed by the image data.</p>
935*324bb76bSAndroid Build Coastguard Worker
936*324bb76bSAndroid Build Coastguard Worker<p>This block is <i>required</i> for an image. Exactly one Image Descriptor
937*324bb76bSAndroid Build Coastguard Workermust be present per image in the Data Stream. An unlimited number of images may
938*324bb76bSAndroid Build Coastguard Workerbe present per Data Stream.</p>
939*324bb76bSAndroid Build Coastguard Worker
940*324bb76bSAndroid Build Coastguard Worker<h3>b. Required Version</h3>
941*324bb76bSAndroid Build Coastguard Worker
942*324bb76bSAndroid Build Coastguard Worker<p>87a.</p>
943*324bb76bSAndroid Build Coastguard Worker
944*324bb76bSAndroid Build Coastguard Worker<h3>c. Syntax</h3>
945*324bb76bSAndroid Build Coastguard Worker
946*324bb76bSAndroid Build Coastguard Worker<table>
947*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
948*324bb76bSAndroid Build Coastguard Worker		<th rowspan="2">Byte #
949*324bb76bSAndroid Build Coastguard Worker		</th><th colspan="8">Bits
950*324bb76bSAndroid Build Coastguard Worker		</th><th rowspan="2">Field Name
951*324bb76bSAndroid Build Coastguard Worker		</th><th rowspan="2">Type
952*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
953*324bb76bSAndroid Build Coastguard Worker		<th>7
954*324bb76bSAndroid Build Coastguard Worker		</th><th>6
955*324bb76bSAndroid Build Coastguard Worker		</th><th>5
956*324bb76bSAndroid Build Coastguard Worker		</th><th>4
957*324bb76bSAndroid Build Coastguard Worker		</th><th>3
958*324bb76bSAndroid Build Coastguard Worker		</th><th>2
959*324bb76bSAndroid Build Coastguard Worker		</th><th>1
960*324bb76bSAndroid Build Coastguard Worker		</th><th>0
961*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
962*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">0
963*324bb76bSAndroid Build Coastguard Worker		</td><td colspan="8">
964*324bb76bSAndroid Build Coastguard Worker		</td><td>Image Separator
965*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
966*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
967*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">1
968*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2" colspan="8">
969*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Image Left Position
970*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Unsigned
971*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
972*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">2
973*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
974*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">3
975*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2" colspan="8">
976*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Image Top Position
977*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Unsigned
978*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
979*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">4
980*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
981*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">5
982*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2" colspan="8">
983*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Image Width
984*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Unsigned
985*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
986*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">6
987*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
988*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">7
989*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2" colspan="8">
990*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Image Height
991*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Unsigned
992*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
993*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">8
994*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
995*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">9
996*324bb76bSAndroid Build Coastguard Worker		</td><td>
997*324bb76bSAndroid Build Coastguard Worker		</td><td>
998*324bb76bSAndroid Build Coastguard Worker		</td><td>
999*324bb76bSAndroid Build Coastguard Worker		</td><td colspan="2">
1000*324bb76bSAndroid Build Coastguard Worker		</td><td colspan="3">
1001*324bb76bSAndroid Build Coastguard Worker		</td><td>&lt;Packed Fields&gt;
1002*324bb76bSAndroid Build Coastguard Worker		</td><td>See below
1003*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
1004*324bb76bSAndroid Build Coastguard Worker
1005*324bb76bSAndroid Build Coastguard Worker<p>&lt;Packed Fields&gt; =</p>
1006*324bb76bSAndroid Build Coastguard Worker
1007*324bb76bSAndroid Build Coastguard Worker<table>
1008*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
1009*324bb76bSAndroid Build Coastguard Worker		<td>Local Color Table Flag
1010*324bb76bSAndroid Build Coastguard Worker		</td><td>1 Bit
1011*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1012*324bb76bSAndroid Build Coastguard Worker		<td>Interlace Flag
1013*324bb76bSAndroid Build Coastguard Worker		</td><td>1 Bit
1014*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1015*324bb76bSAndroid Build Coastguard Worker		<td>Sort Flag
1016*324bb76bSAndroid Build Coastguard Worker		</td><td>1 Bit
1017*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1018*324bb76bSAndroid Build Coastguard Worker		<td>Reserved
1019*324bb76bSAndroid Build Coastguard Worker		</td><td>2 Bits
1020*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1021*324bb76bSAndroid Build Coastguard Worker		<td>Size of Local Color Table
1022*324bb76bSAndroid Build Coastguard Worker		</td><td>3 Bits
1023*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
1024*324bb76bSAndroid Build Coastguard Worker
1025*324bb76bSAndroid Build Coastguard Worker<ol style="list-style-type:lower-roman;">
1026*324bb76bSAndroid Build Coastguard Worker	<li>Image Separator:
1027*324bb76bSAndroid Build Coastguard Worker	<ul>
1028*324bb76bSAndroid Build Coastguard Worker		<li>Identifies the beginning of an Image Descriptor. This field
1029*324bb76bSAndroid Build Coastguard Worker		contains the fixed value <tt>0x2C</tt> (44, <tt>','</tt>).
1030*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1031*324bb76bSAndroid Build Coastguard Worker	</li><li>Image Left Position:
1032*324bb76bSAndroid Build Coastguard Worker	<ul>
1033*324bb76bSAndroid Build Coastguard Worker		<li>Column number, in pixels, of the left edge of the image, with
1034*324bb76bSAndroid Build Coastguard Worker		respect to the left edge of the Logical Screen. Leftmost column of the
1035*324bb76bSAndroid Build Coastguard Worker		Logical Screen is 0.
1036*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1037*324bb76bSAndroid Build Coastguard Worker	</li><li>Image Top Position:
1038*324bb76bSAndroid Build Coastguard Worker	<ul>
1039*324bb76bSAndroid Build Coastguard Worker		<li>Row number, in pixels, of the top edge of the image with respect to
1040*324bb76bSAndroid Build Coastguard Worker		the top edge of the Logical Screen. Top row of the Logical Screen is 0.
1041*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1042*324bb76bSAndroid Build Coastguard Worker	</li><li>Image Width:
1043*324bb76bSAndroid Build Coastguard Worker	<ul>
1044*324bb76bSAndroid Build Coastguard Worker		<li>Width of the image in pixels.
1045*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1046*324bb76bSAndroid Build Coastguard Worker	</li><li>Image Height:
1047*324bb76bSAndroid Build Coastguard Worker	<ul>
1048*324bb76bSAndroid Build Coastguard Worker		<li>Height of the image in pixels.
1049*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1050*324bb76bSAndroid Build Coastguard Worker	</li><li>Local Color Table Flag:
1051*324bb76bSAndroid Build Coastguard Worker	<ul>
1052*324bb76bSAndroid Build Coastguard Worker		<li>Indicates the presence of a Local Color Table immediately following
1053*324bb76bSAndroid Build Coastguard Worker		this Image Descriptor. (This field is the most significant bit of the
1054*324bb76bSAndroid Build Coastguard Worker		byte.)
1055*324bb76bSAndroid Build Coastguard Worker		</li><li>Values:
1056*324bb76bSAndroid Build Coastguard Worker		<ul>
1057*324bb76bSAndroid Build Coastguard Worker			<li>0: Local Color Table is not present. Use <a href="#globalcolortable">Global Color Table</a> if available.
1058*324bb76bSAndroid Build Coastguard Worker			</li><li>1: Local Color Table present, and to follow immediately after
1059*324bb76bSAndroid Build Coastguard Worker			this Image Descriptor.
1060*324bb76bSAndroid Build Coastguard Worker		</li></ul>
1061*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1062*324bb76bSAndroid Build Coastguard Worker	</li><li>Interlace Flag:
1063*324bb76bSAndroid Build Coastguard Worker	<ul>
1064*324bb76bSAndroid Build Coastguard Worker		<li>Indicates if the image is interlaced. An image is interlaced in a
1065*324bb76bSAndroid Build Coastguard Worker		four-pass interlace pattern; see <a href="#interlacedimages">Appendix
1066*324bb76bSAndroid Build Coastguard Worker		E</a> for details.
1067*324bb76bSAndroid Build Coastguard Worker		</li><li>Values:
1068*324bb76bSAndroid Build Coastguard Worker		<ul>
1069*324bb76bSAndroid Build Coastguard Worker			<li>0: Image is not interlaced.
1070*324bb76bSAndroid Build Coastguard Worker			</li><li>1: Image is interlaced.
1071*324bb76bSAndroid Build Coastguard Worker		</li></ul>
1072*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1073*324bb76bSAndroid Build Coastguard Worker	</li><li>Sort Flag:
1074*324bb76bSAndroid Build Coastguard Worker	<ul>
1075*324bb76bSAndroid Build Coastguard Worker		<li>Indicates whether the Local Color Table is sorted. If the flag is
1076*324bb76bSAndroid Build Coastguard Worker		set, the Local Color Table is sorted, in order of decreasing
1077*324bb76bSAndroid Build Coastguard Worker		importance. Typically, the order would be decreasing frequency, with
1078*324bb76bSAndroid Build Coastguard Worker		most frequent color first. This assists a decoder, with fewer available
1079*324bb76bSAndroid Build Coastguard Worker		colors, in choosing the best subset of colors; the decoder may use an
1080*324bb76bSAndroid Build Coastguard Worker		initial segment of the table to render the graphic.
1081*324bb76bSAndroid Build Coastguard Worker		</li><li>Values:
1082*324bb76bSAndroid Build Coastguard Worker		<ul>
1083*324bb76bSAndroid Build Coastguard Worker			<li>0: Not ordered.
1084*324bb76bSAndroid Build Coastguard Worker			</li><li>1: Ordered by decreasing importance, most important color
1085*324bb76bSAndroid Build Coastguard Worker			first.
1086*324bb76bSAndroid Build Coastguard Worker		</li></ul>
1087*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1088*324bb76bSAndroid Build Coastguard Worker	</li><li>Size of Local Color Table:
1089*324bb76bSAndroid Build Coastguard Worker	<ul>
1090*324bb76bSAndroid Build Coastguard Worker		<li>If the Local Color Table Flag is set to 1, the value in this field
1091*324bb76bSAndroid Build Coastguard Worker		is used to calculate the number of bytes contained in the Local Color
1092*324bb76bSAndroid Build Coastguard Worker		Table. To determine that actual size of the color table, raise 2 to
1093*324bb76bSAndroid Build Coastguard Worker		[the value of the field + 1]. This value should be 0 if there is no
1094*324bb76bSAndroid Build Coastguard Worker		Local Color Table specified. (This field is made up of the 3 least
1095*324bb76bSAndroid Build Coastguard Worker		significant bits of the byte.)
1096*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1097*324bb76bSAndroid Build Coastguard Worker</li></ol>
1098*324bb76bSAndroid Build Coastguard Worker
1099*324bb76bSAndroid Build Coastguard Worker<h3>d. Extensions and Scope</h3>
1100*324bb76bSAndroid Build Coastguard Worker
1101*324bb76bSAndroid Build Coastguard Worker<p>The scope of this block is the Table-based Image Data Block that follows it.
1102*324bb76bSAndroid Build Coastguard WorkerThis block may be modified by the Graphic Control Extension.</p>
1103*324bb76bSAndroid Build Coastguard Worker
1104*324bb76bSAndroid Build Coastguard Worker<h3>e. Recommendation</h3>
1105*324bb76bSAndroid Build Coastguard Worker
1106*324bb76bSAndroid Build Coastguard Worker<p>None.</p>
1107*324bb76bSAndroid Build Coastguard Worker
1108*324bb76bSAndroid Build Coastguard Worker</div>
1109*324bb76bSAndroid Build Coastguard Worker
1110*324bb76bSAndroid Build Coastguard Worker<h2 id="localcolortable">21. Local Color Table <span onclick="ToggleVis(21);">(hide/show)</span></h2>
1111*324bb76bSAndroid Build Coastguard Worker
1112*324bb76bSAndroid Build Coastguard Worker<div id="p21">
1113*324bb76bSAndroid Build Coastguard Worker
1114*324bb76bSAndroid Build Coastguard Worker<h3>a. Description</h3>
1115*324bb76bSAndroid Build Coastguard Worker
1116*324bb76bSAndroid Build Coastguard Worker<p>This block contains a color table, which is a sequence of bytes representing
1117*324bb76bSAndroid Build Coastguard Worker<span class="rcomp">red</span>-<span class="gcomp">green</span>-<span class="bcomp">blue</span> color triplets. The Local Color Table is used by the
1118*324bb76bSAndroid Build Coastguard Workerimage that immediately follows. Its presence is marked by the Local Color Table
1119*324bb76bSAndroid Build Coastguard WorkerFlag being set to 1 in the <a href="#imagedescriptor">Image Descriptor</a>; if
1120*324bb76bSAndroid Build Coastguard Workerpresent, the Local Color Table immediately follows the Image Descriptor and
1121*324bb76bSAndroid Build Coastguard Workercontains a number of bytes equal to:</p>
1122*324bb76bSAndroid Build Coastguard Worker
1123*324bb76bSAndroid Build Coastguard Worker<blockquote>
1124*324bb76bSAndroid Build Coastguard Worker	<p>3 × 2<sup>Size of Local Color Table + 1</sup></p>
1125*324bb76bSAndroid Build Coastguard Worker</blockquote>
1126*324bb76bSAndroid Build Coastguard Worker
1127*324bb76bSAndroid Build Coastguard Worker<p>If present, this color table temporarily becomes the active color table and
1128*324bb76bSAndroid Build Coastguard Workerthe following image should be processed using it. This block is
1129*324bb76bSAndroid Build Coastguard Worker<i>optional</i>; at most one Local Color Table may be present per Image
1130*324bb76bSAndroid Build Coastguard WorkerDescriptor and its scope is the single image associated with the Image
1131*324bb76bSAndroid Build Coastguard WorkerDescriptor that precedes it.</p>
1132*324bb76bSAndroid Build Coastguard Worker
1133*324bb76bSAndroid Build Coastguard Worker<h3>b. Required Version</h3>
1134*324bb76bSAndroid Build Coastguard Worker
1135*324bb76bSAndroid Build Coastguard Worker<p>87a.</p>
1136*324bb76bSAndroid Build Coastguard Worker
1137*324bb76bSAndroid Build Coastguard Worker<h3>c. Syntax</h3>
1138*324bb76bSAndroid Build Coastguard Worker
1139*324bb76bSAndroid Build Coastguard Worker<table>
1140*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
1141*324bb76bSAndroid Build Coastguard Worker		<th>Byte #
1142*324bb76bSAndroid Build Coastguard Worker		</th><th>Field Name
1143*324bb76bSAndroid Build Coastguard Worker		</th><th>Type
1144*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
1145*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">0
1146*324bb76bSAndroid Build Coastguard Worker		</td><td><span class="rcomp">Red</span> 0
1147*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1148*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1149*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">1
1150*324bb76bSAndroid Build Coastguard Worker		</td><td><span class="gcomp">Green</span> 0
1151*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1152*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1153*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">2
1154*324bb76bSAndroid Build Coastguard Worker		</td><td><span class="bcomp">Blue</span> 0
1155*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1156*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1157*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">3
1158*324bb76bSAndroid Build Coastguard Worker		</td><td><span class="rcomp">Red</span> 1
1159*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1160*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1161*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">4
1162*324bb76bSAndroid Build Coastguard Worker		</td><td><span class="gcomp">Green</span> 1
1163*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1164*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1165*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">⋮
1166*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">⋮
1167*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">⋮
1168*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1169*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">766
1170*324bb76bSAndroid Build Coastguard Worker		</td><td><span class="gcomp">Green</span> 255
1171*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1172*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1173*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">up to 767
1174*324bb76bSAndroid Build Coastguard Worker		</td><td><span class="bcomp">Blue</span> 255
1175*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1176*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
1177*324bb76bSAndroid Build Coastguard Worker
1178*324bb76bSAndroid Build Coastguard Worker<h3>d. Extensions and Scope</h3>
1179*324bb76bSAndroid Build Coastguard Worker
1180*324bb76bSAndroid Build Coastguard Worker<p>The scope of this block is the Table-based Image Data Block that immediately
1181*324bb76bSAndroid Build Coastguard Workerfollows it. This block cannot be modified by any extension.</p>
1182*324bb76bSAndroid Build Coastguard Worker
1183*324bb76bSAndroid Build Coastguard Worker<h3>e. Recommendations</h3>
1184*324bb76bSAndroid Build Coastguard Worker
1185*324bb76bSAndroid Build Coastguard Worker<p>None.</p>
1186*324bb76bSAndroid Build Coastguard Worker
1187*324bb76bSAndroid Build Coastguard Worker</div>
1188*324bb76bSAndroid Build Coastguard Worker
1189*324bb76bSAndroid Build Coastguard Worker<h2 id="tablebasedimagedata">22. Table Based Image Data <span onclick="ToggleVis(22);">(hide/show)</span></h2>
1190*324bb76bSAndroid Build Coastguard Worker
1191*324bb76bSAndroid Build Coastguard Worker<div id="p22">
1192*324bb76bSAndroid Build Coastguard Worker
1193*324bb76bSAndroid Build Coastguard Worker<h3>a. Description</h3>
1194*324bb76bSAndroid Build Coastguard Worker
1195*324bb76bSAndroid Build Coastguard Worker<p>The image data for a table based image consists of a sequence of <a href="#subblocks">sub-blocks</a>, of size at most 255 bytes each, containing an
1196*324bb76bSAndroid Build Coastguard Workerindex into the active color table, for each pixel in the image. Pixel indices
1197*324bb76bSAndroid Build Coastguard Workerare in order of left to right and from top to bottom. Each index must be within
1198*324bb76bSAndroid Build Coastguard Workerthe range of the size of the active color table, starting at 0. The sequence of
1199*324bb76bSAndroid Build Coastguard Workerindices is encoded using the LZW Algorithm with variable-length code, as
1200*324bb76bSAndroid Build Coastguard Workerdescribed in <a href="#lzw">Appendix F</a>.</p>
1201*324bb76bSAndroid Build Coastguard Worker
1202*324bb76bSAndroid Build Coastguard Worker<h3>b. Required Version</h3>
1203*324bb76bSAndroid Build Coastguard Worker
1204*324bb76bSAndroid Build Coastguard Worker<p>87a.</p>
1205*324bb76bSAndroid Build Coastguard Worker
1206*324bb76bSAndroid Build Coastguard Worker<h3>c. Syntax</h3>
1207*324bb76bSAndroid Build Coastguard Worker
1208*324bb76bSAndroid Build Coastguard Worker<p>The image data format is as follows:</p>
1209*324bb76bSAndroid Build Coastguard Worker
1210*324bb76bSAndroid Build Coastguard Worker<table>
1211*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
1212*324bb76bSAndroid Build Coastguard Worker		<th>Byte #
1213*324bb76bSAndroid Build Coastguard Worker		</th><th>Field Name
1214*324bb76bSAndroid Build Coastguard Worker		</th><th>Type
1215*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
1216*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">0
1217*324bb76bSAndroid Build Coastguard Worker		</td><td>LZW Minimum Code Size
1218*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1219*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
1220*324bb76bSAndroid Build Coastguard Worker
1221*324bb76bSAndroid Build Coastguard Worker<p></p>
1222*324bb76bSAndroid Build Coastguard Worker
1223*324bb76bSAndroid Build Coastguard Worker<table>
1224*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
1225*324bb76bSAndroid Build Coastguard Worker		<th>Field Name
1226*324bb76bSAndroid Build Coastguard Worker		</th><th>Type
1227*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
1228*324bb76bSAndroid Build Coastguard Worker		<td>Image Data
1229*324bb76bSAndroid Build Coastguard Worker		</td><td>Data Sub-blocks
1230*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
1231*324bb76bSAndroid Build Coastguard Worker
1232*324bb76bSAndroid Build Coastguard Worker<ol style="list-style-type:lower-roman;">
1233*324bb76bSAndroid Build Coastguard Worker	<li>LZW Minimum Code Size:
1234*324bb76bSAndroid Build Coastguard Worker	<ul>
1235*324bb76bSAndroid Build Coastguard Worker		<li>This byte determines the initial number of bits used for LZW codes
1236*324bb76bSAndroid Build Coastguard Worker		in the image data, as described in Appendix F.
1237*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1238*324bb76bSAndroid Build Coastguard Worker</li></ol>
1239*324bb76bSAndroid Build Coastguard Worker
1240*324bb76bSAndroid Build Coastguard Worker<h3>d. Extensions and Scope</h3>
1241*324bb76bSAndroid Build Coastguard Worker
1242*324bb76bSAndroid Build Coastguard Worker<p>This block has no scope, it contains raster data. Extensions intended to
1243*324bb76bSAndroid Build Coastguard Workermodify a Table-based image must appear before the corresponding <a href="#imagedescriptor">Image Descriptor</a>.</p>
1244*324bb76bSAndroid Build Coastguard Worker
1245*324bb76bSAndroid Build Coastguard Worker<h3>e. Recommendations</h3>
1246*324bb76bSAndroid Build Coastguard Worker
1247*324bb76bSAndroid Build Coastguard Worker<p>None.</p>
1248*324bb76bSAndroid Build Coastguard Worker
1249*324bb76bSAndroid Build Coastguard Worker</div>
1250*324bb76bSAndroid Build Coastguard Worker
1251*324bb76bSAndroid Build Coastguard Worker<h2 id="graphiccontrolextension">23. Graphic Control Extension <span onclick="ToggleVis(23);">(hide/show)</span></h2>
1252*324bb76bSAndroid Build Coastguard Worker
1253*324bb76bSAndroid Build Coastguard Worker<div id="p23">
1254*324bb76bSAndroid Build Coastguard Worker
1255*324bb76bSAndroid Build Coastguard Worker<h3>a. Description</h3>
1256*324bb76bSAndroid Build Coastguard Worker
1257*324bb76bSAndroid Build Coastguard Worker<p>The Graphic Control Extension contains parameters used when processing a
1258*324bb76bSAndroid Build Coastguard Workergraphic rendering block. The scope of this extension is the first graphic
1259*324bb76bSAndroid Build Coastguard Workerrendering block to follow. The extension contains only one <a href="#subblocks">data sub-block</a>.</p>
1260*324bb76bSAndroid Build Coastguard Worker
1261*324bb76bSAndroid Build Coastguard Worker<p>This block is <i>optional</i>; at most one Graphic Control Extension may
1262*324bb76bSAndroid Build Coastguard Workerprecede a graphic rendering block. This is the only limit to the number of
1263*324bb76bSAndroid Build Coastguard WorkerGraphic Control Extensions that may be contained in a Data Stream.</p>
1264*324bb76bSAndroid Build Coastguard Worker
1265*324bb76bSAndroid Build Coastguard Worker<h3>b. Required Version</h3>
1266*324bb76bSAndroid Build Coastguard Worker
1267*324bb76bSAndroid Build Coastguard Worker<p>89a.</p>
1268*324bb76bSAndroid Build Coastguard Worker
1269*324bb76bSAndroid Build Coastguard Worker<h3>c. Syntax</h3>
1270*324bb76bSAndroid Build Coastguard Worker
1271*324bb76bSAndroid Build Coastguard Worker<table>
1272*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
1273*324bb76bSAndroid Build Coastguard Worker		<th>Byte #
1274*324bb76bSAndroid Build Coastguard Worker		</th><th>Field Name
1275*324bb76bSAndroid Build Coastguard Worker		</th><th>Type
1276*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
1277*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">0
1278*324bb76bSAndroid Build Coastguard Worker		</td><td>Extension Introducer
1279*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1280*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1281*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">1
1282*324bb76bSAndroid Build Coastguard Worker		</td><td>Graphic Control Label
1283*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1284*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
1285*324bb76bSAndroid Build Coastguard Worker
1286*324bb76bSAndroid Build Coastguard Worker<p></p>
1287*324bb76bSAndroid Build Coastguard Worker
1288*324bb76bSAndroid Build Coastguard Worker<table>
1289*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
1290*324bb76bSAndroid Build Coastguard Worker		<th rowspan="2">Byte #
1291*324bb76bSAndroid Build Coastguard Worker		</th><th colspan="8">Bits
1292*324bb76bSAndroid Build Coastguard Worker		</th><th rowspan="2">Field Name
1293*324bb76bSAndroid Build Coastguard Worker		</th><th rowspan="2">Type
1294*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
1295*324bb76bSAndroid Build Coastguard Worker		<th>7
1296*324bb76bSAndroid Build Coastguard Worker		</th><th>6
1297*324bb76bSAndroid Build Coastguard Worker		</th><th>5
1298*324bb76bSAndroid Build Coastguard Worker		</th><th>4
1299*324bb76bSAndroid Build Coastguard Worker		</th><th>3
1300*324bb76bSAndroid Build Coastguard Worker		</th><th>2
1301*324bb76bSAndroid Build Coastguard Worker		</th><th>1
1302*324bb76bSAndroid Build Coastguard Worker		</th><th>0
1303*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
1304*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">0
1305*324bb76bSAndroid Build Coastguard Worker		</td><td colspan="8">
1306*324bb76bSAndroid Build Coastguard Worker		</td><td>Block Size
1307*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1308*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1309*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">1
1310*324bb76bSAndroid Build Coastguard Worker		</td><td colspan="3">
1311*324bb76bSAndroid Build Coastguard Worker		</td><td colspan="3">
1312*324bb76bSAndroid Build Coastguard Worker		</td><td>
1313*324bb76bSAndroid Build Coastguard Worker		</td><td>
1314*324bb76bSAndroid Build Coastguard Worker		</td><td>&lt;Packed Fields&gt;
1315*324bb76bSAndroid Build Coastguard Worker		</td><td>See below
1316*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1317*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">2
1318*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2" colspan="8">
1319*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Delay Time
1320*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Unsigned
1321*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1322*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">3
1323*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1324*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">4
1325*324bb76bSAndroid Build Coastguard Worker		</td><td colspan="8">
1326*324bb76bSAndroid Build Coastguard Worker		</td><td>Transparent Color Index
1327*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1328*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
1329*324bb76bSAndroid Build Coastguard Worker
1330*324bb76bSAndroid Build Coastguard Worker<p></p>
1331*324bb76bSAndroid Build Coastguard Worker
1332*324bb76bSAndroid Build Coastguard Worker<table>
1333*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
1334*324bb76bSAndroid Build Coastguard Worker		<th>Byte #
1335*324bb76bSAndroid Build Coastguard Worker		</th><th>Field Name
1336*324bb76bSAndroid Build Coastguard Worker		</th><th>Type
1337*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
1338*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">0
1339*324bb76bSAndroid Build Coastguard Worker		</td><td><a href="#blockterminator">Block Terminator</a>
1340*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1341*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
1342*324bb76bSAndroid Build Coastguard Worker
1343*324bb76bSAndroid Build Coastguard Worker<p>&lt;Packed Fields&gt; =</p>
1344*324bb76bSAndroid Build Coastguard Worker
1345*324bb76bSAndroid Build Coastguard Worker<table>
1346*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
1347*324bb76bSAndroid Build Coastguard Worker		<td>Reserved
1348*324bb76bSAndroid Build Coastguard Worker		</td><td>3 Bits
1349*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1350*324bb76bSAndroid Build Coastguard Worker		<td>Disposal Method
1351*324bb76bSAndroid Build Coastguard Worker		</td><td>3 Bits
1352*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1353*324bb76bSAndroid Build Coastguard Worker		<td>User Input Flag
1354*324bb76bSAndroid Build Coastguard Worker		</td><td>1 Bit
1355*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1356*324bb76bSAndroid Build Coastguard Worker		<td>Transparent Color Flag
1357*324bb76bSAndroid Build Coastguard Worker		</td><td>1 Bit
1358*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
1359*324bb76bSAndroid Build Coastguard Worker
1360*324bb76bSAndroid Build Coastguard Worker<ol style="list-style-type:lower-roman;">
1361*324bb76bSAndroid Build Coastguard Worker	<li>Extension Introducer:
1362*324bb76bSAndroid Build Coastguard Worker	<ul>
1363*324bb76bSAndroid Build Coastguard Worker		<li>Identifies the beginning of an extension block. This field contains
1364*324bb76bSAndroid Build Coastguard Worker		the fixed value <tt>0x21</tt> (33, <tt>'!'</tt>).
1365*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1366*324bb76bSAndroid Build Coastguard Worker	</li><li>Graphic Control Label:
1367*324bb76bSAndroid Build Coastguard Worker	<ul>
1368*324bb76bSAndroid Build Coastguard Worker		<li>Identifies the current block as a Graphic Control Extension. This
1369*324bb76bSAndroid Build Coastguard Worker		field contains the fixed value <tt>0xF9</tt> (249).
1370*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1371*324bb76bSAndroid Build Coastguard Worker	</li><li>Block Size:
1372*324bb76bSAndroid Build Coastguard Worker	<ul>
1373*324bb76bSAndroid Build Coastguard Worker		<li>Number of bytes in the block, after the Block Size field and up to
1374*324bb76bSAndroid Build Coastguard Worker		but not including the Block Terminator. This field contains the fixed
1375*324bb76bSAndroid Build Coastguard Worker		value <tt>0x04</tt> (4).
1376*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1377*324bb76bSAndroid Build Coastguard Worker	</li><li>Disposal Method:
1378*324bb76bSAndroid Build Coastguard Worker	<ul>
1379*324bb76bSAndroid Build Coastguard Worker		<li>Indicates the way in which the graphic is to be treated after being
1380*324bb76bSAndroid Build Coastguard Worker		displayed.
1381*324bb76bSAndroid Build Coastguard Worker		</li><li>Values:
1382*324bb76bSAndroid Build Coastguard Worker		<ul>
1383*324bb76bSAndroid Build Coastguard Worker			<li>0: No disposal specified. The decoder is not required to take
1384*324bb76bSAndroid Build Coastguard Worker			any action.
1385*324bb76bSAndroid Build Coastguard Worker			</li><li>1: Do not dispose. The graphic is to be left in place.
1386*324bb76bSAndroid Build Coastguard Worker			</li><li>2: Restore to background color. The area used by the graphic
1387*324bb76bSAndroid Build Coastguard Worker			must be restored to the background color.
1388*324bb76bSAndroid Build Coastguard Worker			</li><li>3: Restore to previous. The decoder is required to restore the
1389*324bb76bSAndroid Build Coastguard Worker			area overwritten by the graphic with what was there prior to rendering the graphic.
1390*324bb76bSAndroid Build Coastguard Worker			</li><li>4–7: To be defined.
1391*324bb76bSAndroid Build Coastguard Worker		</li></ul>
1392*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1393*324bb76bSAndroid Build Coastguard Worker	</li><li>User Input Flag:
1394*324bb76bSAndroid Build Coastguard Worker	<ul>
1395*324bb76bSAndroid Build Coastguard Worker		<li>Indicates whether or not user input is expected before continuing.
1396*324bb76bSAndroid Build Coastguard Worker		If the flag is set, processing will continue when user input is
1397*324bb76bSAndroid Build Coastguard Worker		entered. The nature of the User input is determined by the application
1398*324bb76bSAndroid Build Coastguard Worker		(Carriage Return, Mouse Button Click, etc.).
1399*324bb76bSAndroid Build Coastguard Worker		</li><li>Values:
1400*324bb76bSAndroid Build Coastguard Worker		<ul>
1401*324bb76bSAndroid Build Coastguard Worker			<li>0: User input is not expected.
1402*324bb76bSAndroid Build Coastguard Worker			</li><li>1: User input is expected.
1403*324bb76bSAndroid Build Coastguard Worker		</li></ul>
1404*324bb76bSAndroid Build Coastguard Worker		</li><li>When a Delay Time is used and the User Input Flag is set,
1405*324bb76bSAndroid Build Coastguard Worker		processing will continue when user input is received or when the delay
1406*324bb76bSAndroid Build Coastguard Worker		time expires, whichever occurs first.
1407*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1408*324bb76bSAndroid Build Coastguard Worker	</li><li>Transparency Flag:
1409*324bb76bSAndroid Build Coastguard Worker	<ul>
1410*324bb76bSAndroid Build Coastguard Worker		<li>Indicates whether a transparency index is given in the Transparent
1411*324bb76bSAndroid Build Coastguard Worker		Index field. (This field is the least significant bit of the byte.)
1412*324bb76bSAndroid Build Coastguard Worker		</li><li>Values:
1413*324bb76bSAndroid Build Coastguard Worker		<ul>
1414*324bb76bSAndroid Build Coastguard Worker			<li>0: Transparent Index is not given.
1415*324bb76bSAndroid Build Coastguard Worker			</li><li>1: Transparent Index is given.
1416*324bb76bSAndroid Build Coastguard Worker		</li></ul>
1417*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1418*324bb76bSAndroid Build Coastguard Worker	</li><li>Delay Time:
1419*324bb76bSAndroid Build Coastguard Worker	<ul>
1420*324bb76bSAndroid Build Coastguard Worker		<li>If not 0, this field specifies the number of hundredths (<img src="gif-1over100.png" alt="1/100">) of a second to wait before
1421*324bb76bSAndroid Build Coastguard Worker		continuing with the processing of the Data Stream. The clock starts
1422*324bb76bSAndroid Build Coastguard Worker		ticking immediately after the graphic is rendered. This field may be
1423*324bb76bSAndroid Build Coastguard Worker		used in conjunction with the User Input Flag field.
1424*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1425*324bb76bSAndroid Build Coastguard Worker	</li><li>Transparency Index:
1426*324bb76bSAndroid Build Coastguard Worker	<ul>
1427*324bb76bSAndroid Build Coastguard Worker		<li>The Transparency Index is such that when encountered, the
1428*324bb76bSAndroid Build Coastguard Worker		corresponding pixel of the display device is not modified and
1429*324bb76bSAndroid Build Coastguard Worker		processing goes on to the next pixel. The index is present if and only
1430*324bb76bSAndroid Build Coastguard Worker		if the Transparency Flag is set to 1.
1431*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1432*324bb76bSAndroid Build Coastguard Worker	</li><li>Block Terminator:
1433*324bb76bSAndroid Build Coastguard Worker	<ul>
1434*324bb76bSAndroid Build Coastguard Worker		<li>This zero-length data block marks the end of the Graphic Control
1435*324bb76bSAndroid Build Coastguard Worker		Extension.
1436*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1437*324bb76bSAndroid Build Coastguard Worker</li></ol>
1438*324bb76bSAndroid Build Coastguard Worker
1439*324bb76bSAndroid Build Coastguard Worker<h3>d. Extensions and Scope</h3>
1440*324bb76bSAndroid Build Coastguard Worker
1441*324bb76bSAndroid Build Coastguard Worker<p>The scope of this Extension is the graphic rendering block that follows it;
1442*324bb76bSAndroid Build Coastguard Workerit is possible for other extensions to be present between this block and its
1443*324bb76bSAndroid Build Coastguard Workertarget. This block can modify the <a href="#imagedescriptor">Image Descriptor
1444*324bb76bSAndroid Build Coastguard WorkerBlock</a> and the <a href="#plaintextextension">Plain Text Extension</a>.</p>
1445*324bb76bSAndroid Build Coastguard Worker
1446*324bb76bSAndroid Build Coastguard Worker<h3>e. Recommendations</h3>
1447*324bb76bSAndroid Build Coastguard Worker
1448*324bb76bSAndroid Build Coastguard Worker<ol style="list-style-type:lower-roman;">
1449*324bb76bSAndroid Build Coastguard Worker	<li>Disposal Method:
1450*324bb76bSAndroid Build Coastguard Worker	<ul>
1451*324bb76bSAndroid Build Coastguard Worker		<li>The mode Restore To Previous is intended to be used in small
1452*324bb76bSAndroid Build Coastguard Worker		sections of the graphic; the use of this mode imposes severe demands on
1453*324bb76bSAndroid Build Coastguard Worker		the decoder to store the section of the graphic that needs to be saved.
1454*324bb76bSAndroid Build Coastguard Worker		For this reason, this mode should be used sparingly. This mode is not
1455*324bb76bSAndroid Build Coastguard Worker		intended to save an entire graphic or large areas of a graphic; when
1456*324bb76bSAndroid Build Coastguard Worker		this is the case, the encoder should make every attempt to make the
1457*324bb76bSAndroid Build Coastguard Worker		sections of the graphic to be restored be separate graphics in the data
1458*324bb76bSAndroid Build Coastguard Worker		stream. In the case where a decoder is not capable of saving an area of
1459*324bb76bSAndroid Build Coastguard Worker		a graphic marked as Restore To Previous, it is recommended that a
1460*324bb76bSAndroid Build Coastguard Worker		decoder restore to the background color.
1461*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1462*324bb76bSAndroid Build Coastguard Worker	</li><li>User Input Flag:
1463*324bb76bSAndroid Build Coastguard Worker	<ul>
1464*324bb76bSAndroid Build Coastguard Worker		<li>When the flag is set, indicating that user input is expected, the
1465*324bb76bSAndroid Build Coastguard Worker		decoder may sound the bell (<tt>0x07</tt>, 7) to alert the user that
1466*324bb76bSAndroid Build Coastguard Worker		input is being expected. In the absence of a specified Delay Time, the
1467*324bb76bSAndroid Build Coastguard Worker		decoder should wait for user input indefinitely. It is recommended that
1468*324bb76bSAndroid Build Coastguard Worker		the encoder not set the User Input Flag without a Delay Time specified.
1469*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1470*324bb76bSAndroid Build Coastguard Worker</li></ol>
1471*324bb76bSAndroid Build Coastguard Worker
1472*324bb76bSAndroid Build Coastguard Worker</div>
1473*324bb76bSAndroid Build Coastguard Worker
1474*324bb76bSAndroid Build Coastguard Worker<h2 id="commentextension">24. Comment Extension <span onclick="ToggleVis(24);">(hide/show)</span></h2>
1475*324bb76bSAndroid Build Coastguard Worker
1476*324bb76bSAndroid Build Coastguard Worker<div id="p24">
1477*324bb76bSAndroid Build Coastguard Worker
1478*324bb76bSAndroid Build Coastguard Worker<h3>a. Description</h3>
1479*324bb76bSAndroid Build Coastguard Worker
1480*324bb76bSAndroid Build Coastguard Worker<p>The Comment Extension contains textual information which is not part of the
1481*324bb76bSAndroid Build Coastguard Workeractual graphics in the GIF Data Stream. It is suitable for including comments
1482*324bb76bSAndroid Build Coastguard Workerabout the graphics, credits, descriptions or any other type of non-control and
1483*324bb76bSAndroid Build Coastguard Workernon-graphic data. The Comment Extension may be ignored by the decoder, or it
1484*324bb76bSAndroid Build Coastguard Workermay be saved for later processing; under no circumstances should a Comment
1485*324bb76bSAndroid Build Coastguard WorkerExtension disrupt or interfere with the processing of the Data Stream.</p>
1486*324bb76bSAndroid Build Coastguard Worker
1487*324bb76bSAndroid Build Coastguard Worker<p>This block is <i>optional</i>; any number of them may appear in the Data
1488*324bb76bSAndroid Build Coastguard WorkerStream.</p>
1489*324bb76bSAndroid Build Coastguard Worker
1490*324bb76bSAndroid Build Coastguard Worker<h3>b. Required Version</h3>
1491*324bb76bSAndroid Build Coastguard Worker
1492*324bb76bSAndroid Build Coastguard Worker<p>89a.</p>
1493*324bb76bSAndroid Build Coastguard Worker
1494*324bb76bSAndroid Build Coastguard Worker<h3>c. Syntax</h3>
1495*324bb76bSAndroid Build Coastguard Worker
1496*324bb76bSAndroid Build Coastguard Worker<table>
1497*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
1498*324bb76bSAndroid Build Coastguard Worker		<th>Byte #
1499*324bb76bSAndroid Build Coastguard Worker		</th><th>Field Name
1500*324bb76bSAndroid Build Coastguard Worker		</th><th>Type
1501*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
1502*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">0
1503*324bb76bSAndroid Build Coastguard Worker		</td><td>Extension Introducer
1504*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1505*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1506*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">1
1507*324bb76bSAndroid Build Coastguard Worker		</td><td>Comment Label
1508*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1509*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
1510*324bb76bSAndroid Build Coastguard Worker
1511*324bb76bSAndroid Build Coastguard Worker<p></p>
1512*324bb76bSAndroid Build Coastguard Worker
1513*324bb76bSAndroid Build Coastguard Worker<table>
1514*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
1515*324bb76bSAndroid Build Coastguard Worker		<th>Byte #
1516*324bb76bSAndroid Build Coastguard Worker		</th><th>Field Name
1517*324bb76bSAndroid Build Coastguard Worker		</th><th>Type
1518*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
1519*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">N
1520*324bb76bSAndroid Build Coastguard Worker		</td><td>Comment Data
1521*324bb76bSAndroid Build Coastguard Worker		</td><td><a href="#subblocks">Data Sub-blocks</a>
1522*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
1523*324bb76bSAndroid Build Coastguard Worker
1524*324bb76bSAndroid Build Coastguard Worker<p></p>
1525*324bb76bSAndroid Build Coastguard Worker
1526*324bb76bSAndroid Build Coastguard Worker<table>
1527*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
1528*324bb76bSAndroid Build Coastguard Worker		<th>Byte #
1529*324bb76bSAndroid Build Coastguard Worker		</th><th>Field Name
1530*324bb76bSAndroid Build Coastguard Worker		</th><th>Type
1531*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
1532*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">0
1533*324bb76bSAndroid Build Coastguard Worker		</td><td><a href="#blockterminator">Block Terminator</a>
1534*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1535*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
1536*324bb76bSAndroid Build Coastguard Worker
1537*324bb76bSAndroid Build Coastguard Worker<ol style="list-style-type:lower-roman;">
1538*324bb76bSAndroid Build Coastguard Worker	<li>Extension Introducer:
1539*324bb76bSAndroid Build Coastguard Worker	<ul>
1540*324bb76bSAndroid Build Coastguard Worker		<li>Identifies the beginning of an extension block. This field contains
1541*324bb76bSAndroid Build Coastguard Worker		the fixed value <tt>0x21</tt> (33, <tt>'!'</tt>).
1542*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1543*324bb76bSAndroid Build Coastguard Worker	</li><li>Comment Label:
1544*324bb76bSAndroid Build Coastguard Worker	<ul>
1545*324bb76bSAndroid Build Coastguard Worker		<li>Identifies the block as a Comment Extension. This field contains
1546*324bb76bSAndroid Build Coastguard Worker		the fixed value <tt>0xFE</tt> (254).
1547*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1548*324bb76bSAndroid Build Coastguard Worker	</li><li>Comment Data:
1549*324bb76bSAndroid Build Coastguard Worker	<ul>
1550*324bb76bSAndroid Build Coastguard Worker		<li>Sequence of sub-blocks, each of size at most 255 bytes and at least
1551*324bb76bSAndroid Build Coastguard Worker		1 byte, with the size in a byte preceding the data. The end of the
1552*324bb76bSAndroid Build Coastguard Worker		sequence is marked by the <a href="#blockterminator">Block
1553*324bb76bSAndroid Build Coastguard Worker		Terminator</a>.
1554*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1555*324bb76bSAndroid Build Coastguard Worker	</li><li>Block Terminator:
1556*324bb76bSAndroid Build Coastguard Worker	<ul>
1557*324bb76bSAndroid Build Coastguard Worker		<li>This zero-length data block marks the end of the Comment Extension.
1558*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1559*324bb76bSAndroid Build Coastguard Worker</li></ol>
1560*324bb76bSAndroid Build Coastguard Worker
1561*324bb76bSAndroid Build Coastguard Worker<h3>d. Extensions and Scope</h3>
1562*324bb76bSAndroid Build Coastguard Worker
1563*324bb76bSAndroid Build Coastguard Worker<p>This block does not have scope. This block cannot be modified by any
1564*324bb76bSAndroid Build Coastguard Workerextension.</p>
1565*324bb76bSAndroid Build Coastguard Worker
1566*324bb76bSAndroid Build Coastguard Worker<h3>e. Recommendations</h3>
1567*324bb76bSAndroid Build Coastguard Worker
1568*324bb76bSAndroid Build Coastguard Worker<ol style="list-style-type:lower-roman;">
1569*324bb76bSAndroid Build Coastguard Worker	<li>Data:
1570*324bb76bSAndroid Build Coastguard Worker	<ul>
1571*324bb76bSAndroid Build Coastguard Worker		<li>This block is intended for humans. It should contain text using the
1572*324bb76bSAndroid Build Coastguard Worker		7-bit ASCII character set. This block should not be used to store
1573*324bb76bSAndroid Build Coastguard Worker		control information for custom processing.
1574*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1575*324bb76bSAndroid Build Coastguard Worker	</li><li>Position:
1576*324bb76bSAndroid Build Coastguard Worker	<ul>
1577*324bb76bSAndroid Build Coastguard Worker		<li>This block may appear at any point in the Data Stream at which a
1578*324bb76bSAndroid Build Coastguard Worker		block can begin; however, it is recommended that Comment Extensions do
1579*324bb76bSAndroid Build Coastguard Worker		not interfere with Control or Data blocks; they should be located at
1580*324bb76bSAndroid Build Coastguard Worker		the beginning or at the end of the Data Stream to the extent possible.
1581*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1582*324bb76bSAndroid Build Coastguard Worker</li></ol>
1583*324bb76bSAndroid Build Coastguard Worker
1584*324bb76bSAndroid Build Coastguard Worker</div>
1585*324bb76bSAndroid Build Coastguard Worker
1586*324bb76bSAndroid Build Coastguard Worker<h2 id="plaintextextension">25. Plain Text Extension <span onclick="ToggleVis(25);">(hide/show)</span></h2>
1587*324bb76bSAndroid Build Coastguard Worker
1588*324bb76bSAndroid Build Coastguard Worker<div id="p25">
1589*324bb76bSAndroid Build Coastguard Worker
1590*324bb76bSAndroid Build Coastguard Worker<h3>a. Description</h3>
1591*324bb76bSAndroid Build Coastguard Worker
1592*324bb76bSAndroid Build Coastguard Worker<p>The Plain Text Extension contains textual data and the parameters necessary
1593*324bb76bSAndroid Build Coastguard Workerto render that data as a graphic, in a simple form. The textual data will be
1594*324bb76bSAndroid Build Coastguard Workerencoded with the 7-bit printable ASCII characters. Text data are rendered using
1595*324bb76bSAndroid Build Coastguard Workera grid of character cells defined by the parameters in the block fields. Each
1596*324bb76bSAndroid Build Coastguard Workercharacter is rendered in an individual cell. The textual data in this block is
1597*324bb76bSAndroid Build Coastguard Workerto be rendered as mono-spaced characters, one character per cell, with a best
1598*324bb76bSAndroid Build Coastguard Workerfitting font and size. For further information, see the section on
1599*324bb76bSAndroid Build Coastguard WorkerRecommendations below.</p>
1600*324bb76bSAndroid Build Coastguard Worker
1601*324bb76bSAndroid Build Coastguard Worker<p>The data characters are taken sequentially from the data portion of the
1602*324bb76bSAndroid Build Coastguard Workerblock and rendered within a cell, starting with the upper left cell in the grid
1603*324bb76bSAndroid Build Coastguard Workerand proceeding from left to right and from top to bottom. Text data is rendered
1604*324bb76bSAndroid Build Coastguard Workeruntil the end of data is reached or the character grid is filled. The Character
1605*324bb76bSAndroid Build Coastguard WorkerGrid contains an integral number of cells; in the case that the cell dimensions
1606*324bb76bSAndroid Build Coastguard Workerdo not allow for an integral number, fractional cells must be discarded; an
1607*324bb76bSAndroid Build Coastguard Workerencoder must be careful to specify the grid dimensions accurately so that this
1608*324bb76bSAndroid Build Coastguard Workerdoes not happen.</p>
1609*324bb76bSAndroid Build Coastguard Worker
1610*324bb76bSAndroid Build Coastguard Worker<p>This block requires a <a href="#globalcolortable">Global Color Table</a> to
1611*324bb76bSAndroid Build Coastguard Workerbe available; the colors used by this block reference the Global Color Table in
1612*324bb76bSAndroid Build Coastguard Workerthe Stream if there is one, or the Global Color Table from a previous Stream,
1613*324bb76bSAndroid Build Coastguard Workerif one was saved.</p>
1614*324bb76bSAndroid Build Coastguard Worker
1615*324bb76bSAndroid Build Coastguard Worker<p>This block is a graphic rendering block, therefore it may be modified by a
1616*324bb76bSAndroid Build Coastguard Worker<a href="#graphiccontrolextension">Graphic Control Extension</a>.</p>
1617*324bb76bSAndroid Build Coastguard Worker
1618*324bb76bSAndroid Build Coastguard Worker<p>This block is <i>optional</i>; any number of them may appear in the Data
1619*324bb76bSAndroid Build Coastguard WorkerStream.</p>
1620*324bb76bSAndroid Build Coastguard Worker
1621*324bb76bSAndroid Build Coastguard Worker<h3>b. Required Version</h3>
1622*324bb76bSAndroid Build Coastguard Worker
1623*324bb76bSAndroid Build Coastguard Worker<p>89a.</p>
1624*324bb76bSAndroid Build Coastguard Worker
1625*324bb76bSAndroid Build Coastguard Worker<h3>c. Syntax</h3>
1626*324bb76bSAndroid Build Coastguard Worker
1627*324bb76bSAndroid Build Coastguard Worker<table>
1628*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
1629*324bb76bSAndroid Build Coastguard Worker		<th>Byte #
1630*324bb76bSAndroid Build Coastguard Worker		</th><th>Field Name
1631*324bb76bSAndroid Build Coastguard Worker		</th><th>Type
1632*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
1633*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">0
1634*324bb76bSAndroid Build Coastguard Worker		</td><td>Extension Introducer
1635*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1636*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1637*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">1
1638*324bb76bSAndroid Build Coastguard Worker		</td><td>Plain Text Label
1639*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1640*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
1641*324bb76bSAndroid Build Coastguard Worker
1642*324bb76bSAndroid Build Coastguard Worker<p></p>
1643*324bb76bSAndroid Build Coastguard Worker
1644*324bb76bSAndroid Build Coastguard Worker<table>
1645*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
1646*324bb76bSAndroid Build Coastguard Worker		<th>Byte #
1647*324bb76bSAndroid Build Coastguard Worker		</th><th>Field Name
1648*324bb76bSAndroid Build Coastguard Worker		</th><th>Type
1649*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
1650*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">0
1651*324bb76bSAndroid Build Coastguard Worker		</td><td>Block Size
1652*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1653*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1654*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">1
1655*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Text Grid Left Position
1656*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Unsigned
1657*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1658*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">2
1659*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1660*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">3
1661*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Text Grid Top Position
1662*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Unsigned
1663*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1664*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">4
1665*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1666*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">5
1667*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Text Grid Width
1668*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Unsigned
1669*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1670*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">6
1671*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1672*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">7
1673*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Text Grid Height
1674*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Unsigned
1675*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1676*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">8
1677*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1678*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">9
1679*324bb76bSAndroid Build Coastguard Worker		</td><td>Character Cell Width
1680*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1681*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1682*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">10
1683*324bb76bSAndroid Build Coastguard Worker		</td><td>Character Cell Height
1684*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1685*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1686*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">11
1687*324bb76bSAndroid Build Coastguard Worker		</td><td>Text Foreground Color Index
1688*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1689*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1690*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">12
1691*324bb76bSAndroid Build Coastguard Worker		</td><td>Text Background Color Index
1692*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1693*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
1694*324bb76bSAndroid Build Coastguard Worker
1695*324bb76bSAndroid Build Coastguard Worker<p></p>
1696*324bb76bSAndroid Build Coastguard Worker
1697*324bb76bSAndroid Build Coastguard Worker<table>
1698*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
1699*324bb76bSAndroid Build Coastguard Worker		<th>Byte #
1700*324bb76bSAndroid Build Coastguard Worker		</th><th>Field Name
1701*324bb76bSAndroid Build Coastguard Worker		</th><th>Type
1702*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
1703*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">N
1704*324bb76bSAndroid Build Coastguard Worker		</td><td>Plain Text Data
1705*324bb76bSAndroid Build Coastguard Worker		</td><td>Data Sub-blocks
1706*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
1707*324bb76bSAndroid Build Coastguard Worker
1708*324bb76bSAndroid Build Coastguard Worker<p></p>
1709*324bb76bSAndroid Build Coastguard Worker
1710*324bb76bSAndroid Build Coastguard Worker<table>
1711*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
1712*324bb76bSAndroid Build Coastguard Worker		<th>Byte #
1713*324bb76bSAndroid Build Coastguard Worker		</th><th>Field Name
1714*324bb76bSAndroid Build Coastguard Worker		</th><th>Type
1715*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
1716*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">0
1717*324bb76bSAndroid Build Coastguard Worker		</td><td><a href="#blockterminator">Block Terminator</a>
1718*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1719*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
1720*324bb76bSAndroid Build Coastguard Worker
1721*324bb76bSAndroid Build Coastguard Worker<ol style="list-style-type:lower-roman;">
1722*324bb76bSAndroid Build Coastguard Worker	<li>Extension Introducer:
1723*324bb76bSAndroid Build Coastguard Worker	<ul>
1724*324bb76bSAndroid Build Coastguard Worker		<li>Identifies the beginning of an extension block. This field contains
1725*324bb76bSAndroid Build Coastguard Worker		the fixed value <tt>0x21</tt> (33, <tt>'!'</tt>).
1726*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1727*324bb76bSAndroid Build Coastguard Worker	</li><li>Plain Text Label:
1728*324bb76bSAndroid Build Coastguard Worker	<ul>
1729*324bb76bSAndroid Build Coastguard Worker		<li>Identifies the current block as a Plain Text Extension. This field
1730*324bb76bSAndroid Build Coastguard Worker		contains the fixed value <tt>0x01</tt> (1).
1731*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1732*324bb76bSAndroid Build Coastguard Worker	</li><li>Block Size:
1733*324bb76bSAndroid Build Coastguard Worker	<ul>
1734*324bb76bSAndroid Build Coastguard Worker		<li>Number of bytes in the extension, after the Block Size field and up
1735*324bb76bSAndroid Build Coastguard Worker		to but not including the beginning of the data portion. This field
1736*324bb76bSAndroid Build Coastguard Worker		contains the fixed value <tt>0x0C</tt> (12).
1737*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1738*324bb76bSAndroid Build Coastguard Worker	</li><li>Text Grid Left Position:
1739*324bb76bSAndroid Build Coastguard Worker	<ul>
1740*324bb76bSAndroid Build Coastguard Worker		<li>Column number, in pixels, of the left edge of the text grid, with
1741*324bb76bSAndroid Build Coastguard Worker		respect to the left edge of the Logical Screen.
1742*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1743*324bb76bSAndroid Build Coastguard Worker	</li><li>Text Grid Top Position:
1744*324bb76bSAndroid Build Coastguard Worker	<ul>
1745*324bb76bSAndroid Build Coastguard Worker		<li>Row number, in pixels, of the top edge of the text grid, with
1746*324bb76bSAndroid Build Coastguard Worker		respect to the top edge of the Logical Screen.
1747*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1748*324bb76bSAndroid Build Coastguard Worker	</li><li>Image Grid Width:
1749*324bb76bSAndroid Build Coastguard Worker	<ul>
1750*324bb76bSAndroid Build Coastguard Worker		<li>Width of the text grid in pixels.
1751*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1752*324bb76bSAndroid Build Coastguard Worker	</li><li>Image Grid Height:
1753*324bb76bSAndroid Build Coastguard Worker	<ul>
1754*324bb76bSAndroid Build Coastguard Worker		<li>Height of the text grid in pixels.
1755*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1756*324bb76bSAndroid Build Coastguard Worker	</li><li>Character Cell Width:
1757*324bb76bSAndroid Build Coastguard Worker	<ul>
1758*324bb76bSAndroid Build Coastguard Worker		<li>Width, in pixels, of each cell in the grid.
1759*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1760*324bb76bSAndroid Build Coastguard Worker	</li><li>Character Cell Height:
1761*324bb76bSAndroid Build Coastguard Worker	<ul>
1762*324bb76bSAndroid Build Coastguard Worker		<li>Height, in pixels, of each cell in the grid.
1763*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1764*324bb76bSAndroid Build Coastguard Worker	</li><li>Text Foreground Color Index:
1765*324bb76bSAndroid Build Coastguard Worker	<ul>
1766*324bb76bSAndroid Build Coastguard Worker		<li>Index into the Global Color Table to be used to render the text
1767*324bb76bSAndroid Build Coastguard Worker		foreground.
1768*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1769*324bb76bSAndroid Build Coastguard Worker	</li><li>Text Background Color Index:
1770*324bb76bSAndroid Build Coastguard Worker	<ul>
1771*324bb76bSAndroid Build Coastguard Worker		<li>Index into the Global Color Table to be used to render the text
1772*324bb76bSAndroid Build Coastguard Worker		background.
1773*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1774*324bb76bSAndroid Build Coastguard Worker	</li><li>Plain Text Data:
1775*324bb76bSAndroid Build Coastguard Worker	<ul>
1776*324bb76bSAndroid Build Coastguard Worker		<li>Sequence of sub-blocks, each of size at most 255 bytes and at least
1777*324bb76bSAndroid Build Coastguard Worker		1 byte, with the size in a byte preceding the data. The end of the
1778*324bb76bSAndroid Build Coastguard Worker		sequence is marked by the Block Terminator.
1779*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1780*324bb76bSAndroid Build Coastguard Worker	</li><li>Block Terminator:
1781*324bb76bSAndroid Build Coastguard Worker	<ul>
1782*324bb76bSAndroid Build Coastguard Worker		<li>This zero-length data block marks the end of the Plain Text Data
1783*324bb76bSAndroid Build Coastguard Worker		Blocks.
1784*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1785*324bb76bSAndroid Build Coastguard Worker</li></ol>
1786*324bb76bSAndroid Build Coastguard Worker
1787*324bb76bSAndroid Build Coastguard Worker<h3>d. Extensions and Scope</h3>
1788*324bb76bSAndroid Build Coastguard Worker
1789*324bb76bSAndroid Build Coastguard Worker<p>The scope of this block is the Plain Text Data Block contained in it. This
1790*324bb76bSAndroid Build Coastguard Workerblock may be modified by the Graphic Control Extension.</p>
1791*324bb76bSAndroid Build Coastguard Worker
1792*324bb76bSAndroid Build Coastguard Worker<h3 id="p25e">e. Recommendations</h3>
1793*324bb76bSAndroid Build Coastguard Worker
1794*324bb76bSAndroid Build Coastguard Worker<p>The data in the Plain Text Extension is assumed to be preformatted. The
1795*324bb76bSAndroid Build Coastguard Workerselection of font and size is left to the discretion of the decoder. If
1796*324bb76bSAndroid Build Coastguard Workercharacters less than <tt>0x20</tt> (32) or greater than <tt>0xF7</tt> (247) are
1797*324bb76bSAndroid Build Coastguard Workerencountered, it is recommended that the decoder display a Space character
1798*324bb76bSAndroid Build Coastguard Worker(<tt>0x20</tt>, 32). The encoder should use grid and cell dimensions such that
1799*324bb76bSAndroid Build Coastguard Workeran integral number of cells fit in the grid both horizontally as well as
1800*324bb76bSAndroid Build Coastguard Workervertically. For broadest compatibility, character cell dimensions should be
1801*324bb76bSAndroid Build Coastguard Workeraround 8×8 or 8×16 (width × height); consider an image for
1802*324bb76bSAndroid Build Coastguard Workerunusual sized text.</p>
1803*324bb76bSAndroid Build Coastguard Worker
1804*324bb76bSAndroid Build Coastguard Worker<p><i>Editor's (Kalle's) note: the upper limit for a printable character,
1805*324bb76bSAndroid Build Coastguard Worker<tt>0xF7</tt>, seems odd. Maybe they meant <tt>0x7E</tt> (126, <tt>'~'</tt>,
1806*324bb76bSAndroid Build Coastguard Workerthe last printable 7-bit ASCII character)?</i></p>
1807*324bb76bSAndroid Build Coastguard Worker
1808*324bb76bSAndroid Build Coastguard Worker</div>
1809*324bb76bSAndroid Build Coastguard Worker
1810*324bb76bSAndroid Build Coastguard Worker<h2 id="applicationextension">26. Application Extension <span onclick="ToggleVis(26);">(hide/show)</span></h2>
1811*324bb76bSAndroid Build Coastguard Worker
1812*324bb76bSAndroid Build Coastguard Worker<div id="p26">
1813*324bb76bSAndroid Build Coastguard Worker
1814*324bb76bSAndroid Build Coastguard Worker<h3>a. Description</h3>
1815*324bb76bSAndroid Build Coastguard Worker
1816*324bb76bSAndroid Build Coastguard Worker<p>The Application Extension contains application-specific information; it
1817*324bb76bSAndroid Build Coastguard Workerconforms with the extension block syntax, as described below, and its block
1818*324bb76bSAndroid Build Coastguard Workerlabel is <tt>0xFF</tt> (255).</p>
1819*324bb76bSAndroid Build Coastguard Worker
1820*324bb76bSAndroid Build Coastguard Worker<h3>b. Required Version</h3>
1821*324bb76bSAndroid Build Coastguard Worker
1822*324bb76bSAndroid Build Coastguard Worker<p>89a.</p>
1823*324bb76bSAndroid Build Coastguard Worker
1824*324bb76bSAndroid Build Coastguard Worker<h3>c. Syntax</h3>
1825*324bb76bSAndroid Build Coastguard Worker
1826*324bb76bSAndroid Build Coastguard Worker<table>
1827*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
1828*324bb76bSAndroid Build Coastguard Worker		<th>Byte #
1829*324bb76bSAndroid Build Coastguard Worker		</th><th>Field Name
1830*324bb76bSAndroid Build Coastguard Worker		</th><th>Type
1831*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
1832*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">0
1833*324bb76bSAndroid Build Coastguard Worker		</td><td>Extension Introducer
1834*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1835*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1836*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">1
1837*324bb76bSAndroid Build Coastguard Worker		</td><td>Extension Label
1838*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1839*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
1840*324bb76bSAndroid Build Coastguard Worker
1841*324bb76bSAndroid Build Coastguard Worker<p></p>
1842*324bb76bSAndroid Build Coastguard Worker
1843*324bb76bSAndroid Build Coastguard Worker<table>
1844*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
1845*324bb76bSAndroid Build Coastguard Worker		<th>Byte #
1846*324bb76bSAndroid Build Coastguard Worker		</th><th>Field Name
1847*324bb76bSAndroid Build Coastguard Worker		</th><th>Type
1848*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
1849*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">0
1850*324bb76bSAndroid Build Coastguard Worker		</td><td>Block Size
1851*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1852*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1853*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">1…8
1854*324bb76bSAndroid Build Coastguard Worker		</td><td>Application Identifier
1855*324bb76bSAndroid Build Coastguard Worker		</td><td>8 Bytes
1856*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1857*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">9…11
1858*324bb76bSAndroid Build Coastguard Worker		</td><td>Application Authentication Code
1859*324bb76bSAndroid Build Coastguard Worker		</td><td>3 Bytes
1860*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
1861*324bb76bSAndroid Build Coastguard Worker
1862*324bb76bSAndroid Build Coastguard Worker<p></p>
1863*324bb76bSAndroid Build Coastguard Worker
1864*324bb76bSAndroid Build Coastguard Worker<table>
1865*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
1866*324bb76bSAndroid Build Coastguard Worker		<th>Field Name
1867*324bb76bSAndroid Build Coastguard Worker		</th><th>Type
1868*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
1869*324bb76bSAndroid Build Coastguard Worker		<td>Application Data
1870*324bb76bSAndroid Build Coastguard Worker		</td><td><a href="#subblocks">Data Sub-blocks</a>
1871*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
1872*324bb76bSAndroid Build Coastguard Worker
1873*324bb76bSAndroid Build Coastguard Worker<p></p>
1874*324bb76bSAndroid Build Coastguard Worker
1875*324bb76bSAndroid Build Coastguard Worker<table>
1876*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
1877*324bb76bSAndroid Build Coastguard Worker		<th>Byte #
1878*324bb76bSAndroid Build Coastguard Worker		</th><th>Field Name
1879*324bb76bSAndroid Build Coastguard Worker		</th><th>Type
1880*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
1881*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">0
1882*324bb76bSAndroid Build Coastguard Worker		</td><td><a href="#blockterminator">Block Terminator</a>
1883*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1884*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
1885*324bb76bSAndroid Build Coastguard Worker
1886*324bb76bSAndroid Build Coastguard Worker<ol style="list-style-type:lower-roman;">
1887*324bb76bSAndroid Build Coastguard Worker	<li>Extension Introducer:
1888*324bb76bSAndroid Build Coastguard Worker	<ul>
1889*324bb76bSAndroid Build Coastguard Worker		<li>Defines this block as an extension. This field contains the fixed
1890*324bb76bSAndroid Build Coastguard Worker		value <tt>0x21</tt> (33, <tt>'!'</tt>).
1891*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1892*324bb76bSAndroid Build Coastguard Worker	</li><li>Application Extension Label:
1893*324bb76bSAndroid Build Coastguard Worker	<ul>
1894*324bb76bSAndroid Build Coastguard Worker		<li>Identifies the block as an Application Extension. This field
1895*324bb76bSAndroid Build Coastguard Worker		contains the fixed value <tt>0xFF</tt> (255).
1896*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1897*324bb76bSAndroid Build Coastguard Worker	</li><li>Block Size:
1898*324bb76bSAndroid Build Coastguard Worker	<ul>
1899*324bb76bSAndroid Build Coastguard Worker		<li>Number of bytes in this extension block, following the Block Size
1900*324bb76bSAndroid Build Coastguard Worker		field, up to but not including the beginning of the Application Data.
1901*324bb76bSAndroid Build Coastguard Worker		This field contains the fixed value <tt>0x0B</tt> (11).
1902*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1903*324bb76bSAndroid Build Coastguard Worker	</li><li>Application Identifier:
1904*324bb76bSAndroid Build Coastguard Worker	<ul>
1905*324bb76bSAndroid Build Coastguard Worker		<li>Sequence of eight printable ASCII characters used to identify the
1906*324bb76bSAndroid Build Coastguard Worker		application owning the Application Extension.
1907*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1908*324bb76bSAndroid Build Coastguard Worker	</li><li>Application Authentication Code:
1909*324bb76bSAndroid Build Coastguard Worker	<ul>
1910*324bb76bSAndroid Build Coastguard Worker		<li>Sequence of three bytes used to authenticate the Application
1911*324bb76bSAndroid Build Coastguard Worker		Identifier. An Application program may use an algorithm to compute a
1912*324bb76bSAndroid Build Coastguard Worker		binary code that uniquely identifies it as the application owning the
1913*324bb76bSAndroid Build Coastguard Worker		Application Extension.
1914*324bb76bSAndroid Build Coastguard Worker	</li></ul>
1915*324bb76bSAndroid Build Coastguard Worker</li></ol>
1916*324bb76bSAndroid Build Coastguard Worker
1917*324bb76bSAndroid Build Coastguard Worker<h3>d. Extensions and Scope</h3>
1918*324bb76bSAndroid Build Coastguard Worker
1919*324bb76bSAndroid Build Coastguard Worker<p>This block does not have scope. This block cannot be modified by any extension.</p>
1920*324bb76bSAndroid Build Coastguard Worker
1921*324bb76bSAndroid Build Coastguard Worker<h3>e. Recommendation</h3>
1922*324bb76bSAndroid Build Coastguard Worker
1923*324bb76bSAndroid Build Coastguard Worker<p>None.</p>
1924*324bb76bSAndroid Build Coastguard Worker
1925*324bb76bSAndroid Build Coastguard Worker</div>
1926*324bb76bSAndroid Build Coastguard Worker
1927*324bb76bSAndroid Build Coastguard Worker<h2 id="trailer">27. Trailer <span onclick="ToggleVis(27);">(hide/show)</span></h2>
1928*324bb76bSAndroid Build Coastguard Worker
1929*324bb76bSAndroid Build Coastguard Worker<div id="p27">
1930*324bb76bSAndroid Build Coastguard Worker
1931*324bb76bSAndroid Build Coastguard Worker<h3>a. Description</h3>
1932*324bb76bSAndroid Build Coastguard Worker
1933*324bb76bSAndroid Build Coastguard Worker<p>This block is a single-field block indicating the end of the GIF Data
1934*324bb76bSAndroid Build Coastguard WorkerStream. It contains the fixed value <tt>0x3B</tt> (59, <tt>';'</tt>).</p>
1935*324bb76bSAndroid Build Coastguard Worker
1936*324bb76bSAndroid Build Coastguard Worker<h3>b. Required Version</h3>
1937*324bb76bSAndroid Build Coastguard Worker
1938*324bb76bSAndroid Build Coastguard Worker<p>87a.</p>
1939*324bb76bSAndroid Build Coastguard Worker
1940*324bb76bSAndroid Build Coastguard Worker<h3>c. Syntax</h3>
1941*324bb76bSAndroid Build Coastguard Worker
1942*324bb76bSAndroid Build Coastguard Worker<table>
1943*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
1944*324bb76bSAndroid Build Coastguard Worker		<th>Byte #
1945*324bb76bSAndroid Build Coastguard Worker		</th><th>Field Name
1946*324bb76bSAndroid Build Coastguard Worker		</th><th>Type
1947*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
1948*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">0
1949*324bb76bSAndroid Build Coastguard Worker		</td><td>GIF Trailer
1950*324bb76bSAndroid Build Coastguard Worker		</td><td>Byte
1951*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
1952*324bb76bSAndroid Build Coastguard Worker
1953*324bb76bSAndroid Build Coastguard Worker<h3>d. Extensions and Scope</h3>
1954*324bb76bSAndroid Build Coastguard Worker
1955*324bb76bSAndroid Build Coastguard Worker<p>This block does not have scope, it terminates the GIF Data Stream. This
1956*324bb76bSAndroid Build Coastguard Workerblock may not be modified by any extension.</p>
1957*324bb76bSAndroid Build Coastguard Worker
1958*324bb76bSAndroid Build Coastguard Worker<h3>e. Recommendations</h3>
1959*324bb76bSAndroid Build Coastguard Worker
1960*324bb76bSAndroid Build Coastguard Worker<p>None.</p>
1961*324bb76bSAndroid Build Coastguard Worker
1962*324bb76bSAndroid Build Coastguard Worker</div>
1963*324bb76bSAndroid Build Coastguard Worker
1964*324bb76bSAndroid Build Coastguard Worker<h2 id="quickreferencetable">Appendix A. Quick Reference Table <span onclick="ToggleVis(28);">(hide/show)</span></h2>
1965*324bb76bSAndroid Build Coastguard Worker
1966*324bb76bSAndroid Build Coastguard Worker<div id="p28">
1967*324bb76bSAndroid Build Coastguard Worker
1968*324bb76bSAndroid Build Coastguard Worker<table>
1969*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
1970*324bb76bSAndroid Build Coastguard Worker		<th>Block Name
1971*324bb76bSAndroid Build Coastguard Worker		</th><th>Required?
1972*324bb76bSAndroid Build Coastguard Worker		</th><th>Label
1973*324bb76bSAndroid Build Coastguard Worker		</th><th>Extension
1974*324bb76bSAndroid Build Coastguard Worker		</th><th>Version
1975*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
1976*324bb76bSAndroid Build Coastguard Worker		<th colspan="5">Unlabeled Blocks
1977*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
1978*324bb76bSAndroid Build Coastguard Worker		<td><a href="#header">Header</a>
1979*324bb76bSAndroid Build Coastguard Worker		</td><td>required (one occurrence)
1980*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">none
1981*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">no
1982*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">N/A
1983*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1984*324bb76bSAndroid Build Coastguard Worker		<td><a href="#logicalscreendescriptor">Logical Screen Descriptor</a>
1985*324bb76bSAndroid Build Coastguard Worker		</td><td>required (one occurrence)
1986*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">none
1987*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">no
1988*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">87a (89a)
1989*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1990*324bb76bSAndroid Build Coastguard Worker		<td><a href="#globalcolortable">Global Color Table</a>
1991*324bb76bSAndroid Build Coastguard Worker		</td><td>optional (at most one occurrence)
1992*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">none
1993*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">no
1994*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">87a
1995*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
1996*324bb76bSAndroid Build Coastguard Worker		<td><a href="#localcolortable">Local Color Table</a>
1997*324bb76bSAndroid Build Coastguard Worker		</td><td>optional (zero or more occurrences)
1998*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">none
1999*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">no
2000*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">87a
2001*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2002*324bb76bSAndroid Build Coastguard Worker		<th colspan="5">Graphic-Rendering Blocks
2003*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
2004*324bb76bSAndroid Build Coastguard Worker		<td><a href="#plaintextextension">Plain Text Extension</a>
2005*324bb76bSAndroid Build Coastguard Worker		</td><td>optional (zero or more occurrences)
2006*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;"><tt>0x01</tt> (1)
2007*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">yes
2008*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">89a
2009*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2010*324bb76bSAndroid Build Coastguard Worker		<td><a href="#imagedescriptor">Image Descriptor</a>
2011*324bb76bSAndroid Build Coastguard Worker		</td><td>optional (zero or more occurrences)
2012*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;"><tt>0x2C</tt> (44, <tt>','</tt>)
2013*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">no
2014*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">87a (89a)
2015*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2016*324bb76bSAndroid Build Coastguard Worker		<th colspan="5">Control Blocks
2017*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
2018*324bb76bSAndroid Build Coastguard Worker		<td><a href="#graphiccontrolextension">Graphic Control Extension</a>
2019*324bb76bSAndroid Build Coastguard Worker		</td><td>optional (zero or more occurrences)
2020*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;"><tt>0xF9</tt> (249)
2021*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">yes
2022*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">89a
2023*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2024*324bb76bSAndroid Build Coastguard Worker		<th colspan="5">Special Purpose Blocks
2025*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
2026*324bb76bSAndroid Build Coastguard Worker		<td><a href="#trailer">Trailer</a>
2027*324bb76bSAndroid Build Coastguard Worker		</td><td>required (one occurrence)
2028*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;"><tt>0x3B</tt> (59, <tt>';'</tt>)
2029*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">no
2030*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">87a
2031*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2032*324bb76bSAndroid Build Coastguard Worker		<td><a href="#commentextension">Comment Extension</a>
2033*324bb76bSAndroid Build Coastguard Worker		</td><td>optional (zero or more occurrences)
2034*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;"><tt>0xFE</tt> (254)
2035*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">yes
2036*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">89a
2037*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2038*324bb76bSAndroid Build Coastguard Worker		<td><a href="#applicationextension">Application Extension</a>
2039*324bb76bSAndroid Build Coastguard Worker		</td><td>optional (zero or more occurrences)
2040*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;"><tt>0xFF</tt> (255)
2041*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">yes
2042*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;">89a
2043*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
2044*324bb76bSAndroid Build Coastguard Worker
2045*324bb76bSAndroid Build Coastguard Worker<p>Notes:</p>
2046*324bb76bSAndroid Build Coastguard Worker
2047*324bb76bSAndroid Build Coastguard Worker<ul>
2048*324bb76bSAndroid Build Coastguard Worker	<li>The Header is not subject to Version Numbers.
2049*324bb76bSAndroid Build Coastguard Worker	</li><li>(89a) The Logical Screen Descriptor and the Image Descriptor retained
2050*324bb76bSAndroid Build Coastguard Worker	their syntax from version 87a to version 89a, but some fields reserved
2051*324bb76bSAndroid Build Coastguard Worker	under version 87a are used under version 89a.
2052*324bb76bSAndroid Build Coastguard Worker</li></ul>
2053*324bb76bSAndroid Build Coastguard Worker
2054*324bb76bSAndroid Build Coastguard Worker</div>
2055*324bb76bSAndroid Build Coastguard Worker
2056*324bb76bSAndroid Build Coastguard Worker<h2 id="gifgrammar">Appendix B. GIF Grammar <span onclick="ToggleVis(29);">(hide/show)</span></h2>
2057*324bb76bSAndroid Build Coastguard Worker
2058*324bb76bSAndroid Build Coastguard Worker<div id="p29">
2059*324bb76bSAndroid Build Coastguard Worker
2060*324bb76bSAndroid Build Coastguard Worker<p>A Grammar is a form of notation to represent the sequence in which certain
2061*324bb76bSAndroid Build Coastguard Workerobjects form larger objects. A grammar is also used to represent the number of
2062*324bb76bSAndroid Build Coastguard Workerobjects that can occur at a given position. The grammar given here represents
2063*324bb76bSAndroid Build Coastguard Workerthe sequence of blocks that form the GIF Data Stream. A grammar is given by
2064*324bb76bSAndroid Build Coastguard Workerlisting its rules. Each rule consists of the left-hand side, followed by some
2065*324bb76bSAndroid Build Coastguard Workerform of equals sign, followed by the right-hand side. In a rule, the right-hand
2066*324bb76bSAndroid Build Coastguard Workerside describes how the left-hand side is defined. The right-hand side consists
2067*324bb76bSAndroid Build Coastguard Workerof a sequence of entities, with the possible presence of special symbols. The
2068*324bb76bSAndroid Build Coastguard Workerfollowing legend defines the symbols used in this grammar for GIF.</p>
2069*324bb76bSAndroid Build Coastguard Worker
2070*324bb76bSAndroid Build Coastguard Worker<p>Legend:</p>
2071*324bb76bSAndroid Build Coastguard Worker
2072*324bb76bSAndroid Build Coastguard Worker<table>
2073*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
2074*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">&lt; &gt;
2075*324bb76bSAndroid Build Coastguard Worker		</td><td>grammar word
2076*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2077*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">::=
2078*324bb76bSAndroid Build Coastguard Worker		</td><td>defines symbol
2079*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2080*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">*
2081*324bb76bSAndroid Build Coastguard Worker		</td><td>zero or more occurrences
2082*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2083*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">+
2084*324bb76bSAndroid Build Coastguard Worker		</td><td>one or more occurrences
2085*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2086*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">|
2087*324bb76bSAndroid Build Coastguard Worker		</td><td>alternate element
2088*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2089*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">[ ]
2090*324bb76bSAndroid Build Coastguard Worker		</td><td>optional element
2091*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
2092*324bb76bSAndroid Build Coastguard Worker
2093*324bb76bSAndroid Build Coastguard Worker<p>Example:</p>
2094*324bb76bSAndroid Build Coastguard Worker
2095*324bb76bSAndroid Build Coastguard Worker<blockquote>
2096*324bb76bSAndroid Build Coastguard Worker	<p>&lt;GIF Data Stream&gt; ::= <a href="#header">Header</a> &lt;Logical
2097*324bb76bSAndroid Build Coastguard Worker	Screen&gt; &lt;Data&gt;* <a href="#trailer">Trailer</a></p>
2098*324bb76bSAndroid Build Coastguard Worker</blockquote>
2099*324bb76bSAndroid Build Coastguard Worker
2100*324bb76bSAndroid Build Coastguard Worker<p>This rule defines the entity &lt;GIF Data Stream&gt; as follows. It must
2101*324bb76bSAndroid Build Coastguard Workerbegin with a Header. The Header is followed by an entity called Logical Screen,
2102*324bb76bSAndroid Build Coastguard Workerwhich is defined below by another rule. The Logical Screen is followed by the
2103*324bb76bSAndroid Build Coastguard Workerentity Data, which is also defined below by another rule. Finally, the entity
2104*324bb76bSAndroid Build Coastguard WorkerData is followed by the Trailer. Since there is no rule defining the Header or
2105*324bb76bSAndroid Build Coastguard Workerthe Trailer, this means that these blocks are defined in the document. The
2106*324bb76bSAndroid Build Coastguard Workerentity Data has a special symbol (*) following it which means that, at this
2107*324bb76bSAndroid Build Coastguard Workerposition, the entity Data may be repeated any number of times, including 0
2108*324bb76bSAndroid Build Coastguard Workertimes. For further reading on this subject, refer to a standard text on
2109*324bb76bSAndroid Build Coastguard WorkerProgramming Languages.</p>
2110*324bb76bSAndroid Build Coastguard Worker
2111*324bb76bSAndroid Build Coastguard Worker<h3>The Grammar</h3>
2112*324bb76bSAndroid Build Coastguard Worker
2113*324bb76bSAndroid Build Coastguard Worker<table class="invisible">
2114*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
2115*324bb76bSAndroid Build Coastguard Worker		<td>&lt;GIF Data Stream&gt;
2116*324bb76bSAndroid Build Coastguard Worker		</td><td>::=
2117*324bb76bSAndroid Build Coastguard Worker		</td><td>Header &lt;Logical Screen&gt; &lt;Data&gt;* Trailer
2118*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2119*324bb76bSAndroid Build Coastguard Worker		<td>&lt;Logical Screen&gt;
2120*324bb76bSAndroid Build Coastguard Worker		</td><td>::=
2121*324bb76bSAndroid Build Coastguard Worker		</td><td><a href="#logicalscreendescriptor">Logical Screen Descriptor</a>
2122*324bb76bSAndroid Build Coastguard Worker		[<a href="#globalcolortable">Global Color Table</a>]
2123*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2124*324bb76bSAndroid Build Coastguard Worker		<td>&lt;Data&gt;
2125*324bb76bSAndroid Build Coastguard Worker		</td><td>::=
2126*324bb76bSAndroid Build Coastguard Worker		</td><td>&lt;Graphic Block&gt; | &lt;Special-Purpose Block&gt;
2127*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2128*324bb76bSAndroid Build Coastguard Worker		<td>&lt;Graphic Block&gt;
2129*324bb76bSAndroid Build Coastguard Worker		</td><td>::=
2130*324bb76bSAndroid Build Coastguard Worker		</td><td>[<a href="#graphiccontrolextension">Graphic Control Extension</a>]
2131*324bb76bSAndroid Build Coastguard Worker		&lt;Graphic-Rendering Block&gt;
2132*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2133*324bb76bSAndroid Build Coastguard Worker		<td>&lt;Graphic-Rendering Block&gt;
2134*324bb76bSAndroid Build Coastguard Worker		</td><td>::=
2135*324bb76bSAndroid Build Coastguard Worker		</td><td>&lt;Table-Based Image&gt; | <a href="#plaintextextension">Plain
2136*324bb76bSAndroid Build Coastguard Worker		Text Extension</a>
2137*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2138*324bb76bSAndroid Build Coastguard Worker		<td>&lt;Table-Based Image&gt;
2139*324bb76bSAndroid Build Coastguard Worker		</td><td>::=
2140*324bb76bSAndroid Build Coastguard Worker		</td><td><a href="#imagedescriptor">Image Descriptor</a> [<a href="#localcolortable">Local Color Table</a>] <a href="#tablebasedimagedata">Image Data</a>
2141*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2142*324bb76bSAndroid Build Coastguard Worker		<td>&lt;Special-Purpose Block&gt;
2143*324bb76bSAndroid Build Coastguard Worker		</td><td>::=
2144*324bb76bSAndroid Build Coastguard Worker		</td><td><a href="#applicationextension">Application Extension</a> | <a href="#commentextension">Comment Extension</a>
2145*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
2146*324bb76bSAndroid Build Coastguard Worker
2147*324bb76bSAndroid Build Coastguard Worker<p><i>Note:</i> The grammar indicates that it is possible for a GIF Data Stream
2148*324bb76bSAndroid Build Coastguard Workerto contain the Header, the Logical Screen Descriptor, a Global Color Table and
2149*324bb76bSAndroid Build Coastguard Workerthe GIF Trailer. This special case is used to load a GIF decoder with a Global
2150*324bb76bSAndroid Build Coastguard WorkerColor Table, in preparation for subsequent Data Streams without color tables at
2151*324bb76bSAndroid Build Coastguard Workerall.</p>
2152*324bb76bSAndroid Build Coastguard Worker
2153*324bb76bSAndroid Build Coastguard Worker</div>
2154*324bb76bSAndroid Build Coastguard Worker
2155*324bb76bSAndroid Build Coastguard Worker<h2 id="glossary">Appendix C. Glossary <span onclick="ToggleVis(30);">(hide/show)</span></h2>
2156*324bb76bSAndroid Build Coastguard Worker
2157*324bb76bSAndroid Build Coastguard Worker<div id="p30">
2158*324bb76bSAndroid Build Coastguard Worker
2159*324bb76bSAndroid Build Coastguard Worker<table>
2160*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
2161*324bb76bSAndroid Build Coastguard Worker		<td>Active Color Table
2162*324bb76bSAndroid Build Coastguard Worker		</td><td>Color table used to render the next graphic. If the next graphic is
2163*324bb76bSAndroid Build Coastguard Worker		an image which has a <a href="#localcolortable">Local Color Table</a>
2164*324bb76bSAndroid Build Coastguard Worker		associated with it, the active color table becomes the Local Color
2165*324bb76bSAndroid Build Coastguard Worker		Table associated with that image. If the next graphic is an image
2166*324bb76bSAndroid Build Coastguard Worker		without a Local Color Table, or a <a href="#plaintextextension">Plain
2167*324bb76bSAndroid Build Coastguard Worker		Text Extension</a>, the active color table is the <a href="#globalcolortable">Global Color Table</a> associated with the
2168*324bb76bSAndroid Build Coastguard Worker		Data Stream, if there is one; if there is no Global Color Table in the
2169*324bb76bSAndroid Build Coastguard Worker		Data Stream, the active color table is a color table saved from a
2170*324bb76bSAndroid Build Coastguard Worker		previous Data Stream, or one supplied by the decoder.
2171*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2172*324bb76bSAndroid Build Coastguard Worker		<td>Block
2173*324bb76bSAndroid Build Coastguard Worker		</td><td>Collection of bytes forming a protocol unit. In general, the term
2174*324bb76bSAndroid Build Coastguard Worker		includes labeled and unlabeled blocks, as well as Extensions.
2175*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2176*324bb76bSAndroid Build Coastguard Worker		<td>Data Stream
2177*324bb76bSAndroid Build Coastguard Worker		</td><td>The GIF Data Stream is composed of blocks and <a href="#subblocks">sub-blocks</a> representing images and graphics,
2178*324bb76bSAndroid Build Coastguard Worker		together with control information to render them on a display device.
2179*324bb76bSAndroid Build Coastguard Worker		All control and data blocks in the Data Stream must follow the <a href="#header">Header</a> and must precede the <a href="#trailer">Trailer</a>.
2180*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2181*324bb76bSAndroid Build Coastguard Worker		<td>Decoder
2182*324bb76bSAndroid Build Coastguard Worker		</td><td>A program capable of processing a GIF Data Stream to render the
2183*324bb76bSAndroid Build Coastguard Worker		images and graphics contained in it.
2184*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2185*324bb76bSAndroid Build Coastguard Worker		<td>Encoder
2186*324bb76bSAndroid Build Coastguard Worker		</td><td>A program capable of capturing and formatting image and graphic
2187*324bb76bSAndroid Build Coastguard Worker		raster data, following the definitions of the Graphics Interchange
2188*324bb76bSAndroid Build Coastguard Worker		Format.
2189*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2190*324bb76bSAndroid Build Coastguard Worker		<td>Extension
2191*324bb76bSAndroid Build Coastguard Worker		</td><td>A protocol block labeled by the Extension Introducer <tt>0x21</tt>
2192*324bb76bSAndroid Build Coastguard Worker		(33, <tt>'!'</tt>).
2193*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2194*324bb76bSAndroid Build Coastguard Worker		<td>Extension Introducer
2195*324bb76bSAndroid Build Coastguard Worker		</td><td>Label (<tt>0x21</tt>, 33, <tt>'!'</tt>) defining an Extension.
2196*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2197*324bb76bSAndroid Build Coastguard Worker		<td>Graphic
2198*324bb76bSAndroid Build Coastguard Worker		</td><td>Data which can be rendered on the screen by virtue of some
2199*324bb76bSAndroid Build Coastguard Worker		algorithm. The term graphic is more general than the term image; in
2200*324bb76bSAndroid Build Coastguard Worker		addition to images, the term graphic also includes data such as text,
2201*324bb76bSAndroid Build Coastguard Worker		which is rendered using character bit-maps.
2202*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2203*324bb76bSAndroid Build Coastguard Worker		<td>Image
2204*324bb76bSAndroid Build Coastguard Worker		</td><td>Data representing a picture or a drawing; an image is represented
2205*324bb76bSAndroid Build Coastguard Worker		by an array of pixels called the raster of the image.
2206*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2207*324bb76bSAndroid Build Coastguard Worker		<td>Raster
2208*324bb76bSAndroid Build Coastguard Worker		</td><td>Array of pixel values representing an image.
2209*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
2210*324bb76bSAndroid Build Coastguard Worker
2211*324bb76bSAndroid Build Coastguard Worker</div>
2212*324bb76bSAndroid Build Coastguard Worker
2213*324bb76bSAndroid Build Coastguard Worker<h2 id="conventions">Appendix D. Conventions <span onclick="ToggleVis(31);">(hide/show)</span></h2>
2214*324bb76bSAndroid Build Coastguard Worker
2215*324bb76bSAndroid Build Coastguard Worker<div id="p31">
2216*324bb76bSAndroid Build Coastguard Worker
2217*324bb76bSAndroid Build Coastguard Worker<table>
2218*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
2219*324bb76bSAndroid Build Coastguard Worker		<td>Animation
2220*324bb76bSAndroid Build Coastguard Worker		</td><td>The Graphics Interchange Format is not intended as a platform for
2221*324bb76bSAndroid Build Coastguard Worker		animation, even though it can be done in a limited way.
2222*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2223*324bb76bSAndroid Build Coastguard Worker		<td>Byte Ordering
2224*324bb76bSAndroid Build Coastguard Worker		</td><td>Unless otherwise stated, multi-byte numeric fields are ordered with
2225*324bb76bSAndroid Build Coastguard Worker		the Least Significant Byte first.
2226*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2227*324bb76bSAndroid Build Coastguard Worker		<td>Color Indices
2228*324bb76bSAndroid Build Coastguard Worker		</td><td>Color indices always refer to the active color table, either the <a href="#globalcolortable">Global Color Table</a> or the <a href="#localcolortable">Local Color Table</a>.
2229*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2230*324bb76bSAndroid Build Coastguard Worker		<td>Color Order
2231*324bb76bSAndroid Build Coastguard Worker		</td><td>Unless otherwise stated, all triple-component RGB color values are
2232*324bb76bSAndroid Build Coastguard Worker		specified in <span class="rcomp">Red</span>-<span class="gcomp">Green</span>-<span class="bcomp">Blue</span> order.
2233*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2234*324bb76bSAndroid Build Coastguard Worker		<td>Color Tables
2235*324bb76bSAndroid Build Coastguard Worker		</td><td>Both color tables, the Global and the Local, are optional; if
2236*324bb76bSAndroid Build Coastguard Worker		present, the Global Color Table is to be used with every image in the
2237*324bb76bSAndroid Build Coastguard Worker		Data Stream for which a Local Color Table is not given; if present, a
2238*324bb76bSAndroid Build Coastguard Worker		Local Color Table overrides the Global Color Table. However, if neither
2239*324bb76bSAndroid Build Coastguard Worker		color table is present, the application program is free to use an
2240*324bb76bSAndroid Build Coastguard Worker		arbitrary color table. If the graphics in several Data Streams are
2241*324bb76bSAndroid Build Coastguard Worker		related and all use the same color table, an encoder could place the
2242*324bb76bSAndroid Build Coastguard Worker		color table as the Global Color Table in the first Data Stream and
2243*324bb76bSAndroid Build Coastguard Worker		leave subsequent Data Streams without a Global Color Table or any Local
2244*324bb76bSAndroid Build Coastguard Worker		Color Tables; in this way, the overhead for the table is eliminated. It
2245*324bb76bSAndroid Build Coastguard Worker		is recommended that the decoder save the previous Global Color Table to
2246*324bb76bSAndroid Build Coastguard Worker		be used with the Data Stream that follows, in case it does not contain
2247*324bb76bSAndroid Build Coastguard Worker		either a Global Color Table or any Local Color Tables. In general, this
2248*324bb76bSAndroid Build Coastguard Worker		allows the application program to use past color tables, significantly
2249*324bb76bSAndroid Build Coastguard Worker		reducing transmission overhead.
2250*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2251*324bb76bSAndroid Build Coastguard Worker		<td>Extension Blocks
2252*324bb76bSAndroid Build Coastguard Worker		</td><td>Extensions are defined using the Extension Introducer code
2253*324bb76bSAndroid Build Coastguard Worker		(<tt>0x21</tt>, 33, <tt>'!'</tt>) to mark the beginning of the block,
2254*324bb76bSAndroid Build Coastguard Worker		followed by a block label, identifying the type of extension. Extension
2255*324bb76bSAndroid Build Coastguard Worker		Codes are numbers in the range from <tt>0x00</tt> (0) to <tt>0xFF</tt>
2256*324bb76bSAndroid Build Coastguard Worker		(255), inclusive. Special purpose extensions are transparent to the
2257*324bb76bSAndroid Build Coastguard Worker		decoder and may be omitted when transmitting the Data Stream on-line.
2258*324bb76bSAndroid Build Coastguard Worker		The GIF capabilities dialogue makes the provision for the receiver to
2259*324bb76bSAndroid Build Coastguard Worker		request the transmission of all blocks; the default state in this
2260*324bb76bSAndroid Build Coastguard Worker		regard is no transmission of Special purpose blocks.
2261*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2262*324bb76bSAndroid Build Coastguard Worker		<td>Reserved Fields
2263*324bb76bSAndroid Build Coastguard Worker		</td><td>All Reserved Fields are expected to have each bit set to zero
2264*324bb76bSAndroid Build Coastguard Worker		(off).
2265*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
2266*324bb76bSAndroid Build Coastguard Worker
2267*324bb76bSAndroid Build Coastguard Worker</div>
2268*324bb76bSAndroid Build Coastguard Worker
2269*324bb76bSAndroid Build Coastguard Worker<h2 id="interlacedimages">Appendix E. Interlaced Images <span onclick="ToggleVis(32);">(hide/show)</span></h2>
2270*324bb76bSAndroid Build Coastguard Worker
2271*324bb76bSAndroid Build Coastguard Worker<div id="p32">
2272*324bb76bSAndroid Build Coastguard Worker
2273*324bb76bSAndroid Build Coastguard Worker<p>The rows of an Interlaced images are arranged in the following order:</p>
2274*324bb76bSAndroid Build Coastguard Worker
2275*324bb76bSAndroid Build Coastguard Worker<table>
2276*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
2277*324bb76bSAndroid Build Coastguard Worker		<td>Group 1
2278*324bb76bSAndroid Build Coastguard Worker		</td><td>Pass 1
2279*324bb76bSAndroid Build Coastguard Worker		</td><td>Every 8th row, starting with row 0
2280*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2281*324bb76bSAndroid Build Coastguard Worker		<td>Group 2
2282*324bb76bSAndroid Build Coastguard Worker		</td><td>Pass 2
2283*324bb76bSAndroid Build Coastguard Worker		</td><td>Every 8th row, starting with row 4
2284*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2285*324bb76bSAndroid Build Coastguard Worker		<td>Group 3
2286*324bb76bSAndroid Build Coastguard Worker		</td><td>Pass 3
2287*324bb76bSAndroid Build Coastguard Worker		</td><td>Every 4th row, starting with row 2
2288*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2289*324bb76bSAndroid Build Coastguard Worker		<td>Group 4
2290*324bb76bSAndroid Build Coastguard Worker		</td><td>Pass 4
2291*324bb76bSAndroid Build Coastguard Worker		</td><td>Every 2nd row, starting with row 1
2292*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
2293*324bb76bSAndroid Build Coastguard Worker
2294*324bb76bSAndroid Build Coastguard Worker<p>The following example illustrates how the rows of an interlaced image are
2295*324bb76bSAndroid Build Coastguard Workerordered.</p>
2296*324bb76bSAndroid Build Coastguard Worker
2297*324bb76bSAndroid Build Coastguard Worker<table id="interlace">
2298*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
2299*324bb76bSAndroid Build Coastguard Worker		<th>Row Number
2300*324bb76bSAndroid Build Coastguard Worker		</th><th colspan="4">Interlace Pass
2301*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
2302*324bb76bSAndroid Build Coastguard Worker		<td>0
2303*324bb76bSAndroid Build Coastguard Worker		</td><td>1
2304*324bb76bSAndroid Build Coastguard Worker		</td><td>
2305*324bb76bSAndroid Build Coastguard Worker		</td><td>
2306*324bb76bSAndroid Build Coastguard Worker		</td><td>
2307*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2308*324bb76bSAndroid Build Coastguard Worker		<td>1
2309*324bb76bSAndroid Build Coastguard Worker		</td><td>
2310*324bb76bSAndroid Build Coastguard Worker		</td><td>
2311*324bb76bSAndroid Build Coastguard Worker		</td><td>
2312*324bb76bSAndroid Build Coastguard Worker		</td><td>4
2313*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2314*324bb76bSAndroid Build Coastguard Worker		<td>2
2315*324bb76bSAndroid Build Coastguard Worker		</td><td>
2316*324bb76bSAndroid Build Coastguard Worker		</td><td>
2317*324bb76bSAndroid Build Coastguard Worker		</td><td>3
2318*324bb76bSAndroid Build Coastguard Worker		</td><td>
2319*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2320*324bb76bSAndroid Build Coastguard Worker		<td>3
2321*324bb76bSAndroid Build Coastguard Worker		</td><td>
2322*324bb76bSAndroid Build Coastguard Worker		</td><td>
2323*324bb76bSAndroid Build Coastguard Worker		</td><td>
2324*324bb76bSAndroid Build Coastguard Worker		</td><td>4
2325*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2326*324bb76bSAndroid Build Coastguard Worker		<td>4
2327*324bb76bSAndroid Build Coastguard Worker		</td><td>
2328*324bb76bSAndroid Build Coastguard Worker		</td><td>2
2329*324bb76bSAndroid Build Coastguard Worker		</td><td>
2330*324bb76bSAndroid Build Coastguard Worker		</td><td>
2331*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2332*324bb76bSAndroid Build Coastguard Worker		<td>5
2333*324bb76bSAndroid Build Coastguard Worker		</td><td>
2334*324bb76bSAndroid Build Coastguard Worker		</td><td>
2335*324bb76bSAndroid Build Coastguard Worker		</td><td>
2336*324bb76bSAndroid Build Coastguard Worker		</td><td>4
2337*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2338*324bb76bSAndroid Build Coastguard Worker		<td>6
2339*324bb76bSAndroid Build Coastguard Worker		</td><td>
2340*324bb76bSAndroid Build Coastguard Worker		</td><td>
2341*324bb76bSAndroid Build Coastguard Worker		</td><td>3
2342*324bb76bSAndroid Build Coastguard Worker		</td><td>
2343*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2344*324bb76bSAndroid Build Coastguard Worker		<td>7
2345*324bb76bSAndroid Build Coastguard Worker		</td><td>
2346*324bb76bSAndroid Build Coastguard Worker		</td><td>
2347*324bb76bSAndroid Build Coastguard Worker		</td><td>
2348*324bb76bSAndroid Build Coastguard Worker		</td><td>4
2349*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2350*324bb76bSAndroid Build Coastguard Worker		<td>8
2351*324bb76bSAndroid Build Coastguard Worker		</td><td>1
2352*324bb76bSAndroid Build Coastguard Worker		</td><td>
2353*324bb76bSAndroid Build Coastguard Worker		</td><td>
2354*324bb76bSAndroid Build Coastguard Worker		</td><td>
2355*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2356*324bb76bSAndroid Build Coastguard Worker		<td>9
2357*324bb76bSAndroid Build Coastguard Worker		</td><td>
2358*324bb76bSAndroid Build Coastguard Worker		</td><td>
2359*324bb76bSAndroid Build Coastguard Worker		</td><td>
2360*324bb76bSAndroid Build Coastguard Worker		</td><td>4
2361*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2362*324bb76bSAndroid Build Coastguard Worker		<td>10
2363*324bb76bSAndroid Build Coastguard Worker		</td><td>
2364*324bb76bSAndroid Build Coastguard Worker		</td><td>
2365*324bb76bSAndroid Build Coastguard Worker		</td><td>3
2366*324bb76bSAndroid Build Coastguard Worker		</td><td>
2367*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2368*324bb76bSAndroid Build Coastguard Worker		<td>11
2369*324bb76bSAndroid Build Coastguard Worker		</td><td>
2370*324bb76bSAndroid Build Coastguard Worker		</td><td>
2371*324bb76bSAndroid Build Coastguard Worker		</td><td>
2372*324bb76bSAndroid Build Coastguard Worker		</td><td>4
2373*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2374*324bb76bSAndroid Build Coastguard Worker		<td>12
2375*324bb76bSAndroid Build Coastguard Worker		</td><td>
2376*324bb76bSAndroid Build Coastguard Worker		</td><td>2
2377*324bb76bSAndroid Build Coastguard Worker		</td><td>
2378*324bb76bSAndroid Build Coastguard Worker		</td><td>
2379*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2380*324bb76bSAndroid Build Coastguard Worker		<td>13
2381*324bb76bSAndroid Build Coastguard Worker		</td><td>
2382*324bb76bSAndroid Build Coastguard Worker		</td><td>
2383*324bb76bSAndroid Build Coastguard Worker		</td><td>
2384*324bb76bSAndroid Build Coastguard Worker		</td><td>4
2385*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2386*324bb76bSAndroid Build Coastguard Worker		<td>14
2387*324bb76bSAndroid Build Coastguard Worker		</td><td>
2388*324bb76bSAndroid Build Coastguard Worker		</td><td>
2389*324bb76bSAndroid Build Coastguard Worker		</td><td>3
2390*324bb76bSAndroid Build Coastguard Worker		</td><td>
2391*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2392*324bb76bSAndroid Build Coastguard Worker		<td>15
2393*324bb76bSAndroid Build Coastguard Worker		</td><td>
2394*324bb76bSAndroid Build Coastguard Worker		</td><td>
2395*324bb76bSAndroid Build Coastguard Worker		</td><td>
2396*324bb76bSAndroid Build Coastguard Worker		</td><td>4
2397*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2398*324bb76bSAndroid Build Coastguard Worker		<td>16
2399*324bb76bSAndroid Build Coastguard Worker		</td><td>1
2400*324bb76bSAndroid Build Coastguard Worker		</td><td>
2401*324bb76bSAndroid Build Coastguard Worker		</td><td>
2402*324bb76bSAndroid Build Coastguard Worker		</td><td>
2403*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2404*324bb76bSAndroid Build Coastguard Worker		<td>17
2405*324bb76bSAndroid Build Coastguard Worker		</td><td>
2406*324bb76bSAndroid Build Coastguard Worker		</td><td>
2407*324bb76bSAndroid Build Coastguard Worker		</td><td>
2408*324bb76bSAndroid Build Coastguard Worker		</td><td>4
2409*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2410*324bb76bSAndroid Build Coastguard Worker		<td>18
2411*324bb76bSAndroid Build Coastguard Worker		</td><td>
2412*324bb76bSAndroid Build Coastguard Worker		</td><td>
2413*324bb76bSAndroid Build Coastguard Worker		</td><td>3
2414*324bb76bSAndroid Build Coastguard Worker		</td><td>
2415*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2416*324bb76bSAndroid Build Coastguard Worker		<td>19
2417*324bb76bSAndroid Build Coastguard Worker		</td><td>
2418*324bb76bSAndroid Build Coastguard Worker		</td><td>
2419*324bb76bSAndroid Build Coastguard Worker		</td><td>
2420*324bb76bSAndroid Build Coastguard Worker		</td><td>4
2421*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
2422*324bb76bSAndroid Build Coastguard Worker
2423*324bb76bSAndroid Build Coastguard Worker</div>
2424*324bb76bSAndroid Build Coastguard Worker
2425*324bb76bSAndroid Build Coastguard Worker<h2 id="lzw">Appendix F. Variable-Length-Code LZW Compression <span onclick="ToggleVis(33);">(hide/show)</span></h2>
2426*324bb76bSAndroid Build Coastguard Worker
2427*324bb76bSAndroid Build Coastguard Worker<div id="p33">
2428*324bb76bSAndroid Build Coastguard Worker
2429*324bb76bSAndroid Build Coastguard Worker<p>The Variable-Length-Code LZW Compression is a variation of the Lempel-Ziv
2430*324bb76bSAndroid Build Coastguard WorkerCompression algorithm in which variable-length codes are used to replace
2431*324bb76bSAndroid Build Coastguard Workerpatterns detected in the original data. The algorithm uses a code or
2432*324bb76bSAndroid Build Coastguard Workertranslation table constructed from the patterns encountered in the original
2433*324bb76bSAndroid Build Coastguard Workerdata; each new pattern is entered into the table and its index is used to
2434*324bb76bSAndroid Build Coastguard Workerreplace it in the compressed stream.</p>
2435*324bb76bSAndroid Build Coastguard Worker
2436*324bb76bSAndroid Build Coastguard Worker<p>The compressor takes the data from the input stream and builds a code or
2437*324bb76bSAndroid Build Coastguard Workertranslation table with the patterns as it encounters them; each new pattern is
2438*324bb76bSAndroid Build Coastguard Workerentered into the code table and its index is added to the output stream; when a
2439*324bb76bSAndroid Build Coastguard Workerpattern is encountered which had been detected since the last code table
2440*324bb76bSAndroid Build Coastguard Workerrefresh, its index from the code table is put on the output stream, thus
2441*324bb76bSAndroid Build Coastguard Workerachieving the data compression. The expander takes input from the compressed
2442*324bb76bSAndroid Build Coastguard Workerdata stream and builds the code or translation table from it; as the compressed
2443*324bb76bSAndroid Build Coastguard Workerdata stream is processed, codes are used to index into the code table and the
2444*324bb76bSAndroid Build Coastguard Workercorresponding data is put on the decompressed output stream, thus achieving
2445*324bb76bSAndroid Build Coastguard Workerdata decompression. The details of the algorithm are explained below. The
2446*324bb76bSAndroid Build Coastguard WorkerVariable-Length-Code aspect of the algorithm is based on an initial code size
2447*324bb76bSAndroid Build Coastguard Worker(LZW-initial code size), which specifies the initial number of bits used for
2448*324bb76bSAndroid Build Coastguard Workerthe compression codes. When the number of patterns detected by the compressor
2449*324bb76bSAndroid Build Coastguard Workerin the input stream exceeds the number of patterns encodable with the current
2450*324bb76bSAndroid Build Coastguard Workernumber of bits, the number of bits per LZW code is increased by one.</p>
2451*324bb76bSAndroid Build Coastguard Worker
2452*324bb76bSAndroid Build Coastguard Worker<p>The Raster Data stream that represents the actual output image can be
2453*324bb76bSAndroid Build Coastguard Workerrepresented as:</p>
2454*324bb76bSAndroid Build Coastguard Worker
2455*324bb76bSAndroid Build Coastguard Worker<table>
2456*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
2457*324bb76bSAndroid Build Coastguard Worker		<th>Field name
2458*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
2459*324bb76bSAndroid Build Coastguard Worker		<td>LZW code size
2460*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
2461*324bb76bSAndroid Build Coastguard Worker
2462*324bb76bSAndroid Build Coastguard Worker<p></p>
2463*324bb76bSAndroid Build Coastguard Worker
2464*324bb76bSAndroid Build Coastguard Worker<table>
2465*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
2466*324bb76bSAndroid Build Coastguard Worker		<th>Field name
2467*324bb76bSAndroid Build Coastguard Worker		</th><th>
2468*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
2469*324bb76bSAndroid Build Coastguard Worker		<td>block size
2470*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="2">Repeated as many times as necessary.
2471*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2472*324bb76bSAndroid Build Coastguard Worker		<td>data bytes
2473*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
2474*324bb76bSAndroid Build Coastguard Worker
2475*324bb76bSAndroid Build Coastguard Worker<p>(The code that terminates the LZW compressed data must appear before <a href="#blockterminator">Block Terminator</a>.)</p>
2476*324bb76bSAndroid Build Coastguard Worker
2477*324bb76bSAndroid Build Coastguard Worker<table>
2478*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
2479*324bb76bSAndroid Build Coastguard Worker		<th>Field name
2480*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
2481*324bb76bSAndroid Build Coastguard Worker		<td>Block Terminator (<tt>0x00</tt>, 0)
2482*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
2483*324bb76bSAndroid Build Coastguard Worker
2484*324bb76bSAndroid Build Coastguard Worker<p>The conversion of the image from a series of pixel values to a transmitted
2485*324bb76bSAndroid Build Coastguard Workeror stored character stream involves several steps. In brief these steps
2486*324bb76bSAndroid Build Coastguard Workerare:</p>
2487*324bb76bSAndroid Build Coastguard Worker
2488*324bb76bSAndroid Build Coastguard Worker<ol>
2489*324bb76bSAndroid Build Coastguard Worker	<li>Establish the Code Size – Define the number of bits needed to
2490*324bb76bSAndroid Build Coastguard Worker	represent the actual data.
2491*324bb76bSAndroid Build Coastguard Worker	</li><li>Compress the Data – Compress the series of image pixels to a
2492*324bb76bSAndroid Build Coastguard Worker	series of compression codes.
2493*324bb76bSAndroid Build Coastguard Worker	</li><li>Build a Series of Bytes – Take the set of compression codes and
2494*324bb76bSAndroid Build Coastguard Worker	convert to a string of 8-bit bytes.
2495*324bb76bSAndroid Build Coastguard Worker	</li><li>Package the Bytes – Package sets of bytes into blocks preceded by
2496*324bb76bSAndroid Build Coastguard Worker	character counts and output.
2497*324bb76bSAndroid Build Coastguard Worker</li></ol>
2498*324bb76bSAndroid Build Coastguard Worker
2499*324bb76bSAndroid Build Coastguard Worker<h3>1. Establish Code Size</h3>
2500*324bb76bSAndroid Build Coastguard Worker
2501*324bb76bSAndroid Build Coastguard Worker<p>The first byte of the Compressed Data stream is a value indicating the
2502*324bb76bSAndroid Build Coastguard Workerminimum number of bits required to represent the set of actual pixel values.
2503*324bb76bSAndroid Build Coastguard WorkerNormally this will be the same as the number of color bits. Because of some
2504*324bb76bSAndroid Build Coastguard Workeralgorithmic constraints however, black &amp; white images which have one color
2505*324bb76bSAndroid Build Coastguard Workerbit must be indicated as having a code size of 2. This code size value also
2506*324bb76bSAndroid Build Coastguard Workerimplies that the compression codes must start out one bit longer.</p>
2507*324bb76bSAndroid Build Coastguard Worker
2508*324bb76bSAndroid Build Coastguard Worker<h3>2. Compression</h3>
2509*324bb76bSAndroid Build Coastguard Worker
2510*324bb76bSAndroid Build Coastguard Worker<p>The LZW algorithm converts a series of data values into a series of codes
2511*324bb76bSAndroid Build Coastguard Workerwhich may be raw values or a code designating a series of values. Using text
2512*324bb76bSAndroid Build Coastguard Workercharacters as an analogy, the output code consists of a character or a code
2513*324bb76bSAndroid Build Coastguard Workerrepresenting a string of characters.</p>
2514*324bb76bSAndroid Build Coastguard Worker
2515*324bb76bSAndroid Build Coastguard Worker<p>The LZW algorithm used in GIF matches algorithmically with the standard LZW
2516*324bb76bSAndroid Build Coastguard Workeralgorithm with the following differences:</p>
2517*324bb76bSAndroid Build Coastguard Worker
2518*324bb76bSAndroid Build Coastguard Worker<ol>
2519*324bb76bSAndroid Build Coastguard Worker	<li>A special Clear code is defined which resets all
2520*324bb76bSAndroid Build Coastguard Worker	compression/decompression parameters and tables to a start-up state. The
2521*324bb76bSAndroid Build Coastguard Worker	value of this code is 2<sup>&lt;code size&gt;</sup>. For example if the
2522*324bb76bSAndroid Build Coastguard Worker	code size indicated was 4 (image was 4 bits/pixel) the Clear code value
2523*324bb76bSAndroid Build Coastguard Worker	would be 16 (<tt>10000</tt> binary). The Clear code can appear at any point
2524*324bb76bSAndroid Build Coastguard Worker	in the image data stream and therefore requires the LZW algorithm to
2525*324bb76bSAndroid Build Coastguard Worker	process succeeding codes as if a new data stream was starting. Encoders
2526*324bb76bSAndroid Build Coastguard Worker	should output a Clear code as the first code of each image data stream.
2527*324bb76bSAndroid Build Coastguard Worker	</li><li>An End of Information code is defined that explicitly indicates the end
2528*324bb76bSAndroid Build Coastguard Worker	of the image data stream. LZW processing terminates when this code is
2529*324bb76bSAndroid Build Coastguard Worker	encountered. It must be the last code output by the encoder for an image.
2530*324bb76bSAndroid Build Coastguard Worker	The value of this code is &lt;Clear code&gt;+1.
2531*324bb76bSAndroid Build Coastguard Worker	</li><li>The first available compression code value is &lt;Clear code&gt; + 2.
2532*324bb76bSAndroid Build Coastguard Worker	</li><li>The output codes are of variable length, starting at &lt;code size&gt;
2533*324bb76bSAndroid Build Coastguard Worker	+ 1 bits per code, up to 12 bits per code. This defines a maximum code
2534*324bb76bSAndroid Build Coastguard Worker	value of 4095 (<tt>0xFFF</tt>). Whenever the LZW code value would exceed
2535*324bb76bSAndroid Build Coastguard Worker	the current code length, the code length is increased by one. The
2536*324bb76bSAndroid Build Coastguard Worker	packing/unpacking of these codes must then be altered to reflect the new
2537*324bb76bSAndroid Build Coastguard Worker	code length.
2538*324bb76bSAndroid Build Coastguard Worker</li></ol>
2539*324bb76bSAndroid Build Coastguard Worker
2540*324bb76bSAndroid Build Coastguard Worker<p><i>Editor's (Kalle's) note: see also the <a href="#coversheet">Cover
2541*324bb76bSAndroid Build Coastguard WorkerSheet</a>.</i></p>
2542*324bb76bSAndroid Build Coastguard Worker
2543*324bb76bSAndroid Build Coastguard Worker<h3>3. Build 8-bit Bytes</h3>
2544*324bb76bSAndroid Build Coastguard Worker
2545*324bb76bSAndroid Build Coastguard Worker<p>Because the LZW compression used for GIF creates a series of variable length
2546*324bb76bSAndroid Build Coastguard Workercodes, of between 3 and 12 bits each, these codes must be reformed into a
2547*324bb76bSAndroid Build Coastguard Workerseries of 8-bit bytes that will be the characters actually stored or
2548*324bb76bSAndroid Build Coastguard Workertransmitted. This provides additional compression of the image. The codes are
2549*324bb76bSAndroid Build Coastguard Workerformed into a stream of bits as if they were packed right to left and then
2550*324bb76bSAndroid Build Coastguard Workerpicked off 8 bits at a time to be output.</p>
2551*324bb76bSAndroid Build Coastguard Worker
2552*324bb76bSAndroid Build Coastguard Worker<p>Assuming a character array of 8 bits per character and using 5 bit codes to
2553*324bb76bSAndroid Build Coastguard Workerbe packed, an example layout would be similar to:</p>
2554*324bb76bSAndroid Build Coastguard Worker
2555*324bb76bSAndroid Build Coastguard Worker<table>
2556*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
2557*324bb76bSAndroid Build Coastguard Worker		<th>Byte #
2558*324bb76bSAndroid Build Coastguard Worker		</th><th>Bits
2559*324bb76bSAndroid Build Coastguard Worker	</th></tr><tr>
2560*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">0
2561*324bb76bSAndroid Build Coastguard Worker		</td><td><tt>bbbaaaaa</tt>
2562*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2563*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">1
2564*324bb76bSAndroid Build Coastguard Worker		</td><td><tt>dcccccbb</tt>
2565*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2566*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">2
2567*324bb76bSAndroid Build Coastguard Worker		</td><td><tt>eeeedddd</tt>
2568*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2569*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">3
2570*324bb76bSAndroid Build Coastguard Worker		</td><td><tt>ggfffffe</tt>
2571*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2572*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">4
2573*324bb76bSAndroid Build Coastguard Worker		</td><td><tt>hhhhhggg</tt>
2574*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2575*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">⋮
2576*324bb76bSAndroid Build Coastguard Worker		</td><td><tt></tt>
2577*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2578*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;">N
2579*324bb76bSAndroid Build Coastguard Worker		</td><td>
2580*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
2581*324bb76bSAndroid Build Coastguard Worker
2582*324bb76bSAndroid Build Coastguard Worker<p>Note that the physical packing arrangement will change as the number of bits
2583*324bb76bSAndroid Build Coastguard Workerper compression code change but the concept remains the same.</p>
2584*324bb76bSAndroid Build Coastguard Worker
2585*324bb76bSAndroid Build Coastguard Worker<h3>4. Package the Bytes</h3>
2586*324bb76bSAndroid Build Coastguard Worker
2587*324bb76bSAndroid Build Coastguard Worker<p>Once the bytes have been created, they are grouped into blocks for output by
2588*324bb76bSAndroid Build Coastguard Workerpreceding each block of 0 to 255 bytes with a character count byte. A block
2589*324bb76bSAndroid Build Coastguard Workerwith a zero byte count terminates the Raster Data stream for a given image.
2590*324bb76bSAndroid Build Coastguard WorkerThese blocks are what are actually output for the GIF image. This block format
2591*324bb76bSAndroid Build Coastguard Workerhas the side effect of allowing a decoding program the ability to read past the
2592*324bb76bSAndroid Build Coastguard Workeractual image data if necessary by reading block counts and then skipping over
2593*324bb76bSAndroid Build Coastguard Workerthe data.</p>
2594*324bb76bSAndroid Build Coastguard Worker
2595*324bb76bSAndroid Build Coastguard Worker<h3>Further Reading</h3>
2596*324bb76bSAndroid Build Coastguard Worker
2597*324bb76bSAndroid Build Coastguard Worker<ol>
2598*324bb76bSAndroid Build Coastguard Worker	<li>Ziv, J. and Lempel, A.: <i>A Universal Algorithm for Sequential Data
2599*324bb76bSAndroid Build Coastguard Worker	Compression</i>, IEEE Transactions on Information Theory, May 1977
2600*324bb76bSAndroid Build Coastguard Worker	</li><li>Welch, T.: <i>A Technique for High-Performance Data Compression</i>,
2601*324bb76bSAndroid Build Coastguard Worker	Computer, June 1984
2602*324bb76bSAndroid Build Coastguard Worker	</li><li>Nelson, M.R.: <i>LZW Data Compression</i>, Dr. Dobb's Journal, October
2603*324bb76bSAndroid Build Coastguard Worker	1989
2604*324bb76bSAndroid Build Coastguard Worker</li></ol>
2605*324bb76bSAndroid Build Coastguard Worker
2606*324bb76bSAndroid Build Coastguard Worker<p><i>Editor's (Kalle's) note: see also <a href="https://web.archive.org/web/20160304075538/http://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch">Wikipedia –
2607*324bb76bSAndroid Build Coastguard WorkerLempel–Ziv–Welch</a>.</i></p>
2608*324bb76bSAndroid Build Coastguard Worker
2609*324bb76bSAndroid Build Coastguard Worker</div>
2610*324bb76bSAndroid Build Coastguard Worker
2611*324bb76bSAndroid Build Coastguard Worker<h2 id="onlinecapabilities">Appendix G. On-line Capabilities Dialogue <span onclick="ToggleVis(34);">(hide/show)</span></h2>
2612*324bb76bSAndroid Build Coastguard Worker
2613*324bb76bSAndroid Build Coastguard Worker<div id="p34">
2614*324bb76bSAndroid Build Coastguard Worker
2615*324bb76bSAndroid Build Coastguard Worker<p><i>Note:</i> This section is currently (10 July 1990) under revision; the
2616*324bb76bSAndroid Build Coastguard Workerinformation provided here should be used as general guidelines. Code written
2617*324bb76bSAndroid Build Coastguard Workerbased on this information should be designed in a flexible way to accommodate
2618*324bb76bSAndroid Build Coastguard Workerany changes resulting from the revisions.</p>
2619*324bb76bSAndroid Build Coastguard Worker
2620*324bb76bSAndroid Build Coastguard Worker<p>The following sequences are defined for use in mediating control between a
2621*324bb76bSAndroid Build Coastguard WorkerGIF sender and GIF receiver over an interactive communications line. These
2622*324bb76bSAndroid Build Coastguard Workersequences do not apply to applications that involve downloading of static GIF
2623*324bb76bSAndroid Build Coastguard Workerfiles and are not considered part of a GIF file.</p>
2624*324bb76bSAndroid Build Coastguard Worker
2625*324bb76bSAndroid Build Coastguard Worker<h3>GIF Capabilities Enquiry</h3>
2626*324bb76bSAndroid Build Coastguard Worker
2627*324bb76bSAndroid Build Coastguard Worker<p>The GIF Capabilities Enquiry sequence is issued from a host and requests an
2628*324bb76bSAndroid Build Coastguard Workerinteractive GIF decoder to return a response message that defines the graphics
2629*324bb76bSAndroid Build Coastguard Workerparameters for the decoder. This involves returning information about available
2630*324bb76bSAndroid Build Coastguard Workerscreen sizes, number of bits/color supported and the amount of color detail
2631*324bb76bSAndroid Build Coastguard Workersupported. The escape sequence for the GIF Capabilities Enquiry is defined
2632*324bb76bSAndroid Build Coastguard Workeras:</p>
2633*324bb76bSAndroid Build Coastguard Worker
2634*324bb76bSAndroid Build Coastguard Worker<table>
2635*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
2636*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;"><tt>ESC</tt>
2637*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;"><tt>0x1B</tt> (27)
2638*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2639*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;"><tt>[</tt>
2640*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;"><tt>0x5B</tt> (91)
2641*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2642*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;"><tt>&gt;</tt>
2643*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;"><tt>0x3E</tt> (62)
2644*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2645*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;"><tt>0</tt>
2646*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;"><tt>0x30</tt> (48)
2647*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2648*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;"><tt>g</tt>
2649*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;"><tt>0x67</tt> (103)
2650*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
2651*324bb76bSAndroid Build Coastguard Worker
2652*324bb76bSAndroid Build Coastguard Worker<h3>GIF Capabilities Response</h3>
2653*324bb76bSAndroid Build Coastguard Worker
2654*324bb76bSAndroid Build Coastguard Worker<p>The GIF Capabilities Response message is returned by an interactive GIF
2655*324bb76bSAndroid Build Coastguard Workerdecoder and defines the decoder's display capabilities for all graphics modes
2656*324bb76bSAndroid Build Coastguard Workerthat are supported by the software. Note that this can also include graphics
2657*324bb76bSAndroid Build Coastguard Workerprinters as well as a monitor screen. The general format of this message
2658*324bb76bSAndroid Build Coastguard Workeris:</p>
2659*324bb76bSAndroid Build Coastguard Worker
2660*324bb76bSAndroid Build Coastguard Worker<p>#version;protocol{;dev, width, height, color-bits,
2661*324bb76bSAndroid Build Coastguard Workercolor-res}…&lt;CR&gt;</p>
2662*324bb76bSAndroid Build Coastguard Worker
2663*324bb76bSAndroid Build Coastguard Worker<table>
2664*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
2665*324bb76bSAndroid Build Coastguard Worker		<td><tt>'#'</tt>
2666*324bb76bSAndroid Build Coastguard Worker		</td><td>GIF Capabilities Response identifier character.
2667*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2668*324bb76bSAndroid Build Coastguard Worker		<td>version
2669*324bb76bSAndroid Build Coastguard Worker		</td><td>GIF format version number; initially <tt>'87a'</tt>.
2670*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2671*324bb76bSAndroid Build Coastguard Worker		<td>protocol=<tt>'0'</tt>
2672*324bb76bSAndroid Build Coastguard Worker		</td><td>No end-to-end protocol supported by decoder Transfer as direct
2673*324bb76bSAndroid Build Coastguard Worker		8-bit data stream.
2674*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2675*324bb76bSAndroid Build Coastguard Worker		<td>protocol=<tt>'1'</tt>
2676*324bb76bSAndroid Build Coastguard Worker		</td><td>Can use CIS B+ error correction protocol to transfer GIF data
2677*324bb76bSAndroid Build Coastguard Worker		interactively from the host directly to the display.
2678*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2679*324bb76bSAndroid Build Coastguard Worker		<td>dev=<tt>'0'</tt>
2680*324bb76bSAndroid Build Coastguard Worker		</td><td>Screen parameter set follows.
2681*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2682*324bb76bSAndroid Build Coastguard Worker		<td>dev=<tt>'1'</tt>
2683*324bb76bSAndroid Build Coastguard Worker		</td><td>Printer parameter set follows.
2684*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2685*324bb76bSAndroid Build Coastguard Worker		<td>width
2686*324bb76bSAndroid Build Coastguard Worker		</td><td>Maximum supported display width in pixels.
2687*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2688*324bb76bSAndroid Build Coastguard Worker		<td>height
2689*324bb76bSAndroid Build Coastguard Worker		</td><td>Maximum supported display height in pixels.
2690*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2691*324bb76bSAndroid Build Coastguard Worker		<td>color-bits
2692*324bb76bSAndroid Build Coastguard Worker		</td><td>Number of bits per pixel supported. The number of supported colors
2693*324bb76bSAndroid Build Coastguard Worker		is therefore 2<sup>color-bits</sup>.
2694*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2695*324bb76bSAndroid Build Coastguard Worker		<td>color-res
2696*324bb76bSAndroid Build Coastguard Worker		</td><td>Number of bits per color component supported in the hardware color
2697*324bb76bSAndroid Build Coastguard Worker		palette. If color-res is <tt>'0'</tt> then no hardware palette table is
2698*324bb76bSAndroid Build Coastguard Worker		available.
2699*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
2700*324bb76bSAndroid Build Coastguard Worker
2701*324bb76bSAndroid Build Coastguard Worker<p>Note that all values in the GIF Capabilities Response are returned as ASCII
2702*324bb76bSAndroid Build Coastguard Workerdecimal numbers and the message is terminated by a Carriage Return character
2703*324bb76bSAndroid Build Coastguard Worker(<tt>0x0D</tt>, 13).</p>
2704*324bb76bSAndroid Build Coastguard Worker
2705*324bb76bSAndroid Build Coastguard Worker<p>The following GIF Capabilities Response message describes three standard IBM
2706*324bb76bSAndroid Build Coastguard WorkerPC <a href="https://web.archive.org/web/20160304075538/http://en.wikipedia.org/wiki/Enhanced_Graphics_Adapter">Enhanced
2707*324bb76bSAndroid Build Coastguard WorkerGraphics Adapter</a> configurations with no printer; the GIF data stream can be
2708*324bb76bSAndroid Build Coastguard Workerprocessed within an error correcting protocol:</p>
2709*324bb76bSAndroid Build Coastguard Worker
2710*324bb76bSAndroid Build Coastguard Worker<blockquote>
2711*324bb76bSAndroid Build Coastguard Worker	<p><tt>#87a;1;0,320,200,4,0;0,640,200,2,2;0,640,350,4,2&lt;CR&gt;</tt></p>
2712*324bb76bSAndroid Build Coastguard Worker</blockquote>
2713*324bb76bSAndroid Build Coastguard Worker
2714*324bb76bSAndroid Build Coastguard Worker<h3>Enter GIF Graphics Mode</h3>
2715*324bb76bSAndroid Build Coastguard Worker
2716*324bb76bSAndroid Build Coastguard Worker<p>Two sequences are currently defined to invoke an interactive GIF decoder
2717*324bb76bSAndroid Build Coastguard Workerinto action. The only difference between them is that different output media
2718*324bb76bSAndroid Build Coastguard Workerare selected. These sequences are:</p>
2719*324bb76bSAndroid Build Coastguard Worker
2720*324bb76bSAndroid Build Coastguard Worker<table>
2721*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
2722*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;"><tt>ESC</tt>
2723*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;"><tt>0x1B</tt> (27)
2724*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="5">Display GIF image on screen
2725*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2726*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;"><tt>[</tt>
2727*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;"><tt>0x5B</tt> (91)
2728*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2729*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;"><tt>&gt;</tt>
2730*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;"><tt>0x3E</tt> (62)
2731*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2732*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;"><tt>1</tt>
2733*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;"><tt>0x31</tt> (49)
2734*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2735*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;"><tt>g</tt>
2736*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;"><tt>0x67</tt> (103)
2737*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
2738*324bb76bSAndroid Build Coastguard Worker
2739*324bb76bSAndroid Build Coastguard Worker<p></p>
2740*324bb76bSAndroid Build Coastguard Worker
2741*324bb76bSAndroid Build Coastguard Worker<table>
2742*324bb76bSAndroid Build Coastguard Worker	<tbody><tr>
2743*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;"><tt>ESC</tt>
2744*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;"><tt>0x1B</tt> (27)
2745*324bb76bSAndroid Build Coastguard Worker		</td><td rowspan="5">Display image directly to an attached graphics printer.
2746*324bb76bSAndroid Build Coastguard Worker		The image may optionally be displayed on the screen as well.
2747*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2748*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;"><tt>[</tt>
2749*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;"><tt>0x5B</tt> (91)
2750*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2751*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;"><tt>&gt;</tt>
2752*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;"><tt>0x3E</tt> (62)
2753*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2754*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;"><tt>2</tt>
2755*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;"><tt>0x32</tt> (50)
2756*324bb76bSAndroid Build Coastguard Worker	</td></tr><tr>
2757*324bb76bSAndroid Build Coastguard Worker		<td style="text-align:center;"><tt>g</tt>
2758*324bb76bSAndroid Build Coastguard Worker		</td><td style="text-align:center;"><tt>0x67</tt> (103)
2759*324bb76bSAndroid Build Coastguard Worker</td></tr></tbody></table>
2760*324bb76bSAndroid Build Coastguard Worker
2761*324bb76bSAndroid Build Coastguard Worker<p>Note that the <tt>'g'</tt> character terminating each sequence is in
2762*324bb76bSAndroid Build Coastguard Workerlowercase.</p>
2763*324bb76bSAndroid Build Coastguard Worker
2764*324bb76bSAndroid Build Coastguard Worker<h3>Interactive Environment</h3>
2765*324bb76bSAndroid Build Coastguard Worker
2766*324bb76bSAndroid Build Coastguard Worker<p>The assumed environment for the transmission of GIF image data from an
2767*324bb76bSAndroid Build Coastguard Workerinteractive application is a full 8-bit data stream from host to micro. All 256
2768*324bb76bSAndroid Build Coastguard Workercharacter codes must be transferrable. The establishing of an 8-bit data path
2769*324bb76bSAndroid Build Coastguard Workerfor communications will normally be taken care of by the host application
2770*324bb76bSAndroid Build Coastguard Workerprograms. It is however up to the receiving communications programs supporting
2771*324bb76bSAndroid Build Coastguard WorkerGIF to be able to receive and pass on all 256 8-bit codes to the GIF decoder
2772*324bb76bSAndroid Build Coastguard Workersoftware.</p>
2773*324bb76bSAndroid Build Coastguard Worker
2774*324bb76bSAndroid Build Coastguard Worker</div>
2775*324bb76bSAndroid Build Coastguard Worker
2776*324bb76bSAndroid Build Coastguard Worker<h2 id="coversheet">Cover Sheet for the GIF89a Specification <span onclick="ToggleVis(35);">(hide/show)</span></h2>
2777*324bb76bSAndroid Build Coastguard Worker
2778*324bb76bSAndroid Build Coastguard Worker<div id="p35">
2779*324bb76bSAndroid Build Coastguard Worker
2780*324bb76bSAndroid Build Coastguard Worker<h3>Deferred clear code in LZW compression</h3>
2781*324bb76bSAndroid Build Coastguard Worker
2782*324bb76bSAndroid Build Coastguard Worker<p>There has been confusion about where clear codes can be found in the data
2783*324bb76bSAndroid Build Coastguard Workerstream. As the specification says, they may appear at anytime. There is not a
2784*324bb76bSAndroid Build Coastguard Workerrequirement to send a clear code when the string table is full.</p>
2785*324bb76bSAndroid Build Coastguard Worker
2786*324bb76bSAndroid Build Coastguard Worker<p>It is the encoder's decision as to when the table should be cleared. When
2787*324bb76bSAndroid Build Coastguard Workerthe table is full, the encoder can chose to use the table as is, making no
2788*324bb76bSAndroid Build Coastguard Workerchanges to it until the encoder chooses to clear it. The encoder during this
2789*324bb76bSAndroid Build Coastguard Workertime sends out codes that are of the maximum Code Size.</p>
2790*324bb76bSAndroid Build Coastguard Worker
2791*324bb76bSAndroid Build Coastguard Worker<p>As we can see from the above, when the decoder's table is full, it must not
2792*324bb76bSAndroid Build Coastguard Workerchange the table until a clear code is received. The Code Size is that of the
2793*324bb76bSAndroid Build Coastguard Workermaximum Code Size. Processing other than this is done normally.</p>
2794*324bb76bSAndroid Build Coastguard Worker
2795*324bb76bSAndroid Build Coastguard Worker<p>Because of a large base of decoders that do not handle the decompression in
2796*324bb76bSAndroid Build Coastguard Workerthis manner, we ask developers of GIF encoding software to <i>not</i> implement
2797*324bb76bSAndroid Build Coastguard Workerthis feature until at least January 1991 and later if they see that their
2798*324bb76bSAndroid Build Coastguard Workerparticular market is not ready for it. This will give developers of GIF
2799*324bb76bSAndroid Build Coastguard Workerdecoding software time to implement this feature and to get it into the hands
2800*324bb76bSAndroid Build Coastguard Workerof their clients before the decoders start "breaking" on the new GIF's. It is
2801*324bb76bSAndroid Build Coastguard Workernot required that encoders change their software to take advantage of the
2802*324bb76bSAndroid Build Coastguard Workerdeferred clear code, but it is for decoders.</p>
2803*324bb76bSAndroid Build Coastguard Worker
2804*324bb76bSAndroid Build Coastguard Worker<h3>Application Extension Block – Application Identifier</h3>
2805*324bb76bSAndroid Build Coastguard Worker
2806*324bb76bSAndroid Build Coastguard Worker<p>There will be a Courtesy Directory file located on CompuServe in the PICS
2807*324bb76bSAndroid Build Coastguard Workerforum. This directory will contain Application Identifiers for <a href="#applicationextension">Application Extension Blocks</a> that have been
2808*324bb76bSAndroid Build Coastguard Workerused by developers of GIF applications. This file is intended to help keep
2809*324bb76bSAndroid Build Coastguard Workerdevelopers that wish to create Application Extension Blocks from using the same
2810*324bb76bSAndroid Build Coastguard WorkerApplication Identifiers. This is not an official directory; it is for voluntary
2811*324bb76bSAndroid Build Coastguard Workerparticipation only and does not guarantee that someone will not use the same
2812*324bb76bSAndroid Build Coastguard Workeridentifier.</p>
2813*324bb76bSAndroid Build Coastguard Worker
2814*324bb76bSAndroid Build Coastguard Worker<p>E-Mail can be sent to Larry Wood (forum manager of PICS) indicating the
2815*324bb76bSAndroid Build Coastguard Workerrequest for inclusion in this file with an identifier.</p>
2816*324bb76bSAndroid Build Coastguard Worker
2817*324bb76bSAndroid Build Coastguard Worker</div>
2818*324bb76bSAndroid Build Coastguard Worker<hr>
2819*324bb76bSAndroid Build Coastguard Worker</body>
2820*324bb76bSAndroid Build Coastguard Worker</html>
2821