1*324bb76bSAndroid Build Coastguard Worker<?xml version="1.0" encoding="ISO-8859-1"?> 2*324bb76bSAndroid Build Coastguard Worker<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 3*324bb76bSAndroid Build Coastguard Worker 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> 4*324bb76bSAndroid Build Coastguard Worker<html> 5*324bb76bSAndroid Build Coastguard Worker<head> 6*324bb76bSAndroid Build Coastguard Worker<link rev='made' href='mailto:[email protected]' /> 7*324bb76bSAndroid Build Coastguard Worker<meta name='MSSmartTagsPreventParsing' content='TRUE' /> 8*324bb76bSAndroid Build Coastguard Worker<title>The GIFLIB project</title> 9*324bb76bSAndroid Build Coastguard Worker<script type="text/javascript"> 10*324bb76bSAndroid Build Coastguard Worker// JavaScript to generate a compact date representation 11*324bb76bSAndroid Build Coastguard Worker 12*324bb76bSAndroid Build Coastguard Worker// 13*324bb76bSAndroid Build Coastguard Worker// format date as yyyy-mm-dd 14*324bb76bSAndroid Build Coastguard Worker// 15*324bb76bSAndroid Build Coastguard Workerfunction date_ddmmmyyyy(date) 16*324bb76bSAndroid Build Coastguard Worker{ 17*324bb76bSAndroid Build Coastguard Worker var d = date.getDate(); 18*324bb76bSAndroid Build Coastguard Worker var m = date.getMonth() + 1; 19*324bb76bSAndroid Build Coastguard Worker var y = date.getFullYear(); 20*324bb76bSAndroid Build Coastguard Worker 21*324bb76bSAndroid Build Coastguard Worker return "" + y + "-" + (m<10?"0"+m:m) + "-" + (d<10?"0"+d:d); 22*324bb76bSAndroid Build Coastguard Worker} 23*324bb76bSAndroid Build Coastguard Worker 24*324bb76bSAndroid Build Coastguard Worker 25*324bb76bSAndroid Build Coastguard Worker// 26*324bb76bSAndroid Build Coastguard Worker// get last modified date of the 27*324bb76bSAndroid Build Coastguard Worker// current document. 28*324bb76bSAndroid Build Coastguard Worker// 29*324bb76bSAndroid Build Coastguard Workerfunction date_lastmodified() 30*324bb76bSAndroid Build Coastguard Worker{ 31*324bb76bSAndroid Build Coastguard Worker var lmd = document.lastModified; 32*324bb76bSAndroid Build Coastguard Worker var s = "Unknown"; 33*324bb76bSAndroid Build Coastguard Worker var d1; 34*324bb76bSAndroid Build Coastguard Worker 35*324bb76bSAndroid Build Coastguard Worker // check if we have a valid date 36*324bb76bSAndroid Build Coastguard Worker // before proceeding 37*324bb76bSAndroid Build Coastguard Worker if(0 != (d1=Date.parse(lmd))) 38*324bb76bSAndroid Build Coastguard Worker { 39*324bb76bSAndroid Build Coastguard Worker s = "" + date_ddmmmyyyy(new Date(d1)); 40*324bb76bSAndroid Build Coastguard Worker } 41*324bb76bSAndroid Build Coastguard Worker 42*324bb76bSAndroid Build Coastguard Worker return s; 43*324bb76bSAndroid Build Coastguard Worker} 44*324bb76bSAndroid Build Coastguard Worker// End 45*324bb76bSAndroid Build Coastguard Worker</script> 46*324bb76bSAndroid Build Coastguard Worker</head> 47*324bb76bSAndroid Build Coastguard Worker<body> 48*324bb76bSAndroid Build Coastguard Worker<table width='100%' cellpadding='0' summary='Canned page header' bgcolor="#ddd"> 49*324bb76bSAndroid Build Coastguard Worker<tr> 50*324bb76bSAndroid Build Coastguard Worker<td><h2>The GIFLIB project</h2></td> 51*324bb76bSAndroid Build Coastguard Worker<td align="center"><img src="giflib-logo.gif"></td> 52*324bb76bSAndroid Build Coastguard Worker<td align='right'><script type="text/javascript"> 53*324bb76bSAndroid Build Coastguard Workerdocument.write(date_lastmodified()); 54*324bb76bSAndroid Build Coastguard Worker</script></td> 55*324bb76bSAndroid Build Coastguard Worker</tr> 56*324bb76bSAndroid Build Coastguard Worker</table> 57*324bb76bSAndroid Build Coastguard Worker 58*324bb76bSAndroid Build Coastguard Worker<p>The GIFLIB project maintains the giflib service library, which has 59*324bb76bSAndroid Build Coastguard Workerbeen pulling images out of GIFs since 1989. It is deployed everywhere 60*324bb76bSAndroid Build Coastguard Workeryou can think of and some places you probably can't - graphics 61*324bb76bSAndroid Build Coastguard Workerapplications and web browsers on multiple operating systems, game 62*324bb76bSAndroid Build Coastguard Workerconsoles, smartphones, and likely your ATM too.</p> 63*324bb76bSAndroid Build Coastguard Worker 64*324bb76bSAndroid Build Coastguard Worker<p>Yes, this code is he reason GIFs were in Mosaic, the first web 65*324bb76bSAndroid Build Coastguard Workerbrowser that could do inline graphics; it is the implementation 66*324bb76bSAndroid Build Coastguard WorkerAndreesen and Bina used.</p> 67*324bb76bSAndroid Build Coastguard Worker 68*324bb76bSAndroid Build Coastguard Worker<p>This is very mature, stable, small-footprint code with minimal 69*324bb76bSAndroid Build Coastguard Workerdependencies (suitable for use in embedded deployments) that needs only 70*324bb76bSAndroid Build Coastguard Workeroccasional very minor bugfixes. Test reports from odd platforms and 71*324bb76bSAndroid Build Coastguard Workerbetter regression tests are particularly welcome. Don't try to 72*324bb76bSAndroid Build Coastguard Workerredesign it, applications beyond counting would break if you did.</p> 73*324bb76bSAndroid Build Coastguard Worker 74*324bb76bSAndroid Build Coastguard Worker<p>It's "GIFLIB" in caps as a nod to the code's origins in the dark 75*324bb76bSAndroid Build Coastguard Workerand backward abysm of MS-DOS, but Unix hackers are encouraged to spell it 76*324bb76bSAndroid Build Coastguard Worker"giflib" in deference to local conventions. :-) 77*324bb76bSAndroid Build Coastguard Worker 78*324bb76bSAndroid Build Coastguard Worker<p>You can read GIFLIB's documentation <a href="intro.html">here</a> 79*324bb76bSAndroid Build Coastguard Workerand a very detailed description of GIF <a 80*324bb76bSAndroid Build Coastguard Workerhref="whatsinagif/index.html">here</a>. People to thank for this code: 81*324bb76bSAndroid Build Coastguard WorkerGershon Elber, Eric S. Raymond, Toshio Kuratomi.</p> 82*324bb76bSAndroid Build Coastguard Worker 83*324bb76bSAndroid Build Coastguard Worker<p>Before October 2006 the GIF format was encumbered by patents on the 84*324bb76bSAndroid Build Coastguard WorkerLZW compression it uses. This first became an issue in 1993 when the 85*324bb76bSAndroid Build Coastguard Workerpatent-holders made ambiguous noises about requiring royalties. For 86*324bb76bSAndroid Build Coastguard Workersome time a subset of this code travelled as "libungif", supporting 87*324bb76bSAndroid Build Coastguard Workerdecompression but not compression. You can read a more detailed 88*324bb76bSAndroid Build Coastguard Workerhistory <a href="history.html">here</a>.</p> 89*324bb76bSAndroid Build Coastguard Worker 90*324bb76bSAndroid Build Coastguard Worker<p>Note: The 5.x versions change the API slightly in a way that isn't 91*324bb76bSAndroid Build Coastguard Workercompatible with older shared libraries. This was required to fix 92*324bb76bSAndroid Build Coastguard Workersome known problems with the extensions API and with thread-safety.</p> 93*324bb76bSAndroid Build Coastguard Worker 94*324bb76bSAndroid Build Coastguard Worker<p>If you require shared-library compatibility back to ancient 95*324bb76bSAndroid Build Coastguard Workerversions, build from 4.2. 4.2 and the 5.0 version are behaviorally 96*324bb76bSAndroid Build Coastguard Workeralmost identical; the few differences are explained <a 97*324bb76bSAndroid Build Coastguard Workerhref="gif_lib.html#compatibility">here</a>. 98*324bb76bSAndroid Build Coastguard Worker 99*324bb76bSAndroid Build Coastguard Worker<p>The SourceForge summary page (where you can download the source, 100*324bb76bSAndroid Build Coastguard Workerreview the project, find links to the bugtracker and mailing list 101*324bb76bSAndroid Build Coastguard Workerpages, or ask to join the project as a developer) is <a 102*324bb76bSAndroid Build Coastguard Workerhref="https://sourceforge.net/projects/giflib/">here</a>. 103*324bb76bSAndroid Build Coastguard Worker 104*324bb76bSAndroid Build Coastguard Worker<p>If you appreciate this project, and especially if you make money 105*324bb76bSAndroid Build Coastguard Workerfrom it, please <a href="https://www.patreon.com/esr">support 106*324bb76bSAndroid Build Coastguard Workercontinuing maintainance on Patreon</a>.</p> 107*324bb76bSAndroid Build Coastguard Worker 108*324bb76bSAndroid Build Coastguard Worker</body> 109*324bb76bSAndroid Build Coastguard Worker</html> 110