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.