Code

moving trunk for module inkscape
[inkscape.git] / src / dom / svg.idl
1 // File: svg.idl
2 #ifndef _SVG_IDL_
3 #define _SVG_IDL_
6 // For access to DOM2 core
7 #include "dom.idl"
9 // For access to DOM2 events
10 #include "events.idl"
12 // For access to those parts from DOM2 CSS OM used by SVG DOM.
13 #include "css.idl"
15 // For access to those parts from DOM2 Views OM used by SVG DOM.
16 #include "views.idl"
18 // For access to the SMIL OM used by SVG DOM.
19 #include "smil.idl"
21 #pragma prefix "dom.w3c.org"
22 #pragma javaPackage "org.w3c.dom"
23 module 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;
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;
57   exception SVGException {
58     unsigned short   code;
59   };
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;
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   };
75   interface SVGAnimatedBoolean { 
77              attribute boolean baseVal;
78                          // raises DOMException on setting
79     readonly attribute boolean animVal;
80   };
82   interface SVGAnimatedString { 
84              attribute DOMString baseVal;
85                          // raises DOMException on setting
86     readonly attribute DOMString animVal;
87   };
89   interface SVGStringList { 
91     readonly attribute unsigned long numberOfItems;
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   };
109   interface SVGAnimatedEnumeration { 
111              attribute unsigned short baseVal;
112                          // raises DOMException on setting
113     readonly attribute unsigned short animVal;
114   };
116   interface SVGAnimatedInteger { 
118              attribute long baseVal;
119                          // raises DOMException on setting
120     readonly attribute long animVal;
121   };
123   interface SVGNumber { 
125              attribute float value;
126                          // raises DOMException on setting
127   };
129   interface SVGAnimatedNumber { 
131              attribute float baseVal;
132                          // raises DOMException on setting
133     readonly attribute float animVal;
134   };
136   interface SVGNumberList { 
138     readonly attribute unsigned long numberOfItems;
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   };
156   interface SVGAnimatedNumberList { 
158     readonly attribute SVGNumberList baseVal;
159     readonly attribute SVGNumberList animVal;
160   };
162   interface SVGLength { 
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;
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
185     void newValueSpecifiedUnits ( in unsigned short unitType, in float valueInSpecifiedUnits );
186     void convertToSpecifiedUnits ( in unsigned short unitType );
187   };
189   interface SVGAnimatedLength { 
191     readonly attribute SVGLength baseVal;
192     readonly attribute SVGLength animVal;
193   };
195   interface SVGLengthList { 
197     readonly attribute unsigned long numberOfItems;
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   };
215   interface SVGAnimatedLengthList { 
217     readonly attribute SVGLengthList baseVal;
218     readonly attribute SVGLengthList animVal;
219   };
221   interface SVGAngle { 
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;
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
238     void newValueSpecifiedUnits ( in unsigned short unitType, in float valueInSpecifiedUnits );
239     void convertToSpecifiedUnits ( in unsigned short unitType );
240   };
242   interface SVGAnimatedAngle { 
244     readonly attribute SVGAngle baseVal;
245     readonly attribute SVGAngle animVal;
246   };
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;
255     readonly attribute unsigned short colorType;
256     readonly attribute css::RGBColor  rgbColor;
257     readonly attribute SVGICCColor    iccColor;
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   };
267   interface SVGICCColor { 
269              attribute DOMString      colorProfile;
270                          // raises DOMException on setting
271     readonly attribute SVGNumberList colors;
272   };
274   interface SVGRect { 
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   };
286   interface SVGAnimatedRect { 
288     readonly attribute SVGRect baseVal;
289     readonly attribute SVGRect animVal;
290   };
292   interface SVGUnitTypes { 
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   };
300   interface SVGStylable { 
302     readonly attribute SVGAnimatedString className;
303     readonly attribute css::CSSStyleDeclaration style;
305     css::CSSValue getPresentationAttribute ( in DOMString name );
306   };
308   interface SVGLocatable { 
310     readonly attribute SVGElement              nearestViewportElement;
311     readonly attribute SVGElement              farthestViewportElement;
313     SVGRect   getBBox (  );
314     SVGMatrix getCTM (  );
315     SVGMatrix getScreenCTM (  );
316     SVGMatrix getTransformToElement ( in SVGElement element )
317                     raises( SVGException );
318   };
320   interface SVGTransformable : SVGLocatable { 
321     readonly attribute SVGAnimatedTransformList transform;
322   };
324   interface SVGTests { 
326     readonly attribute SVGStringList requiredFeatures;
327     readonly attribute SVGStringList requiredExtensions;
328     readonly attribute SVGStringList systemLanguage;
330     boolean hasExtension ( in DOMString extension );
331   };
333   interface SVGLangSpace { 
335              attribute DOMString xmllang;
336                          // raises DOMException on setting
337              attribute DOMString xmlspace;
338                          // raises DOMException on setting
339   };
341   interface SVGExternalResourcesRequired { 
343     readonly attribute SVGAnimatedBoolean externalResourcesRequired;
344   };
346   interface SVGFitToViewBox { 
348     readonly attribute SVGAnimatedRect                viewBox;
349     readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio;
350   };
352   interface SVGZoomAndPan { 
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;
359              attribute unsigned short zoomAndPan;
360                          // raises DOMException on setting
361   };
363   interface SVGViewSpec : 
364                 SVGZoomAndPan,
365                 SVGFitToViewBox { 
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   };
375   interface SVGURIReference { 
377     readonly attribute SVGAnimatedString href;
378   };
380   interface SVGCSSRule : css::CSSRule { 
381     // Additional CSS RuleType to support ICC color specifications
382     const unsigned short COLOR_PROFILE_RULE = 7;
383   };
385   interface SVGRenderingIntent { 
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   };
396   interface SVGDocument : 
397                 Document,
398                 events::DocumentEvent { 
400     readonly attribute DOMString    title;
401     readonly attribute DOMString     referrer;
402     readonly attribute DOMString      domain;
403     readonly attribute DOMString      URL;
404     readonly attribute SVGSVGElement rootElement;
405   };
407   interface SVGSVGElement : 
408                 SVGElement,
409                 SVGTests,
410                 SVGLangSpace,
411                 SVGExternalResourcesRequired,
412                 SVGStylable,
413                 SVGLocatable,
414                 SVGFitToViewBox,
415                 SVGZoomAndPan,
416                 events::EventTarget,
417                 events::DocumentEvent,
418                 css::ViewCSS,
419                 css::DocumentCSS { 
421     readonly attribute SVGAnimatedLength x;
422     readonly attribute SVGAnimatedLength y;
423     readonly attribute SVGAnimatedLength width;
424     readonly attribute SVGAnimatedLength height;
425              attribute DOMString         contentScriptType;
426                          // raises DOMException on setting
427              attribute DOMString         contentStyleType;
428                          // raises DOMException on setting
429     readonly attribute SVGRect           viewport;
430     readonly attribute float pixelUnitToMillimeterX;
431     readonly attribute float pixelUnitToMillimeterY;
432     readonly attribute float screenPixelToMillimeterX;
433     readonly attribute float screenPixelToMillimeterY;
434              attribute boolean useCurrentView;
435                          // raises DOMException on setting
436     readonly attribute SVGViewSpec currentView;
437              attribute float currentScale;
438                          // raises DOMException on setting
439     readonly attribute SVGPoint currentTranslate;
441     unsigned long suspendRedraw ( in unsigned long max_wait_milliseconds );
442     void          unsuspendRedraw ( in unsigned long suspend_handle_id )
443                     raises( DOMException );
444     void          unsuspendRedrawAll (  );
445     void          forceRedraw (  );
446     void          pauseAnimations (  );
447     void          unpauseAnimations (  );
448     boolean       animationsPaused (  );
449     float         getCurrentTime (  );
450     void          setCurrentTime ( in float seconds );
451     NodeList      getIntersectionList ( in SVGRect rect, in SVGElement referenceElement );
452     NodeList      getEnclosureList ( in SVGRect rect, in SVGElement referenceElement );
453     boolean       checkIntersection ( in SVGElement element, in SVGRect rect );
454     boolean       checkEnclosure ( in SVGElement element, in SVGRect rect );
455     void          deselectAll (  );
456     SVGNumber              createSVGNumber (  );
457     SVGLength              createSVGLength (  );
458     SVGAngle               createSVGAngle (  );
459     SVGPoint               createSVGPoint (  );
460     SVGMatrix              createSVGMatrix (  );
461     SVGRect                createSVGRect (  );
462     SVGTransform           createSVGTransform (  );
463     SVGTransform     createSVGTransformFromMatrix ( in SVGMatrix matrix );
464     Element         getElementById ( in DOMString elementId );
465   };
467   interface SVGGElement : 
468                 SVGElement,
469                 SVGTests,
470                 SVGLangSpace,
471                 SVGExternalResourcesRequired,
472                 SVGStylable,
473                 SVGTransformable,
474                 events::EventTarget {};
476   interface SVGDefsElement : 
477                 SVGElement,
478                 SVGTests,
479                 SVGLangSpace,
480                 SVGExternalResourcesRequired,
481                 SVGStylable,
482                 SVGTransformable,
483                 events::EventTarget {};
485   interface SVGDescElement : 
486                 SVGElement,
487                 SVGLangSpace,
488                 SVGStylable {};
490   interface SVGTitleElement : 
491                 SVGElement,
492                 SVGLangSpace,
493                 SVGStylable {};
495   interface SVGSymbolElement : 
496                 SVGElement,
497                 SVGLangSpace,
498                 SVGExternalResourcesRequired,
499                 SVGStylable,
500                 SVGFitToViewBox,
501                 events::EventTarget {};
503   interface SVGUseElement : 
504                 SVGElement,
505                 SVGURIReference,
506                 SVGTests,
507                 SVGLangSpace,
508                 SVGExternalResourcesRequired,
509                 SVGStylable,
510                 SVGTransformable,
511                 events::EventTarget { 
513     readonly attribute SVGAnimatedLength   x;
514     readonly attribute SVGAnimatedLength   y;
515     readonly attribute SVGAnimatedLength   width;
516     readonly attribute SVGAnimatedLength   height;
517     readonly attribute SVGElementInstance instanceRoot;
518     readonly attribute SVGElementInstance animatedInstanceRoot;
519   };
521   interface SVGElementInstance : events::EventTarget { 
522     readonly attribute SVGElement correspondingElement;
523     readonly attribute SVGUseElement correspondingUseElement;
524     readonly attribute SVGElementInstance parentNode;
525     readonly attribute SVGElementInstanceList childNodes;
526     readonly attribute SVGElementInstance firstChild;
527     readonly attribute SVGElementInstance lastChild;
528     readonly attribute SVGElementInstance previousSibling;
529     readonly attribute SVGElementInstance nextSibling;
530   };
532   interface SVGElementInstanceList { 
534     readonly attribute unsigned long length;
536     SVGElementInstance item ( in unsigned long index );
537   };
539   interface SVGImageElement : 
540                 SVGElement,
541                 SVGURIReference,
542                 SVGTests,
543                 SVGLangSpace,
544                 SVGExternalResourcesRequired,
545                 SVGStylable,
546                 SVGTransformable,
547                 events::EventTarget { 
549     readonly attribute SVGAnimatedLength x;
550     readonly attribute SVGAnimatedLength y;
551     readonly attribute SVGAnimatedLength width;
552     readonly attribute SVGAnimatedLength height;
553     readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio;
554   };
556   interface SVGSwitchElement : 
557                 SVGElement,
558                 SVGTests,
559                 SVGLangSpace,
560                 SVGExternalResourcesRequired,
561                 SVGStylable,
562                 SVGTransformable,
563                 events::EventTarget {};
565   interface GetSVGDocument { 
567     SVGDocument getSVGDocument (  )
568                     raises( DOMException );
569   };
571   interface SVGStyleElement : SVGElement { 
572              attribute DOMString xmlspace;
573                          // raises DOMException on setting
574              attribute DOMString type;
575                          // raises DOMException on setting
576              attribute DOMString media;
577                          // raises DOMException on setting
578              attribute DOMString title;
579                          // raises DOMException on setting
580   };
582   interface SVGPoint { 
584              attribute float x;
585                          // raises DOMException on setting
586              attribute float y;
587                          // raises DOMException on setting
589     SVGPoint matrixTransform ( in SVGMatrix matrix );
590   };
592   interface SVGPointList { 
594     readonly attribute unsigned long numberOfItems;
596     void   clear (  )
597                     raises( DOMException );
598     SVGPoint initialize ( in SVGPoint newItem )
599                     raises( DOMException, SVGException );
600     SVGPoint getItem ( in unsigned long index )
601                     raises( DOMException );
602     SVGPoint insertItemBefore ( in SVGPoint newItem, in unsigned long index )
603                     raises( DOMException, SVGException );
604     SVGPoint replaceItem ( in SVGPoint newItem, in unsigned long index )
605                     raises( DOMException, SVGException );
606     SVGPoint removeItem ( in unsigned long index )
607                     raises( DOMException );
608     SVGPoint appendItem ( in SVGPoint newItem )
609                     raises( DOMException, SVGException );
610   };
612   interface SVGMatrix { 
614              attribute float a;
615                          // raises DOMException on setting
616              attribute float b;
617                          // raises DOMException on setting
618              attribute float c;
619                          // raises DOMException on setting
620              attribute float d;
621                          // raises DOMException on setting
622              attribute float e;
623                          // raises DOMException on setting
624              attribute float f;
625                          // raises DOMException on setting
627     SVGMatrix multiply ( in SVGMatrix secondMatrix );
628     SVGMatrix inverse (  )
629                     raises( SVGException );
630     SVGMatrix translate ( in float x, in float y );
631     SVGMatrix scale ( in float scaleFactor );
632     SVGMatrix scaleNonUniform ( in float scaleFactorX, in float scaleFactorY );
633     SVGMatrix rotate ( in float angle );
634     SVGMatrix rotateFromVector ( in float x, in float y )
635                     raises( SVGException );
636     SVGMatrix flipX (  );
637     SVGMatrix flipY (  );
638     SVGMatrix skewX ( in float angle );
639     SVGMatrix skewY ( in float angle );
640   };
642   interface SVGTransform { 
644     // Transform Types
645     const unsigned short SVG_TRANSFORM_UNKNOWN   = 0;
646     const unsigned short SVG_TRANSFORM_MATRIX    = 1;
647     const unsigned short SVG_TRANSFORM_TRANSLATE = 2;
648     const unsigned short SVG_TRANSFORM_SCALE     = 3;
649     const unsigned short SVG_TRANSFORM_ROTATE    = 4;
650     const unsigned short SVG_TRANSFORM_SKEWX     = 5;
651     const unsigned short SVG_TRANSFORM_SKEWY     = 6;
653     readonly attribute unsigned short type;
654     readonly attribute SVGMatrix matrix;
655     readonly attribute float angle;
657     void setMatrix ( in SVGMatrix matrix );
658     void setTranslate ( in float tx, in float ty );
659     void setScale ( in float sx, in float sy );
660     void setRotate ( in float angle, in float cx, in float cy );
661     void setSkewX ( in float angle );
662     void setSkewY ( in float angle );
663   };
665   interface SVGTransformList { 
667     readonly attribute unsigned long numberOfItems;
669     void   clear (  )
670                     raises( DOMException );
671     SVGTransform initialize ( in SVGTransform newItem )
672                     raises( DOMException, SVGException );
673     SVGTransform getItem ( in unsigned long index )
674                     raises( DOMException );
675     SVGTransform insertItemBefore ( in SVGTransform newItem, in unsigned long index )
676                     raises( DOMException, SVGException );
677     SVGTransform replaceItem ( in SVGTransform newItem, in unsigned long index )
678                     raises( DOMException, SVGException );
679     SVGTransform removeItem ( in unsigned long index )
680                     raises( DOMException );
681     SVGTransform appendItem ( in SVGTransform newItem )
682                     raises( DOMException, SVGException );
683     SVGTransform createSVGTransformFromMatrix ( in SVGMatrix matrix );
684     SVGTransform consolidate (  );
685   };
687   interface SVGAnimatedTransformList { 
689     readonly attribute SVGTransformList baseVal;
690     readonly attribute SVGTransformList animVal;
691   };
693   interface SVGPreserveAspectRatio { 
695     // Alignment Types
696     const unsigned short SVG_PRESERVEASPECTRATIO_UNKNOWN   = 0;
697     const unsigned short SVG_PRESERVEASPECTRATIO_NONE     = 1;
698     const unsigned short SVG_PRESERVEASPECTRATIO_XMINYMIN = 2;
699     const unsigned short SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3;
700     const unsigned short SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4;
701     const unsigned short SVG_PRESERVEASPECTRATIO_XMINYMID = 5;
702     const unsigned short SVG_PRESERVEASPECTRATIO_XMIDYMID = 6;
703     const unsigned short SVG_PRESERVEASPECTRATIO_XMAXYMID = 7;
704     const unsigned short SVG_PRESERVEASPECTRATIO_XMINYMAX = 8;
705     const unsigned short SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9;
706     const unsigned short SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10;
707     // Meet-or-slice Types
708     const unsigned short SVG_MEETORSLICE_UNKNOWN   = 0;
709     const unsigned short SVG_MEETORSLICE_MEET  = 1;
710     const unsigned short SVG_MEETORSLICE_SLICE = 2;
712              attribute unsigned short align;
713                          // raises DOMException on setting
714              attribute unsigned short meetOrSlice;
715                          // raises DOMException on setting
716   };
718   interface SVGAnimatedPreserveAspectRatio { 
720     readonly attribute SVGPreserveAspectRatio baseVal;
721     readonly attribute SVGPreserveAspectRatio animVal;
722   };
724   interface SVGPathSeg { 
726     // Path Segment Types
727     const unsigned short PATHSEG_UNKNOWN                      = 0;
728     const unsigned short PATHSEG_CLOSEPATH                    = 1;
729     const unsigned short PATHSEG_MOVETO_ABS                   = 2;
730     const unsigned short PATHSEG_MOVETO_REL                   = 3;
731     const unsigned short PATHSEG_LINETO_ABS                   = 4;
732     const unsigned short PATHSEG_LINETO_REL                   = 5;
733     const unsigned short PATHSEG_CURVETO_CUBIC_ABS            = 6;
734     const unsigned short PATHSEG_CURVETO_CUBIC_REL            = 7;
735     const unsigned short PATHSEG_CURVETO_QUADRATIC_ABS        = 8;
736     const unsigned short PATHSEG_CURVETO_QUADRATIC_REL        = 9;
737     const unsigned short PATHSEG_ARC_ABS                      = 10;
738     const unsigned short PATHSEG_ARC_REL                      = 11;
739     const unsigned short PATHSEG_LINETO_HORIZONTAL_ABS        = 12;
740     const unsigned short PATHSEG_LINETO_HORIZONTAL_REL        = 13;
741     const unsigned short PATHSEG_LINETO_VERTICAL_ABS          = 14;
742     const unsigned short PATHSEG_LINETO_VERTICAL_REL          = 15;
743     const unsigned short PATHSEG_CURVETO_CUBIC_SMOOTH_ABS     = 16;
744     const unsigned short PATHSEG_CURVETO_CUBIC_SMOOTH_REL     = 17;
745     const unsigned short PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;
746     const unsigned short PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19;
748     readonly attribute unsigned short pathSegType;
749     readonly attribute DOMString      pathSegTypeAsLetter;
750   };
752   interface SVGPathSegClosePath : SVGPathSeg {};
754   interface SVGPathSegMovetoAbs : SVGPathSeg { 
755              attribute float   x;
756                          // raises DOMException on setting
757              attribute float   y;
758                          // raises DOMException on setting
759   };
761   interface SVGPathSegMovetoRel : SVGPathSeg { 
762              attribute float   x;
763                          // raises DOMException on setting
764              attribute float   y;
765                          // raises DOMException on setting
766   };
768   interface SVGPathSegLinetoAbs : SVGPathSeg { 
769              attribute float   x;
770                          // raises DOMException on setting
771              attribute float   y;
772                          // raises DOMException on setting
773   };
775   interface SVGPathSegLinetoRel : SVGPathSeg { 
776              attribute float   x;
777                          // raises DOMException on setting
778              attribute float   y;
779                          // raises DOMException on setting
780   };
782   interface SVGPathSegCurvetoCubicAbs : SVGPathSeg { 
783              attribute float   x;
784                          // raises DOMException on setting
785              attribute float   y;
786                          // raises DOMException on setting
787              attribute float   x1;
788                          // raises DOMException on setting
789              attribute float   y1;
790                          // raises DOMException on setting
791              attribute float   x2;
792                          // raises DOMException on setting
793              attribute float   y2;
794                          // raises DOMException on setting
795   };
797   interface SVGPathSegCurvetoCubicRel : SVGPathSeg { 
798              attribute float   x;
799                          // raises DOMException on setting
800              attribute float   y;
801                          // raises DOMException on setting
802              attribute float   x1;
803                          // raises DOMException on setting
804              attribute float   y1;
805                          // raises DOMException on setting
806              attribute float   x2;
807                          // raises DOMException on setting
808              attribute float   y2;
809                          // raises DOMException on setting
810   };
812   interface SVGPathSegCurvetoQuadraticAbs : SVGPathSeg { 
813              attribute float   x;
814                          // raises DOMException on setting
815              attribute float   y;
816                          // raises DOMException on setting
817              attribute float   x1;
818                          // raises DOMException on setting
819              attribute float   y1;
820                          // raises DOMException on setting
821   };
823   interface SVGPathSegCurvetoQuadraticRel : SVGPathSeg { 
824              attribute float   x;
825                          // raises DOMException on setting
826              attribute float   y;
827                          // raises DOMException on setting
828              attribute float   x1;
829                          // raises DOMException on setting
830              attribute float   y1;
831                          // raises DOMException on setting
832   };
834   interface SVGPathSegArcAbs : SVGPathSeg { 
835              attribute float   x;
836                          // raises DOMException on setting
837              attribute float   y;
838                          // raises DOMException on setting
839              attribute float   r1;
840                          // raises DOMException on setting
841              attribute float   r2;
842                          // raises DOMException on setting
843              attribute float   angle;
844                          // raises DOMException on setting
845              attribute boolean largeArcFlag;
846                          // raises DOMException on setting
847              attribute boolean sweepFlag;
848                          // raises DOMException on setting
849   };
851   interface SVGPathSegArcRel : SVGPathSeg { 
852              attribute float   x;
853                          // raises DOMException on setting
854              attribute float   y;
855                          // raises DOMException on setting
856              attribute float   r1;
857                          // raises DOMException on setting
858              attribute float   r2;
859                          // raises DOMException on setting
860              attribute float   angle;
861                          // raises DOMException on setting
862              attribute boolean largeArcFlag;
863                          // raises DOMException on setting
864              attribute boolean sweepFlag;
865                          // raises DOMException on setting
866   };
868   interface SVGPathSegLinetoHorizontalAbs : SVGPathSeg { 
869              attribute float   x;
870                          // raises DOMException on setting
871   };
873   interface SVGPathSegLinetoHorizontalRel : SVGPathSeg { 
874              attribute float   x;
875                          // raises DOMException on setting
876   };
878   interface SVGPathSegLinetoVerticalAbs : SVGPathSeg { 
879              attribute float   y;
880                          // raises DOMException on setting
881   };
883   interface SVGPathSegLinetoVerticalRel : SVGPathSeg { 
884              attribute float   y;
885                          // raises DOMException on setting
886   };
888   interface SVGPathSegCurvetoCubicSmoothAbs : SVGPathSeg { 
889              attribute float   x;
890                          // raises DOMException on setting
891              attribute float   y;
892                          // raises DOMException on setting
893              attribute float   x2;
894                          // raises DOMException on setting
895              attribute float   y2;
896                          // raises DOMException on setting
897   };
899   interface SVGPathSegCurvetoCubicSmoothRel : SVGPathSeg { 
900              attribute float   x;
901                          // raises DOMException on setting
902              attribute float   y;
903                          // raises DOMException on setting
904              attribute float   x2;
905                          // raises DOMException on setting
906              attribute float   y2;
907                          // raises DOMException on setting
908   };
910   interface SVGPathSegCurvetoQuadraticSmoothAbs : SVGPathSeg { 
911              attribute float   x;
912                          // raises DOMException on setting
913              attribute float   y;
914                          // raises DOMException on setting
915   };
917   interface SVGPathSegCurvetoQuadraticSmoothRel : SVGPathSeg { 
918              attribute float   x;
919                          // raises DOMException on setting
920              attribute float   y;
921                          // raises DOMException on setting
922   };
924   interface SVGPathSegList { 
926     readonly attribute unsigned long numberOfItems;
928     void   clear (  )
929                     raises( DOMException );
930     SVGPathSeg initialize ( in SVGPathSeg newItem )
931                     raises( DOMException, SVGException );
932     SVGPathSeg getItem ( in unsigned long index )
933                     raises( DOMException );
934     SVGPathSeg insertItemBefore ( in SVGPathSeg newItem, in unsigned long index )
935                     raises( DOMException, SVGException );
936     SVGPathSeg replaceItem ( in SVGPathSeg newItem, in unsigned long index )
937                     raises( DOMException, SVGException );
938     SVGPathSeg removeItem ( in unsigned long index )
939                     raises( DOMException );
940     SVGPathSeg appendItem ( in SVGPathSeg newItem )
941                     raises( DOMException, SVGException );
942   };
944   interface SVGAnimatedPathData { 
946     readonly attribute SVGPathSegList   pathSegList;
947     readonly attribute SVGPathSegList   normalizedPathSegList;
948     readonly attribute SVGPathSegList   animatedPathSegList;
949     readonly attribute SVGPathSegList   animatedNormalizedPathSegList;
950   };
952   interface SVGPathElement : 
953                 SVGElement,
954                 SVGTests,
955                 SVGLangSpace,
956                 SVGExternalResourcesRequired,
957                 SVGStylable,
958                 SVGTransformable,
959                 events::EventTarget,
960                 SVGAnimatedPathData { 
962     readonly attribute SVGAnimatedNumber pathLength;
964     float         getTotalLength (  );
965     SVGPoint      getPointAtLength ( in float distance );
966     unsigned long getPathSegAtLength ( in float distance );
967     SVGPathSegClosePath    createSVGPathSegClosePath (  );
968     SVGPathSegMovetoAbs    createSVGPathSegMovetoAbs ( in float x, in float y );
969     SVGPathSegMovetoRel    createSVGPathSegMovetoRel ( in float x, in float y );
970     SVGPathSegLinetoAbs    createSVGPathSegLinetoAbs ( in float x, in float y );
971     SVGPathSegLinetoRel    createSVGPathSegLinetoRel ( in float x, in float y );
972     SVGPathSegCurvetoCubicAbs    createSVGPathSegCurvetoCubicAbs ( in float x, in float y, in float x1, in float y1, in float x2, in float y2 );
973     SVGPathSegCurvetoCubicRel    createSVGPathSegCurvetoCubicRel ( in float x, in float y, in float x1, in float y1, in float x2, in float y2 );
974     SVGPathSegCurvetoQuadraticAbs    createSVGPathSegCurvetoQuadraticAbs ( in float x, in float y, in float x1, in float y1 );
975     SVGPathSegCurvetoQuadraticRel    createSVGPathSegCurvetoQuadraticRel ( in float x, in float y, in float x1, in float y1 );
976     SVGPathSegArcAbs    createSVGPathSegArcAbs ( in float x, in float y, in float r1, in float r2, in float angle, in boolean largeArcFlag, in boolean sweepFlag );
977     SVGPathSegArcRel    createSVGPathSegArcRel ( in float x, in float y, in float r1, in float r2, in float angle, in boolean largeArcFlag, in boolean sweepFlag );
978     SVGPathSegLinetoHorizontalAbs    createSVGPathSegLinetoHorizontalAbs ( in float x );
979     SVGPathSegLinetoHorizontalRel    createSVGPathSegLinetoHorizontalRel ( in float x );
980     SVGPathSegLinetoVerticalAbs    createSVGPathSegLinetoVerticalAbs ( in float y );
981     SVGPathSegLinetoVerticalRel    createSVGPathSegLinetoVerticalRel ( in float y );
982     SVGPathSegCurvetoCubicSmoothAbs    createSVGPathSegCurvetoCubicSmoothAbs ( in float x, in float y, in float x2, in float y2 );
983     SVGPathSegCurvetoCubicSmoothRel    createSVGPathSegCurvetoCubicSmoothRel ( in float x, in float y, in float x2, in float y2 );
984     SVGPathSegCurvetoQuadraticSmoothAbs    createSVGPathSegCurvetoQuadraticSmoothAbs ( in float x, in float y );
985     SVGPathSegCurvetoQuadraticSmoothRel    createSVGPathSegCurvetoQuadraticSmoothRel ( in float x, in float y );
986   };
988   interface SVGRectElement : 
989                 SVGElement,
990                 SVGTests,
991                 SVGLangSpace,
992                 SVGExternalResourcesRequired,
993                 SVGStylable,
994                 SVGTransformable,
995                 events::EventTarget { 
997     readonly attribute SVGAnimatedLength x;
998     readonly attribute SVGAnimatedLength y;
999     readonly attribute SVGAnimatedLength width;
1000     readonly attribute SVGAnimatedLength height;
1001     readonly attribute SVGAnimatedLength rx;
1002     readonly attribute SVGAnimatedLength ry;
1003   };
1005   interface SVGCircleElement : 
1006                 SVGElement,
1007                 SVGTests,
1008                 SVGLangSpace,
1009                 SVGExternalResourcesRequired,
1010                 SVGStylable,
1011                 SVGTransformable,
1012                 events::EventTarget { 
1014     readonly attribute SVGAnimatedLength cx;
1015     readonly attribute SVGAnimatedLength cy;
1016     readonly attribute SVGAnimatedLength r;
1017   };
1019   interface SVGEllipseElement : 
1020                 SVGElement,
1021                 SVGTests,
1022                 SVGLangSpace,
1023                 SVGExternalResourcesRequired,
1024                 SVGStylable,
1025                 SVGTransformable,
1026                 events::EventTarget { 
1028     readonly attribute SVGAnimatedLength cx;
1029     readonly attribute SVGAnimatedLength cy;
1030     readonly attribute SVGAnimatedLength rx;
1031     readonly attribute SVGAnimatedLength ry;
1032   };
1034   interface SVGLineElement : 
1035                 SVGElement,
1036                 SVGTests,
1037                 SVGLangSpace,
1038                 SVGExternalResourcesRequired,
1039                 SVGStylable,
1040                 SVGTransformable,
1041                 events::EventTarget { 
1043     readonly attribute SVGAnimatedLength x1;
1044     readonly attribute SVGAnimatedLength y1;
1045     readonly attribute SVGAnimatedLength x2;
1046     readonly attribute SVGAnimatedLength y2;
1047   };
1049   interface SVGAnimatedPoints { 
1051     readonly attribute SVGPointList   points;
1052     readonly attribute SVGPointList   animatedPoints;
1053   };
1055   interface SVGPolylineElement : 
1056                 SVGElement,
1057                 SVGTests,
1058                 SVGLangSpace,
1059                 SVGExternalResourcesRequired,
1060                 SVGStylable,
1061                 SVGTransformable,
1062                 events::EventTarget,
1063                 SVGAnimatedPoints {};
1065   interface SVGPolygonElement : 
1066                 SVGElement,
1067                 SVGTests,
1068                 SVGLangSpace,
1069                 SVGExternalResourcesRequired,
1070                 SVGStylable,
1071                 SVGTransformable,
1072                 events::EventTarget,
1073                 SVGAnimatedPoints {};
1075   interface SVGTextContentElement : 
1076                 SVGElement,
1077                 SVGTests,
1078                 SVGLangSpace,
1079                 SVGExternalResourcesRequired,
1080                 SVGStylable,
1081                 events::EventTarget { 
1083     // lengthAdjust Types
1084     const unsigned short LENGTHADJUST_UNKNOWN   = 0;
1085     const unsigned short LENGTHADJUST_SPACING     = 1;
1086     const unsigned short LENGTHADJUST_SPACINGANDGLYPHS     = 2;
1088     readonly attribute SVGAnimatedLength      textLength;
1089     readonly attribute SVGAnimatedEnumeration lengthAdjust;
1091     long     getNumberOfChars (  );
1092     float    getComputedTextLength (  );
1093     float    getSubStringLength ( in unsigned long charnum, in unsigned long nchars )
1094                     raises( DOMException );
1095     SVGPoint getStartPositionOfChar ( in unsigned long charnum )
1096                     raises( DOMException );
1097     SVGPoint getEndPositionOfChar ( in unsigned long charnum )
1098                     raises( DOMException );
1099     SVGRect  getExtentOfChar ( in unsigned long charnum )
1100                     raises( DOMException );
1101     float    getRotationOfChar ( in unsigned long charnum )
1102                     raises( DOMException );
1103     long     getCharNumAtPosition ( in SVGPoint point );
1104     void     selectSubString ( in unsigned long charnum, in unsigned long nchars )
1105                     raises( DOMException );
1106   };
1108   interface SVGTextPositioningElement : SVGTextContentElement { 
1109     readonly attribute SVGAnimatedLengthList x;
1110     readonly attribute SVGAnimatedLengthList y;
1111     readonly attribute SVGAnimatedLengthList dx;
1112     readonly attribute SVGAnimatedLengthList dy;
1113     readonly attribute SVGAnimatedNumberList rotate;
1114   };
1116   interface SVGTextElement : 
1117                 SVGTextPositioningElement,
1118                 SVGTransformable {};
1120   interface SVGTSpanElement : SVGTextPositioningElement {};
1122   interface SVGTRefElement : 
1123                 SVGTextPositioningElement,
1124                 SVGURIReference {};
1126   interface SVGTextPathElement : 
1127                 SVGTextContentElement,
1128                 SVGURIReference { 
1130     // textPath Method Types
1131     const unsigned short TEXTPATH_METHODTYPE_UNKNOWN   = 0;
1132     const unsigned short TEXTPATH_METHODTYPE_ALIGN     = 1;
1133     const unsigned short TEXTPATH_METHODTYPE_STRETCH     = 2;
1134     // textPath Spacing Types
1135     const unsigned short TEXTPATH_SPACINGTYPE_UNKNOWN   = 0;
1136     const unsigned short TEXTPATH_SPACINGTYPE_AUTO     = 1;
1137     const unsigned short TEXTPATH_SPACINGTYPE_EXACT     = 2;
1139     readonly attribute SVGAnimatedLength              startOffset;
1140     readonly attribute SVGAnimatedEnumeration method;
1141     readonly attribute SVGAnimatedEnumeration spacing;
1142   };
1144   interface SVGAltGlyphElement : 
1145                 SVGTextPositioningElement,
1146                 SVGURIReference { 
1148              attribute DOMString glyphRef;
1149                          // raises DOMException on setting
1150              attribute DOMString format;
1151                          // raises DOMException on setting
1152   };
1154   interface SVGAltGlyphDefElement : SVGElement {};
1156   interface SVGAltGlyphItemElement : SVGElement {};
1158   interface SVGGlyphRefElement : 
1159                 SVGElement,
1160                 SVGURIReference,
1161                 SVGStylable { 
1163              attribute DOMString glyphRef;
1164                          // raises DOMException on setting
1165              attribute DOMString format;
1166                          // raises DOMException on setting
1167              attribute float    x;
1168                          // raises DOMException on setting
1169              attribute float    y;
1170                          // raises DOMException on setting
1171              attribute float    dx;
1172                          // raises DOMException on setting
1173              attribute float    dy;
1174                          // raises DOMException on setting
1175   };
1177   interface SVGPaint : SVGColor { 
1178     // Paint Types
1179     const unsigned short SVG_PAINTTYPE_UNKNOWN               = 0;
1180     const unsigned short SVG_PAINTTYPE_RGBCOLOR              = 1;
1181     const unsigned short SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR     = 2;
1182     const unsigned short SVG_PAINTTYPE_NONE                  = 101;
1183     const unsigned short SVG_PAINTTYPE_CURRENTCOLOR          = 102;
1184     const unsigned short SVG_PAINTTYPE_URI_NONE              = 103;
1185     const unsigned short SVG_PAINTTYPE_URI_CURRENTCOLOR      = 104;
1186     const unsigned short SVG_PAINTTYPE_URI_RGBCOLOR          = 105;
1187     const unsigned short SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR = 106;
1188     const unsigned short SVG_PAINTTYPE_URI                   = 107;
1190     readonly attribute unsigned short paintType;
1191     readonly attribute DOMString      uri;
1193     void setUri ( in DOMString uri );
1194     void setPaint ( in unsigned short paintType, in DOMString uri, in DOMString rgbColor, in DOMString iccColor )
1195                     raises( SVGException );
1196   };
1198   interface SVGMarkerElement : 
1199                 SVGElement,
1200                 SVGLangSpace,
1201                 SVGExternalResourcesRequired,
1202                 SVGStylable,
1203                 SVGFitToViewBox { 
1205     // Marker Unit Types
1206     const unsigned short SVG_MARKERUNITS_UNKNOWN        = 0;
1207     const unsigned short SVG_MARKERUNITS_USERSPACEONUSE = 1;
1208     const unsigned short SVG_MARKERUNITS_STROKEWIDTH    = 2;
1209     // Marker Orientation Types
1210     const unsigned short SVG_MARKER_ORIENT_UNKNOWN      = 0;
1211     const unsigned short SVG_MARKER_ORIENT_AUTO         = 1;
1212     const unsigned short SVG_MARKER_ORIENT_ANGLE        = 2;
1214     readonly attribute SVGAnimatedLength      refX;
1215     readonly attribute SVGAnimatedLength      refY;
1216     readonly attribute SVGAnimatedEnumeration markerUnits;
1217     readonly attribute SVGAnimatedLength      markerWidth;
1218     readonly attribute SVGAnimatedLength      markerHeight;
1219     readonly attribute SVGAnimatedEnumeration orientType;
1220     readonly attribute SVGAnimatedAngle      orientAngle;
1222     void setOrientToAuto (  );
1223     void setOrientToAngle ( in SVGAngle angle );
1224   };
1226   interface SVGColorProfileElement : 
1227                 SVGElement,
1228                 SVGURIReference,
1229                 SVGRenderingIntent { 
1231              attribute DOMString      local;
1232                          // raises DOMException on setting
1233              attribute DOMString      name;
1234                          // raises DOMException on setting
1235              attribute unsigned short renderingIntent;
1236                          // raises DOMException on setting
1237   };
1239   interface SVGColorProfileRule : 
1240                 SVGCSSRule,
1241                 SVGRenderingIntent { 
1243              attribute DOMString      src;
1244                          // raises DOMException on setting
1245              attribute DOMString      name;
1246                          // raises DOMException on setting
1247              attribute unsigned short renderingIntent;
1248                          // raises DOMException on setting
1249   };
1251   interface SVGGradientElement : 
1252                 SVGElement,
1253                 SVGURIReference,
1254                 SVGExternalResourcesRequired,
1255                 SVGStylable,
1256                 SVGUnitTypes { 
1258     // Spread Method Types
1259     const unsigned short SVG_SPREADMETHOD_UNKNOWN = 0;
1260     const unsigned short SVG_SPREADMETHOD_PAD     = 1;
1261     const unsigned short SVG_SPREADMETHOD_REFLECT = 2;
1262     const unsigned short SVG_SPREADMETHOD_REPEAT  = 3;
1264     readonly attribute SVGAnimatedEnumeration   gradientUnits;
1265     readonly attribute SVGAnimatedTransformList gradientTransform;
1266     readonly attribute SVGAnimatedEnumeration   spreadMethod;
1267   };
1269   interface SVGLinearGradientElement : SVGGradientElement { 
1270     readonly attribute SVGAnimatedLength x1;
1271     readonly attribute SVGAnimatedLength y1;
1272     readonly attribute SVGAnimatedLength x2;
1273     readonly attribute SVGAnimatedLength y2;
1274   };
1276   interface SVGRadialGradientElement : SVGGradientElement { 
1277     readonly attribute SVGAnimatedLength cx;
1278     readonly attribute SVGAnimatedLength cy;
1279     readonly attribute SVGAnimatedLength r;
1280     readonly attribute SVGAnimatedLength fx;
1281     readonly attribute SVGAnimatedLength fy;
1282   };
1284   interface SVGStopElement : 
1285                 SVGElement,
1286                 SVGStylable { 
1288     readonly attribute SVGAnimatedNumber offset;
1289   };
1291   interface SVGPatternElement : 
1292                 SVGElement,
1293                 SVGURIReference,
1294                 SVGTests,
1295                 SVGLangSpace,
1296                 SVGExternalResourcesRequired,
1297                 SVGStylable,
1298                 SVGFitToViewBox,
1299                 SVGUnitTypes { 
1301     readonly attribute SVGAnimatedEnumeration   patternUnits;
1302     readonly attribute SVGAnimatedEnumeration   patternContentUnits;
1303     readonly attribute SVGAnimatedTransformList patternTransform;
1304     readonly attribute SVGAnimatedLength        x;
1305     readonly attribute SVGAnimatedLength        y;
1306     readonly attribute SVGAnimatedLength        width;
1307     readonly attribute SVGAnimatedLength        height;
1308   };
1310   interface SVGClipPathElement : 
1311                 SVGElement,
1312                 SVGTests,
1313                 SVGLangSpace,
1314                 SVGExternalResourcesRequired,
1315                 SVGStylable,
1316                 SVGTransformable,
1317                 SVGUnitTypes { 
1319     readonly attribute SVGAnimatedEnumeration clipPathUnits;
1320   };
1322   interface SVGMaskElement : 
1323                 SVGElement,
1324                 SVGTests,
1325                 SVGLangSpace,
1326                 SVGExternalResourcesRequired,
1327                 SVGStylable,
1328                 SVGUnitTypes { 
1330     readonly attribute SVGAnimatedEnumeration maskUnits;
1331     readonly attribute SVGAnimatedEnumeration maskContentUnits;
1332     readonly attribute SVGAnimatedLength      x;
1333     readonly attribute SVGAnimatedLength      y;
1334     readonly attribute SVGAnimatedLength      width;
1335     readonly attribute SVGAnimatedLength      height;
1336   };
1338   interface SVGFilterElement : 
1339                 SVGElement,
1340                 SVGURIReference,
1341                 SVGLangSpace,
1342                 SVGExternalResourcesRequired,
1343                 SVGStylable,
1344                 SVGUnitTypes { 
1346     readonly attribute SVGAnimatedEnumeration filterUnits;
1347     readonly attribute SVGAnimatedEnumeration primitiveUnits;
1348     readonly attribute SVGAnimatedLength      x;
1349     readonly attribute SVGAnimatedLength      y;
1350     readonly attribute SVGAnimatedLength      width;
1351     readonly attribute SVGAnimatedLength      height;
1352     readonly attribute SVGAnimatedInteger    filterResX;
1353     readonly attribute SVGAnimatedInteger    filterResY;
1355     void setFilterRes ( in unsigned long filterResX, in unsigned long filterResY );
1356   };
1358   interface SVGFilterPrimitiveStandardAttributes : SVGStylable { 
1359     readonly attribute SVGAnimatedLength x;
1360     readonly attribute SVGAnimatedLength y;
1361     readonly attribute SVGAnimatedLength width;
1362     readonly attribute SVGAnimatedLength height;
1363     readonly attribute SVGAnimatedString result;
1364   };
1366   interface SVGFEBlendElement : 
1367                 SVGElement,
1368                 SVGFilterPrimitiveStandardAttributes { 
1370     // Blend Mode Types
1371     const unsigned short SVG_FEBLEND_MODE_UNKNOWN  = 0;
1372     const unsigned short SVG_FEBLEND_MODE_NORMAL   = 1;
1373     const unsigned short SVG_FEBLEND_MODE_MULTIPLY = 2;
1374     const unsigned short SVG_FEBLEND_MODE_SCREEN   = 3;
1375     const unsigned short SVG_FEBLEND_MODE_DARKEN   = 4;
1376     const unsigned short SVG_FEBLEND_MODE_LIGHTEN  = 5;
1378     readonly attribute SVGAnimatedString      in1;
1379     readonly attribute SVGAnimatedString      in2;
1380     readonly attribute SVGAnimatedEnumeration mode;
1381   };
1383   interface SVGFEColorMatrixElement : 
1384                 SVGElement,
1385                 SVGFilterPrimitiveStandardAttributes { 
1387     // Color Matrix Types
1388     const unsigned short SVG_FECOLORMATRIX_TYPE_UNKNOWN          = 0;
1389     const unsigned short SVG_FECOLORMATRIX_TYPE_MATRIX           = 1;
1390     const unsigned short SVG_FECOLORMATRIX_TYPE_SATURATE         = 2;
1391     const unsigned short SVG_FECOLORMATRIX_TYPE_HUEROTATE        = 3;
1392     const unsigned short SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4;
1394     readonly attribute SVGAnimatedString      in1;
1395     readonly attribute SVGAnimatedEnumeration type;
1396     readonly attribute SVGAnimatedNumberList  values;
1397   };
1399   interface SVGFEComponentTransferElement : 
1400                 SVGElement,
1401                 SVGFilterPrimitiveStandardAttributes { 
1403     readonly attribute SVGAnimatedString in1;
1404   };
1406   interface SVGComponentTransferFunctionElement : SVGElement { 
1407     // Component Transfer Types
1408     const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN  = 0;
1409     const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1;
1410     const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_TABLE    = 2;
1411     const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE    = 3;
1412     const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_LINEAR   = 4;
1413     const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_GAMMA    = 5;
1415     readonly attribute SVGAnimatedEnumeration type;
1416     readonly attribute SVGAnimatedNumberList  tableValues;
1417     readonly attribute SVGAnimatedNumber      slope;
1418     readonly attribute SVGAnimatedNumber      intercept;
1419     readonly attribute SVGAnimatedNumber      amplitude;
1420     readonly attribute SVGAnimatedNumber      exponent;
1421     readonly attribute SVGAnimatedNumber      offset;
1422   };
1424   interface SVGFEFuncRElement : SVGComponentTransferFunctionElement {};
1426   interface SVGFEFuncGElement : SVGComponentTransferFunctionElement {};
1428   interface SVGFEFuncBElement : SVGComponentTransferFunctionElement {};
1430   interface SVGFEFuncAElement : SVGComponentTransferFunctionElement {};
1432   interface SVGFECompositeElement : 
1433                 SVGElement,
1434                 SVGFilterPrimitiveStandardAttributes { 
1436     // Composite Operators
1437     const unsigned short SVG_FECOMPOSITE_OPERATOR_UNKNOWN    = 0;
1438     const unsigned short SVG_FECOMPOSITE_OPERATOR_OVER       = 1;
1439     const unsigned short SVG_FECOMPOSITE_OPERATOR_IN         = 2;
1440     const unsigned short SVG_FECOMPOSITE_OPERATOR_OUT        = 3;
1441     const unsigned short SVG_FECOMPOSITE_OPERATOR_ATOP       = 4;
1442     const unsigned short SVG_FECOMPOSITE_OPERATOR_XOR        = 5;
1443     const unsigned short SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6;
1445     readonly attribute SVGAnimatedString      in1;
1446     readonly attribute SVGAnimatedString      in2;
1447     readonly attribute SVGAnimatedEnumeration operator;
1448     readonly attribute SVGAnimatedNumber      k1;
1449     readonly attribute SVGAnimatedNumber      k2;
1450     readonly attribute SVGAnimatedNumber      k3;
1451     readonly attribute SVGAnimatedNumber      k4;
1452   };
1454   interface SVGFEConvolveMatrixElement : 
1455                 SVGElement,
1456                 SVGFilterPrimitiveStandardAttributes { 
1458     // Edge Mode Values
1459     const unsigned short SVG_EDGEMODE_UNKNOWN   = 0;
1460     const unsigned short SVG_EDGEMODE_DUPLICATE = 1;
1461     const unsigned short SVG_EDGEMODE_WRAP      = 2;
1462     const unsigned short SVG_EDGEMODE_NONE      = 3;
1464     readonly attribute SVGAnimatedInteger     orderX;
1465     readonly attribute SVGAnimatedInteger     orderY;
1466     readonly attribute SVGAnimatedNumberList  kernelMatrix;
1467     readonly attribute SVGAnimatedNumber      divisor;
1468     readonly attribute SVGAnimatedNumber      bias;
1469     readonly attribute SVGAnimatedInteger     targetX;
1470     readonly attribute SVGAnimatedInteger     targetY;
1471     readonly attribute SVGAnimatedEnumeration edgeMode;
1472     readonly attribute SVGAnimatedLength      kernelUnitLengthX;
1473     readonly attribute SVGAnimatedLength      kernelUnitLengthY;
1474     readonly attribute SVGAnimatedBoolean     preserveAlpha;
1475   };
1477   interface SVGFEDiffuseLightingElement : 
1478                 SVGElement,
1479                 SVGFilterPrimitiveStandardAttributes { 
1481     readonly attribute SVGAnimatedString in1;
1482     readonly attribute SVGAnimatedNumber surfaceScale;
1483     readonly attribute SVGAnimatedNumber diffuseConstant;
1484   };
1486   interface SVGFEDistantLightElement : SVGElement { 
1487     readonly attribute SVGAnimatedNumber azimuth;
1488     readonly attribute SVGAnimatedNumber elevation;
1489   };
1491   interface SVGFEPointLightElement : SVGElement { 
1492     readonly attribute SVGAnimatedNumber x;
1493     readonly attribute SVGAnimatedNumber y;
1494     readonly attribute SVGAnimatedNumber z;
1495   };
1497   interface SVGFESpotLightElement : SVGElement { 
1498     readonly attribute SVGAnimatedNumber x;
1499     readonly attribute SVGAnimatedNumber y;
1500     readonly attribute SVGAnimatedNumber z;
1501     readonly attribute SVGAnimatedNumber pointsAtX;
1502     readonly attribute SVGAnimatedNumber pointsAtY;
1503     readonly attribute SVGAnimatedNumber pointsAtZ;
1504     readonly attribute SVGAnimatedNumber specularExponent;
1505     readonly attribute SVGAnimatedNumber limitingConeAngle;
1506   };
1508   interface SVGFEDisplacementMapElement : 
1509                 SVGElement,
1510                 SVGFilterPrimitiveStandardAttributes { 
1512     // Channel Selectors
1513     const unsigned short SVG_CHANNEL_UNKNOWN = 0;
1514     const unsigned short SVG_CHANNEL_R       = 1;
1515     const unsigned short SVG_CHANNEL_G       = 2;
1516     const unsigned short SVG_CHANNEL_B       = 3;
1517     const unsigned short SVG_CHANNEL_A       = 4;
1519     readonly attribute SVGAnimatedString      in1;
1520     readonly attribute SVGAnimatedString      in2;
1521     readonly attribute SVGAnimatedNumber      scale;
1522     readonly attribute SVGAnimatedEnumeration xChannelSelector;
1523     readonly attribute SVGAnimatedEnumeration yChannelSelector;
1524   };
1526   interface SVGFEFloodElement : 
1527                 SVGElement,
1528                 SVGFilterPrimitiveStandardAttributes { 
1530     readonly attribute SVGAnimatedString      in1;
1531   };
1533   interface SVGFEGaussianBlurElement : 
1534                 SVGElement,
1535                 SVGFilterPrimitiveStandardAttributes { 
1537     readonly attribute SVGAnimatedString in1;
1538     readonly attribute SVGAnimatedNumber stdDeviationX;
1539     readonly attribute SVGAnimatedNumber stdDeviationY;
1541     void setStdDeviation ( in float stdDeviationX, in float stdDeviationY );
1542   };
1544   interface SVGFEImageElement : 
1545                 SVGElement,
1546                 SVGURIReference,
1547                 SVGLangSpace,
1548                 SVGExternalResourcesRequired,
1549                 SVGFilterPrimitiveStandardAttributes {};
1551   interface SVGFEMergeElement : 
1552                 SVGElement,
1553                 SVGFilterPrimitiveStandardAttributes {};
1555   interface SVGFEMergeNodeElement : SVGElement { 
1556     readonly attribute SVGAnimatedString in1;
1557   };
1559   interface SVGFEMorphologyElement : 
1560                 SVGElement,
1561                 SVGFilterPrimitiveStandardAttributes { 
1563     // Morphology Operators
1564     const unsigned short SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0;
1565     const unsigned short SVG_MORPHOLOGY_OPERATOR_ERODE   = 1;
1566     const unsigned short SVG_MORPHOLOGY_OPERATOR_DILATE  = 2;
1568     readonly attribute SVGAnimatedString      in1;
1569     readonly attribute SVGAnimatedEnumeration operator;
1570     readonly attribute SVGAnimatedLength      radiusX;
1571     readonly attribute SVGAnimatedLength      radiusY;
1572   };
1574   interface SVGFEOffsetElement : 
1575                 SVGElement,
1576                 SVGFilterPrimitiveStandardAttributes { 
1578     readonly attribute SVGAnimatedString in1;
1579     readonly attribute SVGAnimatedNumber dx;
1580     readonly attribute SVGAnimatedNumber dy;
1581   };
1583   interface SVGFESpecularLightingElement : 
1584                 SVGElement,
1585                 SVGFilterPrimitiveStandardAttributes { 
1587     readonly attribute SVGAnimatedString in1;
1588     readonly attribute SVGAnimatedNumber surfaceScale;
1589     readonly attribute SVGAnimatedNumber specularConstant;
1590     readonly attribute SVGAnimatedNumber specularExponent;
1591   };
1593   interface SVGFETileElement : 
1594                 SVGElement,
1595                 SVGFilterPrimitiveStandardAttributes { 
1597     readonly attribute SVGAnimatedString in1;
1598   };
1600   interface SVGFETurbulenceElement : 
1601                 SVGElement,
1602                 SVGFilterPrimitiveStandardAttributes { 
1604     // Turbulence Types
1605     const unsigned short SVG_TURBULENCE_TYPE_UNKNOWN      = 0;
1606     const unsigned short SVG_TURBULENCE_TYPE_FRACTALNOISE = 1;
1607     const unsigned short SVG_TURBULENCE_TYPE_TURBULENCE   = 2;
1608     // Stitch Options
1609     const unsigned short SVG_STITCHTYPE_UNKNOWN  = 0;
1610     const unsigned short SVG_STITCHTYPE_STITCH   = 1;
1611     const unsigned short SVG_STITCHTYPE_NOSTITCH = 2;
1613     readonly attribute SVGAnimatedNumber      baseFrequencyX;
1614     readonly attribute SVGAnimatedNumber      baseFrequencyY;
1615     readonly attribute SVGAnimatedInteger     numOctaves;
1616     readonly attribute SVGAnimatedNumber      seed;
1617     readonly attribute SVGAnimatedEnumeration stitchTiles;
1618     readonly attribute SVGAnimatedEnumeration type;
1619   };
1621   interface SVGCursorElement : 
1622                 SVGElement,
1623                 SVGURIReference,
1624                 SVGTests,
1625                 SVGExternalResourcesRequired { 
1627     readonly attribute SVGAnimatedLength x;
1628     readonly attribute SVGAnimatedLength y;
1629   };
1631   interface SVGAElement : 
1632                 SVGElement,
1633                 SVGURIReference,
1634                 SVGTests,
1635                 SVGLangSpace,
1636                 SVGExternalResourcesRequired,
1637                 SVGStylable,
1638                 SVGTransformable,
1639                 events::EventTarget { 
1641     readonly attribute SVGAnimatedString target;
1642   };
1644   interface SVGViewElement : 
1645                 SVGElement,
1646                 SVGExternalResourcesRequired,
1647                 SVGFitToViewBox,
1648                 SVGZoomAndPan { 
1650     readonly attribute SVGStringList viewTarget;
1651   };
1653   interface SVGScriptElement : 
1654                 SVGElement,
1655                 SVGURIReference,
1656                 SVGExternalResourcesRequired { 
1658              attribute DOMString type;
1659                          // raises DOMException on setting
1660   };
1662   interface SVGEvent : events::Event {};
1664   interface SVGZoomEvent : events::UIEvent { 
1665     readonly attribute SVGRect zoomRectScreen;
1666     readonly attribute float previousScale;
1667     readonly attribute SVGPoint previousTranslate;
1668     readonly attribute float newScale;
1669     readonly attribute SVGPoint newTranslate;
1670   };
1672   interface SVGAnimationElement : 
1673                 SVGElement,
1674                 SVGTests,
1675                 SVGExternalResourcesRequired,
1676                 smil::ElementTimeControl,
1677                 events::EventTarget { 
1679     readonly attribute SVGElement targetElement;
1681     float getStartTime (  );
1682     float getCurrentTime (  );
1683     float getSimpleDuration (  )
1684                     raises( DOMException );
1685   };
1687   interface SVGAnimateElement : SVGAnimationElement {};
1689   interface SVGSetElement : SVGAnimationElement {};
1691   interface SVGAnimateMotionElement : SVGAnimationElement {};
1693   interface SVGMPathElement : 
1694                 SVGElement,
1695                 SVGURIReference,
1696                 SVGExternalResourcesRequired {};
1698   interface SVGAnimateColorElement : SVGAnimationElement {};
1700   interface SVGAnimateTransformElement : SVGAnimationElement {};
1702   interface SVGFontElement : 
1703                 SVGElement,
1704                 SVGExternalResourcesRequired,
1705                 SVGStylable {};
1707   interface SVGGlyphElement : 
1708                 SVGElement,
1709                 SVGStylable {};
1711   interface SVGMissingGlyphElement : 
1712                 SVGElement,
1713                 SVGStylable {};
1715   interface SVGHKernElement : SVGElement {};
1717   interface SVGVKernElement : SVGElement {};
1719   interface SVGFontFaceElement : SVGElement {};
1721   interface SVGFontFaceSrcElement : SVGElement {};
1723   interface SVGFontFaceUriElement : SVGElement {};
1725   interface SVGFontFaceFormatElement : SVGElement {};
1727   interface SVGFontFaceNameElement : SVGElement {};
1729   interface SVGDefinitionSrcElement : SVGElement {};
1731   interface SVGMetadataElement : SVGElement {};
1733   interface SVGForeignObjectElement : 
1734                 SVGElement,
1735                 SVGTests,
1736                 SVGLangSpace,
1737                 SVGExternalResourcesRequired,
1738                 SVGStylable,
1739                 SVGTransformable,
1740                 events::EventTarget { 
1742     readonly attribute SVGAnimatedLength x;
1743     readonly attribute SVGAnimatedLength y;
1744     readonly attribute SVGAnimatedLength width;
1745     readonly attribute SVGAnimatedLength height;
1746   };
1749 };
1751 #endif // _SVG_IDL_