xref: /aosp_15_r20/external/giflib/doc/whatsinagif/animation_and_transparency.html (revision 324bb76b8d05e2a05aa88511fff61cf3f9ca5892)
1*324bb76bSAndroid Build Coastguard Worker<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2*324bb76bSAndroid Build Coastguard Worker<html>
3*324bb76bSAndroid Build Coastguard Worker<head>
4*324bb76bSAndroid Build Coastguard Worker<title>What's In A GIF - Animation and Transparency</title>
5*324bb76bSAndroid Build Coastguard Worker<script type="text/javascript"></script>
6*324bb76bSAndroid Build Coastguard Worker<link rel="stylesheet" href="../proj.css" />
7*324bb76bSAndroid Build Coastguard Worker<style type="text/css">
8*324bb76bSAndroid Build Coastguard Worker.byte {font-family: Courier, fixed;
9*324bb76bSAndroid Build Coastguard Worker	padding: .2em}
10*324bb76bSAndroid Build Coastguard Worker.gif_header {background-color: #f9E89D}
11*324bb76bSAndroid Build Coastguard Worker.gif_screen {background-color: #C8DBD9}
12*324bb76bSAndroid Build Coastguard Worker.gif_color {background-color: #E1E1E1}
13*324bb76bSAndroid Build Coastguard Worker.gif_graphic {background-color: #F9EB9D}
14*324bb76bSAndroid Build Coastguard Worker.gif_imgdesc {background-color: #C2D1DC}
15*324bb76bSAndroid Build Coastguard Worker.gif_imgdata {background-color: #D0C4C4}
16*324bb76bSAndroid Build Coastguard Worker.gif_trailer {background-color: #f9E89D}
17*324bb76bSAndroid Build Coastguard Worker.gif_ext {background-color: #D0CFAE}
18*324bb76bSAndroid Build Coastguard Worker#global_color_size {margin-left: auto; margin-right:auto; border:1px solid black;}
19*324bb76bSAndroid Build Coastguard Worker#global_color_size td {text-align:center;}
20*324bb76bSAndroid Build Coastguard Worker</style>
21*324bb76bSAndroid Build Coastguard Worker</head>
22*324bb76bSAndroid Build Coastguard Worker<body>
23*324bb76bSAndroid Build Coastguard Worker<table width='100%' cellpadding='0' summary='Canned page header' bgcolor="#ddd">
24*324bb76bSAndroid Build Coastguard Worker<tr>
25*324bb76bSAndroid Build Coastguard Worker<td><h2>What's In A GIF</h2></td>
26*324bb76bSAndroid Build Coastguard Worker<td align="center"><img src="../giflib-logo.gif"></td>
27*324bb76bSAndroid Build Coastguard Worker<td align="right">(animation and transparency)</td>
28*324bb76bSAndroid Build Coastguard Worker</tr>
29*324bb76bSAndroid Build Coastguard Worker</table>
30*324bb76bSAndroid Build Coastguard Worker
31*324bb76bSAndroid Build Coastguard Worker<div id="body">
32*324bb76bSAndroid Build Coastguard Worker<div style="text-align:center; margin-top: 10px; padding-top: 10px; border-top: #cecece 1px solid">
33*324bb76bSAndroid Build Coastguard Worker<p><a href="index.html">Back to the What's In A GIF index page.</a></p>
34*324bb76bSAndroid Build Coastguard Worker</div>
35*324bb76bSAndroid Build Coastguard Worker
36*324bb76bSAndroid Build Coastguard Worker<p>In addition to being able to store simple image data,
37*324bb76bSAndroid Build Coastguard WorkerGIF files (specifically GIF89a files) allow for some special features. Tricks
38*324bb76bSAndroid Build Coastguard Workersuch as transparency and animation can be accomplished with the
39*324bb76bSAndroid Build Coastguard Workerhelp of the Graphics Control Extension block. Here's a sample of what this
40*324bb76bSAndroid Build Coastguard Workerblock looks like:</p>
41*324bb76bSAndroid Build Coastguard Worker
42*324bb76bSAndroid Build Coastguard Worker<p style="text-align:center"><img src="graphic_control_ext.gif"
43*324bb76bSAndroid Build Coastguard Workeralt="GIF graphics control ext block layout" style="border: 1px solid
44*324bb76bSAndroid Build Coastguard Workerblack" /></p>
45*324bb76bSAndroid Build Coastguard Worker
46*324bb76bSAndroid Build Coastguard Worker<p>I'll show you how to manipulate the bytes in this block to achieve
47*324bb76bSAndroid Build Coastguard Workerspecial effects.</p>
48*324bb76bSAndroid Build Coastguard Worker
49*324bb76bSAndroid Build Coastguard Worker<h2><a name="animation">Animation</a></h2>
50*324bb76bSAndroid Build Coastguard Worker
51*324bb76bSAndroid Build Coastguard Worker<p>Cartoons are created by animators who draw a sequence of pictures,
52*324bb76bSAndroid Build Coastguard Workereach slightly different from the one before, which, when rapidly shown
53*324bb76bSAndroid Build Coastguard Workerone after the other, give the illusion of motion. Animation in GIF
54*324bb76bSAndroid Build Coastguard Workerimages is achieved in much the same way. Multiple images may be stored
55*324bb76bSAndroid Build Coastguard Workerin the same file and you can tell the computer how much time to wait
56*324bb76bSAndroid Build Coastguard Workerbefore showing the next image. Let's walk though the parts that make
57*324bb76bSAndroid Build Coastguard Workerup this simple traffic light animation.
58*324bb76bSAndroid Build Coastguard Worker</p>
59*324bb76bSAndroid Build Coastguard Worker
60*324bb76bSAndroid Build Coastguard Worker<p style="text-align:center"><img src="sample_2_animation.gif"
61*324bb76bSAndroid Build Coastguard Workeralt="sample animated traffic light" / WIDTH="11" HEIGHT="29"></p>
62*324bb76bSAndroid Build Coastguard Worker<p>
63*324bb76bSAndroid Build Coastguard Worker
64*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_header"> 47 </span>
65*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_header"> 49 </span>
66*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_header"> 46 </span>
67*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_header"> 38 </span>
68*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_header"> 39 </span>
69*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_header"> 61 </span>
70*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_screen"> 0B </span>
71*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_screen"> 00 </span>
72*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_screen"> 1D </span>
73*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_screen"> 00 </span>
74*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_screen"> A2 </span>
75*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_screen"> 05 </span>
76*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_screen"> 00 </span>
77*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> FF </span>
78*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> 00 </span>
79*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> 00 </span>
80*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> 00 </span>
81*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> FF </span>
82*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> 00 </span>
83*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> FF </span>
84*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> FF </span>
85*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> 00 </span>
86*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> 8E </span>
87*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> 8E </span>
88*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> 8E </span>
89*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> 00 </span>
90*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> 00 </span>
91*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> 00 </span>
92*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> FF </span>
93*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> FF </span>
94*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> FF </span>
95*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> 00 </span>
96*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> 00 </span>
97*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> 00 </span>
98*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> 00 </span>
99*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> 00 </span>
100*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_color"> 00 </span>
101*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_ext"> 21 </span>
102*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_ext"> FF </span>
103*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_ext"> 0B </span>
104*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_ext"> 4E </span>
105*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_ext"> 45 </span>
106*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_ext"> 54 </span>
107*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_ext"> 53 </span>
108*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_ext"> 43 </span>
109*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_ext"> 41 </span>
110*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_ext"> 50 </span>
111*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_ext"> 45 </span>
112*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_ext"> 32 </span>
113*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_ext"> 2E </span>
114*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_ext"> 30 </span>
115*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_ext"> 03 </span>
116*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_ext"> 01 </span>
117*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_ext"> 00 </span>
118*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_ext"> 00 </span>
119*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_ext"> 00 </span>
120*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 21 </span>
121*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> F9 </span>
122*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 04 </span>
123*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 04 </span>
124*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 64 </span>
125*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 00 </span>
126*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 00 </span>
127*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 00 </span>
128*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 2C </span>
129*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 00 </span>
130*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 00 </span>
131*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 00 </span>
132*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 00 </span>
133*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 0B </span>
134*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 00 </span>
135*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 1D </span>
136*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 00 </span>
137*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 00 </span>
138*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 03 </span>
139*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 30 </span>
140*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 48 </span>
141*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> BA </span>
142*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> DC </span>
143*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> DE </span>
144*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 23 </span>
145*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> BE </span>
146*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 48 </span>
147*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 21 </span>
148*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> AD </span>
149*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> EB </span>
150*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 62 </span>
151*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> A5 </span>
152*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 25 </span>
153*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> D3 </span>
154*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 93 </span>
155*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> F7 </span>
156*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 8C </span>
157*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> E4 </span>
158*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 27 </span>
159*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 9A </span>
160*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 1B </span>
161*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> D7 </span>
162*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> A1 </span>
163*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 17 </span>
164*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 9B </span>
165*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 1E </span>
166*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> A0 </span>
167*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> F3 </span>
168*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 96 </span>
169*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 34 </span>
170*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 13 </span>
171*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> DC </span>
172*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> CF </span>
173*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> AD </span>
174*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 37 </span>
175*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 7A </span>
176*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 6F </span>
177*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> F7 </span>
178*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> B8 </span>
179*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 05 </span>
180*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 30 </span>
181*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 28 </span>
182*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> F4 </span>
183*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 39 </span>
184*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 76 </span>
185*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> B5 </span>
186*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 64 </span>
187*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 02 </span>
188*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 00 </span>
189*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 21 </span>
190*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> F9 </span>
191*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 04 </span>
192*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 04 </span>
193*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 32 </span>
194*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 00 </span>
195*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 00 </span>
196*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 00 </span>
197*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 2C </span>
198*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 02 </span>
199*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 00 </span>
200*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 0B </span>
201*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 00 </span>
202*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 07 </span>
203*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 00 </span>
204*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 10 </span>
205*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 00 </span>
206*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 00 </span>
207*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 03 </span>
208*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 19 </span>
209*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 78 </span>
210*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 27 </span>
211*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> AC </span>
212*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> CB </span>
213*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 0D </span>
214*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> CA </span>
215*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 49 </span>
216*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> E1 </span>
217*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> B3 </span>
218*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 0A </span>
219*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> BB </span>
220*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> CD </span>
221*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> F7 </span>
222*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> F8 </span>
223*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> CE </span>
224*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 27 </span>
225*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 1E </span>
226*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 62 </span>
227*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 69 </span>
228*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 9E </span>
229*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> A3 </span>
230*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 19 </span>
231*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 82 </span>
232*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 47 </span>
233*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 02 </span>
234*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 00 </span>
235*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 21 </span>
236*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> F9 </span>
237*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 04 </span>
238*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 04 </span>
239*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 64 </span>
240*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 00 </span>
241*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 00 </span>
242*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 00 </span>
243*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 2C </span>
244*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 02 </span>
245*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 00 </span>
246*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 02 </span>
247*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 00 </span>
248*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 07 </span>
249*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 00 </span>
250*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 10 </span>
251*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 00 </span>
252*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdesc"> 00 </span>
253*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 03 </span>
254*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 19 </span>
255*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 78 </span>
256*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 07 </span>
257*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> AC </span>
258*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> CB </span>
259*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 0D </span>
260*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> CA </span>
261*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 49 </span>
262*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> E1 </span>
263*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> B3 </span>
264*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 0A </span>
265*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> BB </span>
266*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> CD </span>
267*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> F7 </span>
268*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> F8 </span>
269*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> CE </span>
270*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 27 </span>
271*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 1E </span>
272*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 62 </span>
273*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 69 </span>
274*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 9E </span>
275*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> A3 </span>
276*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 19 </span>
277*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 82 </span>
278*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 47 </span>
279*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 02 </span>
280*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_imgdata"> 00 </span>
281*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_trailer"> 3B </span>
282*324bb76bSAndroid Build Coastguard Worker</p>
283*324bb76bSAndroid Build Coastguard Worker
284*324bb76bSAndroid Build Coastguard Worker<p>This file is similar to  the ones we've previously encountered. The
285*324bb76bSAndroid Build Coastguard Workerbytes   start  out  with   the  GIF   header.  Next   we  have   a  <a
286*324bb76bSAndroid Build Coastguard Workerhref="bits_and_bytes.html#logical_screen_descriptor_block">logical
287*324bb76bSAndroid Build Coastguard Workerscreen descriptor</a> which  tells us that our image is  11px by 29 px
288*324bb76bSAndroid Build Coastguard Workerand will have  a global color table  with 8 colors in it  (of which we
289*324bb76bSAndroid Build Coastguard Workeronly really need 5). Immediately after, follows the global color table
290*324bb76bSAndroid Build Coastguard Workerwhich  tells  us what  those  colors  are  (0=red, 1=green,  2=yellow,
291*324bb76bSAndroid Build Coastguard Worker3=light grey, 4=black, 5=white, 6=black [not used], 7=black [not used]
292*324bb76bSAndroid Build Coastguard Worker).</p>
293*324bb76bSAndroid Build Coastguard Worker
294*324bb76bSAndroid Build Coastguard Worker<p>Next we encounter an <a
295*324bb76bSAndroid Build Coastguard Workerhref="bits_and_bytes.html#application_extension_block">application
296*324bb76bSAndroid Build Coastguard Workerextension block</a>.  This is this block that causes our animation to
297*324bb76bSAndroid Build Coastguard Workerrepeat rather than play once and stop. The first three bytes tell us
298*324bb76bSAndroid Build Coastguard Workerwe are looking at (1) an extension block (2) of type
299*324bb76bSAndroid Build Coastguard Worker&quot;application&quot; which is followed by (3) 11 bytes of fixed
300*324bb76bSAndroid Build Coastguard Workerlength data. These 11 bytes contain the ASCII character codes for
301*324bb76bSAndroid Build Coastguard Worker&quot;NETSCAPE2.0&quot;. Then begins the actual &quot;application
302*324bb76bSAndroid Build Coastguard Workerdata&quot; which is contained in sub-blocks. There are two values that
303*324bb76bSAndroid Build Coastguard Workerare stored in these sub-blocks. The first value is always the byte
304*324bb76bSAndroid Build Coastguard Worker<span class="byte">01</span>. Then we have a value in the unsigned
305*324bb76bSAndroid Build Coastguard Worker(lo-hi byte) format that says how many times the animation should
306*324bb76bSAndroid Build Coastguard Workerrepeat. You can see that our sample image has a value of 0; this means
307*324bb76bSAndroid Build Coastguard Workerthe animation should loop forever. These three bytes are preceded by
308*324bb76bSAndroid Build Coastguard Workerthe <span class="byte">03</span> that lets the decoder know that three
309*324bb76bSAndroid Build Coastguard Workerbytes of data follow, and they are terminated by <span
310*324bb76bSAndroid Build Coastguard Workerclass="byte">00</span>, the block terminator.</p>
311*324bb76bSAndroid Build Coastguard Worker
312*324bb76bSAndroid Build Coastguard Worker<p>This very basic animation is essentially made up of three different
313*324bb76bSAndroid Build Coastguard Worker&quot;scenes&quot;.  The first is the one with the green light lit,
314*324bb76bSAndroid Build Coastguard Workerthe second with the yellow, and the last with the red. You should be
315*324bb76bSAndroid Build Coastguard Workerable to see three separate chunks of image data in the bytes
316*324bb76bSAndroid Build Coastguard Workerabove. </p>
317*324bb76bSAndroid Build Coastguard Worker
318*324bb76bSAndroid Build Coastguard Worker<table style="margin-left: auto;margin-right: auto">
319*324bb76bSAndroid Build Coastguard Worker	<tr><th>1</th><th>2</th><th>3</th></tr>
320*324bb76bSAndroid Build Coastguard Worker	<tr>
321*324bb76bSAndroid Build Coastguard Worker	<td><img src="sample_2_animation_green.gif" alt="scene 1: green light" width="11" height="29"/></td>
322*324bb76bSAndroid Build Coastguard Worker	<td><img src="sample_2_animation_yellow.gif" alt="scene 2: yellow light" width="11" height="29"/></td>
323*324bb76bSAndroid Build Coastguard Worker	<td><img src="sample_2_animation_red.gif" alt="scene 3: red light" width="11" height="29"/></td>
324*324bb76bSAndroid Build Coastguard Worker	</tr>
325*324bb76bSAndroid Build Coastguard Worker</table>
326*324bb76bSAndroid Build Coastguard Worker
327*324bb76bSAndroid Build Coastguard Worker<p>The first chunk begins immediately after the application extension
328*324bb76bSAndroid Build Coastguard Workerblock.  It is there we encounter our first graphic control
329*324bb76bSAndroid Build Coastguard Workerextension. As with all extensions, it begins with <span
330*324bb76bSAndroid Build Coastguard Workerclass="byte">21</span>. Next, the type specific label for the graphic
331*324bb76bSAndroid Build Coastguard Workercontrol type of extension is <span class="byte">F9</span>. Next we see
332*324bb76bSAndroid Build Coastguard Workerthe byte size of the data in the block; this should always be <span
333*324bb76bSAndroid Build Coastguard Workerclass="byte">04</span>. The first of these four data blocks is a
334*324bb76bSAndroid Build Coastguard Workerpacked field. </p>
335*324bb76bSAndroid Build Coastguard Worker
336*324bb76bSAndroid Build Coastguard Worker<p>The packed field stores three values. The first three (highest)
337*324bb76bSAndroid Build Coastguard Workerbits are &quot;reserved for future use&quot; so those have been left
338*324bb76bSAndroid Build Coastguard Workeras zeros. The next three bits indicate the disposal method. The
339*324bb76bSAndroid Build Coastguard Worker<em>disposal method</em> specifies what happens to the current image
340*324bb76bSAndroid Build Coastguard Workerdata when you move onto the next. We have three bits which means we
341*324bb76bSAndroid Build Coastguard Workercan represent a number between 0 and 7. Our sample animated image has
342*324bb76bSAndroid Build Coastguard Workera value of 1 which tells the decoder to leave the image in place and
343*324bb76bSAndroid Build Coastguard Workerdraw the next image on top of it. A value of 2 would have meant that
344*324bb76bSAndroid Build Coastguard Workerthe canvas should be restored to the background color (as indicated by
345*324bb76bSAndroid Build Coastguard Workerthe logical screen descriptor). A value of 3 is defined to mean that
346*324bb76bSAndroid Build Coastguard Workerthe decoder should restore the canvas to its previous state before the
347*324bb76bSAndroid Build Coastguard Workercurrent image was drawn. I don't believe that this value is widely
348*324bb76bSAndroid Build Coastguard Workersupported but haven't had the chance to test it out. The behavior for
349*324bb76bSAndroid Build Coastguard Workervalues 4-7 are yet to be defined. If this image were not animated,
350*324bb76bSAndroid Build Coastguard Workerthese bits would have been set to 0 which indicates that do not wish
351*324bb76bSAndroid Build Coastguard Workerto specify a disposal method. The seventh bit in they byte is the
352*324bb76bSAndroid Build Coastguard Worker<em>user input flag</em>. When set to 1, that means that the decoder
353*324bb76bSAndroid Build Coastguard Workerwill wait for some sort of &quot;input&quot; from the person viewing
354*324bb76bSAndroid Build Coastguard Workerthe image before moving on to the next scene. I'm guessing it's highly
355*324bb76bSAndroid Build Coastguard Workerunlikeley that you will encounter any other value that 0 for this bit.
356*324bb76bSAndroid Build Coastguard WorkerThe final bit is the transparency flag. We will go into more detail
357*324bb76bSAndroid Build Coastguard Workerabout transparency in <a href="#transparency">the next
358*324bb76bSAndroid Build Coastguard Workersection</a>. Since this image isn't using any transparency, we see
359*324bb76bSAndroid Build Coastguard Workerthis bit has been left at 0. </p>
360*324bb76bSAndroid Build Coastguard Worker
361*324bb76bSAndroid Build Coastguard Worker<p>The next two bytes are the delay time. This value is in the same
362*324bb76bSAndroid Build Coastguard Workerunsigned lformat as all the other integers in the file. This number
363*324bb76bSAndroid Build Coastguard Workerrepresents the number of hundredths of a second to wait before moving
364*324bb76bSAndroid Build Coastguard Workeron to the next scene. We see that our sample image has specified
365*324bb76bSAndroid Build Coastguard Workera value of 100 (<span class="byte">64</span> <span class="byte">00</span>)
366*324bb76bSAndroid Build Coastguard Workerin the first graphics control block which means we would wait 1 second
367*324bb76bSAndroid Build Coastguard Workerbefore changing our green light to yellow.</p>
368*324bb76bSAndroid Build Coastguard Worker
369*324bb76bSAndroid Build Coastguard Worker<p>Our graphics control extension block ends with the block
370*324bb76bSAndroid Build Coastguard Workerterminator <span class="byte">00</span>. You will notice this
371*324bb76bSAndroid Build Coastguard Workertype of block appearing two more times in this image, the second
372*324bb76bSAndroid Build Coastguard Workerinstance differing only in the delay time (the yellow light only
373*324bb76bSAndroid Build Coastguard Workerstays up for half a second).</p>
374*324bb76bSAndroid Build Coastguard Worker
375*324bb76bSAndroid Build Coastguard Worker<p>The next chunk is an image descriptor. The block declares that it
376*324bb76bSAndroid Build Coastguard Workerwill be drawing an image starting at the top left corner and taking up
377*324bb76bSAndroid Build Coastguard Workerthe whole canvas (11px x 29px). This block is followed by the image
378*324bb76bSAndroid Build Coastguard Workerdata that contains all the codes to draw the first scene, the one with
379*324bb76bSAndroid Build Coastguard Workerthe green light on.</p>
380*324bb76bSAndroid Build Coastguard Worker
381*324bb76bSAndroid Build Coastguard Worker<table style="margin-left: auto;margin-right: auto; text-align: center">
382*324bb76bSAndroid Build Coastguard Worker	<tr><th>Green</th><th>(Difference)</th><th>Yellow</th></tr>
383*324bb76bSAndroid Build Coastguard Worker	<tr>
384*324bb76bSAndroid Build Coastguard Worker	<td><img src="sample_2_green_large.gif" alt="green light enlarged" width="33" height="87"/></td>
385*324bb76bSAndroid Build Coastguard Worker	<td><img src="sample_2_green_yellow_diff.gif" alt="difference between green and yellow images"width="33" height="87"/></td>
386*324bb76bSAndroid Build Coastguard Worker	<td><img src="sample_2_yellow_large.gif" alt="yellow light enlarged" width="33" height="87"/></td>
387*324bb76bSAndroid Build Coastguard Worker	</tr>
388*324bb76bSAndroid Build Coastguard Worker</table>
389*324bb76bSAndroid Build Coastguard Worker
390*324bb76bSAndroid Build Coastguard Worker<p>If we compare the first and the second scene, we see they share many
391*324bb76bSAndroid Build Coastguard Workerof the same pixel color values. Rather than redrawing the whole canvas,
392*324bb76bSAndroid Build Coastguard Workerwe can specify just the part that changes (that is, the smallest
393*324bb76bSAndroid Build Coastguard Workerrectangle that covers the part that changes). You'll see that the
394*324bb76bSAndroid Build Coastguard Workerimage descriptor before the second block of image data specifies
395*324bb76bSAndroid Build Coastguard Workerthat it will start at the pixel at (2, 11) and draws a box that's
396*324bb76bSAndroid Build Coastguard Worker7px wide by 16px tall. This is just large enough to cover the bottom two
397*324bb76bSAndroid Build Coastguard Workerlights. The works because we chose the &quot;do not dispose&quot; disposal
398*324bb76bSAndroid Build Coastguard Workermethod for out graphics control extension block. In the same way,
399*324bb76bSAndroid Build Coastguard Workerthe third and final image data block only renders the top two circles
400*324bb76bSAndroid Build Coastguard Workerto both fill in the red and cover up the yellow.</p>
401*324bb76bSAndroid Build Coastguard Worker
402*324bb76bSAndroid Build Coastguard Worker<h2><a name="transparency">Transparency</a></h2>
403*324bb76bSAndroid Build Coastguard Worker
404*324bb76bSAndroid Build Coastguard Worker<p>Normally, GIF images are rectangles that cover up what ever
405*324bb76bSAndroid Build Coastguard Workerbackground may be beneath them. Transparency allows you to &quot;see
406*324bb76bSAndroid Build Coastguard Workerthough&quot; the image to whatever is below. This is a very simple
407*324bb76bSAndroid Build Coastguard Workertrick to pull off in a GIF image. You can set up one color in your
408*324bb76bSAndroid Build Coastguard Workercolor table that is converted to &quot;invisible ink.&quot; Then, as
409*324bb76bSAndroid Build Coastguard Workerthe image is drawn, whenever this special color is encountered, the
410*324bb76bSAndroid Build Coastguard Workerbackground is allowed to show through.</p>
411*324bb76bSAndroid Build Coastguard Worker
412*324bb76bSAndroid Build Coastguard Worker<p>There are only two pieces of data we have to set to pull this
413*324bb76bSAndroid Build Coastguard Workeroff. First we must set the Transparency Color Flag to 1. This is the
414*324bb76bSAndroid Build Coastguard Workerlowest bit in the packed byte of the Graphic Control Extension. This
415*324bb76bSAndroid Build Coastguard Workerwill tell the decoder that we want our image to have a transparent
416*324bb76bSAndroid Build Coastguard Workercomponent.  Secondly we must tell the decoder which color we want to
417*324bb76bSAndroid Build Coastguard Workeruse as our invisible ink. The decoder will then all you to see thought
418*324bb76bSAndroid Build Coastguard Workerevery pixel that contains this color. Therefore make sure it's not a
419*324bb76bSAndroid Build Coastguard Workercolor that you are using else where in your image. The color you
420*324bb76bSAndroid Build Coastguard Workerchoose must be in the active color table and you specify its value in
421*324bb76bSAndroid Build Coastguard Workerthe Transparent Color Index byte by setting this value to the index of
422*324bb76bSAndroid Build Coastguard Workerthe color in the color table.</p>
423*324bb76bSAndroid Build Coastguard Worker
424*324bb76bSAndroid Build Coastguard Worker<p>Let's demonstrate this by revisiting the sample image we used
425*324bb76bSAndroid Build Coastguard Workerin <a href="bits_and_bytes.html">Bits and Bytes</a>. We will update this
426*324bb76bSAndroid Build Coastguard Workerfile to make the white center part transparent. Let's start creating
427*324bb76bSAndroid Build Coastguard Workerthe Graphic Control Extension block that will do this for us. Again we
428*324bb76bSAndroid Build Coastguard Workerstart with the <span class="byte">21</span> <span class="byte">F9</span>
429*324bb76bSAndroid Build Coastguard Worker<span class="byte">04</span> punch. In the next byte, we need to flip
430*324bb76bSAndroid Build Coastguard Workerthe transparent color flag to 1 (we can leave the others at zero) so
431*324bb76bSAndroid Build Coastguard Workerthis whole byte is simply <span class="byte">01</span>. The next two
432*324bb76bSAndroid Build Coastguard Workerbytes can be left at zero.</p>
433*324bb76bSAndroid Build Coastguard Worker
434*324bb76bSAndroid Build Coastguard Worker<p>We must now specify which color to disappear.  Recall that our
435*324bb76bSAndroid Build Coastguard Workersample image had the following global color table:</p>
436*324bb76bSAndroid Build Coastguard Worker
437*324bb76bSAndroid Build Coastguard Worker<table style="margin-left: auto; margin-right: auto">
438*324bb76bSAndroid Build Coastguard Worker	<tr><th>Index</th><th>Color</th></tr>
439*324bb76bSAndroid Build Coastguard Worker	<tr><td>0</td><td><span style="color:#FFFFFF; background: #000000; font-weight: bold">White</span></td></tr>
440*324bb76bSAndroid Build Coastguard Worker	<tr><td>1</td><td><span style="color:#FF0000; font-weight: bold">Red</span></td></tr>
441*324bb76bSAndroid Build Coastguard Worker	<tr><td>2</td><td><span style="color:#0000FF; font-weight: bold">Blue</span></td></tr>
442*324bb76bSAndroid Build Coastguard Worker	<tr><td>3</td><td><span style="font-weight: bold">Black</span></td></tr>
443*324bb76bSAndroid Build Coastguard Worker</table>
444*324bb76bSAndroid Build Coastguard Worker
445*324bb76bSAndroid Build Coastguard Worker<p>We already know what we want to make all the white sections
446*324bb76bSAndroid Build Coastguard Workertransparent.  The color white has an index of 0. Therefore we will
447*324bb76bSAndroid Build Coastguard Workerspecify a value of <span class="byte">00</span> for the transparent
448*324bb76bSAndroid Build Coastguard Workercolor index block.  Had we wanted to make the red transparent we would
449*324bb76bSAndroid Build Coastguard Workerhave used <span class="byte">01</span>, or <span
450*324bb76bSAndroid Build Coastguard Workerclass="byte">02</span> for blue.  Lastly we tack on the block
451*324bb76bSAndroid Build Coastguard Workerterminator of <span class="byte">00</span> and we're done. We have
452*324bb76bSAndroid Build Coastguard Workercreated the following block:</p>
453*324bb76bSAndroid Build Coastguard Worker
454*324bb76bSAndroid Build Coastguard Worker<p>
455*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 21 </span>
456*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> F9 </span>
457*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 04 </span>
458*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 01 </span>
459*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 00 </span>
460*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 00 </span>
461*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 00 </span>
462*324bb76bSAndroid Build Coastguard Worker<span class="byte gif_graphic"> 00 </span>
463*324bb76bSAndroid Build Coastguard Worker</p>
464*324bb76bSAndroid Build Coastguard Worker
465*324bb76bSAndroid Build Coastguard Worker<p>Now, all we have to do is plug this into our sample image right before the
466*324bb76bSAndroid Build Coastguard Workerimage descriptor. I've placed our original sample image on a black background
467*324bb76bSAndroid Build Coastguard Workeras well as the one we just made so you can see the results. I've also included
468*324bb76bSAndroid Build Coastguard Workerones where red or blue are transparent. The last three differ by only the
469*324bb76bSAndroid Build Coastguard Workertransparent color index byte.</p>
470*324bb76bSAndroid Build Coastguard Worker
471*324bb76bSAndroid Build Coastguard Worker<table cellpadding="10px" style="text-align: center; margin-left: auto; margin-right: auto">
472*324bb76bSAndroid Build Coastguard Worker<tr>
473*324bb76bSAndroid Build Coastguard Worker<th style="width:25%">Original</th>
474*324bb76bSAndroid Build Coastguard Worker<th style="width:25%">Transparent <br/>
475*324bb76bSAndroid Build Coastguard WorkerWhite (<span class="byte">00</span>)</th>
476*324bb76bSAndroid Build Coastguard Worker<th style="width:25%">Transparent <br/>
477*324bb76bSAndroid Build Coastguard WorkerRed (<span class="byte">01</span>)</th>
478*324bb76bSAndroid Build Coastguard Worker<th style="width:25%">Transparent <br/>
479*324bb76bSAndroid Build Coastguard WorkerBlue (<span class="byte">02</span>)</th>
480*324bb76bSAndroid Build Coastguard Worker</tr>
481*324bb76bSAndroid Build Coastguard Worker<tr>
482*324bb76bSAndroid Build Coastguard Worker<td style="width:25%; background-color: black">
483*324bb76bSAndroid Build Coastguard Worker<img src="sample_1.gif" alt="previous sample" width="10" height="10"/></td>
484*324bb76bSAndroid Build Coastguard Worker<td style="width:25%; background-color: black">
485*324bb76bSAndroid Build Coastguard Worker<img src="sample_1_trans.gif" alt="transparent white" width="10" height="10"/></td>
486*324bb76bSAndroid Build Coastguard Worker<td style="width:25%; background-color: black">
487*324bb76bSAndroid Build Coastguard Worker<img src="sample_1_trans_red.gif" alt="transparent red" width="10" height="10"/></td>
488*324bb76bSAndroid Build Coastguard Worker<td style="width:25%; background-color: black">
489*324bb76bSAndroid Build Coastguard Worker<img src="sample_1_trans_blue.gif" alt="transparent blue" width="10" height="10"/></td>
490*324bb76bSAndroid Build Coastguard Worker</tr>
491*324bb76bSAndroid Build Coastguard Worker</table>
492*324bb76bSAndroid Build Coastguard Worker
493*324bb76bSAndroid Build Coastguard Worker<p>This concludes our description of the bits inside GIFs.  If you
494*324bb76bSAndroid Build Coastguard Workerhave not already read the <a href="../gif_lib.html">documentation of
495*324bb76bSAndroid Build Coastguard Workerthe GIFLIB API</a>, you may wish to continue with that.</p>
496*324bb76bSAndroid Build Coastguard Worker
497*324bb76bSAndroid Build Coastguard Worker</div>
498*324bb76bSAndroid Build Coastguard Worker
499*324bb76bSAndroid Build Coastguard Worker<div style="text-align:center; margin-top: 10px; padding-top: 10px; border-top: #cecece 1px solid">
500*324bb76bSAndroid Build Coastguard Worker<a href="../index.html">Back to GIFLIB documentation</a>
501*324bb76bSAndroid Build Coastguard Worker</div>
502*324bb76bSAndroid Build Coastguard Worker
503*324bb76bSAndroid Build Coastguard Worker</body>
504*324bb76bSAndroid Build Coastguard Worker
505*324bb76bSAndroid Build Coastguard Worker</html>
506