xref: /aosp_15_r20/external/giflib/doc/index.html.in (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 ISO-fashion: 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// get last modified date of the
26*324bb76bSAndroid Build Coastguard Worker// current document.
27*324bb76bSAndroid Build Coastguard Worker//
28*324bb76bSAndroid Build Coastguard Workerfunction date_lastmodified()
29*324bb76bSAndroid Build Coastguard Worker{
30*324bb76bSAndroid Build Coastguard Worker  var lmd = document.lastModified;
31*324bb76bSAndroid Build Coastguard Worker  var s   = "Unknown";
32*324bb76bSAndroid Build Coastguard Worker  var d1;
33*324bb76bSAndroid Build Coastguard Worker
34*324bb76bSAndroid Build Coastguard Worker  // check if we have a valid date
35*324bb76bSAndroid Build Coastguard Worker  // before proceeding
36*324bb76bSAndroid Build Coastguard Worker  if(0 != (d1=Date.parse(lmd)))
37*324bb76bSAndroid Build Coastguard Worker  {
38*324bb76bSAndroid Build Coastguard Worker    s = "" + date_ddmmmyyyy(new Date(d1));
39*324bb76bSAndroid Build Coastguard Worker  }
40*324bb76bSAndroid Build Coastguard Worker
41*324bb76bSAndroid Build Coastguard Worker  return s;
42*324bb76bSAndroid Build Coastguard Worker}
43*324bb76bSAndroid Build Coastguard Worker// End
44*324bb76bSAndroid Build Coastguard Worker</script>
45*324bb76bSAndroid Build Coastguard Worker</head>
46*324bb76bSAndroid Build Coastguard Worker<body>
47*324bb76bSAndroid Build Coastguard Worker<table width='100%' cellpadding='0' summary='Canned page header' bgcolor="#ddd">
48*324bb76bSAndroid Build Coastguard Worker<tr>
49*324bb76bSAndroid Build Coastguard Worker<td><h2>The GIFLIB project</h2></td>
50*324bb76bSAndroid Build Coastguard Worker<td align="center"><img src="giflib-logo.gif"></td>
51*324bb76bSAndroid Build Coastguard Worker<td align='right'><script type="text/javascript">
52*324bb76bSAndroid Build Coastguard Workerdocument.write(date_lastmodified());
53*324bb76bSAndroid Build Coastguard Worker</script></td>
54*324bb76bSAndroid Build Coastguard Worker</tr>
55*324bb76bSAndroid Build Coastguard Worker</table>
56*324bb76bSAndroid Build Coastguard Worker
57*324bb76bSAndroid Build Coastguard Worker<p>The GIFLIB project maintains the giflib service library, which has
58*324bb76bSAndroid Build Coastguard Workerbeen pulling images out of GIFs since 1989. It is deployed everywhere
59*324bb76bSAndroid Build Coastguard Workeryou can think of and some places you probably can't - graphics
60*324bb76bSAndroid Build Coastguard Workerapplications and web browsers on multiple operating systems, game
61*324bb76bSAndroid Build Coastguard Workerconsoles, smartphones, and likely your ATM too.</p>
62*324bb76bSAndroid Build Coastguard Worker
63*324bb76bSAndroid Build Coastguard Worker<p>Yes, this code is he reason GIFs were in Mosaic, the first web
64*324bb76bSAndroid Build Coastguard Workerbrowser that could do inline graphics; it is the implementation
65*324bb76bSAndroid Build Coastguard WorkerAndreesen and Bina used.</p>
66*324bb76bSAndroid Build Coastguard Worker
67*324bb76bSAndroid Build Coastguard Worker<p>This is very mature, stable, small-footprint code with minimal
68*324bb76bSAndroid Build Coastguard Workerdependencies (suitable for use in embedded deployments) that needs only
69*324bb76bSAndroid Build Coastguard Workeroccasional very minor bugfixes. Test reports from odd platforms and
70*324bb76bSAndroid Build Coastguard Workerbetter regression tests are particularly welcome. Don't try to
71*324bb76bSAndroid Build Coastguard Workerredesign it, applications beyond counting would break if you did.</p>
72*324bb76bSAndroid Build Coastguard Worker
73*324bb76bSAndroid Build Coastguard Worker<p>It's "GIFLIB" in caps as a nod to the code's origins in the dark
74*324bb76bSAndroid Build Coastguard Workerand backward abysm of MS-DOS, but Unix hackers are encouraged to spell it
75*324bb76bSAndroid Build Coastguard Worker"giflib" in deference to local conventions. :-)
76*324bb76bSAndroid Build Coastguard Worker
77*324bb76bSAndroid Build Coastguard Worker<p>Before October 2006 the GIF format was encumbered by patents on the
78*324bb76bSAndroid Build Coastguard WorkerLZW compression it uses.  This first became an issue in 1993 when the
79*324bb76bSAndroid Build Coastguard Workerpatent-holders made ambiguous noises about requiring royalties.  For
80*324bb76bSAndroid Build Coastguard Workersome time a subset of this code travelled as "libungif", supporting
81*324bb76bSAndroid Build Coastguard Workerdecompression but not compression. You can read a more detailed
82*324bb76bSAndroid Build Coastguard Workerhistory <a href="history.html">here</a>.</p>
83*324bb76bSAndroid Build Coastguard Worker
84*324bb76bSAndroid Build Coastguard Worker<p>Note: The 5.x versions change the API slightly in a way that isn't
85*324bb76bSAndroid Build Coastguard Workercompatible with older shared libraries.  This was required to fix
86*324bb76bSAndroid Build Coastguard Workersome known problems with the extensions API and with thread-safety.</p>
87*324bb76bSAndroid Build Coastguard Worker
88*324bb76bSAndroid Build Coastguard Worker<p>If you require shared-library compatibility back to ancient
89*324bb76bSAndroid Build Coastguard Workerversions, build from 4.2. 4.2 and the 5.0 version are behaviorally
90*324bb76bSAndroid Build Coastguard Workeralmost identical; the few differences are explained <a
91*324bb76bSAndroid Build Coastguard Workerhref="gif_lib.html#compatibility">here</a>.
92*324bb76bSAndroid Build Coastguard Worker
93*324bb76bSAndroid Build Coastguard Worker<p>The SourceForge summary page (where you can download the source,
94*324bb76bSAndroid Build Coastguard Workerreview the project, find links to the bugtracker  and mailing list
95*324bb76bSAndroid Build Coastguard Workerpages, or ask to join the project as a developer) is <a
96*324bb76bSAndroid Build Coastguard Workerhref="https://sourceforge.net/projects/giflib/">here</a>.
97*324bb76bSAndroid Build Coastguard Worker
98*324bb76bSAndroid Build Coastguard Worker<p>People to thank for this code: Gershon Elber, Eric S. Raymond,
99*324bb76bSAndroid Build Coastguard WorkerToshio Kuratomi.</p>
100*324bb76bSAndroid Build Coastguard Worker
101*324bb76bSAndroid Build Coastguard Worker<p>If you appreciate this project, and especially if you make money
102*324bb76bSAndroid Build Coastguard Workerfrom it, please <a href="https://www.patreon.com/esr">support
103*324bb76bSAndroid Build Coastguard Workercontinuing maintainance on Patreon</a>.</p>
104*324bb76bSAndroid Build Coastguard Worker
105*324bb76bSAndroid Build Coastguard Worker<p>GIFLIB technical documentation:</p>
106*324bb76bSAndroid Build Coastguard Worker<ul>
107*324bb76bSAndroid Build Coastguard Worker<li><a href="intro.html">GIFLIB documentation</a></li>
108*324bb76bSAndroid Build Coastguard Worker<li><a href="history.html">GIFLIB's history</a></li>
109*324bb76bSAndroid Build Coastguard Worker<li><a href="gif_lib.html#compatibility">Difference between 4.2 and 5.0</a></li>
110*324bb76bSAndroid Build Coastguard Worker<li><a href="https://sourceforge.net/projects/giflib/">SourceForge project page</a></li>
111*324bb76bSAndroid Build Coastguard Worker<li><a href="https://www.patreon.com/esr">Support this project</a></li>
112*324bb76bSAndroid Build Coastguard Worker</ul>
113*324bb76bSAndroid Build Coastguard Worker
114*324bb76bSAndroid Build Coastguard Worker<p>GIF resources:</p>
115*324bb76bSAndroid Build Coastguard Worker<ul>
116*324bb76bSAndroid Build Coastguard Worker<li><a href="whatsinagif/index.html">What's In A GIF?</a></li>
117*324bb76bSAndroid Build Coastguard Worker<li><a href="gifstandard/GIF89a.html">The GIF standard</a></li>
118*324bb76bSAndroid Build Coastguard Worker<li><a href="gifstandard/LZW-and-GIF-explained.html">LZW and GIF explained</a></li>
119*324bb76bSAndroid Build Coastguard Worker<li><a href="https://en.wikipedia.org/wiki/GIF">Wikipedia on GIF</a></li>
120*324bb76bSAndroid Build Coastguard Worker</ul>
121*324bb76bSAndroid Build Coastguard Worker
122*324bb76bSAndroid Build Coastguard Worker<p>To support this ubiquitous code, <a href="https://www.patreon.com/bePatron?u=962938" data-patreon-widget-type="become-patron-button">Become a Patreon patron!</a><script async src="https://c6.patreon.com/becomePatronButton.bundle.js"></script></p>
123*324bb76bSAndroid Build Coastguard Worker
124*324bb76bSAndroid Build Coastguard Worker</body>
125*324bb76bSAndroid Build Coastguard Worker</html>
126