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><Packed Fields> 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><Packed Fields> =</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><Packed Fields> 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><Packed Fields> =</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><Packed Fields> 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><Packed Fields> =</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;">< > 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><GIF Data Stream> ::= <a href="#header">Header</a> <Logical 2097*324bb76bSAndroid Build Coastguard Worker Screen> <Data>* <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 <GIF Data Stream> 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><GIF Data Stream> 2116*324bb76bSAndroid Build Coastguard Worker </td><td>::= 2117*324bb76bSAndroid Build Coastguard Worker </td><td>Header <Logical Screen> <Data>* Trailer 2118*324bb76bSAndroid Build Coastguard Worker </td></tr><tr> 2119*324bb76bSAndroid Build Coastguard Worker <td><Logical Screen> 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><Data> 2125*324bb76bSAndroid Build Coastguard Worker </td><td>::= 2126*324bb76bSAndroid Build Coastguard Worker </td><td><Graphic Block> | <Special-Purpose Block> 2127*324bb76bSAndroid Build Coastguard Worker </td></tr><tr> 2128*324bb76bSAndroid Build Coastguard Worker <td><Graphic Block> 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 <Graphic-Rendering Block> 2132*324bb76bSAndroid Build Coastguard Worker </td></tr><tr> 2133*324bb76bSAndroid Build Coastguard Worker <td><Graphic-Rendering Block> 2134*324bb76bSAndroid Build Coastguard Worker </td><td>::= 2135*324bb76bSAndroid Build Coastguard Worker </td><td><Table-Based Image> | <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><Table-Based Image> 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><Special-Purpose Block> 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 & 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><code size></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 <Clear code>+1. 2531*324bb76bSAndroid Build Coastguard Worker </li><li>The first available compression code value is <Clear code> + 2. 2532*324bb76bSAndroid Build Coastguard Worker </li><li>The output codes are of variable length, starting at <code size> 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>></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}…<CR></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<CR></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>></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>></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