ISVG Interface
Unit: SVGInterfaces
Description
ISVG is the core interface for SVG document manipulation and rendering. It is implemented by factory-specific classes (Image32, Skia4Delphi, Direct2D, SVGMagic) and provides a unified API regardless of the underlying rendering engine.
Properties
Size Properties (Read-Only)
pascal
property Width: Single;
property Height: Single;Natural size of the SVG document.
Rendering Properties
pascal
property Opacity: Single; // 0.0 to 1.0
property GrayScale: Boolean;
property FixedColor: TColor;
property ApplyFixedColorToRootOnly: Boolean;Content
pascal
property Source: string;SVG XML source code.
Methods
State
pascal
function IsEmpty: Boolean;
procedure Clear;File/Stream Operations
pascal
procedure SaveToStream(Stream: TStream);
procedure SaveToFile(const FileName: string);
procedure LoadFromStream(Stream: TStream);
procedure LoadFromFile(const FileName: string);Rendering
pascal
procedure PaintTo(DC: HDC; R: TRectF; KeepAspectRatio: Boolean = True);Global Functions
Factory Management
pascal
function GlobalSVGFactory: ISVGFactory;
procedure SetGlobalSvgFactory(const AFactory: ISVGFactory);Factory Getters
pascal
function GetImage32SVGFactory: ISVGFactory;
function GetD2DSVGFactory: ISVGFactory;
function GetSkiaSVGFactory: ISVGFactory;
function GetSVGMagicFactory: ISVGFactory;Examples
Direct SVG Usage
pascal
var
SVG: ISVG;
begin
SVG := GlobalSVGFactory.NewSvg;
SVG.LoadFromFile('icon.svg');
SVG.FixedColor := clBlue;
SVG.Opacity := 0.8;
SVG.PaintTo(Canvas.Handle, TRectF.Create(0, 0, 100, 100));
end;Change Rendering Engine
pascal
// Switch to Skia4Delphi
SetGlobalSvgFactory(GetSkiaSVGFactory);
// All new SVG objects will use Skia
var SVG := GlobalSVGFactory.NewSvg;