unit websvg; {$MODE ObjFPC} {$H+} {$MODESWITCH externalclass} interface uses SysUtils, web, JS; type // Forward class TJSSVGSVGElement = class; TJSSVGNumberList = class; TJSSVGAngle = class; TJSSVGAnimatedAngle = class; TJSSVGAnimatedBoolean = class; TJSSVGAnimatedEnumeration = class; TJSSVGAnimatedInteger = class; TJSSVGAnimatedLength = class; TJSSVGAnimatedLengthList = class; TJSSVGAnimatedNumber = class; TJSSVGAnimatedNumberList = class; TJSSVGAnimatedPreserveAspectRatio = class; TJSSVGAnimatedRect = class; TJSSVGAnimatedString = class; TJSSVGAnimatedTransformList = class; TJSSVGAnimateElement = class; TJSSVGAnimateMotionElement = class; TJSSVGAnimateTransformElement = class; TJSSVGAnimationElement = class; TJSSVGCircleElement = class; TJSSVGClipPathElement = class; TJSSVGComponentTransferFunctionElement = class; TJSSVGDefsElement = class; TJSSVGDescElement = class; TJSSVGDiscardElement = class; TJSSVGDocument = class; TJSSVGElement = class; TJSSVGEllipseElement = class; TJSSVGFEBlendElement = class; TJSSVGFEColorMatrixElement = class; TJSSVGFEComponentTransferElement = class; TJSSVGFECompositeElement = class; TJSSVGFEConvolveMatrixElement = class; TJSSVGFEDiffuseLightingElement = class; TJSSVGFEDisplacementMapElement = class; TJSSVGFEDistantLightElement = class; TJSSVGFEDropShadowElement = class; TJSSVGFEFloodElement = class; TJSSVGFEFuncAElement = class; TJSSVGFEFuncBElement = class; TJSSVGFEFuncGElement = class; TJSSVGFEFuncRElement = class; TJSSVGFEGaussianBlurElement = class; TJSSVGFEImageElement = class; TJSSVGFEMergeElement = class; TJSSVGFEMergeNodeElement = class; TJSSVGFEMorphologyElement = class; TJSSVGFEOffsetElement = class; TJSSVGFEPointLightElement = class; TJSSVGFESpecularLightingElement = class; TJSSVGFESpotLightElement = class; TJSSVGFETileElement = class; TJSSVGFETurbulenceElement = class; TJSSVGFilterElement = class; TJSSVGFilterPrimitiveStandardAttributes = class; TJSSVGFitToViewBox = class; TJSSVGForeignObjectElement = class; TJSSVGGElement = class; TJSSVGGeometryElement = class; TJSSVGGradientElement = class; TJSSVGGraphicsElement = class; TJSSVGImageElement = class; TJSSVGLength = class; TJSSVGLinearGradientElement = class; TJSSVGLineElement = class; TJSSVGMarkerElement = class; TJSSVGMaskElement = class; TJSSVGMatrix = class; TJSSVGMetadataElement = class; TJSSVGMPathElement = class; TJSSVGNumber = class; TJSSVGPathElement = class; TJSSVGPatternElement = class; TJSSVGPoint = class; TJSSVGPolygonElement = class; TJSSVGPolylineElement = class; TJSSVGPreserveAspectRatio = class; TJSSVGRadialGradientElement = class; TJSSVGRect = class; TJSSVGRectElement = class; TJSSVGScriptElement = class; TJSSVGSetElement = class; TJSSVGStopElement = class; TJSSVGStyleElement = class; TJSSVGSwitchElement = class; TJSSVGSymbolElement = class; TJSSVGTests = class; TJSSVGTextContentElement = class; TJSSVGTextElement = class; TJSSVGTextPathElement = class; TJSSVGTextPositioningElement = class; TJSSVGTitleElement = class; TJSSVGTransform = class; TJSSVGTSpanElement = class; TJSSVGUnitTypes = class; TJSSVGURIReference = class; TJSSVGUseElement = class; TJSSVGViewElement = class; TJSSVGZoomAndPan = class; type DOMStringMap = class external name 'DOMStringMap' private function GetItem(name: String): String; external name '[]'; procedure SetItem(name: String; value: String); external name '[]'; public //procedure (name: String); property Items[name: String]: String read GetItem write SetItem; default; end; { -------------------------------------------------------------------- TJSSVGElement --------------------------------------------------------------------} TJSSVGElement = class external name 'SVGElement'(TJSElement) private FclassName: TJSSVGAnimatedString; external name 'className'; Fdataset: DOMStringMap; external name 'dataset'; Fstyle: TJSCSSStyleDeclaration; external name 'style'; FownerSVGElement: TJSSVGSVGElement; external name 'ownerSVGElement'; FviewportElement: TJSSVGElement; external name 'viewportElement'; public tabIndex: Integer; procedure focus; procedure blur; property className: TJSSVGAnimatedString read FclassName; property dataset: DOMStringMap read Fdataset; property style: TJSCSSStyleDeclaration read Fstyle; property ownerSVGElement: TJSSVGSVGElement read FownerSVGElement; property viewportElement: TJSSVGElement read FviewportElement; end; { -------------------------------------------------------------------- TJSSVGGraphicsElement --------------------------------------------------------------------} TJSSVGGraphicsElement = class external name 'SVGGraphicsElement' (TJSSVGElement) private Ftransform: TJSSVGAnimatedTransformList; external name 'transform'; FnearestViewportElement: TJSSVGElement; external name 'nearestViewportElement'; FfarthestViewportElement: TJSSVGElement; external name 'farthestViewportElement'; public function getBBox: TJSSVGRect; function getCTM: TJSSVGMatrix; function getScreenCTM: TJSSVGMatrix; property transform: TJSSVGAnimatedTransformList read Ftransform; property nearestViewportElement: TJSSVGElement read FnearestViewportElement; property farthestViewportElement: TJSSVGElement read FfarthestViewportElement; end; { -------------------------------------------------------------------- TJSSVGSVGElement --------------------------------------------------------------------} TJSSVGSVGElement = class external name 'SVGSVGElement' (TJSSVGGraphicsElement) private Fx: TJSSVGAnimatedLength; external name 'x'; Fy: TJSSVGAnimatedLength; external name 'y'; Fwidth: TJSSVGAnimatedLength; external name 'width'; Fheight: TJSSVGAnimatedLength; external name 'height'; FcurrentTranslate: TJSSVGPoint; external name 'currentTranslate'; public currentScale: Double; function getIntersectionList(rect: TJSSVGRect; referenceElement: TJSSVGElement): TJSNodeList; function getEnclosureList(rect: TJSSVGRect; referenceElement: TJSSVGElement): TJSNodeList; function checkIntersection(element: TJSSVGElement; rect: TJSSVGRect): boolean; function checkEnclosure(element: TJSSVGElement; rect: TJSSVGRect): boolean; procedure deselectAll; function createSVGNumber: TJSSVGNumber; function createSVGLength: TJSSVGLength; function createSVGAngle: TJSSVGAngle; function createSVGPoint: TJSSVGPoint; function createSVGMatrix: TJSSVGMatrix; function createSVGRect: TJSSVGRect; function createSVGTransform: TJSSVGTransform; function createSVGTransformFromMatrix(matrix: TJSSVGMatrix): TJSSVGTransform; function getElementById(elementId: string): TJSElement; function suspendRedraw(maxWaitMilliseconds: NativeInt): NativeInt; procedure unsuspendRedraw(suspendHandleId: NativeInt); procedure unsuspendRedrawAll; procedure forceRedraw; procedure pauseAnimations; procedure unpauseAnimations; function animationsPaused: boolean; function getCurrentTime: Double; procedure setCurrentTime(seconds: Double); property x: TJSSVGAnimatedLength read Fx; property y: TJSSVGAnimatedLength read Fy; property width: TJSSVGAnimatedLength read Fwidth; property height: TJSSVGAnimatedLength read Fheight; property currentTranslate: TJSSVGPoint read FcurrentTranslate; end; { -------------------------------------------------------------------- TJSSVGAElement --------------------------------------------------------------------} TJSSVGAElement = class external name 'SVGAElement' (TJSSVGGraphicsElement) private Ftarget: TJSSVGAnimatedString; external name 'target'; public property target: TJSSVGAnimatedString read Ftarget; end; { -------------------------------------------------------------------- TJSSVGAngle --------------------------------------------------------------------} TJSSVGAngle = class external name 'SVGAngle' private FunitType: Cardinal; external name 'unitType'; public const SVG_ANGLETYPE_UNKNOWN = 0; SVG_ANGLETYPE_UNSPECIFIED = 1; SVG_ANGLETYPE_DEG = 2; SVG_ANGLETYPE_RAD = 3; SVG_ANGLETYPE_GRAD = 4; Public value: Double; valueInSpecifiedUnits: Double; valueAsString: string; procedure newValueSpecifiedUnits(unitType: Cardinal; valueInSpecifiedUnits: Double); procedure convertToSpecifiedUnits(unitType: Cardinal); property unitType: Cardinal read FunitType; end; { -------------------------------------------------------------------- TJSSVGAnimatedAngle --------------------------------------------------------------------} TJSSVGAnimatedAngle = class external name 'SVGAnimatedAngle' private FbaseVal: TJSSVGAngle; external name 'baseVal'; FanimVal: TJSSVGAngle; external name 'animVal'; public property baseVal: TJSSVGAngle read FbaseVal; property animVal: TJSSVGAngle read FanimVal; end; { -------------------------------------------------------------------- TJSSVGAnimatedBoolean --------------------------------------------------------------------} TJSSVGAnimatedBoolean = class external name 'SVGAnimatedBoolean' private FanimVal: boolean; external name 'animVal'; public baseVal: boolean; property animVal: boolean read FanimVal; end; { -------------------------------------------------------------------- TJSSVGAnimatedEnumeration --------------------------------------------------------------------} TJSSVGAnimatedEnumeration = class external name 'SVGAnimatedEnumeration' private FanimVal: Cardinal; external name 'animVal'; public baseVal: Cardinal; property animVal: Cardinal read FanimVal; end; { -------------------------------------------------------------------- TJSSVGAnimatedInteger --------------------------------------------------------------------} TJSSVGAnimatedInteger = class external name 'SVGAnimatedInteger' private FanimVal: Integer; external name 'animVal'; public baseVal: Integer; property animVal: Integer read FanimVal; end; { -------------------------------------------------------------------- TJSSVGAnimatedLength --------------------------------------------------------------------} TJSSVGAnimatedLength = class external name 'SVGAnimatedLength' private FbaseVal: TJSSVGLength; external name 'baseVal'; FanimVal: TJSSVGLength; external name 'animVal'; public property baseVal: TJSSVGLength read FbaseVal; property animVal: TJSSVGLength read FanimVal; end; { -------------------------------------------------------------------- TJSSVGLengthList --------------------------------------------------------------------} TJSSVGLengthList = class external name 'SVGLengthList' public numberOfItems: Integer; procedure clear; function initialize(newItem: TJSSVGLength): TJSSVGLength; function getItem(&index: Integer): TJSSVGLength; function insertItemBefore(newItem: TJSSVGLength; &index: Integer): TJSSVGLength; function replaceItem(newItem: TJSSVGLength; &index: Integer): TJSSVGLength; function removeItem(&index: Integer): TJSSVGLength; function appendItem(newItem: TJSSVGLength): TJSSVGLength; end; { -------------------------------------------------------------------- TJSSVGAnimatedLengthList --------------------------------------------------------------------} TJSSVGAnimatedLengthList = class external name 'SVGAnimatedLengthList' private FbaseVal: TJSSVGLengthList; external name 'baseVal'; FanimVal: TJSSVGLengthList; external name 'animVal'; public property baseVal: TJSSVGLengthList read FbaseVal; property animVal: TJSSVGLengthList read FanimVal; end; { -------------------------------------------------------------------- TJSSVGAnimatedNumber --------------------------------------------------------------------} TJSSVGAnimatedNumber = class external name 'SVGAnimatedNumber' private FanimVal: Double; external name 'animVal'; public baseVal: Double; property animVal: Double read FanimVal; end; { -------------------------------------------------------------------- TJSSVGNumberList --------------------------------------------------------------------} TJSSVGNumberList = class external name 'SVGNumberList' public numberOfItems: Integer; procedure clear; function initialize(newItem: TJSSVGNumber): TJSSVGNumber; function getItem(&index: Integer): TJSSVGNumber; function insertItemBefore(newItem: TJSSVGNumber; &index: Integer): TJSSVGNumber; function replaceItem(newItem: TJSSVGNumber; &index: Integer): TJSSVGNumber; function removeItem(&index: Integer): TJSSVGNumber; function appendItem(newItem: TJSSVGNumber): TJSSVGNumber; end; { -------------------------------------------------------------------- TJSSVGAnimatedNumberList --------------------------------------------------------------------} TJSSVGAnimatedNumberList = class external name 'SVGAnimatedNumberList' private FbaseVal: TJSSVGNumberList; external name 'baseVal'; FanimVal: TJSSVGNumberList; external name 'animVal'; public property baseVal: TJSSVGNumberList read FbaseVal; property animVal: TJSSVGNumberList read FanimVal; end; { -------------------------------------------------------------------- TJSSVGAnimatedPreserveAspectRatio --------------------------------------------------------------------} TJSSVGAnimatedPreserveAspectRatio = class external name 'SVGAnimatedPreserveAspectRatio' private FbaseVal: TJSSVGPreserveAspectRatio; external name 'baseVal'; FanimVal: TJSSVGPreserveAspectRatio; external name 'animVal'; public property baseVal: TJSSVGPreserveAspectRatio read FbaseVal; property animVal: TJSSVGPreserveAspectRatio read FanimVal; end; { -------------------------------------------------------------------- TJSSVGAnimatedRect --------------------------------------------------------------------} TJSSVGAnimatedRect = class external name 'SVGAnimatedRect' private FbaseVal: TJSSVGRect; external name 'baseVal'; FanimVal: TJSSVGRect; external name 'animVal'; public property baseVal: TJSSVGRect read FbaseVal; property animVal: TJSSVGRect read FanimVal; end; { -------------------------------------------------------------------- TJSSVGAnimatedString --------------------------------------------------------------------} TJSSVGAnimatedString = class external name 'SVGAnimatedString' private FanimVal: string; external name 'animVal'; public baseVal: string; property animVal: string read FanimVal; end; { -------------------------------------------------------------------- TJSSVGTransformList --------------------------------------------------------------------} TJSSVGTransformList = class external name 'SVGTransformList' public numberOfItems: Integer; procedure clear; function initialize(newItem: TJSSVGTransform): TJSSVGTransform; function getItem(&index: Integer): TJSSVGTransform; function insertItemBefore(newItem: TJSSVGTransform; &index: Integer): TJSSVGTransform; function replaceItem(newItem: TJSSVGTransform; &index: Integer): TJSSVGTransform; function removeItem(&index: Integer): TJSSVGTransform; function appendItem(newItem: TJSSVGTransform): TJSSVGTransform; function createSVGTransformFromMatrix(matrix: TJSSVGMatrix): TJSSVGTransform; function consolidate: TJSSVGTransform; end; { -------------------------------------------------------------------- TJSSVGAnimatedTransformList --------------------------------------------------------------------} TJSSVGAnimatedTransformList = class external name 'SVGAnimatedTransformList' private FbaseVal: TJSSVGTransformList; external name 'baseVal'; FanimVal: TJSSVGTransformList; external name 'animVal'; public property baseVal: TJSSVGTransformList read FbaseVal; property animVal: TJSSVGTransformList read FanimVal; end; { -------------------------------------------------------------------- TJSSVGAnimationElement --------------------------------------------------------------------} TJSSVGAnimationElement = class external name 'SVGAnimationElement' (TJSSVGElement) private FtargetElement: TJSSVGElement; external name 'targetElement'; public onbegin: TJSEventHandler; onend: TJSEventHandler; onrepeat: TJSEventHandler; function getStartTime: Double; function getCurrentTime: Double; function getSimpleDuration: Double; procedure beginElement; procedure beginElementAt(offset: Double); procedure endElement; procedure endElementAt(offset: Double); property targetElement: TJSSVGElement read FtargetElement; end; { -------------------------------------------------------------------- TJSSVGAnimateElement --------------------------------------------------------------------} TJSSVGAnimateElement = class external name 'SVGAnimateElement' (TJSSVGAnimationElement) private public end; { -------------------------------------------------------------------- TJSSVGAnimateMotionElement --------------------------------------------------------------------} TJSSVGAnimateMotionElement = class external name 'SVGAnimateMotionElement' (TJSSVGAnimationElement) private public end; { -------------------------------------------------------------------- TJSSVGAnimateTransformElement --------------------------------------------------------------------} TJSSVGAnimateTransformElement = class external name 'SVGAnimateTransformElement' (TJSSVGAnimationElement) private public end; { -------------------------------------------------------------------- TJSSVGGeometryElement --------------------------------------------------------------------} TJSSVGGeometryElement = class external name 'SVGGeometryElement' (TJSSVGGraphicsElement) private FpathLength: TJSSVGAnimatedNumber; external name 'pathLength'; public function isPointInFill(point: TJSSVGPoint): boolean; function isPointInStroke(point: TJSSVGPoint): boolean; function getTotalLength: Double; function getPointAtLength(distance: Double): TJSSVGPoint; property pathLength: TJSSVGAnimatedNumber read FpathLength; end; { -------------------------------------------------------------------- TJSSVGCircleElement --------------------------------------------------------------------} TJSSVGCircleElement = class external name 'SVGCircleElement' (TJSSVGGeometryElement) private Fcx: TJSSVGAnimatedLength; external name 'cx'; Fcy: TJSSVGAnimatedLength; external name 'cy'; Fr: TJSSVGAnimatedLength; external name 'r'; public property cx: TJSSVGAnimatedLength read Fcx; property cy: TJSSVGAnimatedLength read Fcy; property r: TJSSVGAnimatedLength read Fr; end; { -------------------------------------------------------------------- TJSSVGClipPathElement --------------------------------------------------------------------} TJSSVGClipPathElement = class external name 'SVGClipPathElement' (TJSSVGGraphicsElement) private FclipPathUnits: TJSSVGAnimatedEnumeration; external name 'clipPathUnits'; public property clipPathUnits: TJSSVGAnimatedEnumeration read FclipPathUnits; end; { -------------------------------------------------------------------- TJSSVGComponentTransferFunctionElement --------------------------------------------------------------------} TJSSVGComponentTransferFunctionElement = class external name 'SVGComponentTransferFunctionElement' (TJSSVGElement) private Ftype_: TJSSVGAnimatedEnumeration; external name 'type'; FtableValues: TJSSVGAnimatedNumberList; external name 'tableValues'; Fslope: TJSSVGAnimatedNumber; external name 'slope'; Fintercept: TJSSVGAnimatedNumber; external name 'intercept'; Famplitude: TJSSVGAnimatedNumber; external name 'amplitude'; Fexponent: TJSSVGAnimatedNumber; external name 'exponent'; Foffset: TJSSVGAnimatedNumber; external name 'offset'; public const SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0; SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1; SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2; SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3; SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4; SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5; Public property type_: TJSSVGAnimatedEnumeration read Ftype_; property tableValues: TJSSVGAnimatedNumberList read FtableValues; property slope: TJSSVGAnimatedNumber read Fslope; property intercept: TJSSVGAnimatedNumber read Fintercept; property amplitude: TJSSVGAnimatedNumber read Famplitude; property exponent: TJSSVGAnimatedNumber read Fexponent; property offset: TJSSVGAnimatedNumber read Foffset; end; { -------------------------------------------------------------------- TJSSVGDefsElement --------------------------------------------------------------------} TJSSVGDefsElement = class external name 'SVGDefsElement' (TJSSVGGraphicsElement) private public end; { -------------------------------------------------------------------- TJSSVGDescElement --------------------------------------------------------------------} TJSSVGDescElement = class external name 'SVGDescElement' (TJSSVGElement) private public end; { -------------------------------------------------------------------- TJSSVGDocument --------------------------------------------------------------------} TJSSVGDocument = class external name 'SVGDocument' (TJSDocument) public Ftitle: String; external name 'tile'; Freferrer: String; external name 'referrer'; Fdomain: String; external name 'domain'; fURL: String; external name 'URL'; rootElement: TJSSVGSVGElement; end; { -------------------------------------------------------------------- TJSSVGDiscardElement --------------------------------------------------------------------} TJSSVGDiscardElement = class external name 'SVGDiscardElement' (TJSSVGElement) private public end; { -------------------------------------------------------------------- TJSDocument --------------------------------------------------------------------} TJSDocument = class external name 'Document' private FrootElement: TJSSVGSVGElement; external name 'rootElement'; public property rootElement: TJSSVGSVGElement read FrootElement; end; { -------------------------------------------------------------------- TJSSVGEllipseElement --------------------------------------------------------------------} TJSSVGEllipseElement = class external name 'SVGEllipseElement' (TJSSVGGeometryElement) private Fcx: TJSSVGAnimatedLength; external name 'cx'; Fcy: TJSSVGAnimatedLength; external name 'cy'; Frx: TJSSVGAnimatedLength; external name 'rx'; Fry: TJSSVGAnimatedLength; external name 'ry'; public property cx: TJSSVGAnimatedLength read Fcx; property cy: TJSSVGAnimatedLength read Fcy; property rx: TJSSVGAnimatedLength read Frx; property ry: TJSSVGAnimatedLength read Fry; end; { -------------------------------------------------------------------- TJSSVGFEBlendElement --------------------------------------------------------------------} TJSSVGFEBlendElement = class external name 'SVGFEBlendElement' (TJSSVGElement) private Fin1: TJSSVGAnimatedString; external name 'in1'; Fin2: TJSSVGAnimatedString; external name 'in2'; Fmode: TJSSVGAnimatedEnumeration; external name 'mode'; public const SVG_FEBLEND_MODE_UNKNOWN = 0; SVG_FEBLEND_MODE_NORMAL = 1; SVG_FEBLEND_MODE_MULTIPLY = 2; SVG_FEBLEND_MODE_SCREEN = 3; SVG_FEBLEND_MODE_DARKEN = 4; SVG_FEBLEND_MODE_LIGHTEN = 5; Public property in1: TJSSVGAnimatedString read Fin1; property in2: TJSSVGAnimatedString read Fin2; property mode: TJSSVGAnimatedEnumeration read Fmode; end; { -------------------------------------------------------------------- TJSSVGFEColorMatrixElement --------------------------------------------------------------------} TJSSVGFEColorMatrixElement = class external name 'SVGFEColorMatrixElement' (TJSSVGElement) private Fin1: TJSSVGAnimatedString; external name 'in1'; Ftype_: TJSSVGAnimatedEnumeration; external name 'type'; Fvalues: TJSSVGAnimatedNumberList; external name 'values'; public const SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0; SVG_FECOLORMATRIX_TYPE_MATRIX = 1; SVG_FECOLORMATRIX_TYPE_SATURATE = 2; SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3; SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4; Public property in1: TJSSVGAnimatedString read Fin1; property type_: TJSSVGAnimatedEnumeration read Ftype_; property values: TJSSVGAnimatedNumberList read Fvalues; end; { -------------------------------------------------------------------- TJSSVGFEComponentTransferElement --------------------------------------------------------------------} TJSSVGFEComponentTransferElement = class external name 'SVGFEComponentTransferElement' (TJSSVGElement) private Fin1: TJSSVGAnimatedString; external name 'in1'; public property in1: TJSSVGAnimatedString read Fin1; end; { -------------------------------------------------------------------- TJSSVGFECompositeElement --------------------------------------------------------------------} TJSSVGFECompositeElement = class external name 'SVGFECompositeElement' (TJSSVGElement) private Fin2: TJSSVGAnimatedString; external name 'in2'; Fin1: TJSSVGAnimatedString; external name 'in1'; Foperator_: TJSSVGAnimatedEnumeration; external name 'operator'; Fk1: TJSSVGAnimatedNumber; external name 'k1'; Fk2: TJSSVGAnimatedNumber; external name 'k2'; Fk3: TJSSVGAnimatedNumber; external name 'k3'; Fk4: TJSSVGAnimatedNumber; external name 'k4'; public const SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0; SVG_FECOMPOSITE_OPERATOR_OVER = 1; SVG_FECOMPOSITE_OPERATOR_IN = 2; SVG_FECOMPOSITE_OPERATOR_OUT = 3; SVG_FECOMPOSITE_OPERATOR_ATOP = 4; SVG_FECOMPOSITE_OPERATOR_XOR = 5; SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6; Public property in2: TJSSVGAnimatedString read Fin2; property in1: TJSSVGAnimatedString read Fin1; property operator_: TJSSVGAnimatedEnumeration read Foperator_; property k1: TJSSVGAnimatedNumber read Fk1; property k2: TJSSVGAnimatedNumber read Fk2; property k3: TJSSVGAnimatedNumber read Fk3; property k4: TJSSVGAnimatedNumber read Fk4; end; { -------------------------------------------------------------------- TJSSVGFEConvolveMatrixElement --------------------------------------------------------------------} TJSSVGFEConvolveMatrixElement = class external name 'SVGFEConvolveMatrixElement' (TJSSVGElement) private Fin1: TJSSVGAnimatedString; external name 'in1'; ForderX: TJSSVGAnimatedInteger; external name 'orderX'; ForderY: TJSSVGAnimatedInteger; external name 'orderY'; FkernelMatrix: TJSSVGAnimatedNumberList; external name 'kernelMatrix'; Fdivisor: TJSSVGAnimatedNumber; external name 'divisor'; Fbias: TJSSVGAnimatedNumber; external name 'bias'; FtargetX: TJSSVGAnimatedInteger; external name 'targetX'; FtargetY: TJSSVGAnimatedInteger; external name 'targetY'; FedgeMode: TJSSVGAnimatedEnumeration; external name 'edgeMode'; FkernelUnitLengthX: TJSSVGAnimatedNumber; external name 'kernelUnitLengthX'; FkernelUnitLengthY: TJSSVGAnimatedNumber; external name 'kernelUnitLengthY'; FpreserveAlpha: TJSSVGAnimatedBoolean; external name 'preserveAlpha'; public const SVG_EDGEMODE_UNKNOWN = 0; SVG_EDGEMODE_DUPLICATE = 1; SVG_EDGEMODE_WRAP = 2; SVG_EDGEMODE_NONE = 3; Public property in1: TJSSVGAnimatedString read Fin1; property orderX: TJSSVGAnimatedInteger read ForderX; property orderY: TJSSVGAnimatedInteger read ForderY; property kernelMatrix: TJSSVGAnimatedNumberList read FkernelMatrix; property divisor: TJSSVGAnimatedNumber read Fdivisor; property bias: TJSSVGAnimatedNumber read Fbias; property targetX: TJSSVGAnimatedInteger read FtargetX; property targetY: TJSSVGAnimatedInteger read FtargetY; property edgeMode: TJSSVGAnimatedEnumeration read FedgeMode; property kernelUnitLengthX: TJSSVGAnimatedNumber read FkernelUnitLengthX; property kernelUnitLengthY: TJSSVGAnimatedNumber read FkernelUnitLengthY; property preserveAlpha: TJSSVGAnimatedBoolean read FpreserveAlpha; end; { -------------------------------------------------------------------- TJSSVGFEDiffuseLightingElement --------------------------------------------------------------------} TJSSVGFEDiffuseLightingElement = class external name 'SVGFEDiffuseLightingElement' (TJSSVGElement) private Fin1: TJSSVGAnimatedString; external name 'in1'; FsurfaceScale: TJSSVGAnimatedNumber; external name 'surfaceScale'; FdiffuseConstant: TJSSVGAnimatedNumber; external name 'diffuseConstant'; FkernelUnitLengthX: TJSSVGAnimatedNumber; external name 'kernelUnitLengthX'; FkernelUnitLengthY: TJSSVGAnimatedNumber; external name 'kernelUnitLengthY'; public property in1: TJSSVGAnimatedString read Fin1; property surfaceScale: TJSSVGAnimatedNumber read FsurfaceScale; property diffuseConstant: TJSSVGAnimatedNumber read FdiffuseConstant; property kernelUnitLengthX: TJSSVGAnimatedNumber read FkernelUnitLengthX; property kernelUnitLengthY: TJSSVGAnimatedNumber read FkernelUnitLengthY; end; { -------------------------------------------------------------------- TJSSVGFEDisplacementMapElement --------------------------------------------------------------------} TJSSVGFEDisplacementMapElement = class external name 'SVGFEDisplacementMapElement' (TJSSVGElement) private Fin1: TJSSVGAnimatedString; external name 'in1'; Fin2: TJSSVGAnimatedString; external name 'in2'; Fscale: TJSSVGAnimatedNumber; external name 'scale'; FxChannelSelector: TJSSVGAnimatedEnumeration; external name 'xChannelSelector'; FyChannelSelector: TJSSVGAnimatedEnumeration; external name 'yChannelSelector'; public const SVG_CHANNEL_UNKNOWN = 0; SVG_CHANNEL_R = 1; SVG_CHANNEL_G = 2; SVG_CHANNEL_B = 3; SVG_CHANNEL_A = 4; Public property in1: TJSSVGAnimatedString read Fin1; property in2: TJSSVGAnimatedString read Fin2; property scale: TJSSVGAnimatedNumber read Fscale; property xChannelSelector: TJSSVGAnimatedEnumeration read FxChannelSelector; property yChannelSelector: TJSSVGAnimatedEnumeration read FyChannelSelector; end; { -------------------------------------------------------------------- TJSSVGFEDistantLightElement --------------------------------------------------------------------} TJSSVGFEDistantLightElement = class external name 'SVGFEDistantLightElement' (TJSSVGElement) private Fazimuth: TJSSVGAnimatedNumber; external name 'azimuth'; Felevation: TJSSVGAnimatedNumber; external name 'elevation'; public property azimuth: TJSSVGAnimatedNumber read Fazimuth; property elevation: TJSSVGAnimatedNumber read Felevation; end; { -------------------------------------------------------------------- TJSSVGFEDropShadowElement --------------------------------------------------------------------} TJSSVGFEDropShadowElement = class external name 'SVGFEDropShadowElement' (TJSSVGElement) private Fin1: TJSSVGAnimatedString; external name 'in1'; Fdx: TJSSVGAnimatedNumber; external name 'dx'; Fdy: TJSSVGAnimatedNumber; external name 'dy'; FstdDeviationX: TJSSVGAnimatedNumber; external name 'stdDeviationX'; FstdDeviationY: TJSSVGAnimatedNumber; external name 'stdDeviationY'; public procedure setStdDeviation(stdDeviationX: Double; stdDeviationY: Double); property in1: TJSSVGAnimatedString read Fin1; property dx: TJSSVGAnimatedNumber read Fdx; property dy: TJSSVGAnimatedNumber read Fdy; property stdDeviationX: TJSSVGAnimatedNumber read FstdDeviationX; property stdDeviationY: TJSSVGAnimatedNumber read FstdDeviationY; end; { -------------------------------------------------------------------- TJSSVGFEFloodElement --------------------------------------------------------------------} TJSSVGFEFloodElement = class external name 'SVGFEFloodElement' (TJSSVGElement) private public end; { -------------------------------------------------------------------- TJSSVGFEFuncAElement --------------------------------------------------------------------} TJSSVGFEFuncAElement = class external name 'SVGFEFuncAElement' (TJSSVGComponentTransferFunctionElement) private public end; { -------------------------------------------------------------------- TJSSVGFEFuncBElement --------------------------------------------------------------------} TJSSVGFEFuncBElement = class external name 'SVGFEFuncBElement' (TJSSVGComponentTransferFunctionElement) private public end; { -------------------------------------------------------------------- TJSSVGFEFuncGElement --------------------------------------------------------------------} TJSSVGFEFuncGElement = class external name 'SVGFEFuncGElement' (TJSSVGComponentTransferFunctionElement) private public end; { -------------------------------------------------------------------- TJSSVGFEFuncRElement --------------------------------------------------------------------} TJSSVGFEFuncRElement = class external name 'SVGFEFuncRElement' (TJSSVGComponentTransferFunctionElement) private public end; { -------------------------------------------------------------------- TJSSVGFEGaussianBlurElement --------------------------------------------------------------------} TJSSVGFEGaussianBlurElement = class external name 'SVGFEGaussianBlurElement' (TJSSVGElement) private Fin1: TJSSVGAnimatedString; external name 'in1'; FstdDeviationX: TJSSVGAnimatedNumber; external name 'stdDeviationX'; FstdDeviationY: TJSSVGAnimatedNumber; external name 'stdDeviationY'; public procedure setStdDeviation(stdDeviationX: Double; stdDeviationY: Double); property in1: TJSSVGAnimatedString read Fin1; property stdDeviationX: TJSSVGAnimatedNumber read FstdDeviationX; property stdDeviationY: TJSSVGAnimatedNumber read FstdDeviationY; end; { -------------------------------------------------------------------- TJSSVGFEImageElement --------------------------------------------------------------------} TJSSVGFEImageElement = class external name 'SVGFEImageElement' (TJSSVGElement) private FpreserveAspectRatio: TJSSVGAnimatedPreserveAspectRatio; external name 'preserveAspectRatio'; public property preserveAspectRatio: TJSSVGAnimatedPreserveAspectRatio read FpreserveAspectRatio; end; { -------------------------------------------------------------------- TJSSVGFEMergeElement --------------------------------------------------------------------} TJSSVGFEMergeElement = class external name 'SVGFEMergeElement' (TJSSVGElement) private public end; { -------------------------------------------------------------------- TJSSVGFEMergeNodeElement --------------------------------------------------------------------} TJSSVGFEMergeNodeElement = class external name 'SVGFEMergeNodeElement' (TJSSVGElement) private Fin1: TJSSVGAnimatedString; external name 'in1'; public property in1: TJSSVGAnimatedString read Fin1; end; { -------------------------------------------------------------------- TJSSVGFEMorphologyElement --------------------------------------------------------------------} TJSSVGFEMorphologyElement = class external name 'SVGFEMorphologyElement' (TJSSVGElement) private Fin1: TJSSVGAnimatedString; external name 'in1'; Foperator_: TJSSVGAnimatedEnumeration; external name 'operator'; FradiusX: TJSSVGAnimatedNumber; external name 'radiusX'; FradiusY: TJSSVGAnimatedNumber; external name 'radiusY'; public const SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0; SVG_MORPHOLOGY_OPERATOR_ERODE = 1; SVG_MORPHOLOGY_OPERATOR_DILATE = 2; Public property in1: TJSSVGAnimatedString read Fin1; property operator_: TJSSVGAnimatedEnumeration read Foperator_; property radiusX: TJSSVGAnimatedNumber read FradiusX; property radiusY: TJSSVGAnimatedNumber read FradiusY; end; { -------------------------------------------------------------------- TJSSVGFEOffsetElement --------------------------------------------------------------------} TJSSVGFEOffsetElement = class external name 'SVGFEOffsetElement' (TJSSVGElement) private Fin1: TJSSVGAnimatedString; external name 'in1'; Fdx: TJSSVGAnimatedNumber; external name 'dx'; Fdy: TJSSVGAnimatedNumber; external name 'dy'; public property in1: TJSSVGAnimatedString read Fin1; property dx: TJSSVGAnimatedNumber read Fdx; property dy: TJSSVGAnimatedNumber read Fdy; end; { -------------------------------------------------------------------- TJSSVGFEPointLightElement --------------------------------------------------------------------} TJSSVGFEPointLightElement = class external name 'SVGFEPointLightElement' (TJSSVGElement) private Fx: TJSSVGAnimatedNumber; external name 'x'; Fy: TJSSVGAnimatedNumber; external name 'y'; Fz: TJSSVGAnimatedNumber; external name 'z'; public property x: TJSSVGAnimatedNumber read Fx; property y: TJSSVGAnimatedNumber read Fy; property z: TJSSVGAnimatedNumber read Fz; end; { -------------------------------------------------------------------- TJSSVGFESpecularLightingElement --------------------------------------------------------------------} TJSSVGFESpecularLightingElement = class external name 'SVGFESpecularLightingElement' (TJSSVGElement) private Fin1: TJSSVGAnimatedString; external name 'in1'; FsurfaceScale: TJSSVGAnimatedNumber; external name 'surfaceScale'; FspecularConstant: TJSSVGAnimatedNumber; external name 'specularConstant'; FspecularExponent: TJSSVGAnimatedNumber; external name 'specularExponent'; FkernelUnitLengthX: TJSSVGAnimatedNumber; external name 'kernelUnitLengthX'; FkernelUnitLengthY: TJSSVGAnimatedNumber; external name 'kernelUnitLengthY'; public property in1: TJSSVGAnimatedString read Fin1; property surfaceScale: TJSSVGAnimatedNumber read FsurfaceScale; property specularConstant: TJSSVGAnimatedNumber read FspecularConstant; property specularExponent: TJSSVGAnimatedNumber read FspecularExponent; property kernelUnitLengthX: TJSSVGAnimatedNumber read FkernelUnitLengthX; property kernelUnitLengthY: TJSSVGAnimatedNumber read FkernelUnitLengthY; end; { -------------------------------------------------------------------- TJSSVGFESpotLightElement --------------------------------------------------------------------} TJSSVGFESpotLightElement = class external name 'SVGFESpotLightElement' (TJSSVGElement) private Fx: TJSSVGAnimatedNumber; external name 'x'; Fy: TJSSVGAnimatedNumber; external name 'y'; Fz: TJSSVGAnimatedNumber; external name 'z'; FpointsAtX: TJSSVGAnimatedNumber; external name 'pointsAtX'; FpointsAtY: TJSSVGAnimatedNumber; external name 'pointsAtY'; FpointsAtZ: TJSSVGAnimatedNumber; external name 'pointsAtZ'; FspecularExponent: TJSSVGAnimatedNumber; external name 'specularExponent'; FlimitingConeAngle: TJSSVGAnimatedNumber; external name 'limitingConeAngle'; public property x: TJSSVGAnimatedNumber read Fx; property y: TJSSVGAnimatedNumber read Fy; property z: TJSSVGAnimatedNumber read Fz; property pointsAtX: TJSSVGAnimatedNumber read FpointsAtX; property pointsAtY: TJSSVGAnimatedNumber read FpointsAtY; property pointsAtZ: TJSSVGAnimatedNumber read FpointsAtZ; property specularExponent: TJSSVGAnimatedNumber read FspecularExponent; property limitingConeAngle: TJSSVGAnimatedNumber read FlimitingConeAngle; end; { -------------------------------------------------------------------- TJSSVGFETileElement --------------------------------------------------------------------} TJSSVGFETileElement = class external name 'SVGFETileElement' (TJSSVGElement) private Fin1: TJSSVGAnimatedString; external name 'in1'; public property in1: TJSSVGAnimatedString read Fin1; end; { -------------------------------------------------------------------- TJSSVGFETurbulenceElement --------------------------------------------------------------------} TJSSVGFETurbulenceElement = class external name 'SVGFETurbulenceElement' (TJSSVGElement) private FbaseFrequencyX: TJSSVGAnimatedNumber; external name 'baseFrequencyX'; FbaseFrequencyY: TJSSVGAnimatedNumber; external name 'baseFrequencyY'; FnumOctaves: TJSSVGAnimatedInteger; external name 'numOctaves'; Fseed: TJSSVGAnimatedNumber; external name 'seed'; FstitchTiles: TJSSVGAnimatedEnumeration; external name 'stitchTiles'; Ftype_: TJSSVGAnimatedEnumeration; external name 'type'; public const SVG_TURBULENCE_TYPE_UNKNOWN = 0; SVG_TURBULENCE_TYPE_FRACTALNOISE = 1; SVG_TURBULENCE_TYPE_TURBULENCE = 2; SVG_STITCHTYPE_UNKNOWN = 0; SVG_STITCHTYPE_STITCH = 1; SVG_STITCHTYPE_NOSTITCH = 2; Public property baseFrequencyX: TJSSVGAnimatedNumber read FbaseFrequencyX; property baseFrequencyY: TJSSVGAnimatedNumber read FbaseFrequencyY; property numOctaves: TJSSVGAnimatedInteger read FnumOctaves; property seed: TJSSVGAnimatedNumber read Fseed; property stitchTiles: TJSSVGAnimatedEnumeration read FstitchTiles; property type_: TJSSVGAnimatedEnumeration read Ftype_; end; { -------------------------------------------------------------------- TJSSVGFilterElement --------------------------------------------------------------------} TJSSVGFilterElement = class external name 'SVGFilterElement' (TJSSVGElement) private FfilterUnits: TJSSVGAnimatedEnumeration; external name 'filterUnits'; FprimitiveUnits: TJSSVGAnimatedEnumeration; external name 'primitiveUnits'; Fx: TJSSVGAnimatedLength; external name 'x'; Fy: TJSSVGAnimatedLength; external name 'y'; Fwidth: TJSSVGAnimatedLength; external name 'width'; Fheight: TJSSVGAnimatedLength; external name 'height'; public property filterUnits: TJSSVGAnimatedEnumeration read FfilterUnits; property primitiveUnits: TJSSVGAnimatedEnumeration read FprimitiveUnits; property x: TJSSVGAnimatedLength read Fx; property y: TJSSVGAnimatedLength read Fy; property width: TJSSVGAnimatedLength read Fwidth; property height: TJSSVGAnimatedLength read Fheight; end; { -------------------------------------------------------------------- TJSSVGFilterPrimitiveStandardAttributes --------------------------------------------------------------------} TJSSVGFilterPrimitiveStandardAttributes = class external name 'SVGFilterPrimitiveStandardAttributes' private Fx: TJSSVGAnimatedLength; external name 'x'; Fy: TJSSVGAnimatedLength; external name 'y'; Fwidth: TJSSVGAnimatedLength; external name 'width'; Fheight: TJSSVGAnimatedLength; external name 'height'; Fresult: TJSSVGAnimatedString; external name 'result'; public property x: TJSSVGAnimatedLength read Fx; property y: TJSSVGAnimatedLength read Fy; property width: TJSSVGAnimatedLength read Fwidth; property height: TJSSVGAnimatedLength read Fheight; property result: TJSSVGAnimatedString read Fresult; end; { -------------------------------------------------------------------- TJSSVGFitToViewBox --------------------------------------------------------------------} TJSSVGFitToViewBox = class external name 'SVGFitToViewBox' private FviewBox: TJSSVGAnimatedRect; external name 'viewBox'; FpreserveAspectRatio: TJSSVGAnimatedPreserveAspectRatio; external name 'preserveAspectRatio'; public property viewBox: TJSSVGAnimatedRect read FviewBox; property preserveAspectRatio: TJSSVGAnimatedPreserveAspectRatio read FpreserveAspectRatio; end; { -------------------------------------------------------------------- TJSSVGForeignObjectElement --------------------------------------------------------------------} TJSSVGForeignObjectElement = class external name 'SVGForeignObjectElement' (TJSSVGGraphicsElement) private Fx: TJSSVGAnimatedLength; external name 'x'; Fy: TJSSVGAnimatedLength; external name 'y'; Fwidth: TJSSVGAnimatedLength; external name 'width'; Fheight: TJSSVGAnimatedLength; external name 'height'; public property x: TJSSVGAnimatedLength read Fx; property y: TJSSVGAnimatedLength read Fy; property width: TJSSVGAnimatedLength read Fwidth; property height: TJSSVGAnimatedLength read Fheight; end; { -------------------------------------------------------------------- TJSSVGGElement --------------------------------------------------------------------} TJSSVGGElement = class external name 'SVGGElement' (TJSSVGGraphicsElement) private public end; { -------------------------------------------------------------------- TJSSVGGradientElement --------------------------------------------------------------------} TJSSVGGradientElement = class external name 'SVGGradientElement' (TJSSVGElement) private FgradientUnits: TJSSVGAnimatedEnumeration; external name 'gradientUnits'; FgradientTransform: TJSSVGAnimatedTransformList; external name 'gradientTransform'; FspreadMethod: TJSSVGAnimatedEnumeration; external name 'spreadMethod'; public const SVG_SPREADMETHOD_UNKNOWN = 0; SVG_SPREADMETHOD_PAD = 1; SVG_SPREADMETHOD_REFLECT = 2; SVG_SPREADMETHOD_REPEAT = 3; Public property gradientUnits: TJSSVGAnimatedEnumeration read FgradientUnits; property gradientTransform: TJSSVGAnimatedTransformList read FgradientTransform; property spreadMethod: TJSSVGAnimatedEnumeration read FspreadMethod; end; { -------------------------------------------------------------------- TJSSVGImageElement --------------------------------------------------------------------} TJSSVGImageElement = class external name 'SVGImageElement' (TJSSVGGraphicsElement) private Fx: TJSSVGAnimatedLength; external name 'x'; Fy: TJSSVGAnimatedLength; external name 'y'; Fwidth: TJSSVGAnimatedLength; external name 'width'; Fheight: TJSSVGAnimatedLength; external name 'height'; FpreserveAspectRatio: TJSSVGAnimatedPreserveAspectRatio; external name 'preserveAspectRatio'; public property x: TJSSVGAnimatedLength read Fx; property y: TJSSVGAnimatedLength read Fy; property width: TJSSVGAnimatedLength read Fwidth; property height: TJSSVGAnimatedLength read Fheight; property preserveAspectRatio: TJSSVGAnimatedPreserveAspectRatio read FpreserveAspectRatio; end; { -------------------------------------------------------------------- TJSSVGLength --------------------------------------------------------------------} TJSSVGLength = class external name 'SVGLength' private FunitType: Cardinal; external name 'unitType'; public const SVG_LENGTHTYPE_UNKNOWN = 0; SVG_LENGTHTYPE_NUMBER = 1; SVG_LENGTHTYPE_PERCENTAGE = 2; SVG_LENGTHTYPE_EMS = 3; SVG_LENGTHTYPE_EXS = 4; SVG_LENGTHTYPE_PX = 5; SVG_LENGTHTYPE_CM = 6; SVG_LENGTHTYPE_MM = 7; SVG_LENGTHTYPE_IN = 8; SVG_LENGTHTYPE_PT = 9; SVG_LENGTHTYPE_PC = 10; Public value: Double; valueInSpecifiedUnits: Double; valueAsString: string; procedure newValueSpecifiedUnits(unitType: Cardinal; valueInSpecifiedUnits: Double); procedure convertToSpecifiedUnits(unitType: Cardinal); property unitType: Cardinal read FunitType; end; { -------------------------------------------------------------------- TJSSVGLinearGradientElement --------------------------------------------------------------------} TJSSVGLinearGradientElement = class external name 'SVGLinearGradientElement' (TJSSVGGradientElement) private Fx1: TJSSVGAnimatedLength; external name 'x1'; Fy1: TJSSVGAnimatedLength; external name 'y1'; Fx2: TJSSVGAnimatedLength; external name 'x2'; Fy2: TJSSVGAnimatedLength; external name 'y2'; public property x1: TJSSVGAnimatedLength read Fx1; property y1: TJSSVGAnimatedLength read Fy1; property x2: TJSSVGAnimatedLength read Fx2; property y2: TJSSVGAnimatedLength read Fy2; end; { -------------------------------------------------------------------- TJSSVGLineElement --------------------------------------------------------------------} TJSSVGLineElement = class external name 'SVGLineElement' (TJSSVGGeometryElement) private Fx1: TJSSVGAnimatedLength; external name 'x1'; Fy1: TJSSVGAnimatedLength; external name 'y1'; Fx2: TJSSVGAnimatedLength; external name 'x2'; Fy2: TJSSVGAnimatedLength; external name 'y2'; public property x1: TJSSVGAnimatedLength read Fx1; property y1: TJSSVGAnimatedLength read Fy1; property x2: TJSSVGAnimatedLength read Fx2; property y2: TJSSVGAnimatedLength read Fy2; end; { -------------------------------------------------------------------- TJSSVGMarkerElement --------------------------------------------------------------------} TJSSVGMarkerElement = class external name 'SVGMarkerElement' (TJSSVGElement) private FrefX: TJSSVGAnimatedLength; external name 'refX'; FrefY: TJSSVGAnimatedLength; external name 'refY'; FmarkerUnits: TJSSVGAnimatedEnumeration; external name 'markerUnits'; FmarkerWidth: TJSSVGAnimatedLength; external name 'markerWidth'; FmarkerHeight: TJSSVGAnimatedLength; external name 'markerHeight'; ForientType: TJSSVGAnimatedEnumeration; external name 'orientType'; ForientAngle: TJSSVGAnimatedAngle; external name 'orientAngle'; public const SVG_MARKERUNITS_UNKNOWN = 0; SVG_MARKERUNITS_USERSPACEONUSE = 1; SVG_MARKERUNITS_STROKEWIDTH = 2; SVG_MARKER_ORIENT_UNKNOWN = 0; SVG_MARKER_ORIENT_AUTO = 1; SVG_MARKER_ORIENT_ANGLE = 2; Public procedure setOrientToAuto; procedure setOrientToAngle(angle: TJSSVGAngle); property refX: TJSSVGAnimatedLength read FrefX; property refY: TJSSVGAnimatedLength read FrefY; property markerUnits: TJSSVGAnimatedEnumeration read FmarkerUnits; property markerWidth: TJSSVGAnimatedLength read FmarkerWidth; property markerHeight: TJSSVGAnimatedLength read FmarkerHeight; property orientType: TJSSVGAnimatedEnumeration read ForientType; property orientAngle: TJSSVGAnimatedAngle read ForientAngle; end; { -------------------------------------------------------------------- TJSSVGMaskElement --------------------------------------------------------------------} TJSSVGMaskElement = class external name 'SVGMaskElement' (TJSSVGElement) private FmaskUnits: TJSSVGAnimatedEnumeration; external name 'maskUnits'; FmaskContentUnits: TJSSVGAnimatedEnumeration; external name 'maskContentUnits'; Fx: TJSSVGAnimatedLength; external name 'x'; Fy: TJSSVGAnimatedLength; external name 'y'; Fwidth: TJSSVGAnimatedLength; external name 'width'; Fheight: TJSSVGAnimatedLength; external name 'height'; public property maskUnits: TJSSVGAnimatedEnumeration read FmaskUnits; property maskContentUnits: TJSSVGAnimatedEnumeration read FmaskContentUnits; property x: TJSSVGAnimatedLength read Fx; property y: TJSSVGAnimatedLength read Fy; property width: TJSSVGAnimatedLength read Fwidth; property height: TJSSVGAnimatedLength read Fheight; end; { -------------------------------------------------------------------- TJSSVGMatrix --------------------------------------------------------------------} TJSSVGMatrix = class external name 'SVGMatrix' private public a: double; b: double; c: double; d: double; e: double; f: double; function multiply(secondMatrix: TJSSVGMatrix): TJSSVGMatrix; function inverse: TJSSVGMatrix; function translate(x: Double; y: Double): TJSSVGMatrix; function scale(scaleFactor: Double): TJSSVGMatrix; function scaleNonUniform(scaleFactorX: Double; scaleFactorY: Double): TJSSVGMatrix; function rotate(angle: Double): TJSSVGMatrix; function rotateFromVector(x: Double; y: Double): TJSSVGMatrix; function flipX: TJSSVGMatrix; function flipY: TJSSVGMatrix; function skewX(angle: Double): TJSSVGMatrix; function skewY(angle: Double): TJSSVGMatrix; end; { -------------------------------------------------------------------- TJSSVGMetadataElement --------------------------------------------------------------------} TJSSVGMetadataElement = class external name 'SVGMetadataElement' (TJSSVGElement) private public end; { -------------------------------------------------------------------- TJSSVGMPathElement --------------------------------------------------------------------} TJSSVGMPathElement = class external name 'SVGMPathElement' (TJSSVGElement) private public end; { -------------------------------------------------------------------- TJSSVGNumber --------------------------------------------------------------------} TJSSVGNumber = class external name 'SVGNumber' private public value: Double; end; { -------------------------------------------------------------------- TJSSVGPathElement --------------------------------------------------------------------} TJSSVGPathElement = class external name 'SVGPathElement' (TJSSVGGeometryElement) private public function getPathSegAtLength(distance: Double): NativeInt; end; { -------------------------------------------------------------------- TJSSVGPatternElement --------------------------------------------------------------------} TJSSVGPatternElement = class external name 'SVGPatternElement' (TJSSVGElement) private FpatternUnits: TJSSVGAnimatedEnumeration; external name 'patternUnits'; FpatternContentUnits: TJSSVGAnimatedEnumeration; external name 'patternContentUnits'; FpatternTransform: TJSSVGAnimatedTransformList; external name 'patternTransform'; Fx: TJSSVGAnimatedLength; external name 'x'; Fy: TJSSVGAnimatedLength; external name 'y'; Fwidth: TJSSVGAnimatedLength; external name 'width'; Fheight: TJSSVGAnimatedLength; external name 'height'; public property patternUnits: TJSSVGAnimatedEnumeration read FpatternUnits; property patternContentUnits: TJSSVGAnimatedEnumeration read FpatternContentUnits; property patternTransform: TJSSVGAnimatedTransformList read FpatternTransform; property x: TJSSVGAnimatedLength read Fx; property y: TJSSVGAnimatedLength read Fy; property width: TJSSVGAnimatedLength read Fwidth; property height: TJSSVGAnimatedLength read Fheight; end; { -------------------------------------------------------------------- TJSSVGPoint --------------------------------------------------------------------} TJSSVGPoint = class external name 'SVGPoint' private public x: Double; y: Double; function matrixTransform(matrix: TJSSVGMatrix): TJSSVGPoint; end; { -------------------------------------------------------------------- TJSSVGPointList --------------------------------------------------------------------} TJSSVGPointList = class external name 'SVGPointList' public numberOfItems: Integer; procedure clear; function initialize(newItem: TJSSVGPoint): TJSSVGPoint; function getItem(&index: Integer): TJSSVGPoint; function insertItemBefore(newItem: TJSSVGPoint; &index: Integer): TJSSVGPoint; function replaceItem(newItem: TJSSVGPoint; &index: Integer): TJSSVGPoint; function removeItem(&index: Integer): TJSSVGPoint; function appendItem(newItem: TJSSVGPoint): TJSSVGPoint; end; { -------------------------------------------------------------------- TJSSVGPolygonElement --------------------------------------------------------------------} TJSSVGPolygonElement = class external name 'SVGPolygonElement' (TJSSVGGeometryElement) private Fpoints: TJSSVGPointList; external name 'points'; FanimatedPoints: TJSSVGPointList; external name 'animatedPoints'; public property points: TJSSVGPointList read Fpoints; property animatedPoints: TJSSVGPointList read FanimatedPoints; end; { -------------------------------------------------------------------- TJSSVGPolylineElement --------------------------------------------------------------------} TJSSVGPolylineElement = class external name 'SVGPolylineElement' (TJSSVGGeometryElement) private Fpoints: TJSSVGPointList; external name 'points'; FanimatedPoints: TJSSVGPointList; external name 'animatedPoints'; public property points: TJSSVGPointList read Fpoints; property animatedPoints: TJSSVGPointList read FanimatedPoints; end; { -------------------------------------------------------------------- TJSSVGPreserveAspectRatio --------------------------------------------------------------------} TJSSVGPreserveAspectRatio = class external name 'SVGPreserveAspectRatio' private public const SVG_PRESERVEASPECTRATIO_UNKNOWN = 0; SVG_PRESERVEASPECTRATIO_NONE = 1; SVG_PRESERVEASPECTRATIO_XMINYMIN = 2; SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3; SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4; SVG_PRESERVEASPECTRATIO_XMINYMID = 5; SVG_PRESERVEASPECTRATIO_XMIDYMID = 6; SVG_PRESERVEASPECTRATIO_XMAXYMID = 7; SVG_PRESERVEASPECTRATIO_XMINYMAX = 8; SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9; SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10; SVG_MEETORSLICE_UNKNOWN = 0; SVG_MEETORSLICE_MEET = 1; SVG_MEETORSLICE_SLICE = 2; Public align: Cardinal; meetOrSlice: Cardinal; end; { -------------------------------------------------------------------- TJSSVGRadialGradientElement --------------------------------------------------------------------} TJSSVGRadialGradientElement = class external name 'SVGRadialGradientElement' (TJSSVGGradientElement) private Fcx: TJSSVGAnimatedLength; external name 'cx'; Fcy: TJSSVGAnimatedLength; external name 'cy'; rFr: TJSSVGAnimatedLength; external name 'r'; Ffx: TJSSVGAnimatedLength; external name 'fx'; Ffy: TJSSVGAnimatedLength; external name 'fy'; Ffr: TJSSVGAnimatedLength; external name 'fr'; public property cx: TJSSVGAnimatedLength read Fcx; property cy: TJSSVGAnimatedLength read Fcy; property r: TJSSVGAnimatedLength read rFr; property fx: TJSSVGAnimatedLength read Ffx; property fy: TJSSVGAnimatedLength read Ffy; property fr: TJSSVGAnimatedLength read Ffr; end; { -------------------------------------------------------------------- TJSSVGRect --------------------------------------------------------------------} TJSSVGRect = class external name 'SVGRect' private public x: Double; y: Double; width: Double; height: Double; end; { -------------------------------------------------------------------- TJSSVGRectElement --------------------------------------------------------------------} TJSSVGRectElement = class external name 'SVGRectElement' (TJSSVGGeometryElement) private Fx: TJSSVGAnimatedLength; external name 'x'; Fy: TJSSVGAnimatedLength; external name 'y'; Fwidth: TJSSVGAnimatedLength; external name 'width'; Fheight: TJSSVGAnimatedLength; external name 'height'; Frx: TJSSVGAnimatedLength; external name 'rx'; Fry: TJSSVGAnimatedLength; external name 'ry'; public property x: TJSSVGAnimatedLength read Fx; property y: TJSSVGAnimatedLength read Fy; property width: TJSSVGAnimatedLength read Fwidth; property height: TJSSVGAnimatedLength read Fheight; property rx: TJSSVGAnimatedLength read Frx; property ry: TJSSVGAnimatedLength read Fry; end; { -------------------------------------------------------------------- TJSSVGScriptElement --------------------------------------------------------------------} TJSSVGScriptElement = class external name 'SVGScriptElement' (TJSSVGElement) private public type_: string; external name 'type'; end; { -------------------------------------------------------------------- TJSSVGSetElement --------------------------------------------------------------------} TJSSVGSetElement = class external name 'SVGSetElement' (TJSSVGAnimationElement) private public end; { -------------------------------------------------------------------- TJSSVGStopElement --------------------------------------------------------------------} TJSSVGStopElement = class external name 'SVGStopElement' (TJSSVGElement) private Foffset: TJSSVGAnimatedNumber; external name 'offset'; public property offset: TJSSVGAnimatedNumber read Foffset; end; { -------------------------------------------------------------------- TJSSVGStyleElement --------------------------------------------------------------------} TJSSVGStyleElement = class external name 'SVGStyleElement' (TJSSVGElement) private Fsheet: TJSStyleSheet; external name 'sheet'; public type_: string; external name 'type'; media: string; title: string; disabled: boolean; property sheet: TJSStyleSheet read Fsheet; end; { -------------------------------------------------------------------- TJSSVGSwitchElement --------------------------------------------------------------------} TJSSVGSwitchElement = class external name 'SVGSwitchElement' (TJSSVGGraphicsElement) private public end; { -------------------------------------------------------------------- TJSSVGSymbolElement --------------------------------------------------------------------} TJSSVGSymbolElement = class external name 'SVGSymbolElement' (TJSSVGElement) private public end; { -------------------------------------------------------------------- TJSSVGStringList --------------------------------------------------------------------} TJSSVGStringList = class external name 'SVGStringList' public numberOfItems: Integer; procedure clear; function initialize(newItem: String): String; function getItem(&index: Integer): String; function insertItemBefore(newItem: String; &index: Integer): String; function replaceItem(newItem: String; &index: Integer): String; function removeItem(&index: Integer): String; function appendItem(newItem: String): String; end; { -------------------------------------------------------------------- TJSSVGTests --------------------------------------------------------------------} TJSSVGTests = class external name 'SVGTests' private FrequiredExtensions: TJSSVGStringList; external name 'requiredExtensions'; FsystemLanguage: TJSSVGStringList; external name 'systemLanguage'; public property requiredExtensions: TJSSVGStringList read FrequiredExtensions; property systemLanguage: TJSSVGStringList read FsystemLanguage; end; { -------------------------------------------------------------------- TJSSVGTextContentElement --------------------------------------------------------------------} TJSSVGTextContentElement = class external name 'SVGTextContentElement' (TJSSVGGraphicsElement) private FtextLength: TJSSVGAnimatedLength; external name 'textLength'; FlengthAdjust: TJSSVGAnimatedEnumeration; external name 'lengthAdjust'; public const LENGTHADJUST_UNKNOWN = 0; LENGTHADJUST_SPACING = 1; LENGTHADJUST_SPACINGANDGLYPHS = 2; Public function getNumberOfChars: Integer; function getComputedTextLength: Double; function getSubStringLength(charnum: NativeInt; nchars: NativeInt): Double; function getStartPositionOfChar(charnum: NativeInt): TJSSVGPoint; function getEndPositionOfChar(charnum: NativeInt): TJSSVGPoint; function getExtentOfChar(charnum: NativeInt): TJSSVGRect; function getRotationOfChar(charnum: NativeInt): Double; function getCharNumAtPosition(point: TJSSVGPoint): Integer; procedure selectSubString(charnum: NativeInt; nchars: NativeInt); property textLength: TJSSVGAnimatedLength read FtextLength; property lengthAdjust: TJSSVGAnimatedEnumeration read FlengthAdjust; end; { -------------------------------------------------------------------- TJSSVGTextPositioningElement --------------------------------------------------------------------} TJSSVGTextPositioningElement = class external name 'SVGTextPositioningElement' (TJSSVGTextContentElement) private Fx: TJSSVGAnimatedLengthList; external name 'x'; Fy: TJSSVGAnimatedLengthList; external name 'y'; Fdx: TJSSVGAnimatedLengthList; external name 'dx'; Fdy: TJSSVGAnimatedLengthList; external name 'dy'; Frotate: TJSSVGAnimatedNumberList; external name 'rotate'; public property x: TJSSVGAnimatedLengthList read Fx; property y: TJSSVGAnimatedLengthList read Fy; property dx: TJSSVGAnimatedLengthList read Fdx; property dy: TJSSVGAnimatedLengthList read Fdy; property rotate: TJSSVGAnimatedNumberList read Frotate; end; { -------------------------------------------------------------------- TJSSVGTextElement --------------------------------------------------------------------} TJSSVGTextElement = class external name 'SVGTextElement' (TJSSVGTextPositioningElement) private public end; { -------------------------------------------------------------------- TJSSVGTextPathElement --------------------------------------------------------------------} TJSSVGTextPathElement = class external name 'SVGTextPathElement' (TJSSVGTextContentElement) private FstartOffset: TJSSVGAnimatedLength; external name 'startOffset'; Fmethod: TJSSVGAnimatedEnumeration; external name 'method'; Fspacing: TJSSVGAnimatedEnumeration; external name 'spacing'; public const TEXTPATH_METHODTYPE_UNKNOWN = 0; TEXTPATH_METHODTYPE_ALIGN = 1; TEXTPATH_METHODTYPE_STRETCH = 2; TEXTPATH_SPACINGTYPE_UNKNOWN = 0; TEXTPATH_SPACINGTYPE_AUTO = 1; TEXTPATH_SPACINGTYPE_EXACT = 2; Public property startOffset: TJSSVGAnimatedLength read FstartOffset; property method: TJSSVGAnimatedEnumeration read Fmethod; property spacing: TJSSVGAnimatedEnumeration read Fspacing; end; { -------------------------------------------------------------------- TJSSVGTitleElement --------------------------------------------------------------------} TJSSVGTitleElement = class external name 'SVGTitleElement' (TJSSVGElement) private public end; { -------------------------------------------------------------------- TJSSVGTransform --------------------------------------------------------------------} TJSSVGTransform = class external name 'SVGTransform' private Ftype_: Cardinal; external name 'type'; Fmatrix: TJSSVGMatrix; external name 'matrix'; Fangle: Double; external name 'angle'; public const SVG_TRANSFORM_UNKNOWN = 0; SVG_TRANSFORM_MATRIX = 1; SVG_TRANSFORM_TRANSLATE = 2; SVG_TRANSFORM_SCALE = 3; SVG_TRANSFORM_ROTATE = 4; SVG_TRANSFORM_SKEWX = 5; SVG_TRANSFORM_SKEWY = 6; Public procedure setMatrix(matrix: TJSSVGMatrix); procedure setTranslate(tx: Double; ty: Double); procedure setScale(sx: Double; sy: Double); procedure setRotate(angle: Double; cx: Double; cy: Double); procedure setSkewX(angle: Double); procedure setSkewY(angle: Double); property type_: Cardinal read Ftype_; property matrix: TJSSVGMatrix read Fmatrix; property angle: Double read Fangle; end; { -------------------------------------------------------------------- TJSSVGTSpanElement --------------------------------------------------------------------} TJSSVGTSpanElement = class external name 'SVGTSpanElement' (TJSSVGTextPositioningElement) private public end; { -------------------------------------------------------------------- TJSSVGUnitTypes --------------------------------------------------------------------} TJSSVGUnitTypes = class external name 'SVGUnitTypes' private public const SVG_UNIT_TYPE_UNKNOWN = 0; SVG_UNIT_TYPE_USERSPACEONUSE = 1; SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2; Public end; { -------------------------------------------------------------------- TJSSVGURIReference --------------------------------------------------------------------} TJSSVGURIReference = class external name 'SVGURIReference' private Fhref: TJSSVGAnimatedString; external name 'href'; public property href: TJSSVGAnimatedString read Fhref; end; { -------------------------------------------------------------------- TJSSVGUseElement --------------------------------------------------------------------} TJSSVGUseElement = class external name 'SVGUseElement' (TJSSVGGraphicsElement) private Fx: TJSSVGAnimatedLength; external name 'x'; Fy: TJSSVGAnimatedLength; external name 'y'; Fwidth: TJSSVGAnimatedLength; external name 'width'; Fheight: TJSSVGAnimatedLength; external name 'height'; public property x: TJSSVGAnimatedLength read Fx; property y: TJSSVGAnimatedLength read Fy; property width: TJSSVGAnimatedLength read Fwidth; property height: TJSSVGAnimatedLength read Fheight; end; { -------------------------------------------------------------------- TJSSVGViewElement --------------------------------------------------------------------} TJSSVGViewElement = class external name 'SVGViewElement' (TJSSVGElement) private public end; { -------------------------------------------------------------------- TJSSVGZoomAndPan --------------------------------------------------------------------} TJSSVGZoomAndPan = class external name 'SVGZoomAndPan' private public const SVG_ZOOMANDPAN_UNKNOWN = 0; SVG_ZOOMANDPAN_DISABLE = 1; SVG_ZOOMANDPAN_MAGNIFY = 2; Public zoomAndPan: Cardinal; end; implementation end.