xref: /aosp_15_r20/external/giflib/doc/index.html (revision 324bb76b8d05e2a05aa88511fff61cf3f9ca5892)
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