diff --git a/packages/rtl/pas2js_rtl.lpk b/packages/rtl/pas2js_rtl.lpk index d2ef434..352932b 100644 --- a/packages/rtl/pas2js_rtl.lpk +++ b/packages/rtl/pas2js_rtl.lpk @@ -40,7 +40,7 @@ - + @@ -122,6 +122,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rtl/websvg.pas b/packages/rtl/websvg.pas new file mode 100644 index 0000000..48c5fc1 --- /dev/null +++ b/packages/rtl/websvg.pas @@ -0,0 +1,1753 @@ +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. \ No newline at end of file