-
Notifications
You must be signed in to change notification settings - Fork 12
/
NEWS
685 lines (564 loc) · 27.1 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
GIFLIB NEWS
Version 5.1.4
=============
Code Fixes
----------
* Fix SF bug #94: giflib 5 loves to fail to load images... a LOT.
* Fix SF Bug #92: Fix buffer overread in gifbuild.
* Fix SF Bug #93: Add bounds check in gifbuild netscape2.0 path
* Fix SF Bug #89: Fix buffer overread in gifbuild.
Version 5.1.3
=============
As of this version the library and code has been seriously abused by fuzzers,
smoking out crash bugs (now fixed) induced by various kinds of severely
malformed GIF.
Code Fixes
----------
* Prevent malloc randomess from causing the header output routine to emit
a GIF89 version string even when no GIF89 features are present. Only
breaks tests, not production code, but it's odd this wasn't caught sooner.
* Prevent malloc randomess from producing sporadic failures by causing
sanity checks added in 5.1.2 to misfire.
* Bulletproof gif2rgb against 0-height images. Addressed SF bug #78:
Heap overflow in gif2rgb with images of size 0, also SF bug #82.
* Remove unnecessary duplicate EGifClose() in gifcolor.c. Fixes SF bug #83
introduced in 5.1.2.
* Fix SF Bug #84: incorrect return of DGifSlurp().
Version 5.1.2
=============
Code Fixes
----------
* Code hardening using reallocarray() from OpenBSD.
* Sanity check in giffilter catches files with malformed extension records
Fixes SourceForge bug #63: malformed gif causes segfault in giffilter.
* Inexpensive sanity check in DGifSlurp() catches malformed files with
no image descriptor. Fixes SourceForge bug #64: malformed gif causes
crash in giftool.
* Fix SourceForge bug #66: GifDrawBoxedText8x8() modifying constant input
parameter.
* Bail out of GIF read on invalid pixel width. Addresses Savannah bug
#67: invalid shift in dgif_lib.c
* Fix SourceForge bug #69: #69 Malformed: Gif file with no extension
block after a GRAPHICS_EXT_FUNC_CODE extension causes segfault (in
giftext).
* Fix SourceForge bug #71: Buffer overwrite when giffixing a malformed gif.
* Fix SourceForge bug #73: Null pointer deference in gifclrmap (only
reachable with malformed GIF).
* Fix SourceForge bug #74: Double free in gifsponge under 5.1.1,
for any valid gif image.
* Fix SourceForge bug #75: GAGetArgs overflows due to uncounted use of va_arg.
* Sanity check in giffix catches some malformed files. Addresses
SourceForge bug #77: dgif_lib.c: extension processing error
Version 5.1.1
=============
Code Fixes
----------
* Numerous minor fixes in getarg.c. Affects only the utilities, not the
core library.
* Fix SourceForge bug #59: DGifOpen can segfault if DGifGetScreenDesc fails.
* SourceForge patch #20: In gifalloc, fix usage of realloc() in case of failure.
* Fix SourceForge bug #61 Leak in gifsponge.
Build Fixes
----------
* glibtoolize port fix for OS X.
Version 5.1.0
=============
Changes to the API require a library major-version bump.
Code Fixes
----------
* A small change to the API: DGifClose() and EGifClose() now take a
pointer-to-int second argument (like the corresponding openers)
where a diagnostic code will be deposited when they return
GIF_ERROR. This replaces the old behavior in which the GifFile
structure was left unfreed so the Error member in it could be filled
and remain available. The change was was required because it's
not always possible to free the struct afterwards. Case in point is
a C# wrapper for giflib (or any language/environment where you can't
just free objects allocated in a foreign shared library.)
* Minor fix for SF bug #56; BitsPerPixel may be left as uninitialized
value when reading (truncated) gif.
* Applied SF patch #17: Use a fallback on Windows where mkstemp is not
available.
* Applied SF patch #15: Code hardening, preventing spurious
defective-image messages.
Retirements
-----------
* Removed gif2raw from utils. Its blithe assumption that the EGA16
palette is a reliable default is now about 20 years obsolete. Format
conversion is better done with convert(1) from the ImageMagick suite,
anyway.
Version 5.0.6
=============
Minor fix for a rare memory leak (SF bug #55).
MinGW port fixes.
Repair the internal quantization function used in gif2rgb so it's
less vulnerable to cross-platform skew due to qsort() being unstable.
This shouldn't affect production use, it's just a cross-platform
issue for regression testing
Version 5.0.5
=============
Set the error return properly when a screen descriptor read fails.
Fixes for some minor API documentation bugs. Some internal manual
pages are not to be installed.
Version 5.0.4
=============
Fix for a rare misrendering bug when a GIF overruns the decompression-code
table. The image on which this was spotted was a relatively long-running
animated GIF; still images of ordinary size should have been immune.
Version 5.0.3
=============
Fix a build-system glitch so it will install manpages.
Version 5.0.2
=============
Documentation and polish
------------------------
* Partial build is now possible on systems without xmlto.
Code Fixes
----------
* Change unused return of EGifSetGifVersion() to void.
* Buffer overrun prevention in gifinto.
Version 5.0.1
=============
Documentation and polish
------------------------
* There is now an installable manual page for the GIFLIB utility kit.
Retirements
-----------
* gifinter is gone. Use convert -interlace from the ImageMagick suite.
Code Fixes
----------
* In 5.0.0 the private gif89 bit wasn't being guaranteed cleared at
the beginning of EGifGetGifVersion(); this occasionally led to an
incorrect version prefix being issued dependent on the state of
malloced memory.
* An EGifSetGifVersion() function taking a GifFile argument has been
added for use with the low-level sequential API. This change requires
a bump of the library revision number.
Version 5.0.0
=============
Changes to the API require a library major-version bump. Certain
initialization functions have acquired an integer address argument for
passing back an error code, in order to avoid thread-unsafe static
storage. Application code using extension blocks will require minor
changes. A few functions have been renamed.
Code Fixes
----------
* Fixes applied for CVE-2005-2974 and CVE-2005-3350
This closes Debian bug #337972.
New API Features
----------------
Thread Safety
~~~~~~~~~~~~~
The library is now completely re-entrant and thread-safe.
* Library error handling no longer uses a static cell to store the last
error code registered; that made the library thread-unsafe. For functions
other than GIF file openers, the code is now put in an Error member of
the GifFileType structure. The GifError() and GifLastError() functions
that referenced that static cell are gone, and the GifErrorString()
function introduced in the 4.2 release now takes an explicit error code
argument.
* GIF file openers - DGifOpenFileName(), DGifOpenFileHandle(), DGifOpen(),
EGifOpenFileName(), EGifOpenFileHandle(), and EGifOpen() - all now take
a final integer address argument. If non-null, this is used to pass
back an error code when the function returns NULL.
Extensions
~~~~~~~~~~
The ExtensionBlock API has been repaired, solving some problems with GIF89
extension handling in earlier versions.
* DGifSlurp() and EGifSpew() now preserve trailing extension blocks with
no following image file.
* Three documented functions - EGifPutExtensionFirst(), EGifPutExtensionNext(),
and EGifPutExtensionLast() - have been relaced by new functions
EGifPutExtensionLeader(), EGifPutExtensionBlock(), and
EGifPutExtensionTrailer(). See the Compatibility section of
the library API documentation for details.
* New functions DGifSavedExtensionToGCB() and EGifGCBToSavedExtension()
make it easy to read and edit GIF89 graphics control blocks in saved images.
Namespacing
~~~~~~~~~~~
All functions exported by giflib now have DGif, EGif, or Gif as a name prefix.
* Three documented functions - MakeMapObject(), FreeMapObject(), and
UnionColorMap() - have been renamed to GifMakeMapObject(),
GifFreeMapObject(), and GifUnionColorMap() respectively.
* The library Draw* functions are now prefixed GifDraw*, and the
text-drawing ones are suffixed with "8x8". This fixes a conflict
with the Windows API and leaves the door open for more general text-drawing
functions with different font sizes.
Other changes
~~~~~~~~~~~~~
* DGifSlurp() and EGifSpew() now read and write interlaced images properly.
* The amazingly obscure colormap sort flag and pixel aspect ratio
features of GIF are now read and preserved, for whatever good that
may do.
* Six undocumented functions have been renamed; five of these take additional
or slightly different argument types. See the Compatibility section of
the library API documentation for details.
* There's now an EGifGetGifVersion() that computes the version EGifSpew()
will write.
* QuantizeBuffer() has been returned to the core library as GifQuantizeBuffer()
- turns out some important applications (notably mplayer) were using it.
* TRUE and FALSE macros are gone, also VoidPtr. No more namespace pollution.
* Various arguments have been made const where possible.
Retirements
-----------
* The (undocumented) gifinfo utility is gone. Use giftool -f instead.
* The gifburst utility is gone. Everybody has image viewers that
can pan now, and removing it gets rid of a dependency on Perl.
* gifcompose is gone. It was a decent idea when I wrote it in 1989,
but I did the same thing better and cleaner a decade later with
PILdriver in the PIL package. Removing it gets rid of a dependency
on shell.
* gif2x11 gifasm, gifcomb, gifflip, gifovly, gifpos, gifresize, and gifrotate
are all gone. The ImageMagick display(1)/convert(1) utilities and PILdriver
do these things better and in a format-independent way.
* Lennie Araki's Windows C++ wrapper is gone. It's eight years old,
unmaintained, he has dropped out of sight, and a better one needs to
be written to use the high-level GIFLIB API and GIF89 graphics
control extension support. We'll carry such a wrapper when we have
a maintainer for it.
* EGifSetVersion(), introduced in 4.2, is gone. The library always
writes GIF87 or GIF89 as required by the data. This change helps
with thread safety.
Utilities
---------
* Several utilities have been renamed to (a) fix last-century's habit
of arbitarily smashing vowels out of names to make them just one or two
characters shorter, (b) ensure that every utility in this set has 'gif'
as a name prefix. Here's the list:
giffiltr -> giffilter
gifspnge -> gifsponge
icon2gif -> gifbuild
text2gif -> gifecho
raw2gif -> gif2raw
* To go with its new name, gif2raw now dumps raw pixels from a GIF if the
(previously required) size option is missing.
* Standalone rgb2gif is gone; the same capability is now a mode of gif2rgb.
* giftext displays the parsed contents of GIF89 graphics control blocks.
* gifbuild handles GIF89 graphics control blocks and Netscape animation
loop blocks; it can can display and update either.
* gifrotate and other filter utilities now preserve extension blocks,
including the graphics control information for transparency and delay time.
* A new utility, giftool, supports a wide variety of filtering operations
on GIFs, including: setting background and transparency colors, changing
interlacing, setting image delays, setting the user-input flag, and setting
the aspect-ratio byte. It can sequence multiple operations.
* The test-pattern generators gifbg, gifcolor, gihisto and gifwedge and the
code templates giffilter and gifsponge are no longer installed by default.
Documentation and polish
------------------------
* The history.txt and build.txt and files from 4.2.0 now have .asc extensions
to indicate that they use asciidoc markup, contrasting with the txt
standards files from CompuServe.
* The documentation now includes "What's In A GIF", a very detailed narrative
description of the file format.
* The -A option of gifasm (for inserting a loop control block) is documented.
* The documentation directory includes a copy of the original GIF87
specification as well as GIF89's.
* The project now has a logo.
Version 4.2.0
=============
Now maintained by ESR again after handoff by Toshio Kuratomi.
Code Fixes
----------
* Code updated internally to C99 to enable more correctness checks by
the compiler. Compiles under GCC 4.6.1 without errors or warnings.
* A rare resource leak in the colormap-object maker was found with
Coverity and fixed.
* The code now audits clean under Coverity and cppcheck.
* splint cleanup begun, there's a lot of work still to do on this.
New API Features
----------------
* The default GIF version to write is now computed at write time from
the types of an image's extension blocks, but can be overridden with
EGifSetGifVersion().
* EGifSpew() is now thread-safe.
* Two new functions, GifError() and GifErrorString(),
return the error state in a form that can be used by programs.
* Two library functions - EGifOpenFileName() and EGifPutImageDesc() -
now have bool rather than int flag arguments. Since bool is a
typedef of int and TRUE/FALSE have been redefined to true/false,
both source and object compatibility with older library versions
should be preserved.
* GAGetArgs(), used only in the utilities, now returns bool rather
than int.
* The undocumented GIF_LIB_VERSION symbol is gone from the library header.
It has been replaced with three documented symbols: GIFLIB_MAJOR,
GIFLIB_MINOR, and GIFLIB_RELEASE.
Retirements
-----------
* The gif2epsn and gif2iris utilities are gone. They were full of
platform dependencies for platforms long dead. There are enough
platform-independent GIF viewers in the world that these weren't
adding any value. Removing these gets rid of a dependency on GL.
* The rle2gif, gif2rle, and gif2ps utilities are also gone. There are enough
multiformat image converters in the world that these weren't adding
any value either. Removing them reduces the codebase's dependencies.
* The undocumented DumpScreen2Gif() is gone from the library. The
only non-obsolete capture mode it supported was through X, and that
probably hasn't been used in years and is replaceable by any number
of capture utilities. Dropping this code makes the library's
portability issues go away.
* QuantizeBuffer(), GifQprintf(), PrintGifError(), GIF_ERROR()
and GIF_MESSAGE() have been removed from the core library.
They were used only by the utilities. QuantizeBuffer() has been
inlined where it was used and the latter three are now part of the
utility support library.
* The Game Boy Advanced test code is gone. The platform was discontinued
in 2008; more to the point, nobody ever documented the code's assumptions
or expected results.
* The Changelog file is now retained for archival purposes only, and because
autotools throws a hissy fit if there isn't one. The single point of
truth about changes and the reasons for them is the repository history.
Behavior changes
----------------
* The -q option of the utilities is replaced by an opposite -v (verbose)
option; the default is now quiet for all platforms. Defaulting to chattiness
on MSDOS made sense in a world of slow text consoles, but not today.
Testing
-------
* There is now a proper regression-test suite; run 'make' in tests/.
The old test-unx script is now tests/visual-check and can be run
occasionally for a check with the Mark One Eyeball.
Documentation
-------------
* Build instructions now live in build.txt
* An overview of the giflib API now lives in api.txt.
* Documentation is now in DocBook-XML, so either HTML or man pages can
be generated from it.
Version 4.1.6
=============
Brown paper bag release. Fix a problem with header inclusion that could
prevent the library from building on some platforms.
Version 4.1.5
=============
This version has some important fixes for segfaults when working with corrupt
files. All users are strongly encouraged to upgrade.
Code Fixes
----------
* Fix segfault in utilities due to referencing ColorMaps in GifFiles that had
no ColorMap present.
* Fix gif2x11 to work on 24 bit displays.
* Fix for giftext segfault when the GifFile does not store a global colormap.
* Checks to fail gracefully when an image contains improper LZ codes.
* Close file handles on failure in DGifOpenFileHandle()
* Checks to operate on files in binary mode on WIN32 as well as MSDOS.
Building
--------
* Add checks to make building on Win32 easier.
* Allow turning off gl_s, rle, and X11 support from the configure command line.
* Fix for finding a 32 bit integer type on some platforms.
* Only enable -Wall if we're using gcc.
Version 4.1.4
=============
This version fixes some bugs with deallocating ColorMaps. Fix building on
several platforms. Fix x86_64 builds to not hang the encoder.
* Fix several areas in decoding where we removed a ColorMap from our GifFile
but didn't set the pointer to NULL. This could lead to double free's of
the ColorMap.
* Fix a bug in dev2gif.c where we redefined some gl types incorrectly.
* Fix a bug in the gif LZW encoder that was triggered on modern 64 bit
platforms.
* Fix building on Windows. Note -- there has been one API changing event for
Windows (renaming DrawText to DrawGifText.) This should have conflicted with
Windows API and therefore caused the builds to fail previously. If you had
it working with DrawText before, apologies, you'll need to change to
DrawGifText in your code. This only affects Windows.
* Add support for building on The Game Boy Advance. Note: Due to the GBA's
limited memory, the API for the GBA uses short's in many places where the
other platforms use ints. This shouldn't affect anyone unless you've
been able to get an older version of the code to run on GBA and want to
start using this version instead. A recompile of your dependent code
will be necessary in this case.
Version 4.1.3
=============
This version fixes some bugs in the Extension writing code in
EGifPutExtensionFirst, Next, and Last. Using these functions, it is possible
to output extensions that contain multiple subblocks. Additionally, library
code has been updated to use these functions, making it safe to output
long Comments, and multi-block extensions read in from another file.
* giflib is now hosted on sourceforge with libungif:
http://sourceforge.net/projects/libungif
* Make the EGifPutExtension{First,Next,Last} family of functions use WRITE
so user defined WRITE methods will output them correctly.
* Modify EGifSpew and EGifPutComment to use EGifPutExtension{First,Next,Last}
so we won't output broken GIFs when dealing with GIFs with multiple
subblocks.
* More -Wall fixes revealed while testing on Solaris and FreeBSD.
* Updated the gif_lib.html documentation to not use EGifPutExtension when
dealing with multiple subblocks. Use EGifPutExtension{First,Next,Last}
instead.
* Some Windows code from the old CVS repository now available in the windows
subdirectory. I don't have a Windows environment to test and maintain this
but maybe someone out there will find it useful. Caveat hacker.
Version 4.1.2
=============
* Numerous bug fixes from people on the old libungif mailing list.
* GIF_ERROR and GIF_MESSAGE are on the deprecation list as they are also
utility helper functions rather than essential to the functioning of the
library.
* Complete deprecation list is now in the README file
* Audited the sources with gcc -Wall. Everything detectable has now been fixed.
* Ran the library code through indent.
Version 4.1.1
=============
* Merge in many bug fixes that were sent in while I was hiking the
Appalachian Trail.
* The qprintf methods of the library are now deprecated. Do not use
GifQuietPrint or GifQprintf. These should have been pushed out into the
utility helper library instead of sitting around in the library proper at
the same time as the getarg functions were moved out. Getting rid of these
will let us get rid of our dependence on stdarg.h/varargs.h (Which a Gif
reading library has no business requiring.)
Version 4.1.0
=============
* Several minor memory leaks in error conditions have been plugged.
* New Function EGifOpen(void *userData, OutputFunc writeFunc) allows user
specified gif writing functions.
* Old copyright notices in a few source files have been updated. All library
copyrights should now reflect the copyright notice in the COPYING file.
Version 4.0.0 -- giflib
=======================
This version of the giflib library merges Eric Raymond's giflib-3.0 release
with the libungif-4.0 release to give people a binary compatible choice
between the two libraries and gives me the chance to add bugfixes to giflib
that have been incorporated in libungif.
PLEASE READ THE FILE PATENT_PROBLEMS BEFORE USING THIS LIBRARY!
Version 4.0.0
=============
Major fixes have been made to the code that handles Extensions.
Unfortunately, this causes binary incompatibility with giflib-3.0 and
libungif-3.x. However, the API is still intact. I am, however, deprecating
the use of saveImage[x].Function. Use
saveImage[x].ExtensionBlocks[y].Function instead.
Version 3.1.1
=============
The following bugs which caused SegFaults have been fixed:
* When reading gif files with extensions, DGifSlurp would violate memory.
* When closing a gif that had a local colormap, DGifCloseFile would attempt
to free the colormap twice.
* Fix a potential memory leak in DGifSlurp.
* New function DGifOpen to allow specifying a user definable gif reading
function.
Version 3.1.0
=============
* Add a new function:
GifFileType *DGifOpen(void * userData, InputFunc readFunc)
to read the gif image from a user defined input function.
* A few bugfixes.
Version 3.0
===========
Changes from Eric Raymond's libgif
----------------------------------
* A new gif encoder that makes uncompressed gifs rather than standard,
LZW-compressed gifs. This is actually the major motivating factor behind
libungif; to provide third-party distributors a means to provide a gif
library without the patented LZW encoder.
* A new configure script to make compilation of the library on multiple
platforms easier. The package should now build shared libraries on all
platforms supported by GNU libtool.
* Removed the getarg functions from libgif. These were not part of the
public API and only used by the tools in the utils directory so I separated
them from the rest of the library.
* Fixed a few bugs in the tools in the utils directory.
Version 3.0
===========
New features
------------
* Incorporated Sirtaj Kang's changes to make both static and shared libs.
* All the utility and library docs are HTML now.
* The library and relevant utilities are now fully GIF89-aware.
* Functions for drawing text and boxes on saved images are documented.
* The distribution is now issued under a simple X-Consortium-style license.
* Can now generate package RPMs and LSM automatically.
* Home page with Web-acessible documentation at http://www.ccil.org/~esr/giflib
Bug fixes
---------
* Fix giftext to not core dump on a null extension record.
* Incorporate Philip VanBaren's change to prevent a core dump in gifasm.
Version 2.3
===========
* Fixed a core-dump bug in gifcomb revealed by ELF environment in Linux 1.2.13.
Version 2.2b
============
* Added gifburst tool.
Version 2.2
===========
* Linux is supported.
Version 2.1
===========
* Added the gifovly tool, which supports making a composite from several GIF
images.
* Used gifovly to implement a full-fledged pasteup program in shell. It's
called gifcompose and lives in the util directory.
* Added a copy of the GIF89 standard to the doc directory (gif89.txt);
also a description of the preferred compression method (lzgif.txt).
Version 2.0
===========
With this version, development was taken over from Gershon Elber by Eric
S. Raymond <[email protected]>. Note that I, esr, have pretty much
adhered to Gershon's coding style, even though it's quite baroque and DOS-
headed by my standards.
Library Improvements
--------------------
* New DGifSlurp() and EGifSpew() library entry points allow all GIF-bashing
to be done in core on machines with sufficient memory. Writing code to
slice'n'dice multiple GIFs in non-sequential ways is now much easier (send
kudos and brickbats to esr, small unmarked bills preferred).
* The interface has changed somewhat. Members in the GifFileType structure
have been renamed and regrouped. This was required for support of the
SavedImages member (which enables the new functions mentioned in 1). Also,
there is a new data type for allocated color maps and routines to handle
it conveniently.
* Some minor bugs have been fixed. Most notably, the DGif code now correctly
handles the possibility of more than one code block per extension record,
as per the GIF spec. It's not clear, however, that anyone ever has or
ever will use this feature for anything...
New Tools and Options
---------------------
* A brand new, ultra-spiffy tool `icon2gif' is included. It assembles named
GIFs with editable text color map & icon raster representations to produce
multi-image GIFs usable as graphical resource files. It can also dump most
GIFs in the same text-only form it parses. This makes it easy to edit GIFs
even if you don't have a graphics editor.
* The gifclip utility supports a new `-c' (complement) option that allows you
to perform an `inverse clip', removing horizontal or vertical bands from an
image.
* The gifclrmp utility supports a new `-t' switch for shuffling color index
values.
* A new tool `gifcolor' generates test pattern from colormap input.
New Documentation and Examples
------------------------------
* The documentation has been overhauled completely and translated out of the
dialect spoken by the estimable Mr. Elber into something like standard
English :-).
* Two source code files gifspnge.c and giffiltr.c have been added to the
util directory. These are GIF copiers that exercise the I/O routines,
provided as skeletons for your applications. Read the comments in them
for more info.
* The util Makefile for UNIX has been improved. It now uses the cc/gcc -s
option rather than strip(1). There are now separate install productions,
so you can test new versions in util before installation for production
(the top-level make script still does an install).
Version 1.2
===========
* GIFFIX - a new tool to attempt and fix broken GIF images. Currently fix
images that has EOF prematurely by padding with the darkest color.
* Make GIF2BGI display as much as it can considering the mem. avail.
* Add -q flag to all tools for quite running scan line number mode.
* Fix a (minor!?) bug in the GIF decoder when encountering code 4095.
* New tools (RGB2GIF and GIF2RGB) to convert GIF to/from 24 bits RGB images.
* New tool GIFROTAT to rotate a gif image by an arbitrary angle.
* GifRSize was updated to resize by an arbitrary factor.
Version 1.1
===========
* GIF2BGI - a new utility to display GIF images using Borland's BGI drivers
(if you have one...)
* TEXT2GIF - Converts plain text into GIF images.
* GIF2IRIS - SGI4D display program for GIF images.
* GIF_LIB naming convension has been modified to make sure it has unique
names (see gif_lib.h).
* Support for SGI4D gl and X11 window grabbing has been added to the
library. SGI4D input is quantizied into 8 bits.
Also support for EGA/VGA devices has been added as well.
see Dev2gif.c module.
* Support for the new gif89a format has been added.