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"application" 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"NETSCAPE2.0". Then begins the actual "application 302*324bb76bSAndroid Build Coastguard Workerdata" 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"scenes". 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 "reserved for future use" 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 "input" 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 "do not dispose" 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 "see 406*324bb76bSAndroid Build Coastguard Workerthough" 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 "invisible ink." 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