What's new in TGIFImage version 2.1 

The following is a brief list of new (New), obsolete (Obsolete) and changed (Changed) functionality as well as bug fixes (Bug fix) made in TGIFImage since version 2.0.

The list only includes high level changes that might affect end-users. For a complete list of modifications, see the revision history.
If you are upgrading from a version prior to version 2.0, you can also read the list of version 2.0 changes and version 1.5 changes.

 
  General  
New Import of bitmaps with more than 256 colors.
It is now possible to convert bitmaps with more than 256 colors to GIFs. TGIFImage supports several reduction methods and palettes to decrease a bitmap's color depth. The reduction method and palette is controlled by the new ColorReduction and DitherMode properties. The default value of these properties can be set with the global GIFImageDefaultColorReduction and GIFImageDefaultDitherMode variables.
New LZW-less compression.
It is now possible to produce GIFs that uses RLE (Run Length Encoding) compression instead of the patented LZW compression method.
You can choose between RLE and LZW compression with the new Compression property. The default value of the property can be set with the global GIFImageDefaultCompression variable.
RLE doesn't compress as good as LZW, so RLE compressed GIFs are larger than LZW compressed ones. The good news is that RLE compressed GIFs are completely compatible with LZW compressed ones, so all software that can read LZW compressed GIFs, can also read RLE compressed GIFs.
I'm not a lawyer (as you might have guessed), but it is my opinion that you won't need a LZW license if you use the RLE method to write GIFs.
New Support for Delphi 4.
TGIFImage now supports all 32 bit versions of Delphi and C++ Builder 3.
New 5 new demo applications.
In addition to the new demos, most of the existing demo applications has been modified to use the the new features.
Bug fix Fixed bug with Delphi 2 and 24 bit displays.
pf24bit has been excluded from SupportedPixelformats in order to fix this problem.
Bug fix Added work around for optimizer bug in Delphi 4 and C++ Builder 3.
It is now possible to import bitmaps with Delphi 4 and C++ Builder 3.
Bug fix Added work around for another Delphi 4 optimizer bug in InitializeBitmapInfoHeader.
Bug fix Added work around for race condition bug in Delphi 4's TThread.
When resizing a TImage containing an animated GIF, the application would often hang.
Obsolete The lzw_patent.txt file has been removed from the kit.
The file has been removed since it was incomplete.
Instead, the complete text of the LZW patent can be found on the TGIFImage home page.
New Tolerance against rxLib.
TGIFImage can now load the stream format used by rxLib's TGIFImage.
Changed Replaced the TBGR type with TRGBTriple.
The TBGR type has been replaced with Delphi's TRGBTriple type. TRGBTriple is declared in windows.pas.
Changed The threaded GIF renderer has been improved for Windows 95/98.
The multi threaded GIF to bitmap renderer now uses a fixed pool of rendering threads. This improves performance slightly on Windows 95 and 98 since these "so called" operating systems can't schedule multiple threads properly.
 
  TGIFImage class
Changed The OnProgress and OnChange properties are not copied when assigning one TGIFImage to another.
The OnProgress and OnChange events are instead triggered on the source TGIFImage of the Assign.
New New option: goClearOnLoop.
Setting this option will cause the animation buffer to be cleared when the animation wraps. This is how Netscape Navigator behaves.
New New option: goTile.
Setting this option will display a GIF tiled instead of stretched.
New New method: PaintRestart.
Calling PaintRestart will cause the animation to restart from the first frame.
New New property: AnimationSpeed.
The speed of the animation can now adjusted by setting the AnimationSpeed property. The speed is specified as a percentage of the normal speed. The valid range is 0 to 1000. Specifying a value of 0 will halt the animation temporarily.
The default value of AnimationSpeed can be set with the global GIFImageDefaultAnimationSpeed variable.
New New property: ColorReduction.
When importing bitmaps with more than 256 colors, this property specifies the method used to reduce color depth to 256 colors or less.
Currently supported methods are:
 • rmNone: Do not perform color reduction.
 • rmWindows20: Reduce to the Windows 20 color system palette.
 • rmWindows256: Reduce to the Windows 256 color halftone palette.
 • rmWindowsGray: Reduce to the Windows 4 grayscale colors.
 • rmMonochrome: Reduce to a black/white monochrome palette.
 • rmGrayScale: Reduce to a uniform 256 shade grayscale palette.
 • rmNetscape: Reduce to the Netscape 216 color palette.
 • rmQuantize: Reduce to an optimal 2^n color palette using Octree color quantization.
 • rmQuantizeWindows: Reduce to an optimal 256 color windows palette using Octree color quantization.
The default value of ColorReduction can be set with the global GIFImageDefaultColorReduction variable.
New New property: ReductionBits.
This property specifies the color depth when the rmQuantize reduction method is used.
The valid range of ReductionBits is from 3 to 8 corresponding to 8, 16, 32, 64, 128 or 256 colors.
The default value of ReductionBits can be set with the global GIFImageDefaultReductionBits variable.
New New property: DitherMode.
When importing bitmaps with more than 256 colors, this property specifies the method used to map the colors of the source image to the reduced palette.
Currently supported methods are:
 • dmNearest: Map colors using a simple nearest color algorithm.
 • dmFloydSteinberg: Map colors using Floyd Steinberg error diffusion.
The default value of ColorReduction can be set with the global GIFImageDefaultDitherMode variable.
New New property: Compression.
Used to specify the compression method used when saving GIFs.
These are the possible values:
 • gcLZW: Normal LZW compression.
 • gcRLE: GIF compatible RLE compression.
The default value of Compression can be set with the global GIFImageDefaultCompression variable.
Bug fix Added check for nil source in TGIFImage.Assign.
Assigning nil to a TGIFImage is now handled safely.
New Added support for meta files and icons.
The Assign method now supports import of meta files (TMetaFile) and Icons (TIcon). Neither types are imported as transparent GIFs though.
New New method: OptimizeColorMap.
OptimizeColorMap merges and optimizes multiple local color maps into a single global color map. This is a commonly used method to reduce the size of animated GIFs.
 
  TGIFSubImage class
Changed TGIFSubImage.Assign(TGIFSubImage) has been optimized.
Copying one GIF to another is now very fast.
Bug fix A bug in TGIFSubImage.Decompress has been fixed.
Interlaced images with a height divisible by 4 but not divisible by 8 would cause a memory overwrite that resulted in some very nasty AVs.
Bug fix Fixed bug in TGIFSubImage.DoGetXXXBitmap.
GIFs containing images with a height of 1 would produce an "Invalid ScanLine Index" exception under Delphi 2.
Bug fix Fixed integer overflow bug in Progress events.
It is now possible to load and display GIFs larger than 20Mb (yes, that's MEGA bytes), provided you have a large enough swap file.
Oh by the way, don't try it on Windows 95/98. TGIFImage can handle these large GIFs, but Windows 95/98 can't.
 
  TGIFPainter class
New New property: AnimationSpeed.
The speed of the animation can now adjusted by setting the AnimationSpeed property. The speed is specified as a percentage of the normal speed. The valid range is 0 to 1000. Specifying a value of 0 will halt the animation temporarily.
The speed is specified as a percentage of the normal speed.
Changed The ActiveImage property is now writable.
By modifying the value of the ActiveImage property, it is possible to alter the animation sequence in the OnStartPaint, OnPaint and OnLoop event handlers.

 


Copyright © 1998 Anders Melander. All rights reserved.