RCCL Version History
Home Up Feedback Search

Products
Order
Downloads
Support
Articles & Tips
Recommended Links
About

 
 

 
  Other Links:
Delphi CodeSmith Blog 

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
 

Send mail to webmasterNO@SPAMRiverSoftAVG.com with questions or comments about this web site.
Copyright © 2002-2023 RiverSoftAVG
Last modified: November 20, 2023