![]() ![]() |
The following is a brief list of new (),
obsolete (
) and
changed (
)
functionality as well as bug fixes (
) made in
TGIFImage since version 2.1.
The list only includes high level changes that might affect the developer. For a
complete list of modifications, see the revision history.
If you are upgrading from a version prior to version 2.1, you can also read the
list of changes for version 2.1,
2.0 and 1.5.
![]() |
||
![]() |
On-line documentation. The TGIFImage kit now includes cross referenced context sensitive on-line documentation in the form of a Windows help file. The on-line help documents the complete TGIFImage library and can be integrated with Delphi's on-line help |
|
![]() |
More dithering options. In addition to the existing Floyd Steinberg dithering method, TGIFImage now supports 5 new dithering methods when performing color reduction on imported bitmaps: • Stucki Error Diffusion dithering • Sierra Error Diffusion dithering • Jarvis, Judice & Ninke Error Diffusion dithering • Stevenson & Arche Error Diffusion dithering • Burkes Error Diffusion dithering |
|
![]() |
GIF optimizer. TGIFImage can now perform non-destructive optimizations on GIFs. The optimizer can reduce the size of animated and transparent GIFs substantially and thus improve load time. This is a feature usually only found in commercial GIF animators. • Convert local color maps to a single global color map. • Reduce color depth without loss of colors. • Merge frames by replacing redundant pixels with transparency. • Crop frames by removing empty transparent areas. • Remove passive elements such as comments. |
|
![]() |
Huge performance improvements. The GIF to bitmap converter has been optimized. This has improved the performance of GIF display and GIF to bitmap conversion. The improvements varies from Windows NT to Windows 95/98. Benchmarks has shown the following performance improvement relative to version 2.0: • Non-dithered: from 160% (NT) to 320% (Win95) • Dithered: from 0% (NT) to 50% (Win95) and relative to version 2.1: • Non-dithered: from 1200% (NT) to 1650% (Win95) • Dithered: from 50% (NT) to 60% (Win95) |
|
![]() |
On-load rendering of GIFs. TGIFImage can now optionally render the GIF for display when the GIF is loaded, instead of rendering it on-demand when it is displayed. Rendering GIFs on-load can in some cases improve the initial smoothness of GIF animations. On-load rendering can be enabled by setting the global GIFImageRenderOnLoad variable to true. |
|
![]() |
Import of transparent Icons, Metafiles and Bitmaps. Transparent TIcons, TMetaFiles and TBitmaps are now converted automatically to transparent GIFs. Previous versions of TGIFImage did not preserve the transparency of imported images. |
|
![]() |
Resource leak in color reduction routines fixed. The ReduceColors function, used when importing bitmaps with color reduction, would leak a palette handle if an exception was raised during the color reduction. |
|
![]() |
TThread bug work around improved. The work-around of the TThread race condition bug that exists in Delphi 4 and C++ Builder 3 and 4 has been improved. The previous work-around did not work well on multiprocessor machines and was very timing dependent. The new work-around doesn't rely on any timing and thus works on multiprocessor machines. |
|
![]() |
Improved Delphi 2 import of bitmaps. Import of bitmaps has been improved for Delphi 2 in 8, 16 and 24 bit display mode. |
|
![]() |
Color reduction to arbitrary palette. The ReduceColors function can now perform color reduction to a user supplied palette via the rmPalette color reduction method. See the Quantize demo application for an example of use. |
|
![]() |
Thread pool removed from the GIF renderer. The thread pool manager introduced in version 2.1 has been removed from the GIF renderer. Benchmarks showed that the potential performance gain of the thread pool were too small and didn't outweigh the added complexity. |
|
![]() |
New CreateOptimizedPaletteFromManyBitmaps function. It is now possible to perform color quantization and color reduction on multiple bitmaps via the CreateOptimizedPaletteForManyBitmaps function. See the Quantize demo application for an example of use. |
|
![]() |
Improved import of non-reduced hi-color bitmaps. Import of true-color bitmaps without color reduction now uses the TDIBReader class instead of TCanvas.Pixels. This has resulted in a performance improvement of 500%. |
|
![]() |
Added work around for bug in TBitmap's pf8bit conversion. When converting a TBitmap to pf8bit format, the palette assigned to TBitmap.Palette will be a half tone palette (which only contains the 20 system colors). The problem is that this isn't the palette which is used to render the bitmap and it is also not the palette saved with the bitmap. |
|
![]() |
Support for Delphi 5 and C++ Builder 4. TGIFImage now supports Delphi 2, 3, 4 and 5 as well as C++ Builder 3 and 4. |
|
![]() |
3 new demo applications. • GIF2AVI: Conversion of GIF files to AVI files. • Quantize: Color reduction. • Optimizer: GIF optimization. In addition to the new demos, many of the existing demo applications has been modified to use the the new features. |
|
![]() |
Improved reference documents. • The original GIF87a and GIF89a specification documents has been replaced with a cross referenced HTML version of the GIF89a specifications. • The description of the LZW algorithm has been replaced with an illustrated HTML version. |
|
![]() |
||
![]() |
New event: OnAfterPaint. The OnAfterPaint event occurs right after each frame has been displayed. |
|
![]() |
Fixed bug in display of non-animated GIFs. Two bugs in the InternalPaint method has been fixed. The bugs, which occurred when TGIFImage.Paint were used to display non-animated GIFs, would typically result in a null pointer assignments (Access Violations) or an endless TranslateMessage/DispatchMessage loop (application would hang). |
|
![]() |
Header property deprecated. The Header property, which were used to access such properties as background color and aspect ratio, has been made obsolete. The BackgroundColorIndex, BackgroundColor and AspectRatio properties should be used instead. The Header property is still provided for backwards compatibility, but it will be removed in a future version of TGIFImage. |
|
![]() |
New method: IsTransparent. The new IsTransparent function can be used to determine if a GIF uses transparency. |
|
![]() |
New method: Optimize. The new Optimize procedure performs non-destructive optimization to reduce the size of the GIF. |
|
![]() |
Bug fixed in OptimizeColorMap. The OptimizeColorMap method now correctly optimizes animated GIFs. In previous versions, OptimizeColorMap could in some rare cases make non-transparent animated GIFs transparent and alter the colors of transparent GIFs. |
|
![]() |
||
![]() |
BoundsRect property is now writable. It is now possible to modify the size and position of a frame with the BoundsRect property. |
|
![]() |
Fixed bug in GetBitmap method. A bug that prevented a transparency mask to be created for frames with a width smaller than 8 pixels has been fixed. |
|
![]() |
New method: Crop. The new Crop procedure performs a non-destructive transparency optimization on the frame by removing unused transparent areas. |
|
![]() |
New method: Merge. The new Merge procedure performs a non-destructive redundancy optimization on the frame by replacing pixels that are identical to the pixels of the previous frame with transparency. |
|
![]() |
New property: Scanline. The new Scanline property gives easy access to the GIF frames scanlines. |
|
![]() |
||
![]() |
New event: OnAfterPaint. The OnAfterPaint event occurs right after each frame has been displayed. |
|
![]() |
Thread Pool Manager deprecated. The paint thread pooler introduced in previous version of TGIFImage has been removed since it didn't provide sufficient performance improvements. |
|
![]() |
Fixed oscillation problem. A feedback problem that could cause the automatic interframe delay adjustment to oscillate has been fixed. |
|
![]() |
||
![]() |
Bug in TGIFColorMap.DoOptimize fixed. If a full color map were optimized, the color map would be emptied. |
|
![]() |
Type of TGIFApplicationExtension properties changed. The type of the TGIFApplicationExtension.Identifier and Authentication properties has been changed to strings to support C++ Builder 4. This was done because C++ Builder 4 doesn't support array type properties. |
|
![]() |
TGIFColorMap.Add method changed. The TGIFColorMap.Add method has been modified to accept non-unique color values. In previous versions, calling Add with a color that already existed in the color map, would return the index of the existing color and the color would not be inserted into the color map. The change was made since duplicate colors in a color map are legal according to the GIF specifications and quite commonly used in connection with transparent GIFs. The new AddUnique method provides the functionality provided by the old Add method. |
|
![]() |
New method: TGIFColorMap.AddUnique. The new TGIFColorMap.AddUnique method replaces the old Add method and provides identical functionality. |