1// File: svg.idl
2#ifndef _SVG_IDL_
3#define _SVG_IDL_
4
5
6// For access to DOM2 core
7#include "dom.idl"
8
9// For access to DOM2 events
10#include "events.idl"
11
12// For access to those parts from DOM2 CSS OM used by SVG DOM.
13#include "css.idl"
14
15// For access to those parts from DOM2 Views OM used by SVG DOM.
16#include "views.idl"
17
18// For access to the SMIL OM used by SVG DOM.
19#include "smil.idl"
20
21#pragma prefix "dom.w3c.org"
22#pragma javaPackage "org.w3c.dom"
23module svg
24{
25  typedef dom::DOMString DOMString;
26  typedef dom::DOMException DOMException;
27  typedef dom::Element Element;
28  typedef dom::Document Document;
29  typedef dom::NodeList NodeList;
30
31  // Predeclarations
32  interface SVGElement;
33  interface SVGLangSpace;
34  interface SVGExternalResourcesRequired;
35  interface SVGTests;
36  interface SVGFitToViewBox;
37  interface SVGZoomAndPan;
38  interface SVGViewSpec;
39  interface SVGURIReference;
40  interface SVGPoint;
41  interface SVGMatrix;
42  interface SVGPreserveAspectRatio;
43  interface SVGAnimatedPreserveAspectRatio;
44  interface SVGTransformList;
45  interface SVGAnimatedTransformList;
46  interface SVGTransform;
47  interface SVGICCColor;
48  interface SVGColor;
49  interface SVGPaint;
50  interface SVGTransformable;
51  interface SVGDocument;
52  interface SVGSVGElement;
53  interface SVGElementInstance;
54  interface SVGElementInstanceList;
55
56
57  exception SVGException {
58    unsigned short   code;
59  };
60
61  // SVGExceptionCode
62  const unsigned short SVG_WRONG_TYPE_ERR           = 0;
63  const unsigned short SVG_INVALID_VALUE_ERR        = 1;
64  const unsigned short SVG_MATRIX_NOT_INVERTABLE    = 2;
65
66  interface SVGElement : Element {
67             attribute DOMString id;
68                         // raises DOMException on setting
69             attribute DOMString xmlbase;
70                         // raises DOMException on setting
71    readonly attribute SVGSVGElement ownerSVGElement;
72    readonly attribute SVGElement viewportElement;
73  };
74
75  interface SVGAnimatedBoolean {
76
77             attribute boolean baseVal;
78                         // raises DOMException on setting
79    readonly attribute boolean animVal;
80  };
81
82  interface SVGAnimatedString {
83
84             attribute DOMString baseVal;
85                         // raises DOMException on setting
86    readonly attribute DOMString animVal;
87  };
88
89  interface SVGStringList {
90
91    readonly attribute unsigned long numberOfItems;
92
93    void   clear (  )
94                    raises( DOMException );
95    DOMString initialize ( in DOMString newItem )
96                    raises( DOMException, SVGException );
97    DOMString getItem ( in unsigned long index )
98                    raises( DOMException );
99    DOMString insertItemBefore ( in DOMString newItem, in unsigned long index )
100                    raises( DOMException, SVGException );
101    DOMString replaceItem ( in DOMString newItem, in unsigned long index )
102                    raises( DOMException, SVGException );
103    DOMString removeItem ( in unsigned long index )
104                    raises( DOMException );
105    DOMString appendItem ( in DOMString newItem )
106                    raises( DOMException, SVGException );
107  };
108
109  interface SVGAnimatedEnumeration {
110
111             attribute unsigned short baseVal;
112                         // raises DOMException on setting
113    readonly attribute unsigned short animVal;
114  };
115
116  interface SVGAnimatedInteger {
117
118             attribute long baseVal;
119                         // raises DOMException on setting
120    readonly attribute long animVal;
121  };
122
123  interface SVGNumber {
124
125             attribute float value;
126                         // raises DOMException on setting
127  };
128
129  interface SVGAnimatedNumber {
130
131             attribute float baseVal;
132                         // raises DOMException on setting
133    readonly attribute float animVal;
134  };
135
136  interface SVGNumberList {
137
138    readonly attribute unsigned long numberOfItems;
139
140    void   clear (  )
141                    raises( DOMException );
142    SVGNumber initialize ( in SVGNumber newItem )
143                    raises( DOMException, SVGException );
144    SVGNumber getItem ( in unsigned long index )
145                    raises( DOMException );
146    SVGNumber insertItemBefore ( in SVGNumber newItem, in unsigned long index )
147                    raises( DOMException, SVGException );
148    SVGNumber replaceItem ( in SVGNumber newItem, in unsigned long index )
149                    raises( DOMException, SVGException );
150    SVGNumber removeItem ( in unsigned long index )
151                    raises( DOMException );
152    SVGNumber appendItem ( in SVGNumber newItem )
153                    raises( DOMException, SVGException );
154  };
155
156  interface SVGAnimatedNumberList {
157
158    readonly attribute SVGNumberList baseVal;
159    readonly attribute SVGNumberList animVal;
160  };
161
162  interface SVGLength {
163
164    // Length Unit Types
165    const unsigned short SVG_LENGTHTYPE_UNKNOWN    = 0;
166    const unsigned short SVG_LENGTHTYPE_NUMBER     = 1;
167    const unsigned short SVG_LENGTHTYPE_PERCENTAGE = 2;
168    const unsigned short SVG_LENGTHTYPE_EMS        = 3;
169    const unsigned short SVG_LENGTHTYPE_EXS        = 4;
170    const unsigned short SVG_LENGTHTYPE_PX         = 5;
171    const unsigned short SVG_LENGTHTYPE_CM         = 6;
172    const unsigned short SVG_LENGTHTYPE_MM         = 7;
173    const unsigned short SVG_LENGTHTYPE_IN         = 8;
174    const unsigned short SVG_LENGTHTYPE_PT         = 9;
175    const unsigned short SVG_LENGTHTYPE_PC         = 10;
176
177    readonly attribute unsigned short unitType;
178             attribute float          value;
179                         // raises DOMException on setting
180             attribute float          valueInSpecifiedUnits;
181                         // raises DOMException on setting
182             attribute DOMString      valueAsString;
183                         // raises DOMException on setting
184
185    void newValueSpecifiedUnits ( in unsigned short unitType, in float valueInSpecifiedUnits );
186    void convertToSpecifiedUnits ( in unsigned short unitType );
187  };
188
189  interface SVGAnimatedLength {
190
191    readonly attribute SVGLength baseVal;
192    readonly attribute SVGLength animVal;
193  };
194
195  interface SVGLengthList {
196
197    readonly attribute unsigned long numberOfItems;
198
199    void   clear (  )
200                    raises( DOMException );
201    SVGLength initialize ( in SVGLength newItem )
202                    raises( DOMException, SVGException );
203    SVGLength getItem ( in unsigned long index )
204                    raises( DOMException );
205    SVGLength insertItemBefore ( in SVGLength newItem, in unsigned long index )
206                    raises( DOMException, SVGException );
207    SVGLength replaceItem ( in SVGLength newItem, in unsigned long index )
208                    raises( DOMException, SVGException );
209    SVGLength removeItem ( in unsigned long index )
210                    raises( DOMException );
211    SVGLength appendItem ( in SVGLength newItem )
212                    raises( DOMException, SVGException );
213  };
214
215  interface SVGAnimatedLengthList {
216
217    readonly attribute SVGLengthList baseVal;
218    readonly attribute SVGLengthList animVal;
219  };
220
221  interface SVGAngle {
222
223    // Angle Unit Types
224    const unsigned short SVG_ANGLETYPE_UNKNOWN     = 0;
225    const unsigned short SVG_ANGLETYPE_UNSPECIFIED = 1;
226    const unsigned short SVG_ANGLETYPE_DEG         = 2;
227    const unsigned short SVG_ANGLETYPE_RAD         = 3;
228    const unsigned short SVG_ANGLETYPE_GRAD        = 4;
229
230    readonly attribute unsigned short unitType;
231             attribute float          value;
232                         // raises DOMException on setting
233             attribute float          valueInSpecifiedUnits;
234                         // raises DOMException on setting
235             attribute DOMString      valueAsString;
236                         // raises DOMException on setting
237
238    void newValueSpecifiedUnits ( in unsigned short unitType, in float valueInSpecifiedUnits );
239    void convertToSpecifiedUnits ( in unsigned short unitType );
240  };
241
242  interface SVGAnimatedAngle {
243
244    readonly attribute SVGAngle baseVal;
245    readonly attribute SVGAngle animVal;
246  };
247
248  interface SVGColor : css::CSSValue {
249    // Color Types
250    const unsigned short SVG_COLORTYPE_UNKNOWN           = 0;
251    const unsigned short SVG_COLORTYPE_RGBCOLOR          = 1;
252    const unsigned short SVG_COLORTYPE_RGBCOLOR_ICCCOLOR = 2;
253    const unsigned short SVG_COLORTYPE_CURRENTCOLOR      = 3;
254
255    readonly attribute unsigned short colorType;
256    readonly attribute css::RGBColor  rgbColor;
257    readonly attribute SVGICCColor    iccColor;
258
259    void        setRGBColor ( in DOMString rgbColor )
260                    raises( SVGException );
261    void        setRGBColorICCColor ( in DOMString rgbColor, in DOMString iccColor )
262                    raises( SVGException );
263    void        setColor ( in unsigned short colorType, in DOMString rgbColor, in DOMString iccColor )
264                    raises( SVGException );
265  };
266
267  interface SVGICCColor {
268
269             attribute DOMString      colorProfile;
270                         // raises DOMException on setting
271    readonly attribute SVGNumberList colors;
272  };
273
274  interface SVGRect {
275
276             attribute float x;
277                         // raises DOMException on setting
278             attribute float y;
279                         // raises DOMException on setting
280             attribute float width;
281                         // raises DOMException on setting
282             attribute float height;
283                         // raises DOMException on setting
284  };
285
286  interface SVGAnimatedRect {
287
288    readonly attribute SVGRect baseVal;
289    readonly attribute SVGRect animVal;
290  };
291
292  interface SVGUnitTypes {
293
294    // Unit Types
295    const unsigned short SVG_UNIT_TYPE_UNKNOWN           = 0;
296    const unsigned short SVG_UNIT_TYPE_USERSPACEONUSE    = 1;
297    const unsigned short SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2;
298  };
299
300  interface SVGStylable {
301
302    readonly attribute SVGAnimatedString className;
303    readonly attribute css::CSSStyleDeclaration style;
304
305    css::CSSValue getPresentationAttribute ( in DOMString name );
306  };
307
308  interface SVGLocatable {
309
310    readonly attribute SVGElement              nearestViewportElement;
311    readonly attribute SVGElement              farthestViewportElement;
312
313    SVGRect   getBBox (  );
314    SVGMatrix getCTM (  );
315    SVGMatrix getScreenCTM (  );
316    SVGMatrix getTransformToElement ( in SVGElement element )
317                    raises( SVGException );
318  };
319
320  interface SVGTransformable : SVGLocatable {
321    readonly attribute SVGAnimatedTransformList transform;
322  };
323
324  interface SVGTests {
325
326    readonly attribute SVGStringList requiredFeatures;
327    readonly attribute SVGStringList requiredExtensions;
328    readonly attribute SVGStringList systemLanguage;
329
330    boolean hasExtension ( in DOMString extension );
331  };
332
333  interface SVGLangSpace {
334
335             attribute DOMString xmllang;
336                         // raises DOMException on setting
337             attribute DOMString xmlspace;
338                         // raises DOMException on setting
339  };
340
341  interface SVGExternalResourcesRequired {
342
343    readonly attribute SVGAnimatedBoolean externalResourcesRequired;
344  };
345
346  interface SVGFitToViewBox {
347
348    readonly attribute SVGAnimatedRect                viewBox;
349    readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio;
350  };
351
352  interface SVGZoomAndPan {
353
354    // Zoom and Pan Types
355    const unsigned short SVG_ZOOMANDPAN_UNKNOWN   = 0;
356    const unsigned short SVG_ZOOMANDPAN_DISABLE = 1;
357    const unsigned short SVG_ZOOMANDPAN_MAGNIFY = 2;
358
359             attribute unsigned short zoomAndPan;
360                         // raises DOMException on setting
361  };
362
363  interface SVGViewSpec :
364                SVGZoomAndPan,
365                SVGFitToViewBox {
366
367    readonly attribute SVGTransformList transform;
368    readonly attribute SVGElement       viewTarget;
369    readonly attribute DOMString        viewBoxString;
370    readonly attribute DOMString        preserveAspectRatioString;
371    readonly attribute DOMString        transformString;
372    readonly attribute DOMString        viewTargetString;
373  };
374
375  interface SVGURIReference {
376
377    readonly attribute SVGAnimatedString href;
378  };
379
380  interface SVGCSSRule : css::CSSRule {
381    // Additional CSS RuleType to support ICC color specifications
382    const unsigned short COLOR_PROFILE_RULE = 7;
383  };
384
385  interface SVGRenderingIntent {
386
387    // Rendering Intent Types
388    const unsigned short RENDERING_INTENT_UNKNOWN               = 0;
389    const unsigned short RENDERING_INTENT_AUTO                  = 1;
390    const unsigned short RENDERING_INTENT_PERCEPTUAL            = 2;
391    const unsigned short RENDERING_INTENT_RELATIVE_COLORIMETRIC = 3;
392    const unsigned short RENDERING_INTENT_SATURATION            = 4;
393    const unsigned short RENDERING_INTENT_ABSOLUTE_COLORIMETRIC = 5;
394  };
395
396  interface SVGDocument :
397                Document,
398                events::DocumentEvent {
399
400    readonly attribute DOMString    title;
401    readonly attribute DOMString     referrer;
402    readonly attribute DOMString      domain;
403    readonly attribute DOMString      URL;
404    readonly attribute DOMString      path;
405    readonly attribute SVGSVGElement rootElement;
406  };
407
408  interface SVGSVGElement :
409                SVGElement,
410                SVGTests,
411                SVGLangSpace,
412                SVGExternalResourcesRequired,
413                SVGStylable,
414                SVGLocatable,
415                SVGFitToViewBox,
416                SVGZoomAndPan,
417                events::EventTarget,
418                events::DocumentEvent,
419                css::ViewCSS,
420                css::DocumentCSS {
421
422    readonly attribute SVGAnimatedLength x;
423    readonly attribute SVGAnimatedLength y;
424    readonly attribute SVGAnimatedLength width;
425    readonly attribute SVGAnimatedLength height;
426             attribute DOMString         contentScriptType;
427                         // raises DOMException on setting
428             attribute DOMString         contentStyleType;
429                         // raises DOMException on setting
430    readonly attribute SVGRect           viewport;
431    readonly attribute float pixelUnitToMillimeterX;
432    readonly attribute float pixelUnitToMillimeterY;
433    readonly attribute float screenPixelToMillimeterX;
434    readonly attribute float screenPixelToMillimeterY;
435             attribute boolean useCurrentView;
436                         // raises DOMException on setting
437    readonly attribute SVGViewSpec currentView;
438             attribute float currentScale;
439                         // raises DOMException on setting
440    readonly attribute SVGPoint currentTranslate;
441
442    unsigned long suspendRedraw ( in unsigned long max_wait_milliseconds );
443    void          unsuspendRedraw ( in unsigned long suspend_handle_id )
444                    raises( DOMException );
445    void          unsuspendRedrawAll (  );
446    void          forceRedraw (  );
447    void          pauseAnimations (  );
448    void          unpauseAnimations (  );
449    boolean       animationsPaused (  );
450    float         getCurrentTime (  );
451    void          setCurrentTime ( in float seconds );
452    NodeList      getIntersectionList ( in SVGRect rect, in SVGElement referenceElement );
453    NodeList      getEnclosureList ( in SVGRect rect, in SVGElement referenceElement );
454    boolean       checkIntersection ( in SVGElement element, in SVGRect rect );
455    boolean       checkEnclosure ( in SVGElement element, in SVGRect rect );
456    void          deselectAll (  );
457    SVGNumber              createSVGNumber (  );
458    SVGLength              createSVGLength (  );
459    SVGAngle               createSVGAngle (  );
460    SVGPoint               createSVGPoint (  );
461    SVGMatrix              createSVGMatrix (  );
462    SVGRect                createSVGRect (  );
463    SVGTransform           createSVGTransform (  );
464    SVGTransform     createSVGTransformFromMatrix ( in SVGMatrix matrix );
465    Element         getElementById ( in DOMString elementId );
466  };
467
468  interface SVGGElement :
469                SVGElement,
470                SVGTests,
471                SVGLangSpace,
472                SVGExternalResourcesRequired,
473                SVGStylable,
474                SVGTransformable,
475                events::EventTarget {};
476
477  interface SVGDefsElement :
478                SVGElement,
479                SVGTests,
480                SVGLangSpace,
481                SVGExternalResourcesRequired,
482                SVGStylable,
483                SVGTransformable,
484                events::EventTarget {};
485
486  interface SVGDescElement :
487                SVGElement,
488                SVGLangSpace,
489                SVGStylable {};
490
491  interface SVGTitleElement :
492                SVGElement,
493                SVGLangSpace,
494                SVGStylable {};
495
496  interface SVGSymbolElement :
497                SVGElement,
498                SVGLangSpace,
499                SVGExternalResourcesRequired,
500                SVGStylable,
501                SVGFitToViewBox,
502                events::EventTarget {};
503
504  interface SVGUseElement :
505                SVGElement,
506                SVGURIReference,
507                SVGTests,
508                SVGLangSpace,
509                SVGExternalResourcesRequired,
510                SVGStylable,
511                SVGTransformable,
512                events::EventTarget {
513
514    readonly attribute SVGAnimatedLength   x;
515    readonly attribute SVGAnimatedLength   y;
516    readonly attribute SVGAnimatedLength   width;
517    readonly attribute SVGAnimatedLength   height;
518    readonly attribute SVGElementInstance instanceRoot;
519    readonly attribute SVGElementInstance animatedInstanceRoot;
520  };
521
522  interface SVGElementInstance : events::EventTarget {
523    readonly attribute SVGElement correspondingElement;
524    readonly attribute SVGUseElement correspondingUseElement;
525    readonly attribute SVGElementInstance parentNode;
526    readonly attribute SVGElementInstanceList childNodes;
527    readonly attribute SVGElementInstance firstChild;
528    readonly attribute SVGElementInstance lastChild;
529    readonly attribute SVGElementInstance previousSibling;
530    readonly attribute SVGElementInstance nextSibling;
531  };
532
533  interface SVGElementInstanceList {
534
535    readonly attribute unsigned long length;
536
537    SVGElementInstance item ( in unsigned long index );
538  };
539
540  interface SVGImageElement :
541                SVGElement,
542                SVGURIReference,
543                SVGTests,
544                SVGLangSpace,
545                SVGExternalResourcesRequired,
546                SVGStylable,
547                SVGTransformable,
548                events::EventTarget {
549
550    readonly attribute SVGAnimatedLength x;
551    readonly attribute SVGAnimatedLength y;
552    readonly attribute SVGAnimatedLength width;
553    readonly attribute SVGAnimatedLength height;
554    readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio;
555  };
556
557  interface SVGSwitchElement :
558                SVGElement,
559                SVGTests,
560                SVGLangSpace,
561                SVGExternalResourcesRequired,
562                SVGStylable,
563                SVGTransformable,
564                events::EventTarget {};
565
566  interface GetSVGDocument {
567
568    SVGDocument getSVGDocument (  )
569                    raises( DOMException );
570  };
571
572  interface SVGStyleElement : SVGElement {
573             attribute DOMString xmlspace;
574                         // raises DOMException on setting
575             attribute DOMString type;
576                         // raises DOMException on setting
577             attribute DOMString media;
578                         // raises DOMException on setting
579             attribute DOMString title;
580                         // raises DOMException on setting
581  };
582
583  interface SVGPoint {
584
585             attribute float x;
586                         // raises DOMException on setting
587             attribute float y;
588                         // raises DOMException on setting
589
590    SVGPoint matrixTransform ( in SVGMatrix matrix );
591  };
592
593  interface SVGPointList {
594
595    readonly attribute unsigned long numberOfItems;
596
597    void   clear (  )
598                    raises( DOMException );
599    SVGPoint initialize ( in SVGPoint newItem )
600                    raises( DOMException, SVGException );
601    SVGPoint getItem ( in unsigned long index )
602                    raises( DOMException );
603    SVGPoint insertItemBefore ( in SVGPoint newItem, in unsigned long index )
604                    raises( DOMException, SVGException );
605    SVGPoint replaceItem ( in SVGPoint newItem, in unsigned long index )
606                    raises( DOMException, SVGException );
607    SVGPoint removeItem ( in unsigned long index )
608                    raises( DOMException );
609    SVGPoint appendItem ( in SVGPoint newItem )
610                    raises( DOMException, SVGException );
611  };
612
613  interface SVGMatrix {
614
615             attribute float a;
616                         // raises DOMException on setting
617             attribute float b;
618                         // raises DOMException on setting
619             attribute float c;
620                         // raises DOMException on setting
621             attribute float d;
622                         // raises DOMException on setting
623             attribute float e;
624                         // raises DOMException on setting
625             attribute float f;
626                         // raises DOMException on setting
627
628    SVGMatrix multiply ( in SVGMatrix secondMatrix );
629    SVGMatrix inverse (  )
630                    raises( SVGException );
631    SVGMatrix translate ( in float x, in float y );
632    SVGMatrix scale ( in float scaleFactor );
633    SVGMatrix scaleNonUniform ( in float scaleFactorX, in float scaleFactorY );
634    SVGMatrix rotate ( in float angle );
635    SVGMatrix rotateFromVector ( in float x, in float y )
636                    raises( SVGException );
637    SVGMatrix flipX (  );
638    SVGMatrix flipY (  );
639    SVGMatrix skewX ( in float angle );
640    SVGMatrix skewY ( in float angle );
641  };
642
643  interface SVGTransform {
644
645    // Transform Types
646    const unsigned short SVG_TRANSFORM_UNKNOWN   = 0;
647    const unsigned short SVG_TRANSFORM_MATRIX    = 1;
648    const unsigned short SVG_TRANSFORM_TRANSLATE = 2;
649    const unsigned short SVG_TRANSFORM_SCALE     = 3;
650    const unsigned short SVG_TRANSFORM_ROTATE    = 4;
651    const unsigned short SVG_TRANSFORM_SKEWX     = 5;
652    const unsigned short SVG_TRANSFORM_SKEWY     = 6;
653
654    readonly attribute unsigned short type;
655    readonly attribute SVGMatrix matrix;
656    readonly attribute float angle;
657
658    void setMatrix ( in SVGMatrix matrix );
659    void setTranslate ( in float tx, in float ty );
660    void setScale ( in float sx, in float sy );
661    void setRotate ( in float angle, in float cx, in float cy );
662    void setSkewX ( in float angle );
663    void setSkewY ( in float angle );
664  };
665
666  interface SVGTransformList {
667
668    readonly attribute unsigned long numberOfItems;
669
670    void   clear (  )
671                    raises( DOMException );
672    SVGTransform initialize ( in SVGTransform newItem )
673                    raises( DOMException, SVGException );
674    SVGTransform getItem ( in unsigned long index )
675                    raises( DOMException );
676    SVGTransform insertItemBefore ( in SVGTransform newItem, in unsigned long index )
677                    raises( DOMException, SVGException );
678    SVGTransform replaceItem ( in SVGTransform newItem, in unsigned long index )
679                    raises( DOMException, SVGException );
680    SVGTransform removeItem ( in unsigned long index )
681                    raises( DOMException );
682    SVGTransform appendItem ( in SVGTransform newItem )
683                    raises( DOMException, SVGException );
684    SVGTransform createSVGTransformFromMatrix ( in SVGMatrix matrix );
685    SVGTransform consolidate (  );
686  };
687
688  interface SVGAnimatedTransformList {
689
690    readonly attribute SVGTransformList baseVal;
691    readonly attribute SVGTransformList animVal;
692  };
693
694  interface SVGPreserveAspectRatio {
695
696    // Alignment Types
697    const unsigned short SVG_PRESERVEASPECTRATIO_UNKNOWN   = 0;
698    const unsigned short SVG_PRESERVEASPECTRATIO_NONE     = 1;
699    const unsigned short SVG_PRESERVEASPECTRATIO_XMINYMIN = 2;
700    const unsigned short SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3;
701    const unsigned short SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4;
702    const unsigned short SVG_PRESERVEASPECTRATIO_XMINYMID = 5;
703    const unsigned short SVG_PRESERVEASPECTRATIO_XMIDYMID = 6;
704    const unsigned short SVG_PRESERVEASPECTRATIO_XMAXYMID = 7;
705    const unsigned short SVG_PRESERVEASPECTRATIO_XMINYMAX = 8;
706    const unsigned short SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9;
707    const unsigned short SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10;
708    // Meet-or-slice Types
709    const unsigned short SVG_MEETORSLICE_UNKNOWN   = 0;
710    const unsigned short SVG_MEETORSLICE_MEET  = 1;
711    const unsigned short SVG_MEETORSLICE_SLICE = 2;
712
713             attribute unsigned short align;
714                         // raises DOMException on setting
715             attribute unsigned short meetOrSlice;
716                         // raises DOMException on setting
717  };
718
719  interface SVGAnimatedPreserveAspectRatio {
720
721    readonly attribute SVGPreserveAspectRatio baseVal;
722    readonly attribute SVGPreserveAspectRatio animVal;
723  };
724
725  interface SVGPathSeg {
726
727    // Path Segment Types
728    const unsigned short PATHSEG_UNKNOWN                      = 0;
729    const unsigned short PATHSEG_CLOSEPATH                    = 1;
730    const unsigned short PATHSEG_MOVETO_ABS                   = 2;
731    const unsigned short PATHSEG_MOVETO_REL                   = 3;
732    const unsigned short PATHSEG_LINETO_ABS                   = 4;
733    const unsigned short PATHSEG_LINETO_REL                   = 5;
734    const unsigned short PATHSEG_CURVETO_CUBIC_ABS            = 6;
735    const unsigned short PATHSEG_CURVETO_CUBIC_REL            = 7;
736    const unsigned short PATHSEG_CURVETO_QUADRATIC_ABS        = 8;
737    const unsigned short PATHSEG_CURVETO_QUADRATIC_REL        = 9;
738    const unsigned short PATHSEG_ARC_ABS                      = 10;
739    const unsigned short PATHSEG_ARC_REL                      = 11;
740    const unsigned short PATHSEG_LINETO_HORIZONTAL_ABS        = 12;
741    const unsigned short PATHSEG_LINETO_HORIZONTAL_REL        = 13;
742    const unsigned short PATHSEG_LINETO_VERTICAL_ABS          = 14;
743    const unsigned short PATHSEG_LINETO_VERTICAL_REL          = 15;
744    const unsigned short PATHSEG_CURVETO_CUBIC_SMOOTH_ABS     = 16;
745    const unsigned short PATHSEG_CURVETO_CUBIC_SMOOTH_REL     = 17;
746    const unsigned short PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;
747    const unsigned short PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19;
748
749    readonly attribute unsigned short pathSegType;
750    readonly attribute DOMString      pathSegTypeAsLetter;
751  };
752
753  interface SVGPathSegClosePath : SVGPathSeg {};
754
755  interface SVGPathSegMovetoAbs : SVGPathSeg {
756             attribute float   x;
757                         // raises DOMException on setting
758             attribute float   y;
759                         // raises DOMException on setting
760  };
761
762  interface SVGPathSegMovetoRel : SVGPathSeg {
763             attribute float   x;
764                         // raises DOMException on setting
765             attribute float   y;
766                         // raises DOMException on setting
767  };
768
769  interface SVGPathSegLinetoAbs : SVGPathSeg {
770             attribute float   x;
771                         // raises DOMException on setting
772             attribute float   y;
773                         // raises DOMException on setting
774  };
775
776  interface SVGPathSegLinetoRel : SVGPathSeg {
777             attribute float   x;
778                         // raises DOMException on setting
779             attribute float   y;
780                         // raises DOMException on setting
781  };
782
783  interface SVGPathSegCurvetoCubicAbs : SVGPathSeg {
784             attribute float   x;
785                         // raises DOMException on setting
786             attribute float   y;
787                         // raises DOMException on setting
788             attribute float   x1;
789                         // raises DOMException on setting
790             attribute float   y1;
791                         // raises DOMException on setting
792             attribute float   x2;
793                         // raises DOMException on setting
794             attribute float   y2;
795                         // raises DOMException on setting
796  };
797
798  interface SVGPathSegCurvetoCubicRel : SVGPathSeg {
799             attribute float   x;
800                         // raises DOMException on setting
801             attribute float   y;
802                         // raises DOMException on setting
803             attribute float   x1;
804                         // raises DOMException on setting
805             attribute float   y1;
806                         // raises DOMException on setting
807             attribute float   x2;
808                         // raises DOMException on setting
809             attribute float   y2;
810                         // raises DOMException on setting
811  };
812
813  interface SVGPathSegCurvetoQuadraticAbs : SVGPathSeg {
814             attribute float   x;
815                         // raises DOMException on setting
816             attribute float   y;
817                         // raises DOMException on setting
818             attribute float   x1;
819                         // raises DOMException on setting
820             attribute float   y1;
821                         // raises DOMException on setting
822  };
823
824  interface SVGPathSegCurvetoQuadraticRel : SVGPathSeg {
825             attribute float   x;
826                         // raises DOMException on setting
827             attribute float   y;
828                         // raises DOMException on setting
829             attribute float   x1;
830                         // raises DOMException on setting
831             attribute float   y1;
832                         // raises DOMException on setting
833  };
834
835  interface SVGPathSegArcAbs : SVGPathSeg {
836             attribute float   x;
837                         // raises DOMException on setting
838             attribute float   y;
839                         // raises DOMException on setting
840             attribute float   r1;
841                         // raises DOMException on setting
842             attribute float   r2;
843                         // raises DOMException on setting
844             attribute float   angle;
845                         // raises DOMException on setting
846             attribute boolean largeArcFlag;
847                         // raises DOMException on setting
848             attribute boolean sweepFlag;
849                         // raises DOMException on setting
850  };
851
852  interface SVGPathSegArcRel : SVGPathSeg {
853             attribute float   x;
854                         // raises DOMException on setting
855             attribute float   y;
856                         // raises DOMException on setting
857             attribute float   r1;
858                         // raises DOMException on setting
859             attribute float   r2;
860                         // raises DOMException on setting
861             attribute float   angle;
862                         // raises DOMException on setting
863             attribute boolean largeArcFlag;
864                         // raises DOMException on setting
865             attribute boolean sweepFlag;
866                         // raises DOMException on setting
867  };
868
869  interface SVGPathSegLinetoHorizontalAbs : SVGPathSeg {
870             attribute float   x;
871                         // raises DOMException on setting
872  };
873
874  interface SVGPathSegLinetoHorizontalRel : SVGPathSeg {
875             attribute float   x;
876                         // raises DOMException on setting
877  };
878
879  interface SVGPathSegLinetoVerticalAbs : SVGPathSeg {
880             attribute float   y;
881                         // raises DOMException on setting
882  };
883
884  interface SVGPathSegLinetoVerticalRel : SVGPathSeg {
885             attribute float   y;
886                         // raises DOMException on setting
887  };
888
889  interface SVGPathSegCurvetoCubicSmoothAbs : SVGPathSeg {
890             attribute float   x;
891                         // raises DOMException on setting
892             attribute float   y;
893                         // raises DOMException on setting
894             attribute float   x2;
895                         // raises DOMException on setting
896             attribute float   y2;
897                         // raises DOMException on setting
898  };
899
900  interface SVGPathSegCurvetoCubicSmoothRel : SVGPathSeg {
901             attribute float   x;
902                         // raises DOMException on setting
903             attribute float   y;
904                         // raises DOMException on setting
905             attribute float   x2;
906                         // raises DOMException on setting
907             attribute float   y2;
908                         // raises DOMException on setting
909  };
910
911  interface SVGPathSegCurvetoQuadraticSmoothAbs : SVGPathSeg {
912             attribute float   x;
913                         // raises DOMException on setting
914             attribute float   y;
915                         // raises DOMException on setting
916  };
917
918  interface SVGPathSegCurvetoQuadraticSmoothRel : SVGPathSeg {
919             attribute float   x;
920                         // raises DOMException on setting
921             attribute float   y;
922                         // raises DOMException on setting
923  };
924
925  interface SVGPathSegList {
926
927    readonly attribute unsigned long numberOfItems;
928
929    void   clear (  )
930                    raises( DOMException );
931    SVGPathSeg initialize ( in SVGPathSeg newItem )
932                    raises( DOMException, SVGException );
933    SVGPathSeg getItem ( in unsigned long index )
934                    raises( DOMException );
935    SVGPathSeg insertItemBefore ( in SVGPathSeg newItem, in unsigned long index )
936                    raises( DOMException, SVGException );
937    SVGPathSeg replaceItem ( in SVGPathSeg newItem, in unsigned long index )
938                    raises( DOMException, SVGException );
939    SVGPathSeg removeItem ( in unsigned long index )
940                    raises( DOMException );
941    SVGPathSeg appendItem ( in SVGPathSeg newItem )
942                    raises( DOMException, SVGException );
943  };
944
945  interface SVGAnimatedPathData {
946
947    readonly attribute SVGPathSegList   pathSegList;
948    readonly attribute SVGPathSegList   normalizedPathSegList;
949    readonly attribute SVGPathSegList   animatedPathSegList;
950    readonly attribute SVGPathSegList   animatedNormalizedPathSegList;
951  };
952
953  interface SVGPathElement :
954                SVGElement,
955                SVGTests,
956                SVGLangSpace,
957                SVGExternalResourcesRequired,
958                SVGStylable,
959                SVGTransformable,
960                events::EventTarget,
961                SVGAnimatedPathData {
962
963    readonly attribute SVGAnimatedNumber pathLength;
964
965    float         getTotalLength (  );
966    SVGPoint      getPointAtLength ( in float distance );
967    unsigned long getPathSegAtLength ( in float distance );
968    SVGPathSegClosePath    createSVGPathSegClosePath (  );
969    SVGPathSegMovetoAbs    createSVGPathSegMovetoAbs ( in float x, in float y );
970    SVGPathSegMovetoRel    createSVGPathSegMovetoRel ( in float x, in float y );
971    SVGPathSegLinetoAbs    createSVGPathSegLinetoAbs ( in float x, in float y );
972    SVGPathSegLinetoRel    createSVGPathSegLinetoRel ( in float x, in float y );
973    SVGPathSegCurvetoCubicAbs    createSVGPathSegCurvetoCubicAbs ( in float x, in float y, in float x1, in float y1, in float x2, in float y2 );
974    SVGPathSegCurvetoCubicRel    createSVGPathSegCurvetoCubicRel ( in float x, in float y, in float x1, in float y1, in float x2, in float y2 );
975    SVGPathSegCurvetoQuadraticAbs    createSVGPathSegCurvetoQuadraticAbs ( in float x, in float y, in float x1, in float y1 );
976    SVGPathSegCurvetoQuadraticRel    createSVGPathSegCurvetoQuadraticRel ( in float x, in float y, in float x1, in float y1 );
977    SVGPathSegArcAbs    createSVGPathSegArcAbs ( in float x, in float y, in float r1, in float r2, in float angle, in boolean largeArcFlag, in boolean sweepFlag );
978    SVGPathSegArcRel    createSVGPathSegArcRel ( in float x, in float y, in float r1, in float r2, in float angle, in boolean largeArcFlag, in boolean sweepFlag );
979    SVGPathSegLinetoHorizontalAbs    createSVGPathSegLinetoHorizontalAbs ( in float x );
980    SVGPathSegLinetoHorizontalRel    createSVGPathSegLinetoHorizontalRel ( in float x );
981    SVGPathSegLinetoVerticalAbs    createSVGPathSegLinetoVerticalAbs ( in float y );
982    SVGPathSegLinetoVerticalRel    createSVGPathSegLinetoVerticalRel ( in float y );
983    SVGPathSegCurvetoCubicSmoothAbs    createSVGPathSegCurvetoCubicSmoothAbs ( in float x, in float y, in float x2, in float y2 );
984    SVGPathSegCurvetoCubicSmoothRel    createSVGPathSegCurvetoCubicSmoothRel ( in float x, in float y, in float x2, in float y2 );
985    SVGPathSegCurvetoQuadraticSmoothAbs    createSVGPathSegCurvetoQuadraticSmoothAbs ( in float x, in float y );
986    SVGPathSegCurvetoQuadraticSmoothRel    createSVGPathSegCurvetoQuadraticSmoothRel ( in float x, in float y );
987  };
988
989  interface SVGRectElement :
990                SVGElement,
991                SVGTests,
992                SVGLangSpace,
993                SVGExternalResourcesRequired,
994                SVGStylable,
995                SVGTransformable,
996                events::EventTarget {
997
998    readonly attribute SVGAnimatedLength x;
999    readonly attribute SVGAnimatedLength y;
1000    readonly attribute SVGAnimatedLength width;
1001    readonly attribute SVGAnimatedLength height;
1002    readonly attribute SVGAnimatedLength rx;
1003    readonly attribute SVGAnimatedLength ry;
1004  };
1005
1006  interface SVGCircleElement :
1007                SVGElement,
1008                SVGTests,
1009                SVGLangSpace,
1010                SVGExternalResourcesRequired,
1011                SVGStylable,
1012                SVGTransformable,
1013                events::EventTarget {
1014
1015    readonly attribute SVGAnimatedLength cx;
1016    readonly attribute SVGAnimatedLength cy;
1017    readonly attribute SVGAnimatedLength r;
1018  };
1019
1020  interface SVGEllipseElement :
1021                SVGElement,
1022                SVGTests,
1023                SVGLangSpace,
1024                SVGExternalResourcesRequired,
1025                SVGStylable,
1026                SVGTransformable,
1027                events::EventTarget {
1028
1029    readonly attribute SVGAnimatedLength cx;
1030    readonly attribute SVGAnimatedLength cy;
1031    readonly attribute SVGAnimatedLength rx;
1032    readonly attribute SVGAnimatedLength ry;
1033  };
1034
1035  interface SVGLineElement :
1036                SVGElement,
1037                SVGTests,
1038                SVGLangSpace,
1039                SVGExternalResourcesRequired,
1040                SVGStylable,
1041                SVGTransformable,
1042                events::EventTarget {
1043
1044    readonly attribute SVGAnimatedLength x1;
1045    readonly attribute SVGAnimatedLength y1;
1046    readonly attribute SVGAnimatedLength x2;
1047    readonly attribute SVGAnimatedLength y2;
1048  };
1049
1050  interface SVGAnimatedPoints {
1051
1052    readonly attribute SVGPointList   points;
1053    readonly attribute SVGPointList   animatedPoints;
1054  };
1055
1056  interface SVGPolylineElement :
1057                SVGElement,
1058                SVGTests,
1059                SVGLangSpace,
1060                SVGExternalResourcesRequired,
1061                SVGStylable,
1062                SVGTransformable,
1063                events::EventTarget,
1064                SVGAnimatedPoints {};
1065
1066  interface SVGPolygonElement :
1067                SVGElement,
1068                SVGTests,
1069                SVGLangSpace,
1070                SVGExternalResourcesRequired,
1071                SVGStylable,
1072                SVGTransformable,
1073                events::EventTarget,
1074                SVGAnimatedPoints {};
1075
1076  interface SVGTextContentElement :
1077                SVGElement,
1078                SVGTests,
1079                SVGLangSpace,
1080                SVGExternalResourcesRequired,
1081                SVGStylable,
1082                events::EventTarget {
1083
1084    // lengthAdjust Types
1085    const unsigned short LENGTHADJUST_UNKNOWN   = 0;
1086    const unsigned short LENGTHADJUST_SPACING     = 1;
1087    const unsigned short LENGTHADJUST_SPACINGANDGLYPHS     = 2;
1088
1089    readonly attribute SVGAnimatedLength      textLength;
1090    readonly attribute SVGAnimatedEnumeration lengthAdjust;
1091
1092    long     getNumberOfChars (  );
1093    float    getComputedTextLength (  );
1094    float    getSubStringLength ( in unsigned long charnum, in unsigned long nchars )
1095                    raises( DOMException );
1096    SVGPoint getStartPositionOfChar ( in unsigned long charnum )
1097                    raises( DOMException );
1098    SVGPoint getEndPositionOfChar ( in unsigned long charnum )
1099                    raises( DOMException );
1100    SVGRect  getExtentOfChar ( in unsigned long charnum )
1101                    raises( DOMException );
1102    float    getRotationOfChar ( in unsigned long charnum )
1103                    raises( DOMException );
1104    long     getCharNumAtPosition ( in SVGPoint point );
1105    void     selectSubString ( in unsigned long charnum, in unsigned long nchars )
1106                    raises( DOMException );
1107  };
1108
1109  interface SVGTextPositioningElement : SVGTextContentElement {
1110    readonly attribute SVGAnimatedLengthList x;
1111    readonly attribute SVGAnimatedLengthList y;
1112    readonly attribute SVGAnimatedLengthList dx;
1113    readonly attribute SVGAnimatedLengthList dy;
1114    readonly attribute SVGAnimatedNumberList rotate;
1115  };
1116
1117  interface SVGTextElement :
1118                SVGTextPositioningElement,
1119                SVGTransformable {};
1120
1121  interface SVGTSpanElement : SVGTextPositioningElement {};
1122
1123  interface SVGTRefElement :
1124                SVGTextPositioningElement,
1125                SVGURIReference {};
1126
1127  interface SVGTextPathElement :
1128                SVGTextContentElement,
1129                SVGURIReference {
1130
1131    // textPath Method Types
1132    const unsigned short TEXTPATH_METHODTYPE_UNKNOWN   = 0;
1133    const unsigned short TEXTPATH_METHODTYPE_ALIGN     = 1;
1134    const unsigned short TEXTPATH_METHODTYPE_STRETCH     = 2;
1135    // textPath Spacing Types
1136    const unsigned short TEXTPATH_SPACINGTYPE_UNKNOWN   = 0;
1137    const unsigned short TEXTPATH_SPACINGTYPE_AUTO     = 1;
1138    const unsigned short TEXTPATH_SPACINGTYPE_EXACT     = 2;
1139
1140    readonly attribute SVGAnimatedLength              startOffset;
1141    readonly attribute SVGAnimatedEnumeration method;
1142    readonly attribute SVGAnimatedEnumeration spacing;
1143  };
1144
1145  interface SVGAltGlyphElement :
1146                SVGTextPositioningElement,
1147                SVGURIReference {
1148
1149             attribute DOMString glyphRef;
1150                         // raises DOMException on setting
1151             attribute DOMString format;
1152                         // raises DOMException on setting
1153  };
1154
1155  interface SVGAltGlyphDefElement : SVGElement {};
1156
1157  interface SVGAltGlyphItemElement : SVGElement {};
1158
1159  interface SVGGlyphRefElement :
1160                SVGElement,
1161                SVGURIReference,
1162                SVGStylable {
1163
1164             attribute DOMString glyphRef;
1165                         // raises DOMException on setting
1166             attribute DOMString format;
1167                         // raises DOMException on setting
1168             attribute float    x;
1169                         // raises DOMException on setting
1170             attribute float    y;
1171                         // raises DOMException on setting
1172             attribute float    dx;
1173                         // raises DOMException on setting
1174             attribute float    dy;
1175                         // raises DOMException on setting
1176  };
1177
1178  interface SVGPaint : SVGColor {
1179    // Paint Types
1180    const unsigned short SVG_PAINTTYPE_UNKNOWN               = 0;
1181    const unsigned short SVG_PAINTTYPE_RGBCOLOR              = 1;
1182    const unsigned short SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR     = 2;
1183    const unsigned short SVG_PAINTTYPE_NONE                  = 101;
1184    const unsigned short SVG_PAINTTYPE_CURRENTCOLOR          = 102;
1185    const unsigned short SVG_PAINTTYPE_URI_NONE              = 103;
1186    const unsigned short SVG_PAINTTYPE_URI_CURRENTCOLOR      = 104;
1187    const unsigned short SVG_PAINTTYPE_URI_RGBCOLOR          = 105;
1188    const unsigned short SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR = 106;
1189    const unsigned short SVG_PAINTTYPE_URI                   = 107;
1190
1191    readonly attribute unsigned short paintType;
1192    readonly attribute DOMString      uri;
1193
1194    void setUri ( in DOMString uri );
1195    void setPaint ( in unsigned short paintType, in DOMString uri, in DOMString rgbColor, in DOMString iccColor )
1196                    raises( SVGException );
1197  };
1198
1199  interface SVGMarkerElement :
1200                SVGElement,
1201                SVGLangSpace,
1202                SVGExternalResourcesRequired,
1203                SVGStylable,
1204                SVGFitToViewBox {
1205
1206    // Marker Unit Types
1207    const unsigned short SVG_MARKERUNITS_UNKNOWN        = 0;
1208    const unsigned short SVG_MARKERUNITS_USERSPACEONUSE = 1;
1209    const unsigned short SVG_MARKERUNITS_STROKEWIDTH    = 2;
1210    // Marker Orientation Types
1211    const unsigned short SVG_MARKER_ORIENT_UNKNOWN      = 0;
1212    const unsigned short SVG_MARKER_ORIENT_AUTO         = 1;
1213    const unsigned short SVG_MARKER_ORIENT_ANGLE        = 2;
1214
1215    readonly attribute SVGAnimatedLength      refX;
1216    readonly attribute SVGAnimatedLength      refY;
1217    readonly attribute SVGAnimatedEnumeration markerUnits;
1218    readonly attribute SVGAnimatedLength      markerWidth;
1219    readonly attribute SVGAnimatedLength      markerHeight;
1220    readonly attribute SVGAnimatedEnumeration orientType;
1221    readonly attribute SVGAnimatedAngle      orientAngle;
1222
1223    void setOrientToAuto (  );
1224    void setOrientToAngle ( in SVGAngle angle );
1225  };
1226
1227  interface SVGColorProfileElement :
1228                SVGElement,
1229                SVGURIReference,
1230                SVGRenderingIntent {
1231
1232             attribute DOMString      local;
1233                         // raises DOMException on setting
1234             attribute DOMString      name;
1235                         // raises DOMException on setting
1236             attribute unsigned short renderingIntent;
1237                         // raises DOMException on setting
1238  };
1239
1240  interface SVGColorProfileRule :
1241                SVGCSSRule,
1242                SVGRenderingIntent {
1243
1244             attribute DOMString      src;
1245                         // raises DOMException on setting
1246             attribute DOMString      name;
1247                         // raises DOMException on setting
1248             attribute unsigned short renderingIntent;
1249                         // raises DOMException on setting
1250  };
1251
1252  interface SVGGradientElement :
1253                SVGElement,
1254                SVGURIReference,
1255                SVGExternalResourcesRequired,
1256                SVGStylable,
1257                SVGUnitTypes {
1258
1259    // Spread Method Types
1260    const unsigned short SVG_SPREADMETHOD_UNKNOWN = 0;
1261    const unsigned short SVG_SPREADMETHOD_PAD     = 1;
1262    const unsigned short SVG_SPREADMETHOD_REFLECT = 2;
1263    const unsigned short SVG_SPREADMETHOD_REPEAT  = 3;
1264
1265    readonly attribute SVGAnimatedEnumeration   gradientUnits;
1266    readonly attribute SVGAnimatedTransformList gradientTransform;
1267    readonly attribute SVGAnimatedEnumeration   spreadMethod;
1268  };
1269
1270  interface SVGLinearGradientElement : SVGGradientElement {
1271    readonly attribute SVGAnimatedLength x1;
1272    readonly attribute SVGAnimatedLength y1;
1273    readonly attribute SVGAnimatedLength x2;
1274    readonly attribute SVGAnimatedLength y2;
1275  };
1276
1277  interface SVGRadialGradientElement : SVGGradientElement {
1278    readonly attribute SVGAnimatedLength cx;
1279    readonly attribute SVGAnimatedLength cy;
1280    readonly attribute SVGAnimatedLength r;
1281    readonly attribute SVGAnimatedLength fx;
1282    readonly attribute SVGAnimatedLength fy;
1283  };
1284
1285  interface SVGStopElement :
1286                SVGElement,
1287                SVGStylable {
1288
1289    readonly attribute SVGAnimatedNumber offset;
1290  };
1291
1292  interface SVGPatternElement :
1293                SVGElement,
1294                SVGURIReference,
1295                SVGTests,
1296                SVGLangSpace,
1297                SVGExternalResourcesRequired,
1298                SVGStylable,
1299                SVGFitToViewBox,
1300                SVGUnitTypes {
1301
1302    readonly attribute SVGAnimatedEnumeration   patternUnits;
1303    readonly attribute SVGAnimatedEnumeration   patternContentUnits;
1304    readonly attribute SVGAnimatedTransformList patternTransform;
1305    readonly attribute SVGAnimatedLength        x;
1306    readonly attribute SVGAnimatedLength        y;
1307    readonly attribute SVGAnimatedLength        width;
1308    readonly attribute SVGAnimatedLength        height;
1309  };
1310
1311  interface SVGClipPathElement :
1312                SVGElement,
1313                SVGTests,
1314                SVGLangSpace,
1315                SVGExternalResourcesRequired,
1316                SVGStylable,
1317                SVGTransformable,
1318                SVGUnitTypes {
1319
1320    readonly attribute SVGAnimatedEnumeration clipPathUnits;
1321  };
1322
1323  interface SVGMaskElement :
1324                SVGElement,
1325                SVGTests,
1326                SVGLangSpace,
1327                SVGExternalResourcesRequired,
1328                SVGStylable,
1329                SVGUnitTypes {
1330
1331    readonly attribute SVGAnimatedEnumeration maskUnits;
1332    readonly attribute SVGAnimatedEnumeration maskContentUnits;
1333    readonly attribute SVGAnimatedLength      x;
1334    readonly attribute SVGAnimatedLength      y;
1335    readonly attribute SVGAnimatedLength      width;
1336    readonly attribute SVGAnimatedLength      height;
1337  };
1338
1339  interface SVGFilterElement :
1340                SVGElement,
1341                SVGURIReference,
1342                SVGLangSpace,
1343                SVGExternalResourcesRequired,
1344                SVGStylable,
1345                SVGUnitTypes {
1346
1347    readonly attribute SVGAnimatedEnumeration filterUnits;
1348    readonly attribute SVGAnimatedEnumeration primitiveUnits;
1349    readonly attribute SVGAnimatedLength      x;
1350    readonly attribute SVGAnimatedLength      y;
1351    readonly attribute SVGAnimatedLength      width;
1352    readonly attribute SVGAnimatedLength      height;
1353    readonly attribute SVGAnimatedInteger    filterResX;
1354    readonly attribute SVGAnimatedInteger    filterResY;
1355
1356    void setFilterRes ( in unsigned long filterResX, in unsigned long filterResY );
1357  };
1358
1359  interface SVGFilterPrimitiveStandardAttributes : SVGStylable {
1360    readonly attribute SVGAnimatedLength x;
1361    readonly attribute SVGAnimatedLength y;
1362    readonly attribute SVGAnimatedLength width;
1363    readonly attribute SVGAnimatedLength height;
1364    readonly attribute SVGAnimatedString result;
1365  };
1366
1367  interface SVGFEBlendElement :
1368                SVGElement,
1369                SVGFilterPrimitiveStandardAttributes {
1370
1371    // Blend Mode Types
1372    const unsigned short SVG_FEBLEND_MODE_UNKNOWN  = 0;
1373    const unsigned short SVG_FEBLEND_MODE_NORMAL   = 1;
1374    const unsigned short SVG_FEBLEND_MODE_MULTIPLY = 2;
1375    const unsigned short SVG_FEBLEND_MODE_SCREEN   = 3;
1376    const unsigned short SVG_FEBLEND_MODE_DARKEN   = 4;
1377    const unsigned short SVG_FEBLEND_MODE_LIGHTEN  = 5;
1378
1379    readonly attribute SVGAnimatedString      in1;
1380    readonly attribute SVGAnimatedString      in2;
1381    readonly attribute SVGAnimatedEnumeration mode;
1382  };
1383
1384  interface SVGFEColorMatrixElement :
1385                SVGElement,
1386                SVGFilterPrimitiveStandardAttributes {
1387
1388    // Color Matrix Types
1389    const unsigned short SVG_FECOLORMATRIX_TYPE_UNKNOWN          = 0;
1390    const unsigned short SVG_FECOLORMATRIX_TYPE_MATRIX           = 1;
1391    const unsigned short SVG_FECOLORMATRIX_TYPE_SATURATE         = 2;
1392    const unsigned short SVG_FECOLORMATRIX_TYPE_HUEROTATE        = 3;
1393    const unsigned short SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4;
1394
1395    readonly attribute SVGAnimatedString      in1;
1396    readonly attribute SVGAnimatedEnumeration type;
1397    readonly attribute SVGAnimatedNumberList  values;
1398  };
1399
1400  interface SVGFEComponentTransferElement :
1401                SVGElement,
1402                SVGFilterPrimitiveStandardAttributes {
1403
1404    readonly attribute SVGAnimatedString in1;
1405  };
1406
1407  interface SVGComponentTransferFunctionElement : SVGElement {
1408    // Component Transfer Types
1409    const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN  = 0;
1410    const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1;
1411    const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_TABLE    = 2;
1412    const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE    = 3;
1413    const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_LINEAR   = 4;
1414    const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_GAMMA    = 5;
1415
1416    readonly attribute SVGAnimatedEnumeration type;
1417    readonly attribute SVGAnimatedNumberList  tableValues;
1418    readonly attribute SVGAnimatedNumber      slope;
1419    readonly attribute SVGAnimatedNumber      intercept;
1420    readonly attribute SVGAnimatedNumber      amplitude;
1421    readonly attribute SVGAnimatedNumber      exponent;
1422    readonly attribute SVGAnimatedNumber      offset;
1423  };
1424
1425  interface SVGFEFuncRElement : SVGComponentTransferFunctionElement {};
1426
1427  interface SVGFEFuncGElement : SVGComponentTransferFunctionElement {};
1428
1429  interface SVGFEFuncBElement : SVGComponentTransferFunctionElement {};
1430
1431  interface SVGFEFuncAElement : SVGComponentTransferFunctionElement {};
1432
1433  interface SVGFECompositeElement :
1434                SVGElement,
1435                SVGFilterPrimitiveStandardAttributes {
1436
1437    // Composite Operators
1438    const unsigned short SVG_FECOMPOSITE_OPERATOR_UNKNOWN    = 0;
1439    const unsigned short SVG_FECOMPOSITE_OPERATOR_OVER       = 1;
1440    const unsigned short SVG_FECOMPOSITE_OPERATOR_IN         = 2;
1441    const unsigned short SVG_FECOMPOSITE_OPERATOR_OUT        = 3;
1442    const unsigned short SVG_FECOMPOSITE_OPERATOR_ATOP       = 4;
1443    const unsigned short SVG_FECOMPOSITE_OPERATOR_XOR        = 5;
1444    const unsigned short SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6;
1445
1446    readonly attribute SVGAnimatedString      in1;
1447    readonly attribute SVGAnimatedString      in2;
1448    readonly attribute SVGAnimatedEnumeration operator;
1449    readonly attribute SVGAnimatedNumber      k1;
1450    readonly attribute SVGAnimatedNumber      k2;
1451    readonly attribute SVGAnimatedNumber      k3;
1452    readonly attribute SVGAnimatedNumber      k4;
1453  };
1454
1455  interface SVGFEConvolveMatrixElement :
1456                SVGElement,
1457                SVGFilterPrimitiveStandardAttributes {
1458
1459    // Edge Mode Values
1460    const unsigned short SVG_EDGEMODE_UNKNOWN   = 0;
1461    const unsigned short SVG_EDGEMODE_DUPLICATE = 1;
1462    const unsigned short SVG_EDGEMODE_WRAP      = 2;
1463    const unsigned short SVG_EDGEMODE_NONE      = 3;
1464
1465    readonly attribute SVGAnimatedInteger     orderX;
1466    readonly attribute SVGAnimatedInteger     orderY;
1467    readonly attribute SVGAnimatedNumberList  kernelMatrix;
1468    readonly attribute SVGAnimatedNumber      divisor;
1469    readonly attribute SVGAnimatedNumber      bias;
1470    readonly attribute SVGAnimatedInteger     targetX;
1471    readonly attribute SVGAnimatedInteger     targetY;
1472    readonly attribute SVGAnimatedEnumeration edgeMode;
1473    readonly attribute SVGAnimatedLength      kernelUnitLengthX;
1474    readonly attribute SVGAnimatedLength      kernelUnitLengthY;
1475    readonly attribute SVGAnimatedBoolean     preserveAlpha;
1476  };
1477
1478  interface SVGFEDiffuseLightingElement :
1479                SVGElement,
1480                SVGFilterPrimitiveStandardAttributes {
1481
1482    readonly attribute SVGAnimatedString in1;
1483    readonly attribute SVGAnimatedNumber surfaceScale;
1484    readonly attribute SVGAnimatedNumber diffuseConstant;
1485  };
1486
1487  interface SVGFEDistantLightElement : SVGElement {
1488    readonly attribute SVGAnimatedNumber azimuth;
1489    readonly attribute SVGAnimatedNumber elevation;
1490  };
1491
1492  interface SVGFEPointLightElement : SVGElement {
1493    readonly attribute SVGAnimatedNumber x;
1494    readonly attribute SVGAnimatedNumber y;
1495    readonly attribute SVGAnimatedNumber z;
1496  };
1497
1498  interface SVGFESpotLightElement : SVGElement {
1499    readonly attribute SVGAnimatedNumber x;
1500    readonly attribute SVGAnimatedNumber y;
1501    readonly attribute SVGAnimatedNumber z;
1502    readonly attribute SVGAnimatedNumber pointsAtX;
1503    readonly attribute SVGAnimatedNumber pointsAtY;
1504    readonly attribute SVGAnimatedNumber pointsAtZ;
1505    readonly attribute SVGAnimatedNumber specularExponent;
1506    readonly attribute SVGAnimatedNumber limitingConeAngle;
1507  };
1508
1509  interface SVGFEDisplacementMapElement :
1510                SVGElement,
1511                SVGFilterPrimitiveStandardAttributes {
1512
1513    // Channel Selectors
1514    const unsigned short SVG_CHANNEL_UNKNOWN = 0;
1515    const unsigned short SVG_CHANNEL_R       = 1;
1516    const unsigned short SVG_CHANNEL_G       = 2;
1517    const unsigned short SVG_CHANNEL_B       = 3;
1518    const unsigned short SVG_CHANNEL_A       = 4;
1519
1520    readonly attribute SVGAnimatedString      in1;
1521    readonly attribute SVGAnimatedString      in2;
1522    readonly attribute SVGAnimatedNumber      scale;
1523    readonly attribute SVGAnimatedEnumeration xChannelSelector;
1524    readonly attribute SVGAnimatedEnumeration yChannelSelector;
1525  };
1526
1527  interface SVGFEFloodElement :
1528                SVGElement,
1529                SVGFilterPrimitiveStandardAttributes {
1530
1531    readonly attribute SVGAnimatedString      in1;
1532  };
1533
1534  interface SVGFEGaussianBlurElement :
1535                SVGElement,
1536                SVGFilterPrimitiveStandardAttributes {
1537
1538    readonly attribute SVGAnimatedString in1;
1539    readonly attribute SVGAnimatedNumber stdDeviationX;
1540    readonly attribute SVGAnimatedNumber stdDeviationY;
1541
1542    void setStdDeviation ( in float stdDeviationX, in float stdDeviationY );
1543  };
1544
1545  interface SVGFEImageElement :
1546                SVGElement,
1547                SVGURIReference,
1548                SVGLangSpace,
1549                SVGExternalResourcesRequired,
1550                SVGFilterPrimitiveStandardAttributes {};
1551
1552  interface SVGFEMergeElement :
1553                SVGElement,
1554                SVGFilterPrimitiveStandardAttributes {};
1555
1556  interface SVGFEMergeNodeElement : SVGElement {
1557    readonly attribute SVGAnimatedString in1;
1558  };
1559
1560  interface SVGFEMorphologyElement :
1561                SVGElement,
1562                SVGFilterPrimitiveStandardAttributes {
1563
1564    // Morphology Operators
1565    const unsigned short SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0;
1566    const unsigned short SVG_MORPHOLOGY_OPERATOR_ERODE   = 1;
1567    const unsigned short SVG_MORPHOLOGY_OPERATOR_DILATE  = 2;
1568
1569    readonly attribute SVGAnimatedString      in1;
1570    readonly attribute SVGAnimatedEnumeration operator;
1571    readonly attribute SVGAnimatedLength      radiusX;
1572    readonly attribute SVGAnimatedLength      radiusY;
1573  };
1574
1575  interface SVGFEOffsetElement :
1576                SVGElement,
1577                SVGFilterPrimitiveStandardAttributes {
1578
1579    readonly attribute SVGAnimatedString in1;
1580    readonly attribute SVGAnimatedNumber dx;
1581    readonly attribute SVGAnimatedNumber dy;
1582  };
1583
1584  interface SVGFESpecularLightingElement :
1585                SVGElement,
1586                SVGFilterPrimitiveStandardAttributes {
1587
1588    readonly attribute SVGAnimatedString in1;
1589    readonly attribute SVGAnimatedNumber surfaceScale;
1590    readonly attribute SVGAnimatedNumber specularConstant;
1591    readonly attribute SVGAnimatedNumber specularExponent;
1592  };
1593
1594  interface SVGFETileElement :
1595                SVGElement,
1596                SVGFilterPrimitiveStandardAttributes {
1597
1598    readonly attribute SVGAnimatedString in1;
1599  };
1600
1601  interface SVGFETurbulenceElement :
1602                SVGElement,
1603                SVGFilterPrimitiveStandardAttributes {
1604
1605    // Turbulence Types
1606    const unsigned short SVG_TURBULENCE_TYPE_UNKNOWN      = 0;
1607    const unsigned short SVG_TURBULENCE_TYPE_FRACTALNOISE = 1;
1608    const unsigned short SVG_TURBULENCE_TYPE_TURBULENCE   = 2;
1609    // Stitch Options
1610    const unsigned short SVG_STITCHTYPE_UNKNOWN  = 0;
1611    const unsigned short SVG_STITCHTYPE_STITCH   = 1;
1612    const unsigned short SVG_STITCHTYPE_NOSTITCH = 2;
1613
1614    readonly attribute SVGAnimatedNumber      baseFrequencyX;
1615    readonly attribute SVGAnimatedNumber      baseFrequencyY;
1616    readonly attribute SVGAnimatedInteger     numOctaves;
1617    readonly attribute SVGAnimatedNumber      seed;
1618    readonly attribute SVGAnimatedEnumeration stitchTiles;
1619    readonly attribute SVGAnimatedEnumeration type;
1620  };
1621
1622  interface SVGCursorElement :
1623                SVGElement,
1624                SVGURIReference,
1625                SVGTests,
1626                SVGExternalResourcesRequired {
1627
1628    readonly attribute SVGAnimatedLength x;
1629    readonly attribute SVGAnimatedLength y;
1630  };
1631
1632  interface SVGAElement :
1633                SVGElement,
1634                SVGURIReference,
1635                SVGTests,
1636                SVGLangSpace,
1637                SVGExternalResourcesRequired,
1638                SVGStylable,
1639                SVGTransformable,
1640                events::EventTarget {
1641
1642    readonly attribute SVGAnimatedString target;
1643  };
1644
1645  interface SVGViewElement :
1646                SVGElement,
1647                SVGExternalResourcesRequired,
1648                SVGFitToViewBox,
1649                SVGZoomAndPan {
1650
1651    readonly attribute SVGStringList viewTarget;
1652  };
1653
1654  interface SVGScriptElement :
1655                SVGElement,
1656                SVGURIReference,
1657                SVGExternalResourcesRequired {
1658
1659             attribute DOMString type;
1660                         // raises DOMException on setting
1661  };
1662
1663  interface SVGEvent : events::Event {};
1664
1665  interface SVGZoomEvent : events::UIEvent {
1666    readonly attribute SVGRect zoomRectScreen;
1667    readonly attribute float previousScale;
1668    readonly attribute SVGPoint previousTranslate;
1669    readonly attribute float newScale;
1670    readonly attribute SVGPoint newTranslate;
1671  };
1672
1673  interface SVGAnimationElement :
1674                SVGElement,
1675                SVGTests,
1676                SVGExternalResourcesRequired,
1677                smil::ElementTimeControl,
1678                events::EventTarget {
1679    // Animation Fill Types
1680    const unsigned short SVG_ANIMATION_FILL_UNKNOWN = 0;
1681    const unsigned short SVG_ANIMATION_FILL_REMOVE = 1;
1682    const unsigned short SVG_ANIMATION_FILL_FREEZE = 2;
1683    // Animation Additive Types
1684    const unsigned short SVG_ANIMATION_ADDITIVE_UNKNOWN = 0;
1685    const unsigned short SVG_ANIMATION_ADDITIVE_REPLACE = 1;
1686    const unsigned short SVG_ANIMATION_ADDITIVE_SUM = 2;
1687    // Animation Accumulate Types
1688    const unsigned short SVG_ANIMATION_ACCUMULATE_UNKNOWN = 0;
1689    const unsigned short SVG_ANIMATION_ACCUMULATE_NONE = 1;
1690    const unsigned short SVG_ANIMATION_ACCUMULATE_SUM = 2;
1691
1692	readonly attribute DOMString href;
1693    readonly attribute SVGElement targetElement;
1694    readonly attribute DOMString attributeName;
1695    readonly attribute float begin;
1696    readonly attribute float dur;
1697    readonly attribute SVGAnimatedType from;
1698    readonly attribute SVGAnimatedType to;
1699    readonly attribute unsigned short fill;
1700    readonly attribute unsigned short additive;
1701	readonly attribute unsigned short accumulate;
1702
1703    float getStartTime (  );
1704    float getCurrentTime (  );
1705    float getSimpleDuration (  )
1706                    raises( DOMException );
1707  };
1708
1709  interface SVGAnimateElement : SVGAnimationElement {};
1710
1711  interface SVGSetElement : SVGAnimationElement {};
1712
1713  interface SVGAnimateMotionElement : SVGAnimationElement {};
1714
1715  interface SVGMPathElement :
1716                SVGElement,
1717                SVGURIReference,
1718                SVGExternalResourcesRequired {};
1719
1720  interface SVGAnimateColorElement : SVGAnimationElement {};
1721
1722  interface SVGAnimateTransformElement : SVGAnimationElement {
1723    // Animate Transform Types
1724    const unsigned short SVG_ANIMATETRANSFORM_TRANSLATE = 0;
1725    const unsigned short SVG_ANIMATETRANSFORM_SCALE     = 1;
1726    const unsigned short SVG_ANIMATETRANSFORM_ROTATE    = 2;
1727    const unsigned short SVG_ANIMATETRANSFORM_SKEWX     = 3;
1728    const unsigned short SVG_ANIMATETRANSFORM_SKEWY     = 4;
1729
1730  	readonly attribute unsigned short type;
1731  };
1732
1733  interface SVGFontElement :
1734                SVGElement,
1735                SVGExternalResourcesRequired,
1736                SVGStylable {};
1737
1738  interface SVGGlyphElement :
1739                SVGElement,
1740                SVGStylable {};
1741
1742  interface SVGMissingGlyphElement :
1743                SVGElement,
1744                SVGStylable {};
1745
1746  interface SVGHKernElement : SVGElement {};
1747
1748  interface SVGVKernElement : SVGElement {};
1749
1750  interface SVGFontFaceElement : SVGElement {};
1751
1752  interface SVGFontFaceSrcElement : SVGElement {};
1753
1754  interface SVGFontFaceUriElement : SVGElement {};
1755
1756  interface SVGFontFaceFormatElement : SVGElement {};
1757
1758  interface SVGFontFaceNameElement : SVGElement {};
1759
1760  interface SVGDefinitionSrcElement : SVGElement {};
1761
1762  interface SVGMetadataElement : SVGElement {};
1763
1764  interface SVGForeignObjectElement :
1765                SVGElement,
1766                SVGTests,
1767                SVGLangSpace,
1768                SVGExternalResourcesRequired,
1769                SVGStylable,
1770                SVGTransformable,
1771                events::EventTarget {
1772
1773    readonly attribute SVGAnimatedLength x;
1774    readonly attribute SVGAnimatedLength y;
1775    readonly attribute SVGAnimatedLength width;
1776    readonly attribute SVGAnimatedLength height;
1777  };
1778
1779  interface SVGVideoElement :
1780                SVGElement,
1781                SVGURIReference,
1782                SVGLangSpace,
1783                SVGStylable,
1784                SVGTransformable {
1785
1786    readonly attribute SVGAnimatedLength x;
1787    readonly attribute SVGAnimatedLength y;
1788    readonly attribute SVGAnimatedLength width;
1789    readonly attribute SVGAnimatedLength height;
1790    readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio;
1791
1792    readonly attribute float begin;
1793    readonly attribute float dur;
1794    readonly attribute float clipBegin;
1795    readonly attribute float clipEnd;
1796  };
1797};
1798
1799#endif // _SVG_IDL_
1800