This PR makes some smaller performance optimizations.
Removes one (hidden) Sqrt() call in TSvgRadialGradientRenderer
Optimizes TImage32.FillRect by using FillChar if possible
Makes TBaseElement.DrawChildren() non-virtual and adds a "const" for the TDrawData parameter (no copy on the stack is created for TDrawData)
Improves CanUseBoxDownsampler (remove of divisions)
Improves the speed of RectHasTransparency if it is called for a full-width check
Replaces PARGB(@PStaticColor32Array(c)[i]) with PStaticARGBArray(c)[i] what allows Delphi to remove an unnecessary Load Effective Address (LEA) instruction
Changes array index datatypes to NativeInt, allowing the x64 compiler to remove the sign-extension instruction before array accesses.
Improves CopyInternal/CopyInternalLine performance by handling the case where a single Move() or BlendLineFunc() call can be used.
Adds a ConcatPaths() function that doesn't need to reallocate the resulting array for every appended TPathD
Improves the path flattening by caching the flattend paths and recreating them only if necessary
Fixes a bug in TSvgPathSeg.DescaleAndOffset which ignored the result of TranslatePoint
This PR makes some smaller performance optimizations.
PARGB(@PStaticColor32Array(c)[i])
withPStaticARGBArray(c)[i]
what allows Delphi to remove an unnecessary Load Effective Address (LEA) instruction