What's new in TGIFImage version 2.0 

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 the previous release (version 1.5).

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

 
  General  
New The TGIFImage library now supports Delphi 2, 3 and C++ Builder 3.
Most of the demo applications have been ported to Delphi 2, but since I have no expertise in C++ Builder there are no demos for it at this time.
Changed Compliance with Netscape Navigator has been improved after studying the Netscape Mozilla source code.
The improvements mostly has to do with animation timing, application extensions and tolerance against invalid GIFs.
Changed Animation speed is now more Netscape Navigator like.
Tweaked animation timing values to compensate for the fact that we perform better than Mozilla. Added FAST_AS_HELL conditional define to disable tweaks.
New New global variable GIFMaximumDelay.
Specifies the maximum possible animation delay for non-threaded paint. This value is used to avoid that a very long and slow GIF hangs the system.
New Added dummy component registration procedure "Register" to allow design time GIF paint options to be set and add design time support to Delphi 2.
The Register procedure by default disables the goLoop option at design time to avoid using CPU resources (and distract the developer). GIFs displayed in a TImage component will animate once and then stop.
Bug fix The very nasty "TBitmap.PixelFormat := pf8bit" resource leak has finally been fixed.
This bug was mentioned in the version 1.5 list of "known problems" and manifested itself when GIFs were created/displayed/deleted numerous times.
Since this is a bug in Delphi 3's TBitmap class, it also affects use of TBitmap and TJPEGImage on 256 color systems.
The bug has been fixed in C++ Builder 3.
Obsolete All PaintLock functions has been removed.
Since TGIFImage uses the TThread.Synchronize method to protect non-reentrant code, the PaintLock functions were found to be totally superfluous. Their use were also causing a major bottle neck when running multiple threads on the same image.
Their removal has caused a general performance improvement. Even for single threaded paint operations.
New Added conditional TPicture registration via the REGISTER_TGIFIMAGE conditional define.
This should make "some" coexistence with other GIF libraries possible (not that I can imagine why you would wish to disable TGIFImage).
 
  TGIFImage class
Changed The OnProgress and OnChange properties are now copied when assigning one TGIFImage to another.
Changed TGIFImage.Assign now generates OnProgress events.
The sProgressCopying message is used when copying the image data.
New New events: OnStartPaint, OnPaint, OnLoop and OnEndPaint.
OnStartPaint occurs when the animation starts.
OnPaint occurs just before each frame is painted.
OnLoop occurs when the animation wraps and starts over again.
OnEndPaint occurs when the animation ends.
Bug fix Bug in paint of empty image fixed.
A bug in InternalPaint that caused an "Out of system resources" error when width or height of the paint rect was <= 0 and multiple paint threads were in use has been fixed.
New Added clipboard support.
The LoadFromClipboardFormat and SaveToClipboardFormat methods can now be used with TGIFImage.
 
  TGIFSubImage class
Bug fix Import of bitmaps in pf1bit format has been fixed.
Bug fix Import of bitmaps via TCanvas.Pixels has been fixed.
It's still slow as h*ll but that shouldn't matter much since it isn't really used anymore.
Changed Modified DoGetBitmap and DoGetDitherBitmap to circumvent Delphi 2's braindead palette behaviour.
When realizing a palette the first and last 10 palette entries are always set to the system palette colors no matter what palette we attempt to define. This is basically a Windows issue but since Delphi 3 doesn't have this problem, I blame it on Delphi 2.
Bug fix Bug in load of Adobe GIFs fixed.
GIFs containing the non compliant "Adobe Application Extensions" are now loaded correctly.
Changed Decompress now clears the image memory before the image is decompressed.
This should remove "random noise" when displaying incomplete or corrupted images.
 
  TGIFPainter class
Bug fix A bug in TGIFPainter.Stop that caused access violations has been fixed.
When drawing in main thread the TGIFPainter object was deleted before the Execute method had finished.
New New events: OnStartPaint, OnPaint, OnLoop and OnEndPaint.
OnStartPaint occurs when the animation starts.
OnPaint occurs just before each frame is painted.
OnLoop occurs when the animation wraps and starts over again.
OnEndPaint occurs when the animation ends.
New Added ActiveImage property.
Specifies the index number of the frame being displayed.
Changed Added Exception trap to TGIFPainter.Execute.
This was nescessary to make sure that an exception doesn't halt the thread and thus causes the application to hang because it is waiting for the thread to be deleted.
 
  Misc classes
Bug fix A memory allocation bug in TColorMap.SetCapacity has been fixed.
Too little memory was being reallocated when the color map was resized (e.g. when importing a TBitmap).
Changed A harmless and unavoidable compiler warning has been disabled.
The warning was:
    Warning: GIFImage.pas(xxx): Method 'Create' hides virtual method of base type 'TGIFItem'.
    

 


Copyright © 1998 Anders Melander. All rights reserved.