Graphics32 Changelog

What's new in Graphics32 1.9.1 Revision 2148

Jan 16, 2014
  • Additions:
  • Added XE and XE2 support
  • Added X64 platform support
  • Added GR32_Backends_LCL_CustomDrawn.pas — a new backend for the LCL CustomDrawn widget set
  • Improved FPC and Lazarus support
  • Added SSE2 assembler routines
  • Added X64 assembler routines
  • Additional predifined colors, similar to new colors in XE2
  • Restructured GR32.inc and added GR32_Compiler.inc with general compiler defines
  • Added TGDIMemoryBackend (a memory backend that offers IPaintSupport without allocating a GDI handle)
  • Bugfixes and optimizations:
  • {$EXCESSPRECISION OFF} for better X64 floating-point performance
  • Improved pascal and SSE2 implementation of MergeReg routine
  • Improved FillLongWord (important when clearing large bitmaps.)
  • Fixed handling of alpha in TKernelResampler
  • Fixed wrong alpha result in integer version of HSLtoRGB
  • Added cache for TempPath
  • FPS controlled movement mechanism
  • Fixed broken Mandelbrot example
  • Fixed bugs (#3411574, #3488570, #3510129 and others)
  • Fixed issue with font size changes and FPC compiler
  • Fixed and improved design-time support
  • Minor tweaks, bugfixes and other optimizations

New in Graphics32 1.9.0 Revision 1336 (Jul 21, 2011)

  • Additions:
  • Platform independent code
  • Switchable back-ends and platform-agnostic TCustomBitmap32 class
  • Support for memory-mapped surfaces via MMF back-ends
  • Added IDE support up to Delphi 2010
  • Preliminary Free Pascal/Lazarus support (Win32 and OS X Carbon)
  • Kylix support officially removed as of this release.
  • Added TFunctionRegistry — a class for managing run-time bindings of functions that depend on platform-dependent parameters and CPU features.
  • Updated several units that previously performed conditional binding to use TFunctionRegistry for automatic binding.
  • Implemented Assign/AssignTo to TCustomPaintBox32
  • Added TFloat FastSqrt routine
  • Added fast native support for loading and saving of 32-bit Windows bitmaps
  • Added fast HorzLineX/VertLineX procedures for horizontal and vertical lines
  • Added floatpoint overloads of TCustomImage32.BitmapToControl and ControlToBitmap
  • License changed to a dual license with MPL and LGPL 2.1 (with linking exception)
  • Optimizations:
  • CPU feature dependent optimizations
  • Rewritten Assign/AssignTo methods of TCustomBitmap32/TBitmap32, now support assignment of alpha-transparent icons
  • Optimizations in AlphaToGrayscale (proposed by Andrea Campi)
  • Optimizations in IntensityToAlpha
  • Moved Iterator procedure from GR32 to GR32_Resamplers and merged it with LinearIterator.
  • Minor tweaks and optimizations.
  • Bugfixes:
  • Fixed bug related to TCustomImage32.ControlToBitmap and BitmapToControl conversions (now more precise)
  • Minor bugfix in AlphaToGrayscale
  • Fixed wrong enumeral type order in bitmask function template
  • Fixed bug in TTransformer (inherited constructor was not called and SetTransformation only accepted non-nil values).
  • Fixed SetSampler bug for TNestedSampler
  • Fixed initialization issue in TRenderThread

New in Graphics32 1.8.3 (Jul 21, 2011)

  • Additions:
  • Added new ASM/(E)MMX optimized ApplyBitmask routine for logical (bitwise) Xor/Or/And operations using a bitmask.
  • Added new TColor32Component basetypes for specifying a component or component sets (related updates to TColor32Entry).
  • Added new CopyComponents routine for copying selected ARGB components btwn bitmaps.
  • Optimizations:
  • Optimized TBitmap32.ResetAlpha, Invert and InvertRGB.
  • Optimizations in pamTransparentEdge related routines.
  • TPatternSampler now supports nonrectangular sampling patterns.
  • Bugfixes:
  • Bugfix in MMX version of BlockAverage that caused access violations on resampling.
  • Fixes for the following bugs reported on the SourceForge tracker: 1560912, 1556318
  • Fixed misbehvior when setting TCustomImage32.BufferOversize property. Changes now directly force resizing of the buffer.
  • Fixed Kylix compilation issue introduced with new multithreading support.
  • Several minor cleanups and fixes.

New in Graphics32 1.8.2 (Jul 21, 2011)

  • Additions:
  • Added new TMultiThreadedRasterizer class for performing regular rasterization using multiple threads. By defining the symbol USE_MULTITHREADING this rasterizer becomes default on multi-core systems.
  • Added TPolarTransformation and TPathTransformation classes.
  • Added TPixelAccessMode pamTransparentEdge, useful for getting smooth edges with transformations.
  • Added new optimized low-level routines to GR32_Math.pas.
  • Bugfixes:
  • Fixes for various bugs reported on the SourceForge tracker: 1445701, 1448030, 1486180, 1456950, 1460821, 1493697, 1610287, 1610292, 1611173
  • Fixed a problem in TRenderThread that cause an AV when OnAreaChanged of the destination bitmap was unassigned.
  • Fixed overflow on calculation in LineS / LineTS with big line coordinates.
  • Fixed buffer overrun error in polygon rasterization.
  • Fix: M_ColorMax, M_ColorMin, M_ColorAverage raised critical exception on old Celeron CPU.
  • Fixed problem in TKernelResampler that caused artifacts at edges for pamSafe pixel access mode.
  • Fixed installation problems in D2005.
  • Minor tweaks and optimizations.

New in Graphics32 1.8.1 (Jul 21, 2011)

  • Additions:
  • Reintroduced property editor features for all Delphi versions after D5.
  • BDS2k6 C++ personality supported.
  • Bugfixes:
  • Fixes for various bugs reported on the SourceForge tracker: 1369894, 1398880, 1403949, 1404989, 1409711, 1412953
  • Fixed problem in method TBitmap32.DrawTo(HDC, DstRect, SrcRect).
  • Fixed a compilation problem when CHANGED_IN_PIXELS define was enabled.
  • Removed mbLeft MouseDown filter in TCustomLayer.
  • TCustomLayer.Changed obeys UpdateCount.
  • Fixed a bug in the MicroTiles repaint optimizer where the buffer wasn't completely invalidated.
  • CLX and D5 compilation issues fixed (GetPropList).

New in Graphics32 1.8 (Jul 21, 2011)

  • Additions:
  • Global usage of new TFloat type alias instead of Single.
  • Area update support for TBitmapLayer added.
  • TTransformation changed from TPersistent to TNotifiablePersistent so as to implement a Changed method that sets TransformValid to False automatically.
  • Incorporated the Interlocked* functions in TBitmap32.Lock and TBitmap32.Unlock according to Jouni Airaksinen's suggestions.
  • Redundant code clean up + better maintainability using central protected CopyMapTo and CopyPropertiesTo methods.
  • Added BlockTransferX routine for bitmap transfers with fixed-point coordinates (using linear interpolation).
  • CLX versions of all example projects added (no guarantee that all projects are 100% CLX-compatible).
  • Delphi 4 support officially dropped as of this release.
  • Bugfixes:
  • Bug in TLayerCollection.ViewportToLocal method fixed.
  • Misbehaviour of TCustomLayer.Visible property fixed.
  • TCustomLayer.Changed and TCustomLayer.Update methods fixed (NO_UPDATE problem)
  • TAffineTransformation.TransformFloat fixed (SF bug 1372023).
  • TBitmap32Item.AssignTo implemented to fix problem "Cannot assign a TBitmap32Item to a TBitmap32Item" (SF bug 1329566).
  • Prevent AV if user sets resampler directly (e.g. Bitmap.Resampler := TLinearResampler.Create(Bitmap);).
  • Fixed a problem in TCustomImage32 that caused performance overhead for rmDirect repaint mode.
  • TSyntheticImage was not automatically rasterized upon creation.
  • Update regions in TTesseralRaserizer were not pixel-perfect.
  • Fix for memory leaks in AssignFromBitmap sub-method due to thread GDI interaction.
  • Fixed a problem in integer version of HSLtoRGB.
  • Fixed TBitmap32.GetStippleColor (the ordinary interpolation routine must be used).
  • Fixed TBitmap32.SET_T256 and TBitmap32.SET_TS256 for color merging. cmMerge is now handled as a separate case.
  • Fixed TBitmap32.FillRectT for cmMerge.
  • Fixed bug in _CombineMem routine. The alpha channel was not interpolated, which is contradictory to documentation.
  • Revised Merge routines. Merge is now based on precise lookup tables. Moreover the new version is faster than the old buggy MMX version.
  • D5 compilation fixes.

New in Graphics32 1.8 Beta (Jul 21, 2011)

  • Resampler Framework / Nested Sampling
  • Rasterizer Framework
  • Buffered transformations / Warping / Remap Transformation
  • Repaint optimizations (MicroTiles Repaint optimizer)
  • New transformations (Twirl, Bloat, Disturbance, FishEye)
  • Fast transformations using TRemapTransformation
  • Kernel classes (implementing reconstruction filters) for TKernelResampler
  • Antialiasing by using regular and irregular super sampling methods
  • Spatial convolution and morphological operations
  • Vector maps, supporting .msh fileformat (useful for rasterizing/buffering transformations)
  • New ordinal map classes for Boolean-, Word- and Integer-sized data elements
  • New WrapMode property and wrapping Pixel properties
  • Scrollbar visibility control and new scale modes
  • Independent scales in TCustomImgView32 / TImgView32
  • TRubberbandLayer enhancements
  • New BlendTransfer routine for blending two bitmaps using an arbitrary blend callback routine
  • New polygonal antialiasing modes for 2x and 32x antialiasing
  • Improved performance in TPolygon32 rasterization routines
  • New draw mode, dmTransparent, for color key tranparency
  • FastMove support
  • New class registration mechanism using TClassList
  • Help documents updated with new additional topics
  • Restructured examples:
  • new examples:
  • TextureBlend_Ex, NestedSampling_Ex, Resamplers_Ex, ImgWarping_Ex, Visualization_Ex
  • changed examples:
  • GradLines_Ex, Polygons_Ex, ImgView_Layers_Ex, Image32_Ex, Sprites_Ex
  • Bugfixes:
  • Fixed AV with Graphics32 usage in DLLs on WinXP
  • Fixed jagged lines problem in LineS, LineTS and LineAS

New in Graphics32 1.7.1 (Jul 21, 2011)

  • fixes for AVs in new line drawing methods (LineS, LineTS, LineAS)
  • replaced incorrect call of VertLineS and HorzLineS in LineTS and LineAS with VertLineTS and HorzLineTS
  • fix for buffer reallocation inefficiency in TCustomPaintBox32 (non-critical, long standing)
  • This should improve performance on resizing for all TCustomPaintBox32 derived controls.
  • added missing call to inherited constructor in TPolygon32 constructor (caused big trouble on Win9x/WinME systems)
  • RenderText now ignores Windows-based font smoothing in VCL
  • (VCL-only change because the QT version that's used in CLX doesn't support disabling font antialiasing, neither in Windows nor in Linux/X11)
  • CLX compilation fixes
  • C++ Builder compilation fixes
  • ColorMul removed (duplicate of ColorModulate)
  • minor cleanups

New in Graphics32 1.7 (Jul 21, 2011)

  • New Features:
  • clipping rect support (all safe drawing operations are clipped to a rect)
  • support for custom polygon fillings (via callback or polygon filler objects)
  • support for polygon transformation (permanent or while drawing)
  • update to transformation classes to make them more suited for general usage
  • polygon performance enhancements
  • new CombineMode property in TBitmap32
  • TRubberbandLayer enhancements
  • additional color algebra functions
  • more versatile TBitmap32.ResetAlpha method (overloaded)
  • Delphi 2005 (Win32) support (optional inlining where applicable)
  • small speed enhancements
  • Bugfixes:
  • fix for RenderText problems with letters that spread below baseline
  • fix for bug in TBitmap32.Rotate180
  • fix for problem in TBitmap32.Assign that caused transparent regions in metafiles and icons to appear in blue when they really should be white.
  • fix for problem where the buffer content on repaint in TPaintBox32 wasn't validated
  • fix for problem where C++ Builder threw linker errors (HDC methods and "hoisted overload" or E2113) in GR32.pas and GR32_Image.pas
  • fix for linear/draft bug with bitmaps of size 100x1 et al.
  • fix for bug in Transform that caused the outline of the source bitmap to appear in OuterColor
  • fix for the 3DNow detection (caused "external exception" on some machines when sfDraft was used)
  • fix for dysfunctional OnMouseEnter and OnMouseLeave in TCustomImage32
  • fix for CheckParams problem in ApplyLUT
  • fix to preserve alpha channel in ApplyLUT and ColorToGrayscale

New in Graphics32 1.6 (Jul 21, 2011)

  • Graphics32 now fully supports CLX cross-platform development;
  • Example projects have been successfully converted and tested in Linux;
  • Fixed issues in GR32_Transforms that could potentially cause access violation;
  • Added sfDraft resampling filter with MMX optimization;
  • Added sfCosine resampling filter;
  • Added PixelF/X properties that read and write pixels with antialiasing;
  • SetPixelF/X methods have been deprecated;
  • Added new MMX optimized color algebra routines to GR32_Blend (Add, Subtract, Multiply etc.);
  • Added AntiAliasMode property to TPolygon32 for dynamically changing antialias level at runtime;
  • Added support for 4x supersampling antialias of polygons (significantly faster but with less quality);

New in Graphics32 1.5.1b (Jul 21, 2011)

  • Changed license to MPL. Everything else is identical with v1.5.1.