This page contains the version history for the RiverSoftAVG Common Classes Library. This library is used by all RiverSoftAVG products.
-------------------------------------------------------------------
November 19, 2023 Version 8.4
- Updated for RAD Studio 12 Athens Support
- Modified TStringList<T>.Assign method to remove unneeded variable i
- Modified TRSDictionary<TKey,TValue>.Create method to remove unneeded variable cap
-------------------------------------------------------------------
July 23, 2023 Version 8.3.1
- Updated for RAD Studio 11.3 Alexandria Support
-------------------------------------------------------------------
September 19, 2021 Version 8.3
- Updated for RAD Studio 11 Alexandria Support
- Modified pidRS_PLATFORM_SUPPORT to use non-deprecated constants for 11 Alexandria
- Modified pidRS_MOBILE_SUPPORT to use non-deprecated constants for 11 Alexandria
-------------------------------------------------------------------
June 10, 2020 Version 8.2.1
- Updated for RAD Studio 10.4 Sydney Support
- Removed unused code in TPriorityList.GetItem method
- Fixed {$IFDEF NEXTGEN}Free statements to be {$IFDEF AUTOREFCOUNT}Free
- Added System.Character to remove compiler hints to RSGraphics.pas
-------------------------------------------------------------------
November 25, 2018 Version 8.2
- Updated for RAD Studio 10.3 Rio Support
-------------------------------------------------------------------
January 27, 2018 Version 8.1.2
- Set USFormatSettings.DecimalSeparator on initialization to '.' to
fix a subtle bug that can occur when the user sets the Windows
locale to English but sets the decimal separator to something else.
- Fixed 'Qualified dependent types require typename keyword' error with
Stricter C++ Compilers (Clang-enhanced C++ Compilers) in RSGenerics.Collections.hpp
Added 'typename' keyword
-------------------------------------------------------------------
August 13, 2017 Version 8.1.1
- Recompiled for RAD Studio 10.2.1 Tokyo Support
-------------------------------------------------------------------
April 2, 2017 Version 8.1
- Added RAD Studio 10.2 Tokyo Support
- Added Linux Support
- Changed TRSPointerType type to be TObject when AUTOREFCOUNT is true
- Changed TRSStringPointerType type to be String when AUTOREFCOUNT is true
- Fixed code for Delphi 10.2 Toyko (deprecated TCanvas.StrokeXXX
properties from XE2 were finally removed in this version)
- Modified TStringList<T>.InsertItem method to cast private
FList[Index].FObject to TRSPointerType before assigning nil
(this way, with AUTOREFCOUNT, it is just casting it to TObject,
which is safe)
- Turned off warnings for GHashTable unit, as they do not
apply to this legacy code
- Changed TGCustomHashtable class to use Integer for Capacity and
hashes instead of cardinal
-------------------------------------------------------------------
February 20, 2017 Version 8.0.2
- Fixed TRSPathData.AddArcSvg method to only call AddEllipse if it
is not an invisible point in the case where P1 = P2
-------------------------------------------------------------------
January 8, 2017 Version 8.0.1
- Removed hack in TRSPathData.FillPath method to overcome bug in
Embarcadero's TCanvasD2D.DoDrawPath method. The TCanvasD2D.DoDrawPath
bug would cause a black screen in some cases. The hack was expensive
in terms of performance and I finally figured out Embarcadero's bug.
Embarcadero's bug exists as of Delphi Berlin (QC https://quality.embarcadero.com/browse/RSP-16336)
To fix the bug, copy FMX.Canvas.D2D.pas unit to your app dir and
in the TCanvasD2D.DoDrawPath method, change:
if not Closed then
Path.EndFigure(D2D1_FIGURE_END_OPEN);
to:
if (APath.Count < 1) or (APath[APath.Count - 1].Kind <> TPathPointKind.Close) then
Path.EndFigure(D2D1_FIGURE_END_OPEN);
Please see blog post for more information:
http://riversoftavg.com/blogs/index.php/2016/12/12/black-paths-with-fmx-d2d-canvas/
-------------------------------------------------------------------
October 9, 2016 Version 8.0
- Transferred Structures.pas documentation to Documentation Insight
- Fixed bug in TRSPathData.SmoothCurveTo method which would give
loopy curves if the last point was not MoveTo
- Fixed bug in TRSPathData.SmoothCurveToRel method which would give
loopy curves if the last point was not MoveTo
- Modified TRSPathData.Append method to use ERSGfxException instead
of Exception
- Modified TRSPathData.AssignTo method to use ERSGfxException instead
of Exception
- Added TVclCanvasHelper.DrawPath method
- Added TVclCanvasHelper.FillPath method
- Documented RSGraphics.pas unit
- Added TStringList<T>.InsertObject(Integer,String,TObject,T) public method
- Documented RSGenerics.Collections.pas unit
- Fixed TFMXCanvasHelper.FrameRect method to draw a 1 pixel
wide rectangle (previously it used whatever thickness was in
the pen)
- Documented the FMX.RS.CanvasHelper.pas unit
- Documented GValue.pas unit
- Documented the GRegularExpression.pas unit
- Transferred GParser.pas documentation to Documentation Insight
- Documented GList.pas
- Documented GHashTable.pas (mostly to just point to
their replacements in RSGenerics.Collections.pas)
- Transferred GGraph.pas documentation to Documentation Insight
- Documented FMX.RS.TreeViewHelper.pas
- Documented FMX.RS.Platform.pas unit
- Documented FMX.RS.HintWindow.pas unit
- Documented FMX.RS.HelperFunctions.pas unit
- Documented RSCommonReg unit
- Transferred RefCount.pas documentation to
Documentation Insight
- Documented TComponentNexus class
- Documented ListColl.pas unit
- Documented InterfaceCollections.pas (mostly to just point to
their replacements in RSInterfaceCollections.pas)
- Transferred RSDeltaFont.pas documentation to Documentation Insight
- Documented RSEncodedBits.pas unit
- Transferred RSHintWindow.pas documentation to Documentation Insight
- Documented RSInterfaceCollections.pas unit
- Documented the RSMessages.pas unit
- Documented RSUIConsts.pas
- Documented RSVclHelperFunctions.pas unit
- Documented RSVector.pas unit
- Transferred ActivityNetwork.pas documentation to Documentation Insight
- Documented DataStructures.pas
- Documented the IVector interface
- Finished transferring CommonInterfaces.pas documentation to
Documentation Insight
- Transferred Structures.pas documentation to Documentation Insight
- Documented TMaxCountStrings class
- Documented TRecentFiles class
- Documented RSVclGraphics.pas unit
- Documented GTree.pas unit
- Transferred GStreams.pas documentation to
Documentation Insight
- Documented TBaseStreamTokenList class
- Documented TGSpecialFiler class
- Fixed TBaseStreamTokenList.Assign(TPersistent) method to support
objects that implement IBaseStreamTokenList
- Documented the GRegularExpression.pas unit
-------------------------------------------------------------------
September 5, 2016 Version 7.5.1
- Transferred Structures.pas documentation to Documentation Insight
- Documented TMaxCountStrings class
- Documented TRecentFiles class
- Documented RSCommonReg unit
- Documented the IVector interface
- Partially transferred CommonInterfaces.pas documentation to
Documentation Insight
- Documented HelperFunctions.pas
- Transferred RSConstants.pas documentation to Documentation Insight
-------------------------------------------------------------------
July 24, 2016 Version 7.5
- Added RSNormalizeRect( TRect ) function
- Added RSNormalizeRSRect( TRSRect ) function
- Updated installer creation procedure to automatically generate
version numbers
-------------------------------------------------------------------
June 5, 2016 Version 7.4.1
- Added RSMatrixMultiply(Single; TRSMatrix): Single overloaded function
-------------------------------------------------------------------
May 22, 2016 Version 7.4
- Added RSUIConsts.pas unit
-------------------------------------------------------------------
April 24, 2016 Version 7.3
- Added RAD Studio 10.1 Berlin Support
- Removed Directory Exists warning from installer
- Added Delphi 10.1 Berlin flags
- Added ASYNC_DIALOGS_REQUIRED flag
-------------------------------------------------------------------
March 13, 2016 Version 7.2.1
- Added pidiOSDevice64 to pidRS_PLATFORM_SUPPORT for XE8+
- Added pidiOSDevice64 to pidRS_MOBILE_SUPPORT for XE8+
-------------------------------------------------------------------
March 5, 2016 Version 7.2
- Added TRSPathData.AddRectangle( const aRect: TRSRect ) method
- Added FMX.RS.TreeViewHelper unit
http://riversoftavg.com/blogs/index.php/2016/02/21/classrecord-helpers-custom-syntactic-sugar-for-the-delphi-class-hierarchy/
- Added RSSequential unit
http://riversoftavg.com/blogs/index.php/2016/02/29/tsequential-for-a-happy-leap-day/
-------------------------------------------------------------------
February 5, 2016 Version 7.1.1
- Fixed TRSEncodedBits.Encode method for unicode compilation
- Fixed TRSEncodedBits.Decode method for unicode compilation
- Fixed installer issue where FMX dcus were not installed, requiring
recompilation with FMX applications
- Fixed installer issue where PathDesigner was not installed correctly
- Added IsDelphiRunning function (FMX)
- Added HaveNagged function (FMX)
-------------------------------------------------------------------
January 10, 2016 Version 7.1
- Added TPathDesignerForm as a dialog for editing TRSPathData
- Added RSPathDesigner.pas to RSVclCommon package
- Added RSCommonReg.pas unit
- Added TRSPathDataPropertyEditor class for editing TRSPathData at design-time
- Reduced number of digits in TRSPathData.LongFormatStr constant
- Slightly optimized TRSPathData.GetNum method
-------------------------------------------------------------------
December 6, 2015 Version 7.0.1
- Added TPathPointKindHelper (FMX) to remove deprecated warnings
introduced in XE6
- Added TCornerTypeHelper (FMX) to remove deprecated warnings
introduced in XE6
- Added TRSPathData.FormatStr property to allow formatting the floating
point values (generally to make the GetPathString return a smaller
string)
- Added TRSPathData.LongFormatStr constant
- Added TRSPathData.ShortFormatStr constant
- Modified TRSPathData.GetPathString method to use FormatStr
- Modified TRSPathData.GetPathString method to use local method
instead of inherited GetPathString in FMX
- Added FindTreeViewChildItem function to find a child tree view
item by its TagObject
- Added FindTreeViewChildItem function to find a child tree view
item by its Text using a specified Compare function
- Added FindTreeViewItem function to find a tree view
item by its TagObject
- Added FindTreeViewItem function to find a tree view
item by its Text using a specified Compare function
- Fixed signature of TGBufferStream.Read method to match changes XE8+
did for iOS64 (Integer->LongInt)
- Fixed signature of TGBufferStream.Write method to match changes XE8+
did for iOS64 (Integer->LongInt)
- Fixed signature of TGBufferStream.Seek method to match changes XE8+
did for iOS64 (Integer->LongInt)
- Fixed signature of TGTextStream.SeekExcludePreamble method to match changes XE8+
did for iOS64 (Integer->LongInt)
- Fixed signature of TGTextStream.Seek method to match changes XE8+
did for iOS64 (Integer->LongInt)
- Fixed bug in installer which would not set the library path correctly
for iOS32 in XE8+
- Fixed bug in installer which would not set the library path correctly
for iOS64 in XE8+
-------------------------------------------------------------------
November 16, 2015 Version 7.0
- Added FilerHelper unit to help stream TPersistent objects
- Added FMX.RS.Platform unit to get fonts for a platform
- Added RSDistance inline function
- Added RSCenterPoint( const Pt1, Pt2: TRSPoint; Midpoint: Single = 0.5 ) overloaded function
- Added TRSPathData.SplitDataByLength method
- Fixed bug in RSPointToString function to use USFormatSettings
for FloatToStr calls
- Fixed bug in Arc function to use USFormatSettings
for FloatToStr calls
- Fixed bug in TRSPathData.GetPathString method to use USFormatSettings
for FloatToStr calls
- Fixed bug in TRSPathData.AddArcSvg method where arcs that begin
and end at same point would not get added (now adds ellipse)
- (Re)Fixed TRSPathData.SetPathString method to CONSTRAIN value to 0 or 1 when
parsing large-arc-flag or sweep-arc-flag
- Fixed bug in IdentToCanvasColor function which used LongInt as
Color parameter instead of Integer
- Added RSCharInSet(WideChar; array of Char) function for XE3 and less
- Added RSIsWhiteSpace function
- Added RSIsLower function
- Added RSToLower function
- Added RSIsUpper function
- Added RSToUpper function
- Changed behavior of TFMXCanvasHelper.DrawFocusRect method to
mimic VCL behavior by always drawing the focus rect, even
when Stroke.Kind = bkNone
-------------------------------------------------------------------
September 6, 2015 Version 6.9
- Added RAD Studio 10 Seattle Support
- Added FindTreeViewChildItem function to find a child tree view
item by its Text (FMX.RS.HelperFunctions)
- Added FindTreeViewItem function to find a tree view
item by its Text (FMX.RS.HelperFunctions)
- Added RSMatrixEquals function
- Added TPathClickLocation type
- Added TRSPathData.PointInPathOutline(TRSPoint;Single): Boolean
method to detect if point is on outline of a path
- Added TRSPathData.PointInPathOutline(Single;Single;Single): Boolean
method to detect if point is on outline of a path
- Added TRSPathData.AddPathOutline method to create
a crude outline around a path (useful for detecting a point that
is on the stroke of a path (which FMX does not detect)
- Added TRSPathData.AddRectangleForSegment protected method to create
a rectangle around a line segment
- Added PointInPath(TRSPoint;TRSPoints): TPathClickLocation
overloaded function
- Added PointInPath(TPoint;TPoints): TPathClickLocation
overloaded function
-------------------------------------------------------------------
June 14, 2015 Version 6.8.3
- Fixed TRSPathData.SetPathString method to only accept 0 or 1 when
parsing large-arc-flag or sweep-arc-flag
- Added PDiv functions (protected division)
-------------------------------------------------------------------
May 17, 2015 Version 6.8.2
- Fixed divide by zero exception in FitRect( TRSMatrix, TRSRect, TRSRect )
function
- Modified TRSPathData.SetPathString method to add a ClosePath when the path
ends in a Move. FMX seems to have a problem with a path that ends
with a move and fills the space with black
- Fixed bug in TRSPathData.SetPathString method, which would not set control point
to be coincident with the current point after every non-Q/T segment,
causing T segment creation to fail if T not preceded by either Q or T
-------------------------------------------------------------------
May 3, 2015 Version 6.8.1
- Fixed TRSEncodedBits.GetAsDouble method to iterate over the entire
bits for floating point representation (Thanks DM)
- Added CODESITE_LOG flag to RSDefines.inc (off by default)
to turn on code site logging statements
-------------------------------------------------------------------
April 19, 2015 Version 6.8
- Added RAD Studio XE8 Support
-------------------------------------------------------------------
February 15, 2015 Version 6.7.2
- Changed visibility of TStringList<T>.TRSStringItem type from
private to protected
- Changed visibility of TStringList<T>.TRSStringItemList type from
private to protected
- Fixed clipping bug in FMX.RS.HintWindow TRSHintWindow.ActivateHint method by
expanding rectangle width
-------------------------------------------------------------------
January 4, 2015 Version 6.7.1
- Changed TVclCanvasHelper.PenWidth property from Single to Integer
-------------------------------------------------------------------
December 28, 2014 Version 6.7
- Added FMX.RS.HintWindow.pas
- Added overloaded RSInflateRect( TRect, Integer, Integer ) function
- Added overloaded RSIntersectRect( TRect, TRect ) function
- Added overloaded RSIntersectRect( TRect, TRect, var TRect ) function
- Added overloaded RSIntersectRect( TRSRect, TRSRect ) function
- Fixed bug in TRSPathData.DrawPath, which would draw consecutive
curves in a non-continuous manner. Changed drawing code for VCL
to use Windows.BeginPath/PolyBezierTo/etc statements
- Added DrawDonutSlice function
- Added Arc (donut-like) path function
- Added overloaded DrawPieSlice function (with OuterRadius parameter)
- Fixed bug in DrawPieSlice function (FMX) which ignored offset parameter
- Fixed bug in DrawArrow function where arrow line would not draw all
the way to its base
- Fixed bug in TFMXCanvasHelper.RoundRect method
-------------------------------------------------------------------
November 16, 2014 Version 6.6.2
- Recompiled for RAD Studio XE7 Update 1
-------------------------------------------------------------------
September 22, 2014 Version 6.6.1
- Fixed *relative* Quadratic Bezier Curve support for TRSPathData (q & t)
- Fixed TRSPathData.SmoothCurveTo method where LastPoint was a MoveTo
would create a bad curve
- Fixed TRSPathData.SmoothCurveToRel method where LastPoint was a MoveTo
would create a bad curve
-------------------------------------------------------------------
September 7, 2014 Version 6.6
- Added RAD Studio XE7 Support
- Changed packages to use LibSuffix.inc exclusively (no more LibSuffix120.inc,
LibSuffix130.inc, etc)
-------------------------------------------------------------------
July 6, 2014 Version 6.5
- Added Appmethod (Object Pascal) Support
- Recompiled for Delphi XE6 Update 1
- Added Quadratic Bezier Curve support to TRSPathData (Q/q and T/t),
SetPathString method converts Quadratic Bezier curves to Cubic
Bezier curves
-------------------------------------------------------------------
April 27, 2014 Version 6.4
- Added RAD Studio XE6 Support
- Moved vtChar and vtPChar code in TGTextStream.WriteArgs method
to not be used by NEXTGEN compiler
- Fixed TRSPathData.GetNum method to accept numbers like '2.964.947'
as 2 valid separate numbers (2.964, 0.947), which apparently
Photoshop can output as SVG path numbers
-------------------------------------------------------------------
March 30, 2014 Version 6.3
- Added EqualsRect(R1,R2: TRect) function
-------------------------------------------------------------------
February 9, 2014 Version 6.2.4
- Fixed memory leak in TPriorityList.Destroy by clearing the heap
first and thereby destroying the TRSObjectQueue/TRSObjectStack
- Added range checks for string in TRSPathData.SetPathString method
- Added range checks for string in TRSPathData.GetNum method
-------------------------------------------------------------------
February 8, 2014 Version 6.2.3
- Fixed TRSPathData.GetNum method to skip spaces AND commas
- Fixed bug in TRSPathData.SmoothCurveTo method when Count of points
is less than or equal to 2
- Fixed bug in TRSPathData.SmoothCurveToRel method when Count of points
is less than or equal to 2
-------------------------------------------------------------------
January 19, 2014 Version 6.2.2
- Modified TRSPathData.FillPath to fix a bug in TCanvas.FillPath
(FMX, at least up to XE5) where if the path does not end with a Close point,
it can cause visual errors like blacking out the canvas
- Added Grow paremeter to FitRect functions, which (when true) forces
the rectangle to grow to the full size of the target rect
-------------------------------------------------------------------
January 5, 2014 Version 6.2.1
- Added RSIntersectLine function
- Added overloaded RSIntersectRect function
- Fixed bug in TRSPathData.PointInPath method
-------------------------------------------------------------------
December 24, 2013 Version 6.2
- Added TRSPathData.Clone method
-------------------------------------------------------------------
November 18, 2013 Version 6.1.1
- Fixed StrToFloat to use US Locale information in TRSPathData (Path
definitions use standard decimal format, not locale-specific)
- Fixed StrToFloat to use US Locale information in StringToRSPoint function
- Added USFormatSettings variable
-------------------------------------------------------------------
September 22, 2013 Version 6.1
- Added RAD Studio XE5 Support
- Added Android Support
- Validated library on physical Android Device
- Modified pidRS_PLATFORM_SUPPORT for XE5
- Modified pidRS_MOBILE_SUPPORT for XE5
- Fixed bug in TPathData.SetPathString which would not properly parse
consecutive arcs (A/a) if the A/a token did not exist between
arc points
- Fixed bug in SetGradientColors function which would not properly set
up the gradient colors
- Fixed bug in TRSPathData.GetNum method which would not accept
uppercase E notation in floating point number
- Added TRSPosition class (maps to FMX TPosition in XE2+)
- Added TRSTransform class (maps to FMX TTransform in XE2+)
- Added overloaded RSRect( const TopLeft, BottomRight: TRSPoint ) method
- Added overloaded EllipseGradient method
- Added TRSPolygons type
- Added TPointPolygons type
- Added TCanvasPolygons type
- Added TRSPathData.AddPolygon( const Poly: TPoints ) method
- Added TRSPathData.AddPolygon( const Poly: TRSPoints ) method
- Added TRSPathData.AddPolygons( const Poly: TPointPolygons ) method
- Added TRSPathData.AddPolygons( const Poly: TRSPolygons ) method
- Added FitRect( aMatrix: TRSMatrix; const aRect, BoundsRect: TRSRect ): TRSRect method
- Added TRSPathData.FillMode property (not used in FMX)
- Modified TRSPathData.FitToRect method to create a transformation matrix and then call ApplyMatrix
- Renamed RSGraphics.IntersectRect function to RSIntersectRect function to avoid collisions with Delphi function
- Updated Uses to include FMX.Graphics for XE5+ compatibility
- Modified TMatrix code for XE5+ compatibility
- Changed TFMXCanvasHelper.Pen property from TBrush to TRSStroke
for XE3+
- Improved speed of TFMXCanvasHelper.Polyline method for
OPACITY = 1. Otherwise, falls back to FMX DrawPolygon method :(
- Moved AddChildTreeViewItem functions from FMX.RS.IEHelperFunctions to
FMX.RS.HelperFunctions
- Moved vx_XXX constants from FMX.RS.IEHelperFunctions to
FMX.RS.HelperFunctions
-------------------------------------------------------------------
August 25, 2013 Version 6.0.1
- Added missing *.inc files to installer so that components can be
built
-------------------------------------------------------------------
August 18, 2013 Version 6.0
- Validated library on physical iOS Device
- Changed code to call DisposeOf on AUTOREFCOUNT, not NEXTGEN
- Changed TRSPathData to descend from TPathData in FMX (speeds up draw)
- Added opacity parameter to TRSPathData.Draw methods
- Fixed bug in TRSPathData.DrawPath where polygon/polyline would
not be drawn without a closepath
- Added TRSPathData.AssignTo method to assign to TPathData in FMX
- Changed TRSPathData.DrawPath method to use Canvas.DrawPath in FMX
- Improved speed of TFMXCanvasHelper.Polyline method
-------------------------------------------------------------------
July 29, 2013 Version 6.0B1
- Added TRSPathData object, similar to FMX TPathData
- Added TRSCorner type
- Added TRSCorners type
- Added TRSCornerType type
- Added TRSPathPointKind type
- Added TRSPathPoint type
- Added RSVectorAdd function
- Added RSVectorSubtract function
- Added RSMatrixTransform(TRSMatrix, TRSVector) function
- Added overloaded CanvasRect( TRSRect ): TCanvasRect function
- Added overloaded CanvasRect( TRect ): TCanvasRect function
- Added overloaded RSRectHeight( TRect ) function
- Added overloaed RSRectWidth( TRect ) function
- Added CenterRect( var R: TRect; const Bounds: TRect ) function
- Optimized speed of TStringList<T>.AddStrings method when
Strings parameter is a TStringList<T> (also speeds up Assigns)
- Fixed copying sorted TStringList<T>.Assign method bug
see http://blogs.riversoftavg.com/index.php/2013/07/24/tstringlist-assign-bug-feature-or-documentation-error/
- Fixed bug in TStringList<T>.InsertItem method where the List
string was being finalized and causing access violations later
- Fixed bug in TStringList<T>.AddStrings where Data is not copied
over even if the Source is a TStringList<T>
- Fixed bug in TStringList<T>.AddObject(...AData: T), which would
trigger change event before setting Data part of item
- Added TStringList<T>.InsertItem( Integer, String, TObject, T )
protected method
- Optimized speed of TGStringList.AddStrings method when
Strings parameter is a TGStringList (also speeds up Assigns)
- Fixed copying sorted TGStringList.Assign method bug
see http://blogs.riversoftavg.com/index.php/2013/07/24/tstringlist-assign-bug-feature-or-documentation-error/
Note: This release dramatically changed support classes in order to
better support XE4 Mobile compiler features: Automatic Reference Counting,
TList deprecation, and suggested deprecation of Pointer type. It makes
heavy use of generics instead of older TList-type and TGHashTable classes
which used pointers. A lot of effort has gone into making the new classes
support the same methods and properties of the old classes. However,
there may be changes needed to be made to your code. Of special note:
- InterfaceCollections unit has been replaced with RSInterfaceCollections unit
- Contnrs.pas, GLists.pas, and GHashTable.pas have been replaced with
System.Generics.Collections.pas or RSGenerics.Collections.pas
The old units are still available but are not used.
-------------------------------------------------------------------
July 21, 2013 Version 6.0B0
- Added RAD Studio XE4 Support
- Added iOS Support
- Dropped RAD Studio 2009 Support
- Refactored classes to use generics versions of lists and hash tables instead
of classes from Contnrs.pas, GLists.pas, InterfaceCollections.pas,
Structures.pas, and GHashTable.pas
- Refactored Packages (dpk) to use $IFDEFs with $LIBVERSION
to create multiple compiled versions for each version of Delphi
from the same package file
- Added [Weak] Attribute to owner objects references for
Automatic Reference Counting (ARC) compiler
- Replaced Free calls with DisposeOf for NEXTGEN compiler
- Removed Free calls for NEXTGEN compiler
- Added RSGenerics.Collections unit (generics replacement for GHashTable)
- Added RSInterfaceCollections unit (generics replacement for InterfaceCollections)
- Fixed bug in DrawArrow which draw the caption whether aoDrawCaption
was in Options or not
- Changed CharInSet expressions to use RSCharInSet to avoid deprecation
warnings from XE4+
- Added TRSVector record type and functions
- Added TRSVectorArray type
- Added TRSMatrix record type and functions
- Added TRSPolygon type
- Added TRSCubicBezier type
- Added RSRectHeight function
- Added RSRectWidth function
- Added TRSPoint Class Operator methods (Pre-Delphi XE2)
- Added TRSRect.Fit method for Pre-Delphi XE2
- Added RSPoint( const aVector: TRSVector ) function
- Added RSVector( const X, Y: Single; const W: Single = 1.0 ) function
- Added RSVector( const aPoint: TRSPoint; const W: Single = 1.0 ) function
- Added RSVector( const aVector: TVector ) function for XE2+
- Added RSMatrix( const aMatrix: TMatrix ) function for XE2+
- Added Vector( const aVector: TRSVector ) function for XE2+
- Added Matrix( const aMatrix: TRSMatrix ) function for XE2+
- Added RSVectorAngleCosine(const v1, v2: TRSVector) function
- Added RSVectorDotProduct(const v1, v2: TRSVector) function
- Added RSVectorCrossProductZ(const v1, v2: TRSVector) function
- Added RSVectorAngle(const V, N: TRSVector) function
- Added RSVectorLength( const V: TRSVector ) function
- Added RSVectorNorm(const V: TRSVector) function
- Added RSMatrixMultiply(const M1, M2: TRSMatrix) function
- Added RSMatrixDeterminant(const M: TRSMatrix) function
- Added AdjointRSMatrix(var M function
- Added ScaleRSMatrix(var M: TRSMatrix; const factor function
- Added InvertRSMatrix(var M function
- Added CreateRotationRSMatrix(const Angle: Single) function
- Added CreateScaleRSMatrix(const ScaleX, ScaleY: Single) function
- Added CreateTranslateRSMatrix(const DX, DY: Single) function
- Added CenterRect( var R: TRSRect; const Bounds: TRSRect ) function
- Added OffsetRSRect(var R: TRSRect; DX, DY: Single) function
- Added RSRectHeight( const ARect: TRSRect ) function
- Added RSRectWidth( const ARect: TRSRect ) function
- Added RSInflateRect( var R: TRSRect; const DX, DY: Single ) procedure
- Added WrapCanvasText function for NEXTGEN compiler
- Added RSClosePolygon constant
- Added RSIdentityMatrix constant
- Changed TRSBitByteArray type to be TBytes type with Delphi 2009+
- Removed TRSEncodedBits.AsString: AnsiString property
- Modified TRefCount reference count code for NEXTGEN compiler
- Modified TRSVector (Class) reference count code for NEXTGEN compiler
- Added TGStringHashTable.ToArray: TStringArray method
- Removed GLists unit dependencies (mostly TGCustomLinkedList use)
- Modified TGHashtableEnumerator reference count code for NEXTGEN compiler
- Added TIStringHashTable.ToIntfArray: TIntfArray method (InterfaceCollections.pas)
- Modified TIFixedList reference count code for NEXTGEN compiler
- Modified TGInterfaceList reference count code for NEXTGEN compiler
- Removed TGTextStream.Put(AnsiChar) for NEXTGEN compiler
- Fixed TGTextStream.WriteArgs method for NEXTGEN compiler
- Changed base class of TBaseStreamTokenList from TIList to
TInterfaceListPersistent
- Modified TBaseStreamToken reference count code for NEXTGEN compiler
- Modified pidRS_PLATFORM_SUPPORT for XE4
- Added pidRS_DESKTOP_SUPPORT constant
- Added pidRS_MOBILE_SUPPORT constant
Note: This release dramatically changed support classes in order to
better support XE4 Mobile compiler features: Automatic Reference Counting,
TList deprecation, and suggested deprecation of Pointer type. It makes
heavy use of generics instead of older TList-type and TGHashTable classes
which used pointers. A lot of effort has gone into making the new classes
support the same methods and properties of the old classes. However,
there may be changes needed to be made to your code. Of special note:
- InterfaceCollections unit has been replaced with RSInterfaceCollections unit
- Contnrs.pas, GLists.pas, and GHashTable.pas have been replaced with
System.Generics.Collections.pas or RSGenerics.Collections.pas
The old units are still available but are not used.
-------------------------------------------------------------------
January 27, 2012 Version 5.2.1
- Added HaveNagged function
- Updated for Rad Studio XE2, Update 2
-------------------------------------------------------------------
November 25, 2012 Version 5.2
- Updated Help File including changing popup links to
normal links and updated hierarchy topics
- Added TExtCanvasPixel type for increased precision in CanvasXXX functions
- Changed CanvasDiv, CanvasTrunc, and CanvasRound to use higher-precision
data types (doubles and Int64)
- Added ProgressCircle function, which was removed until updated for VCL and FMX
- Added ProgressPie function, which was removed until updated for VCL and FMX
- Added ProgressRect function, which was removed until updated for VCL and FMX
- Added IndexToColor function, which was removed until updated for VCL and FMX
- Added overloaded GetSelStart( Strings: String; Index: Integer ) function,
which should be used with RichEdits 2.0+ (D2009+)
- Added overloaded GetSelStartIndex( Strings: String; Index: Integer ) function,
which should be used with RichEdits 2.0+ (D2009+)
- Added CopyRichEditRTF function, which uses Peter Belows'
GetRTFSelection and PutRTFSelection functions
- Fixed SortFormattedStrings function for later versions of Delphi
which use RICHEDIT 2.0+
- Added CreateMenuItemChildren function
- Added SortGrid functions
-------------------------------------------------------------------
October 21, 2012 Version 5.1
- Added RenameCopy function to HelperFunctions.pas
-------------------------------------------------------------------
October 08, 2012 Version 5.0.1
- Fixed bug in WriteStringToStream where the string was not
encoded properly before writing
-------------------------------------------------------------------
September 16, 2012 Version 5.0
- Added RAD Studio XE3 Support
- Fixed MAJOR illusive bug in TGInterfaceList.Insert method, which
was messing up the reference count of inserted items
- Changed TRSStroke to descend from TStrokeBrush in XE3+
- Changed TRSStroke.StrokeXXX properties to TRSStroke.XXX to
match the XE3 TStrokeBrush class
- Removed Canvas parameter from TRSStroke constructor and
code that uses Canvas
- Redefined RSGraphics clxColor constants to use TAlphaColors.White, etc instead
of claWhite which XE3 deleted (sigh)
-------------------------------------------------------------------
June 03, 2012 Version 5.0 EEP3
- Updated for Rad Studio XE2, Update 4, HotFix 1
-------------------------------------------------------------------
April 22, 2012 Version 5.0 EEP2
- Fixed bug in TFMXCanvasHelper.FillText method for drawing with angles
- Added default values for TRSStroke.StrokeCap, StrokeDash, and
StrokeJoin properties so that they will not always be streamed out
- Fixed TFMXCanvasHelper.RoundRect method for flipped rectangles
- Added more clxColor constants
- Added TRSColorScheme type
- Added TColorList constants for the different color schemes
- Added PointInPath functions
- Added ScaleRect( TRect, Single, Single ) function
- Added ScalePoints functions
- Added overloaded CenterPoint( TRSPoints/TPoints ) functions
- Added Filled parameter for DrawBezierPolygon function
- Added Opacity parameter for DrawBezierPolygon function (FMX Only)
- Updated Help file
-------------------------------------------------------------------
March 18, 2012 Version 5.0 EEP1
- Added support for FireMonkey
- RSCommonDxx.dpk is VCL-Free Common Library
- RSVclCommonDxx.dpk is VCL-specific Common Library
- RSFMXCommonDxx.dpk is FMX-specific Common Library
- Removed Vcl dependencies from units
- Created FMX.RS.DeltaFont unit, which includes and conditionally compiles RSDeltaFont
unit to handle FMX-specific support
- Created FMX.RS.Graphics unit, which includes and conditionally compiles RSGraphics
unit to handle FMX-specific support
- Created FMX.RS.CanvasHelper unit, which includes a class helper
to add Vcl-like methods to the FMX TCanvas (easier cross-platform code writing)
- Removed RSHintWindow unit from RSCommonDxxx (VCL Dependency) library and
added it to RSVclCommonDxx library
- Removed RSDeltaFont unit from RSCommonDxxx (VCL Dependency) library and
added it to RSVclCommonDxx library
- Removed RSGraphics unit from RSCommonDxxx (VCL Dependency) library and
added it to RSVclCommonDxx library
- Created new RSVclHelperFunctions unit, which contains Vcl-specific helper functions
- Created new RSVclGraphics unit, which contains Vcl-specific graphics functions
- Modified RSGraphics unit to add support for Vcl and FMX and make Vcl/FMX code writing easier
- Fixed bug in DrawShape for ss3DCircle where an ellipse was drawn
instead
- Fixed bug in DrawShape where the shape would be flipped if the
rectangle was not correctly specified (e.g., Left > Right)
- Fixed bug in DrawPieSlice where the slice would be flipped if the
rectangle was not correctly specified (e.g., Left > Right)
- Fixed Divide by Zero bug in OffsetPoint function
- Added RSPointsToPoints and PointsToRSPoints functions
- Added Opacity parameter for DrawShape function (FMX Only)
- Added Opacity parameter for DirectionGradient function (FMX Only)
Note: LineSize is ignored in FMX for diagonal gradients
- Added Opacity parameter for LineGradient function (FMX Only)
- Added Opacity parameter for EllipseGradient function (FMX Only)
- Added Opacity parameter for RectGradient function (FMX Only)
- Added Opacity parameter for DrawArrow functions (FMX Only)
- Added Opacity parameter for DrawPieSlice functions (FMX Only)
- Added SetGradientColors function (FMX Only)
- Added DrawGradient function (FMX Only)
- Added TVclCanvasHelper, class helper for TCanvas (VCL), which
adds functions that make the transition to FMX and back easier
- Added TCanvasRect type that changes for FMX(TRectF)/Vcl(TRect)
- Added TCanvasPoint type that changes for FMX(TPointF)/Vcl(TPoint)
- Added TCanvasPoints type that changes for FMX(Array of TPointF)/Vcl(Array of TPoint)
- Added TCanvasSize type that changes for FMX(TSizeF)/Vcl(TSize)
- Added TCanvasColor type that changes for FMX(TAlphaColor)/Vcl(TColor)
- Added TColors type that changes for FMX(array of TAlphaColor)/Vcl(array of TColor)
- Added TCanvasPixel type that changes for FMX(Single)/Vcl(Integer)
- Added clxXXX colors constants that change for FMX/Vcl
- Added CanvasRect function that changes for FMX/Vcl
- Added CanvasPoint function that changes for FMX/Vcl
- Added CanvasMax function that changes for FMX/Vcl
- Added CanvasMin function that changes for FMX/Vcl
- Added CanvasRound function that changes for FMX/Vcl
- Added CanvasTrunc function that changes for FMX/Vcl
- Added CanvasDiv function that changes for FMX/Vcl
- Added CanvasCenterPoint function that changes for FMX/Vcl
- Added CalculateHash functions to HelperFunctions (moved from IEHelperFunctions)
- Added ContainsCharacters function to HelperFunctions (moved from IEHelperFunctions)
- Added FloatEquals functions to HelperFunctions (moved from IEHelperFunctions)
- Added StringFilter function to HelperFunctions (moved from IEHelperFunctions)
- Added ReadPersistent function to HelperFunctions (moved from IEHelperFunctions)
- Added SetToString function to HelperFunctions (moved from IEHelperFunctions)
- Added StringToSet function to HelperFunctions (moved from IEHelperFunctions)
- Added SwapEvents function to HelperFunctions (moved from IEHelperFunctions)
- Added WritePersistent function to HelperFunctions (moved from IEHelperFunctions)
- Added SInvalidSetItem resourcestring to HelperFunctions (moved from IEHelperFunctions)
- Defined pidRS_PLATFORM_SUPPORT constant
-------------------------------------------------------------------
December 11, 2011 Version 4.0
- Added support for Rad Studio XE2, Win32 and Win64
- Added RSMaxListSize constant
- Changed TRSTag to be a NativeInt type
- Added TRSNativeInt type (.NET=Integer, WinXX=NativeInt)
- Added TRSNativeFloat type (Win32=Single, Win64=Double)
- Added TRSDWordFiller record type for filling records for
changing 32bit/64size size records
- Added padding for 64-bit message records
- Changed TRSGraphNode.InternalTag from Integer to TRSTag type
- Changed uses of MaxListSize to MaxInt div SizeOf(TYPE) - 1
- Fixed Pointer to Integer Casts to use TRSNativeInt
- Changed TGGraphNode.WorkTag from Integer to TRSTag type
- Changed uses of MaxListSize to RSMaxListSize
- Changed TGValue.AsFloat to be TRSNativeFloat (Win32=Single,Win64=Double)
- Changed TRegExState.NextStateX to TRSNativeInt
-------------------------------------------------------------------
September 29, 2010 Version 3.9
- Added support for Rad Studio XE
-------------------------------------------------------------------
Sept 7, 2009 Version 3.8
- Added support for Delphi 2010
- Changed help file(s) from WinHelp to HTML Help. Note that there
is a known issue with the display to Delphi links (available with
WinHelp but not HTML Help)
-------------------------------------------------------------------
Jan 31, 2009 Version 3.7
- Added support for Delphi 2009 (Final)
- Turned off range checks around ColorToRGB function to avoid range
check errors
- Fixed DrawShape for beveled rectangles
- Added ss3DRectangle, ss3DEllipse,
ss3DDiamond, ss3DLeftTriangle, ss3DRightTriangle,
ss3DUpTriangle, ss3DDownTriangle, ss3DRoundRect,
ss3DSquare, ss3DCircle, ss3DRoundSquare to TRSShapeStyle
- Added Frame3DExt function for creating the 3D frame for an rectangle
- Added Frame3DEllipse function for creating the 3D frame for an ellipse
- Added TRSShapeStyles type
- Added ShapeStyles3D constant
- Added InCenterPoint function to get InCenter Point of a triangle
- Changed DrawShape functions to return the non-beveled part of the
drawing rectangle
- Added CenterRect function, which creates a rectangle centered around a point
- Fixed IntersectRect function to detect intersection when intersection
is single point that equals
-------------------------------------------------------------------
Dec 21, 2008 Version 3.7B2
- Changed Install Directory to C:\Comps\RiverSoftAVG to reduce chances
of too long path names
- Changed behavior of TGTextStream.SetEncoding method to set PreambleStreamed
flag to True if new encoding <> nil (Assumption is that if you already
know the encoding, you read the preamble or it doesn't exist (e.g., coming
from a string control))
- Added optional Encoding parameter to TGTextStream constructors
- Fixed behavior where TGTextStream detects if it is working with a
TStringStream and then uses its encoding
- Added optional Encoding parameter to WriteStringToStream function
- Added WritePreambleToStream function
- Added RSUpperCase and RSLowerCase inline functions to handle
correct calls for .NET or Win32
- Changed AnsiUpper/LowerCase to use inline RSUpper/LowerCase which
uses the correct call to avoid warnings in .NET, but still
uses AnsiXXX for Win32
- Added overloaded constructor to TRSStringStream for D2009
- Changed TRSStringStream to use TEncoding.Unicode for default
encoding
-------------------------------------------------------------------
Nov 23, 2008 Version 3.7B1
- Changed AnsiPos calls to Pos calls
- Added CharInSet, IsLetter, IsLetterOrDigit, IsUpper, IsLower and IsDigit
functions for pre-Delphi 2009 compilers
- Added IsNumberChar function
- Added IsNumberSymbol function
- Fixed TGTextStream.GetChar method to correctly read 1 character without
causing a PutBack overflow exception
- Fixed access violation in TGTextStream.GetChar for D2009 by adding
check for reading 0 bytes
- Added set expressions to use CharInSet
- Changed Upper/LowerCase to AnsiUpper/LowerCase, because the Ansi version
handles Unicode (go figure)
-------------------------------------------------------------------
Nov 16, 2008 Version 3.7B0
- Added support for Delphi 2009
- Modified classes to avoid warnings about collisions with
new methods added to TObject (D2009/.NET)
- Added tkStringType to distinguish between pre-Delphi2009 default
string type (tkString) and post-Delphi2009 default string type
(tkUString)
- Added TRegExChar and TRegExString, which are AnsiChar and AnsiString
for UNICODE (.NET and D2009) and Char and String for Win32
- Changed all occurrences of AnsiChar and AnsiString to use
TRegExChar and TRegExString respectively
- Fixed small warning generated in D2009 in RotateFont function
- Fixed code for VType's of Int64, WideString, and UnicodeString in TGValue
- Added TGCustomValue.AsWideString property and methods
- Fixed HelperFunctions.WriteStringToStream to handle unicode strings
- Modified stream classes to work with Unicode and D2009
- Modified stream classes to avoid warnings about collisions with
new methods added to TObject (D2009/.NET)
- Updated TGTextStream.WriteArgs to handle Int64, WideStrings and
Unicode strings
- Fixed bug in TGBufferStream.FillBuffer which would cause subsequent PutBack
call to fail if at end of stream
- Added SPreamblePastEof resource string
- Changed return type of TGBufferStream.FillBuffer from boolean to
integer
- Added TGBufferStream.PrepareBuffer method
- Added overloaded TGBufferStream.PutBack(Byte) and PutBack(Char/WideChar)
methods
- Added ability for TGTextStream to read/write non-default encoded
files in Delphi 2009 or later
- Added protected TGTextStream.PreambleSize method and PreambleStreamed
property
- Added TGTextStream.Encoding property for Delphi 2009
- Changed return type TGTextStream.GetChar method to Char from AnsiChar
- Added overloaded TGTextStream.GetChar(Char) method
- Added TGTextStream.SeekExcludePreamble method
-------------------------------------------------------------------
Feb 09, 2008 Version 3.6.2
- Added PreserveSignBit property and code to encode/decode
numeric values with or without the sign bit
- Fixed GetAsFloat/Double and SetAsFloatDouble to encode floating
point values properly (or attempt to) even when the len is
less than 32 bits
-------------------------------------------------------------------
Oct 06, 2007 Version 3.6.1
- Added RAD Studio 2007 .NET Support
- Added RAD Studio 2007 support to installer
- Added TSortedCollection to Structures.pas
-------------------------------------------------------------------
Jun 23, 2007 Version 3.6
- Added Delphi 2007 support to installer
- Added support for the for-in language construct in TGGraphNode (Edges)
- Added support for the for-in language construct in TGLabelGraph (Nodes)
- Added support for the for-in language construct in TGLabelGraph (Nodes)
- Added support for the for-in language construct in TGCustomLinkedList
- Overrode TGStringQueue.Assign method to correctly copy TStrings
into the queue
- Added support for the for-in language construct in TGCustomHashTable
class (Keys) by adding GetEnumerator public method and adding
GetCurrent and MoveNext methods to TGHashTableEnumerator
- Added support for the for-in language construct in TGStringHashTable
class (Keys) by adding GetEnumerator public method and adding
GetCurrent and MoveNext methods to TGHashTableEnumerator
- Added support for the for-in language construct in TIHashTable
- Added support for the for-in language construct in TIStringHashTable
- Added support for the for-in language construct in TIFixedList
- Added support for the for-in language construct in TGInterfaceList
- Added support for the for-in language construct in TIList
- Added DrawTextLabel function in RSGraphics.pas
- Added GetMultilineTextHeight function in RSGraphics.pas
- Added WrapCanvasText functions in RSGraphics.pas
- Improved installer
-------------------------------------------------------------------
Feb 8, 2006 Version 3.5
- Added IsMatchStr and IsMatchText function to HelperFunctions.pas
- Added FindMatchStr and FindMatchText function to HelperFunctions.pas
-------------------------------------------------------------------
Dec 22, 2005 Version 3.5b9
- Fixed hang bug in TGTextStream.GetChar introduced in Delphi 2006 by
initializing result in the GetChar instead of the Read. (Thanks P.G.)
- Added RSAnsiContainsStr, RSAnsiContainsText, ExtractWord,
TitleCase, and overloaded FindTreeNode functions to HelperFunctions.pas
- Added AnsiStartsStr, AnsiEndsStr, AnsiStartsText, and
AnsiEndsText functions to HelperFunctions.pas for Delphi 5
- Added TRSPoints to RSGraphics
- Added TConnectionPoint to RSGraphics
- Added GetPointOnRect and GetRSPointOnRSRect functions to RSGraphics.pas
-------------------------------------------------------------------
Dec 11, 2005 Version 3.5b8
- Official release for Delphi 2006
-------------------------------------------------------------------
Nov 22, 2005 Version 3.5b7
- Fixed Common.hlp file
- Fixed "See Also" topics which had disappeared
- Cleaned up Table of Contents
-------------------------------------------------------------------
Nov 8, 2005 Version 3.5b6
- Installers have had a massive overhaul
- Compiled files are now installed to <INSTALLDIR>\Bin\W32\Dxx or
<INSTALLDIR>\Bin\NET\Dxx and path is updated
WARNING: BE SURE TO UNINSTALL PREVIOUS FILES WHICH MAY BE IN
$(DELPHI)\Projects\Bpl DIRECTORY
- Attempts to detect if evaluation or full versions are being
installed and warns about incompatibilities
- Smarter updates of registry
- Added missing registry updates (Package Search Path, Namespace Search Path, etc)
- Added more text to help file
-------------------------------------------------------------------
Oct 18, 2005 Version 3.5b5
- Fixed distribution to include some missing files
-------------------------------------------------------------------
Oct 5, 2005 Version 3.5b4
- Fixed bug in TGCustomLinkedList.Insert where LastAccessedIndex
and LastAccessedNode were not always getting updated correctly
- Added NumberOfOnes and NumberOfZeros methods to TRSEncodedBits
- Added Arrow Width to DrawArrow routine in RSGraphics unit
-------------------------------------------------------------------
Sept 26, 2005 Version 3.5b3
- Changed Win32 VCL package numbers to 3.5
-------------------------------------------------------------------
Aug 31, 2005 Version 3.5b2
- Modified properties and added accessor methods of interfaces to
use underscore in order to get rid of annoying .NET hint
-------------------------------------------------------------------
June 27, 2005 Version 3.5b1
- Changed RSGraphics.TRSPoint and TRSRect to be packed records
- Changed RSGraphics.TRSPoint and TRSRect to be safe types in .NET
- Fixed index caching bugs with hash table, would cause access violations
in certain situations
-------------------------------------------------------------------
June 2005 Version 3.5b0
- Finished modificatons to work with .NET
- Created RSConstants.pas file, which includes basic types and constants.
Some of these constants and types were moved from IEConsts.pas and
FuzzyConsts.pas
Among the most important new types:
- TRSPointerType, which equals Pointer in Win32 and TObject in .NET
- TRSStringPointerType, which equals PChar in Win32 and String in .NET
- Modified most files to:
- Include RSDefines.inc
- Include RSConstants.pas
- Changed all methods and properties that use IUnknown interface to use
IInterface interface. Added IInterface interface for Delphi 5 support
- Changed all QueryInterface calls to use Supports functions.
- Removed reference counting code for .NET (not needed)
- Changed ToString properties to AsString and GetToString methods to
ToString to sync better with .NET (in which all objects have ToString
method)
- Changed Tag properties to be of TRSTag type (Win32=Integer;.NET=Variant)
- Introduced TxxxPersistent class to get around a delphi
compiler bug with class helpers (QC report #11019)
- Added inherited Creates calls to constructors for
compatibility with .NET
- Deleted AfterConstruction and BeforeDestruction methods (for .NET)
- Extracted icons from DCR files to create assembly bitmap files
for design-time icons in .NET
- Conditional compiled IUnknown methods (_addref, _release...)
because they are not needed with .NET
RiverSoftAVG Common Classes Library (GCollections package in Delphi 5, 6, and 7;
RSCommon package in Delphi 2005 (Win32) and
RiverSoftAVG.Common assembly in VCL.NET)
- Created TRSEncodedBits class (in RSEncodedBits.pas), a TBits descendant
with methods to encode/decode simple types into the TBits
- Modified InterfaceCollections.pas
- Modified TGInterfaceList to descend from TPersistent
- Modified descendants of TGInterfaceList to correctly override
methods
- Modified list classes to use a dynamic arrays instead of a
pointer to such an array (as used for Win32). The pointer
implementation was left for Win32 since it is faster than the
dynamic array implementation
- Changed DEMO out of memory errors to use standard Exception,
instead of EOutOfMemory exception, which (contrary to help file)
seems to have disappeared from the SysUtils unit
- Modified HelperFunctions.pas
- Added WriteStringToStream function
- Added SameValue and Supports functions for Delphi 5
- Added CreateObjectClass and ClonePersistentClass methods
- Modified GStreams.pas
- Added Close method to TGBufferStream (useful for .NET)
- TGSpecialFiler is not available for .NET (because can't crack
protected methods of TReader/TWriter)
- Modified GRegularExpression.pas
- Modified String references to AnsiString references (for .NET
compatibility). The Regular Expression object must use
AnsiString (one byte characters) because it uses set operations
which do not work with wide chars.
- Modified GParser.pas
- Changed StrScan calls to Pos, even though StrScan is faster it is not
.NET compatible
- Modified GLists.pas
- Added TQOrderedList class, which is base class for the TQxxx
stacks and queues, and TQOrderedListClass type. These classes
are useful because they have a virtual constructor, unlike
Borland's classes
- Modified GHashtable.pas
- Modified TGCustomHashTable to use a dynamic array of hash
table entries (THashtableEntries) instead of a pointer to
such an array (as used for Win32). The pointer implementation
was left for Win32 since it is faster than the dynamic array
implementation
- Modified GGraph.pas
- Changed TGCustomGraph.AddNode method visibility from protected
to public (.NET does not like changing visiblity with methods)
- Modified DataStructures.pas
- Added TFloatHeapElement, TFloatHeap, and TFloatPriorityQueue classes
- Changed TPriorityList.OrderedListClass to use GLists.TQOrderedList
instead of Borland's classes because we can't get to the items of the
list quickly
- Modified Structures.pas
- Added overloaded AddObject method to TGStringList
- Added RSGraphics.pas, moved from internal development package to common
classes library. Modified RSGraphics.pas as well:
- Added RSCenterPoint functions
- Added DrawPieSlice procedure
- Added DrawArrow procedure and TArrowOption types
- Changed Gradient functions to accept an open array of TColor,
instead of TColors
- Moved TObjectSize from Game.pas to RSGraphics.pas
- Created hierarchy of TRSCustomRect, TRSObjectRect, and TObjectSize
- Added TRSRect, TRSPoint and functions to manipulate them
- Added overloaded DrawShape procedures and TRSShapeStyle type
- Fixed LineGradient to handle "reversed" TRects (left > Right, etc)
- Fixed RotateFont to change font name if font is not a true type
(and wouldn't thus rotate)
- Added GetRotatedTextExtent function (Delphi's Canvas.TextExtent
does not work for rotated fonts)
-------------------------------------------------------------------
March 2005 Version 3.4
- Added RSConsts.pas and DataStructures.pas to package
-------------------------------------------------------------------
January 2005 Version 3.3
- Modified to work with Delphi 5, 6, 7, and 2005 (Win32)
- Added RSDefines.inc to simplify updates for new
versions of Delphi
- Modified source files to use RSDefines.inc
- Renamed GCollections package to RSCommon package for Delphi 2005 ONLY
- Modified source files to work with .NET (Incomplete)
-------------------------------------------------------------------
May 2004 Version 3.2
- Added RSGraphics and RSVector units to Common library
-------------------------------------------------------------------
March 2004 Version 3.1 (First Separated History for Common Library)
- Added code to TGCollection and TGCollectionItem to attempt to
mimic notifies like Delphi 6 and 7 collections
- Added IVector interface
- Changed ILocation interface to descend from ICloneable
- Installation script is much smarter about managing the different Delphi versions
|