Code

remove memory boundries on bitmap renderer, optimize memory usage
[inkscape.git] / src / dom / svg.h
1 #ifndef __SVG_H__
2 #define __SVG_H__
4 /**
5  * Phoebe DOM Implementation.
6  *
7  * This is a C++ approximation of the W3C DOM model, which follows
8  * fairly closely the specifications in the various .idl files, copies of
9  * which are provided for reference.  Most important is this one:
10  *
11  * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html
12  *
13  * Authors:
14  *   Bob Jamison
15  *
16  * Copyright (C) 2005-2008 Bob Jamison
17  *
18  *  This library is free software; you can redistribute it and/or
19  *  modify it under the terms of the GNU Lesser General Public
20  *  License as published by the Free Software Foundation; either
21  *  version 2.1 of the License, or (at your option) any later version.
22  *
23  *  This library is distributed in the hope that it will be useful,
24  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
25  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
26  *  Lesser General Public License for more details.
27  *
28  *  You should have received a copy of the GNU Lesser General Public
29  *  License along with this library; if not, write to the Free Software
30  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
31  *
32  * =======================================================================
33  * NOTES
34  *
35  * This API follows:
36  * http://www.w3.org/TR/SVG11/svgdom.html
37  *
38  * This file defines the main SVG-DOM Node types.  Other non-Node types are
39  * defined in svgtypes.h.
40  *    
41  */
44 // For access to DOM2 core
45 #include "dom/dom.h"
47 // For access to DOM2 events
48 #include "dom/events.h"
50 // For access to those parts from DOM2 CSS OM used by SVG DOM.
51 #include "dom/css.h"
53 // For access to those parts from DOM2 Views OM used by SVG DOM.
54 #include "dom/views.h"
56 // For access to the SMIL OM used by SVG DOM.
57 #include "dom/smil.h"
61 #include "svgtypes.h"
63 #include <math.h>
65 #define SVG_NAMESPACE "http://www.w3.org/2000/svg"
68 namespace org
69 {
70 namespace w3c
71 {
72 namespace dom
73 {
74 namespace svg
75 {
78 //local definitions
79 typedef dom::DOMString DOMString;
80 typedef dom::DOMException DOMException;
81 typedef dom::Element Element;
82 typedef dom::ElementPtr ElementPtr;
83 typedef dom::Document Document;
84 typedef dom::DocumentPtr DocumentPtr;
85 typedef dom::NodeList NodeList;
90 class SVGElement;
91 typedef Ptr<SVGElement> SVGElementPtr;
92 class SVGSVGElement;
93 typedef Ptr<SVGSVGElement> SVGSVGElementPtr;
94 class SVGDocument;
95 typedef Ptr<SVGDocument> SVGDocumentPtr;
98 /*#########################################################################
99 ## SVGElement
100 #########################################################################*/
102 /**
103  * All of the SVG DOM interfaces that correspond directly to elements in the SVG
104  * language (e.g., the SVGPathElement interface corresponds directly to the
105  * 'path' element in the language) are derivative from base class SVGElement.
106  */
107 class SVGElement : virtual public Element
109 public:
111     /**
112      * Get the value of the id attribute on the given element.
113      */
114     virtual DOMString getId() =0;
116     /**
117      * Set the value of the id attribute on the given element.
118      */
119     virtual void setId(const DOMString &val)
120                        throw (DOMException) =0;
122     /**
123      * Corresponds to attribute xml:base on the given element.
124      */
125     virtual DOMString getXmlBase() = 0;
127     /**
128      * Corresponds to attribute xml:base on the given element.
129      */
130     virtual void setXmlBase(const DOMString &val)
131                             throw (DOMException) = 0;
133     /**
134      * The nearest ancestor 'svg' element. Null if the given element is the
135      *      outermost 'svg' element.
136      */
137     virtual SVGSVGElementPtr getOwnerSVGElement() = 0;
139     /**
140      * The element which established the current viewport. Often, the nearest
141      * ancestor 'svg' element. Null if the given element is the outermost 'svg'
142      * element.
143      */
144     virtual SVGElementPtr getViewportElement() = 0;
147     //##################
148     //# Non-API methods
149     //##################
152     /**
153      *
154      */
155     virtual ~SVGElement() {}
158 };
162 /*#########################################################################
163 ## SVGDocument
164 #########################################################################*/
166 /**
167  * When an 'svg' element is embedded inline as a component of a document from
168  * another namespace, such as when an 'svg' element is embedded inline within an
169  * XHTML document [XHTML], then an SVGDocument object will not exist; instead,
170  * the root object in the document object hierarchy will be a Document object of
171  * a different type, such as an HTMLDocument object.
172  *
173  * However, an SVGDocument object will indeed exist when the root element of the
174  * XML document hierarchy is an 'svg' element, such as when viewing a stand-alone
175  * SVG file (i.e., a file with MIME type "image/svg+xml"). In this case, the
176  * SVGDocument object will be the root object of the document object model
177  * hierarchy.
178  *
179  * In the case where an SVG document is embedded by reference, such as when an
180  * XHTML document has an 'object' element whose href attribute references an SVG
181  * document (i.e., a document whose MIME type is "image/svg+xml" and whose root
182  * element is thus an 'svg' element), there will exist two distinct DOM
183  * hierarchies. The first DOM hierarchy will be for the referencing document
184  * (e.g., an XHTML document). The second DOM hierarchy will be for the referenced
185  * SVG document. In this second DOM hierarchy, the root object of the document
186  * object model hierarchy is an SVGDocument object.
187  */
188 class SVGDocument : virtual public Document,
189                     virtual public events::DocumentEvent
191 public:
194     /**
195      * The title of a document as specified by the title sub-element of the 'svg'
196      * root element (i.e., <svg><title>Here is the title</title>...</svg>)
197      */
198     virtual DOMString getTitle() =0;
200     /**
201      * Returns the URI of the page that linked to this page. The value is an empty
202      * string if the user navigated to the page directly (not through a link, but,
203      * for example, via a bookmark).
204      */
205     virtual DOMString getReferrer() =0;
207     /**
208      * The domain name of the server that served the document, or a null string if
209      * the server cannot be identified by a domain name.
210      */
211     virtual DOMString getDomain() =0;
213     /**
214      * The complete URI of the document.
215      */
216     virtual DOMString getURL() =0;
218     /**
219      * The root 'svg'  element in the document hierarchy.
220      */
221     virtual SVGSVGElementPtr getRootElement() =0;
224     //##################
225     //# Non-API methods
226     //##################
228     /**
229      *
230      */
231     virtual ~SVGDocument() {}
233 };
237 /*#########################################################################
238 ## SVGSVGElement
239 #########################################################################*/
241 /**
242  * A key interface definition is the SVGSVGElement interface, which is the
243  * interface that corresponds to the 'svg' element. This interface contains
244  * various miscellaneous commonly-used utility methods, such as matrix operations
245  * and the ability to control the time of redraw on visual rendering devices.
246  *
247  * SVGSVGElement extends ViewCSS and DocumentCSS to provide access to the
248  * computed values of properties and the override style sheet as described in DOM2.
249  */
250 class SVGSVGElement : virtual public SVGElement,
251                       public SVGTests,
252                       public SVGLangSpace,
253                       public SVGExternalResourcesRequired,
254                       public SVGStylable,
255                       public SVGLocatable,
256                       public SVGFitToViewBox,
257                       public SVGZoomAndPan,
258                       public events::EventTarget,
259                       public events::DocumentEvent,
260                       public css::ViewCSS,
261                       public css::DocumentCSS
263 public:
265     /**
266      * Corresponds to attribute x on the given 'svg' element.
267      */
268     virtual SVGAnimatedLength getX() =0;
270     /**
271      * Corresponds to attribute y on the given 'svg' element.
272      */
273     virtual SVGAnimatedLength getY() =0;
275     /**
276      * Corresponds to attribute width on the given 'svg' element.
277      */
278     virtual SVGAnimatedLength getWidth() =0;
280     /**
281      * Corresponds to attribute height on the given 'svg' element.
282      */
283     virtual SVGAnimatedLength getHeight() =0;
285     /**
286      * Get the attribute contentScriptType on the given 'svg' element.
287      */
288     virtual DOMString getContentScriptType() =0;
290     /**
291      * Set the attribute contentScriptType on the given 'svg' element.
292      */
293     virtual void setContentScriptType(const DOMString &val)
294                                      throw (DOMException) =0;
297     /**
298      * Get the attribute contentStyleType on the given 'svg' element.
299      */
300     virtual DOMString getContentStyleType() =0;
302     /**
303      * Set the attribute contentStyleType on the given 'svg' element.
304      */
305     virtual void setContentStyleType(const DOMString &val)
306                                      throw (DOMException) =0;
308     /**
309      * The position and size of the viewport (implicit or explicit) that corresponds
310      * to this 'svg' element. When the user agent is actually rendering the content,
311      * then the position and size values represent the actual values when rendering.
312      * The position and size values are unitless values in the coordinate system of
313      * the parent element. If no parent element exists (i.e., 'svg' element
314      * represents the root of the document tree), if this SVG document is embedded as
315      * part of another document (e.g., via the HTML 'object' element), then the
316      * position and size are unitless values in the coordinate system of the parent
317      * document. (If the parent uses CSS or XSL layout, then unitless values
318      * represent pixel units for the current CSS or XSL viewport, as described in the
319      * CSS2 specification.) If the parent element does not have a coordinate system,
320      * then the user agent should provide reasonable default values for this attribute.
321      *      */
322     virtual SVGRect getViewport() =0;
324     /**
325      * Size of a pixel units (as defined by CSS2) along the x-axis of the viewport,
326      * which represents a unit somewhere in the range of 70dpi to 120dpi, and, on
327      * systems that support this, might actually match the characteristics of the
328      * target medium. On systems where it is impossible to know the size of a pixel,
329      * a suitable default pixel size is provided.
330      */
331     virtual double getPixelUnitToMillimeterX() =0;
333     /**
334      * Corresponding size of a pixel unit along the y-axis of the viewport.
335      */
336     virtual double getPixelUnitToMillimeterY() =0;
338     /**
339      * User interface (UI) events in DOM Level 2 indicate the screen positions at
340      * which the given UI event occurred. When the user agent actually knows the
341      * physical size of a "screen unit", this attribute will express that information;
342      *  otherwise, user agents will provide a suitable default value such as .28mm.
343      */
344     virtual double getScreenPixelToMillimeterX() =0;
346     /**
347      * Corresponding size of a screen pixel along the y-axis of the viewport.
348      */
349     virtual double getScreenPixelToMillimeterY() =0;
352     /**
353      * The initial view (i.e., before magnification and panning) of the current
354      * innermost SVG document fragment can be either the "standard" view (i.e., based
355      * on attributes on the 'svg' element such as fitBoxToViewport) or to a "custom"
356      * view (i.e., a hyperlink into a particular 'view' or other element - see
357      * Linking into SVG content: URI fragments and SVG views). If the initial view is
358      * the "standard" view, then this attribute is false. If the initial view is a
359      * "custom" view, then this attribute is true.
360      */
361     virtual bool getUseCurrentView() =0;
363     /**
364      * Set the value above
365      */
366     virtual void setUseCurrentView(bool val) throw (DOMException) =0;
368     /**
369      * The definition of the initial view (i.e., before magnification and panning) of
370      * the current innermost SVG document fragment. The meaning depends on the
371      * situation:
372      * 
373      *    * If the initial view was a "standard" view, then:
374      *      o the values for viewBox, preserveAspectRatio and zoomAndPan within
375      *        currentView will match the values for the corresponding DOM attributes that
376      *        are on SVGSVGElement directly
377      *      o the values for transform and viewTarget within currentView will be null
378      *    * If the initial view was a link into a 'view' element, then:
379      *      o the values for viewBox, preserveAspectRatio and zoomAndPan within
380      *        currentView will correspond to the corresponding attributes for the given
381      *        'view' element
382      *      o the values for transform and viewTarget within currentView will be null
383      *    * If the initial view was a link into another element (i.e., other than a
384      *      'view'), then:
385      *      o the values for viewBox, preserveAspectRatio and zoomAndPan within
386      *        currentView will match the values for the corresponding DOM attributes that
387      *        are on SVGSVGElement directly for the closest ancestor 'svg' element
388      *      o the values for transform within currentView will be null
389      *      o the viewTarget within currentView will represent the target of the link
390      *    * If the initial view was a link into the SVG document fragment using an SVG
391      *      view specification fragment identifier (i.e., #svgView(...)), then:
392      *      o the values for viewBox, preserveAspectRatio, zoomAndPan, transform and
393      *        viewTarget within currentView will correspond to the values from the SVG view
394      *        specification fragment identifier
395      * 
396      */
397     virtual SVGViewSpec getCurrentView() =0;
400     /**
401      * This attribute indicates the current scale factor relative to the initial view
402      * to take into account user magnification and panning operations, as described
403      * under Magnification and panning. DOM attributes currentScale and
404      * currentTranslate are equivalent to the 2x3 matrix [a b c d e f] =
405      * [currentScale 0 0 currentScale currentTranslate.x currentTranslate.y]. If
406      * "magnification" is enabled (i.e., zoomAndPan="magnify"), then the effect is as
407      * if an extra transformation were placed at the outermost level on the SVG
408      * document fragment (i.e., outside the outermost 'svg' element).
409      */
410     virtual double getCurrentScale() =0;
412     /**
413      *  Set the value above.
414      */
415     virtual void setCurrentScale(double val)
416                                  throw (DOMException) =0;
419     /**
420      * The corresponding translation factor that takes into account
421      *      user "magnification".
422      */
423     virtual SVGPoint getCurrentTranslate() =0;
426     /**
427      * Takes a time-out value which indicates that redraw shall not occur until: (a)
428      * the corresponding unsuspendRedraw(suspend_handle_id) call has been made, (b)
429      * an unsuspendRedrawAll() call has been made, or (c) its timer has timed out. In
430      * environments that do not support interactivity (e.g., print media), then
431      * redraw shall not be suspended. suspend_handle_id =
432      * suspendRedraw(max_wait_milliseconds) and unsuspendRedraw(suspend_handle_id)
433      * must be packaged as balanced pairs. When you want to suspend redraw actions as
434      * a collection of SVG DOM changes occur, then precede the changes to the SVG DOM
435      * with a method call similar to suspend_handle_id =
436      * suspendRedraw(max_wait_milliseconds) and follow the changes with a method call
437      * similar to unsuspendRedraw(suspend_handle_id). Note that multiple
438      * suspendRedraw calls can be used at once and that each such method call is
439      * treated independently of the other suspendRedraw method calls.
440      */
441     virtual unsigned long suspendRedraw (unsigned long max_wait_milliseconds ) =0;
443     /**
444      * Cancels a specified suspendRedraw() by providing a unique suspend_handle_id.
445      */
446     virtual void unsuspendRedraw (unsigned long suspend_handle_id )
447                                   throw( DOMException ) =0;
449     /**
450      * Cancels all currently active suspendRedraw() method calls. This method is most
451      * useful at the very end of a set of SVG DOM calls to ensure that all pending
452      * suspendRedraw() method calls have been cancelled.
453      */
454     virtual void unsuspendRedrawAll (  ) =0;
456     /**
457      * In rendering environments supporting interactivity, forces the user agent to
458      * immediately redraw all regions of the viewport that require updating.
459      */
460     virtual void forceRedraw (  ) =0;
462     /**
463      * Suspends (i.e., pauses) all currently running animations that are defined
464      * within the SVG document fragment corresponding to this 'svg' element, causing
465      * the animation clock corresponding to this document fragment to stand still
466      * until it is unpaused.
467      */
468     virtual void pauseAnimations (  ) =0;
470     /**
471      * Unsuspends (i.e., unpauses) currently running animations that are defined
472      * within the SVG document fragment, causing the animation clock to continue from
473      * the time at which it was suspended.
474      */
475     virtual void unpauseAnimations (  ) =0;
477     /**
478      * Returns true if this SVG document fragment is in a paused state.
479      */
480     virtual bool animationsPaused (  ) =0;
482     /**
483      * Returns the current time in seconds relative to the start time for
484      *      the current SVG document fragment.
485      */
486     virtual double getCurrentTime (  ) =0;
488     /**
489      * Adjusts the clock for this SVG document fragment, establishing
490      *      a new current time.
491      */
492     virtual void setCurrentTime (double seconds ) =0;
494     /**
495      * Returns the list of graphics elements whose rendered content intersects the
496      * supplied rectangle, honoring the 'pointer-events' property value on each
497      * candidate graphics element.
498      */
499     virtual NodeList getIntersectionList(const SVGRect &rect,
500                                          const SVGElementPtr referenceElement ) =0;
502     /**
503      * Returns the list of graphics elements whose rendered content is entirely
504      * contained within the supplied rectangle, honoring the 'pointer-events'
505      * property value on each candidate graphics element.
506      */
507     virtual NodeList getEnclosureList (const SVGRect &rect,
508                                        const SVGElementPtr referenceElement ) =0;
510     /**
511      * Returns true if the rendered content of the given element intersects the
512      * supplied rectangle, honoring the 'pointer-events' property value on each
513      * candidate graphics element.
514      */
515     virtual bool checkIntersection (const SVGElementPtr element, const SVGRect &rect ) =0;
517     /**
518      * Returns true if the rendered content of the given element is entirely
519      * contained within the supplied rectangle, honoring the 'pointer-events'
520      * property value on each candidate graphics element.
521      */
522     virtual bool checkEnclosure (const SVGElementPtr element, const SVGRect &rect ) =0;
524     /**
525      * Unselects any selected objects, including any selections of text
526      *      strings and type-in bars.
527      */
528     virtual void deselectAll (  ) =0;
530     /**
531      * Creates an SVGNumber object outside of any document trees. The object
532      *      is initialized to a value of zero.
533      */
534     virtual SVGNumber createSVGNumber (  ) =0;
536     /**
537      * Creates an SVGLength object outside of any document trees. The object
538      *      is initialized to the value of 0 user units.
539      */
540     virtual SVGLength createSVGLength (  ) =0;
542     /**
543      * Creates an SVGAngle object outside of any document trees. The object
544      *      is initialized to the value 0 degrees (unitless).
545      */
546     virtual SVGAngle createSVGAngle (  ) =0;
548     /**
549      * Creates an SVGPoint object outside of any document trees. The object
550      * is initialized to the point (0,0) in the user coordinate system.
551      */
552     virtual SVGPoint createSVGPoint (  ) =0;
554     /**
555      * Creates an SVGMatrix object outside of any document trees. The object
556      *      is initialized to the identity matrix.
557      */
558     virtual SVGMatrix createSVGMatrix (  ) =0;
560     /**
561      * Creates an SVGRect object outside of any document trees. The object
562      *      is initialized such that all values are set to 0 user units.
563      */
564     virtual SVGRect createSVGRect (  ) =0;
566     /**
567      * Creates an SVGTransform object outside of any document trees.
568      * The object is initialized to an identity matrix transform
569      *      (SVG_TRANSFORM_MATRIX).
570      */
571     virtual SVGTransform createSVGTransform (  ) =0;
573     /**
574      * Creates an SVGTransform object outside of any document trees.
575      * The object is initialized to the given matrix transform
576      *      (i.e., SVG_TRANSFORM_MATRIX).
577      */
578     virtual SVGTransform createSVGTransformFromMatrix(const SVGMatrix &matrix ) =0;
580     /**
581      * Searches this SVG document fragment (i.e., the search is restricted to a
582      * subset of the document tree) for an Element whose id is given by elementId. If
583      * an Element is found, that Element is returned. If no such element exists,
584      * returns null. Behavior is not defined if more than one element has this id.
585      */
586     virtual ElementPtr getElementById (const DOMString& elementId ) =0;
590     //##################
591     //# Non-API methods
592     //##################
594     /**
595      *
596      */
597     virtual ~SVGSVGElement() {}
599 };
603 /*#########################################################################
604 ## SVGGElement
605 #########################################################################*/
607 /**
608  * The SVGGElement  interface corresponds to the 'g' element.
609  */
610 class SVGGElement : virtual public SVGElement,
611                     public SVGTests,
612                     public SVGLangSpace,
613                     public SVGExternalResourcesRequired,
614                     public SVGStylable,
615                     public SVGTransformable,
616                     public events::EventTarget
618 public:
620     //##################
621     //# Non-API methods
622     //##################
624     /**
625      *
626      */
627     virtual ~SVGGElement() {}
629 };
634 /*#########################################################################
635 ## SVGDefsElement
636 #########################################################################*/
638 /**
639  * The SVGDefsElement  interface corresponds to the 'defs' element.
640  */
641 class SVGDefsElement :
642                     virtual public SVGElement,
643                     public SVGTests,
644                     public SVGLangSpace,
645                     public SVGExternalResourcesRequired,
646                     public SVGStylable,
647                     public SVGTransformable,
648                     public events::EventTarget
650 public:
652     //##################
653     //# Non-API methods
654     //##################
656     /**
657      *
658      */
659     virtual ~SVGDefsElement() {}
661 };
666 /*#########################################################################
667 ## SVGDescElement
668 #########################################################################*/
670 /**
671  * The SVGDescElement  interface corresponds to the 'desc' element.
672  */
673 class SVGDescElement :
674                     virtual public SVGElement,
675                     public SVGLangSpace,
676                     public SVGStylable
678 public:
680     //##################
681     //# Non-API methods
682     //##################
684     /**
685      *
686      */
687     virtual ~SVGDescElement() {}
689 };
694 /*#########################################################################
695 ## SVGTitleElement
696 #########################################################################*/
698 /**
699  * The SVGTitleElement  interface corresponds to the 'title' element.
700  */
701 class SVGTitleElement :
702                     virtual public SVGElement,
703                     public SVGLangSpace,
704                     public SVGStylable
706 public:
708     //##################
709     //# Non-API methods
710     //##################
712     /**
713      *
714      */
715     virtual ~SVGTitleElement() {}
717 };
722 /*#########################################################################
723 ## SVGSymbolElement
724 #########################################################################*/
726 /**
727  * The SVGSymbolElement  interface corresponds to the 'symbol' element.
728  */
729 class SVGSymbolElement :
730                     virtual public SVGElement,
731                     public SVGLangSpace,
732                     public SVGExternalResourcesRequired,
733                     public SVGStylable,
734                     public SVGFitToViewBox,
735                     public events::EventTarget
737 public:
739     //##################
740     //# Non-API methods
741     //##################
743     /**
744      *
745      */
746     virtual ~SVGSymbolElement() {}
748 };
753 /*#########################################################################
754 ## SVGUseElement
755 #########################################################################*/
757 /**
758  * The SVGUseElement  interface corresponds to the 'use' element.
759  */
760 class SVGUseElement :
761                     virtual public SVGElement,
762                     public SVGURIReference,
763                     public SVGTests,
764                     public SVGLangSpace,
765                     public SVGExternalResourcesRequired,
766                     public SVGStylable,
767                     public SVGTransformable,
768                     public events::EventTarget
770 public:
775     /**
776      * Corresponds to attribute x on the given 'use' element.
777      */
778     virtual SVGAnimatedLength getX() =0;
780     /**
781      * Corresponds to attribute y on the given 'use' element.
782      */
783     virtual SVGAnimatedLength getY() =0;
785     /**
786      * Corresponds to attribute width on the given 'use' element.
787      */
788     virtual SVGAnimatedLength getWidth() =0;
790     /**
791      * Corresponds to attribute height on the given 'use' element.
792      */
793     virtual SVGAnimatedLength getHeight() =0;
795     /**
796      * The root of the "instance tree". See description of SVGElementInstance for
797      * a discussion on the instance tree.
798      *      */
799     virtual SVGElementInstance getInstanceRoot() =0;
801     /**
802      * If the 'href' attribute is being animated, contains the current animated root
803      * of the "instance tree". If the 'href' attribute is not currently being
804      * animated, contains the same value as 'instanceRoot'. The root of the "instance
805      * tree". See description of SVGElementInstance for a discussion on the instance
806      * tree.
807      */
808     virtual SVGElementInstance getAnimatedInstanceRoot() =0;
812     //##################
813     //# Non-API methods
814     //##################
816     /**
817      *
818      */
819     virtual ~SVGUseElement() {}
821 };
829 /*#########################################################################
830 ## SVGImageElement
831 #########################################################################*/
833 /**
834  * The SVGImageElement interface corresponds to the 'image' element.
835  */
836 class SVGImageElement :
837                     virtual public SVGElement,
838                     public SVGURIReference,
839                     public SVGTests,
840                     public SVGLangSpace,
841                     public SVGExternalResourcesRequired,
842                     public SVGStylable,
843                     public SVGTransformable,
844                     public events::EventTarget
846 public:
849     /**
850      * Corresponds to attribute x on the given 'image' element.
851      */
852     virtual SVGAnimatedLength getX() =0;
854     /**
855      * Corresponds to attribute y on the given 'image' element.
856      */
857     virtual SVGAnimatedLength getY() =0;
859     /**
860      * Corresponds to attribute width on the given 'image' element.
861      */
862     virtual SVGAnimatedLength getWidth() =0;
864     /**
865      * Corresponds to attribute height on the given 'image' element.
866      */
867     virtual SVGAnimatedLength getHeight() =0;
870     /**
871      * Corresponds to attribute preserveAspectRatio on the given element.
872      */
873     virtual SVGAnimatedPreserveAspectRatio getPreserveAspectRatio() =0;
877     //##################
878     //# Non-API methods
879     //##################
881     /**
882      *
883      */
884     virtual ~SVGImageElement() {}
886 };
893 /*#########################################################################
894 ## SVGSwitchElement
895 #########################################################################*/
897 /**
898  * The SVGSwitchElement  interface corresponds to the 'switch' element.
899  */
900 class SVGSwitchElement :
901                     virtual public SVGElement,
902                     public SVGTests,
903                     public SVGLangSpace,
904                     public SVGExternalResourcesRequired,
905                     public SVGStylable,
906                     public SVGTransformable,
907                     public events::EventTarget
909 public:
911     //##################
912     //# Non-API methods
913     //##################
915     /**
916      *
917      */
918     virtual ~SVGSwitchElement() {}
920 };
925 /*#########################################################################
926 ## GetSVGDocument
927 #########################################################################*/
929 /**
930  * In the case where an SVG document is embedded by reference, such as when an
931  * XHTML document has an 'object' element whose href (or equivalent) attribute
932  * references an SVG document (i.e., a document whose MIME type is
933  * "image/svg+xml" and whose root element is thus an 'svg' element), the SVG user
934  * agent is required to implement the GetSVGDocument interface for the element
935  * which references the SVG document (e.g., the HTML 'object' or comparable
936  * referencing elements).
937  */
938 class GetSVGDocument
940 public:
942     /**
943      * Returns the SVGDocument  object for the referenced SVG document.
944      */
945     virtual SVGDocumentPtr getSVGDocument (  )
946                     throw( DOMException ) =0;
948     //##################
949     //# Non-API methods
950     //##################
952     /**
953      *
954      */
955     virtual ~GetSVGDocument() {}
957 };
964 /*#########################################################################
965 ## SVGStyleElement
966 #########################################################################*/
968 /**
969  * The SVGStyleElement interface corresponds to the 'style' element.
970  */
971 class SVGStyleElement : virtual public SVGElement
973 public:
975     /**
976      * Get the attribute xml:space on the given element.
977      */
978     virtual DOMString getXmlspace() = 0;
980     /**
981      * Set the attribute xml:space on the given element.
982      */
983     virtual void setXmlspace(const DOMString &val)
984                              throw (DOMException) =0;
986     /**
987      * Get the attribute type on the given 'style' element.
988      */
989     virtual DOMString getType() = 0;
991     /**
992      * Set the attribute type on the given 'style' element.
993      */
994     virtual void setType(const DOMString &val)
995                          throw (DOMException) =0;
997     /**
998      * Get the attribute media on the given 'style' element.
999      */
1000     virtual DOMString getMedia() = 0;
1002     /**
1003      * Set the attribute media on the given 'style' element.
1004      */
1005     virtual void setMedia(const DOMString &val)
1006                           throw (DOMException) =0;
1008     /**
1009      * Get the attribute title on the given 'style' element.
1010      */
1011     virtual DOMString getTitle() = 0;
1013     /**
1014      * Set the attribute title on the given 'style' element.
1015      */
1016     virtual void setTitle(const DOMString &val)
1017                           throw (DOMException) =0;
1021     //##################
1022     //# Non-API methods
1023     //##################
1025     /**
1026      *
1027      */
1028     virtual ~SVGStyleElement() {}
1030 };
1037 /*#########################################################################
1038 ## SVGPathElement
1039 #########################################################################*/
1041 /**
1042  * The SVGPathElement  interface corresponds to the 'path' element.
1043  */
1044 class SVGPathElement :
1045                     virtual public SVGElement,
1046                     public SVGTests,
1047                     public SVGLangSpace,
1048                     public SVGExternalResourcesRequired,
1049                     public SVGStylable,
1050                     public SVGTransformable,
1051                     public events::EventTarget,
1052                     public SVGAnimatedPathData
1055 public:
1057     /**
1058      * Corresponds to attribute pathLength on the given 'path' element.
1059      */
1060     virtual SVGAnimatedNumber getPathLength() =0;
1062     /**
1063      * Returns the user agent's computed value for the total length of the path using
1064      * the user agent's distance-along-a-path algorithm, as a distance in the current
1065      * user coordinate system.
1066      */
1067     virtual double getTotalLength (  ) =0;
1069     /**
1070      * Returns the (x,y) coordinate in user space which is distance units along the
1071      * path, utilizing the user agent's distance-along-a-path algorithm.
1072      */
1073     virtual SVGPoint getPointAtLength (double distance ) =0;
1075     /**
1076      * Returns the index into pathSegList which is distance units along the path,
1077      * utilizing the user agent's distance-along-a-path algorithm.
1078      */
1079     virtual unsigned long getPathSegAtLength (double distance ) =0;
1081     /**
1082      * Returns a stand-alone, parentless SVGPathSegClosePath object.
1083      */
1084     virtual SVGPathSegClosePath
1085               createSVGPathSegClosePath (  ) =0;
1087     /**
1088      * Returns a stand-alone, parentless SVGPathSegMovetoAbs object.
1089      */
1090     virtual SVGPathSegMovetoAbs
1091               createSVGPathSegMovetoAbs (double x, double y ) =0;
1093     /**
1094      * Returns a stand-alone, parentless SVGPathSegMovetoRel object.
1095      */
1096     virtual SVGPathSegMovetoRel
1097               createSVGPathSegMovetoRel (double x, double y ) =0;
1099     /**
1100      * Returns a stand-alone, parentless SVGPathSegLinetoAbs object.
1101      */
1102     virtual SVGPathSegLinetoAbs
1103               createSVGPathSegLinetoAbs (double x, double y ) =0;
1105     /**
1106      * Returns a stand-alone, parentless SVGPathSegLinetoRel object.
1107      */
1108     virtual SVGPathSegLinetoRel
1109               createSVGPathSegLinetoRel (double x, double y ) =0;
1111     /**
1112      * Returns a stand-alone, parentless SVGPathSegCurvetoCubicAbs object.
1113      */
1114     virtual SVGPathSegCurvetoCubicAbs
1115               createSVGPathSegCurvetoCubicAbs (double x, double y,
1116                         double x1, double y1, double x2, double y2 ) =0;
1118     /**
1119      * Returns a stand-alone, parentless SVGPathSegCurvetoCubicRel object.
1120      */
1121     virtual SVGPathSegCurvetoCubicRel
1122               createSVGPathSegCurvetoCubicRel (double x, double y,
1123                         double x1, double y1, double x2, double y2 ) =0;
1125     /**
1126      * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticAbs object.
1127      */
1128     virtual SVGPathSegCurvetoQuadraticAbs
1129               createSVGPathSegCurvetoQuadraticAbs (double x, double y,
1130                          double x1, double y1 ) =0;
1132     /**
1133      * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticRel object.
1134      */
1135     virtual SVGPathSegCurvetoQuadraticRel
1136               createSVGPathSegCurvetoQuadraticRel (double x, double y,
1137                          double x1, double y1 ) =0;
1139     /**
1140      * Returns a stand-alone, parentless SVGPathSegArcAbs object.
1141      */
1142     virtual SVGPathSegArcAbs
1143               createSVGPathSegArcAbs (double x, double y,
1144                          double r1, double r2, double angle,
1145                          bool largeArcFlag, bool sweepFlag ) =0;
1147     /**
1148      * Returns a stand-alone, parentless SVGPathSegArcRel object.
1149      */
1150     virtual SVGPathSegArcRel
1151               createSVGPathSegArcRel (double x, double y, double r1,
1152                          double r2, double angle, bool largeArcFlag,
1153                          bool sweepFlag ) =0;
1155     /**
1156      * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalAbs object.
1157      */
1158     virtual SVGPathSegLinetoHorizontalAbs
1159               createSVGPathSegLinetoHorizontalAbs (double x ) =0;
1161     /**
1162      * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalRel object.
1163      */
1164     virtual SVGPathSegLinetoHorizontalRel
1165               createSVGPathSegLinetoHorizontalRel (double x ) =0;
1167     /**
1168      * Returns a stand-alone, parentless SVGPathSegLinetoVerticalAbs object.
1169      */
1170     virtual SVGPathSegLinetoVerticalAbs
1171               createSVGPathSegLinetoVerticalAbs (double y ) =0;
1173     /**
1174      * Returns a stand-alone, parentless SVGPathSegLinetoVerticalRel object.
1175      */
1176     virtual SVGPathSegLinetoVerticalRel
1177               createSVGPathSegLinetoVerticalRel (double y ) =0;
1179     /**
1180      * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothAbs object.
1181      */
1182     virtual SVGPathSegCurvetoCubicSmoothAbs
1183               createSVGPathSegCurvetoCubicSmoothAbs (double x, double y,
1184                                              double x2, double y2 ) =0;
1186     /**
1187      * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothRel object.
1188      */
1189     virtual SVGPathSegCurvetoCubicSmoothRel
1190               createSVGPathSegCurvetoCubicSmoothRel (double x, double y,
1191                                                       double x2, double y2 ) =0;
1193     /**
1194      * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothAbs
1195      *      object.
1196      */
1197     virtual SVGPathSegCurvetoQuadraticSmoothAbs
1198               createSVGPathSegCurvetoQuadraticSmoothAbs (double x, double y ) =0;
1200     /**
1201      * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothRel
1202      *      object.
1203      */
1204     virtual SVGPathSegCurvetoQuadraticSmoothRel
1205               createSVGPathSegCurvetoQuadraticSmoothRel (double x, double y ) =0;
1209     //##################
1210     //# Non-API methods
1211     //##################
1213     /**
1214      *
1215      */
1216     virtual ~SVGPathElement() {}
1218 };
1225 /*#########################################################################
1226 ## SVGRectElement
1227 #########################################################################*/
1229 /**
1230  * The SVGRectElement  interface corresponds to the 'rect' element.
1231  */
1232 class SVGRectElement :
1233                     virtual public SVGElement,
1234                     public SVGTests,
1235                     public SVGLangSpace,
1236                     public SVGExternalResourcesRequired,
1237                     public SVGStylable,
1238                     public SVGTransformable,
1239                     public events::EventTarget
1241 public:
1243     /**
1244      * Corresponds to attribute x on the given 'rect' element.
1245      */
1246     virtual SVGAnimatedLength getX() =0;
1248     /**
1249      * Corresponds to attribute y on the given 'rect' element.
1250      */
1251     virtual SVGAnimatedLength getY() =0;
1253     /**
1254      * Corresponds to attribute width on the given 'rect' element.
1255      */
1256     virtual SVGAnimatedLength getWidth() =0;
1258     /**
1259      * Corresponds to attribute height on the given 'rect' element.
1260      */
1261     virtual SVGAnimatedLength getHeight() =0;
1264     /**
1265      * Corresponds to attribute rx on the given 'rect' element.
1266      */
1267     virtual SVGAnimatedLength getRx() =0;
1269     /**
1270      * Corresponds to attribute ry on the given 'rect' element.
1271      */
1272     virtual SVGAnimatedLength getRy() =0;
1276     //##################
1277     //# Non-API methods
1278     //##################
1280     /**
1281      *
1282      */
1283     virtual ~SVGRectElement() {}
1285 };
1292 /*#########################################################################
1293 ## SVGCircleElement
1294 #########################################################################*/
1296 /**
1297  * The SVGCircleElement  interface corresponds to the 'circle' element.
1298  */
1299 class SVGCircleElement :
1300                     virtual public SVGElement,
1301                     public SVGTests,
1302                     public SVGLangSpace,
1303                     public SVGExternalResourcesRequired,
1304                     public SVGStylable,
1305                     public SVGTransformable,
1306                     public events::EventTarget
1308 public:
1310     /**
1311      * Corresponds to attribute cx on the given 'circle' element.
1312      */
1313     virtual SVGAnimatedLength getCx() =0;
1315     /**
1316      * Corresponds to attribute cy on the given 'circle' element.
1317      */
1318     virtual SVGAnimatedLength getCy() =0;
1320     /**
1321      * Corresponds to attribute r on the given 'circle' element.
1322      */
1323     virtual SVGAnimatedLength getR() =0;
1327     //##################
1328     //# Non-API methods
1329     //##################
1331     /**
1332      *
1333      */
1334     virtual ~SVGCircleElement() {}
1336 };
1343 /*#########################################################################
1344 ## SVGEllipseElement
1345 #########################################################################*/
1347 /**
1348  * The SVGEllipseElement  interface corresponds to the 'ellipse' element.
1349  */
1350 class SVGEllipseElement :
1351                     virtual public SVGElement,
1352                     public SVGTests,
1353                     public SVGLangSpace,
1354                     public SVGExternalResourcesRequired,
1355                     public SVGStylable,
1356                     public SVGTransformable,
1357                     public events::EventTarget
1359 public:
1361     /**
1362      * Corresponds to attribute cx on the given 'ellipse' element.
1363      */
1364     virtual SVGAnimatedLength getCx() =0;
1366     /**
1367      * Corresponds to attribute cy on the given 'ellipse' element.
1368      */
1369     virtual SVGAnimatedLength getCy() =0;
1371     /**
1372      * Corresponds to attribute rx on the given 'ellipse' element.
1373      */
1374     virtual SVGAnimatedLength getRx() =0;
1376     /**
1377      * Corresponds to attribute ry on the given 'ellipse' element.
1378      */
1379     virtual SVGAnimatedLength getRy() =0;
1382     //##################
1383     //# Non-API methods
1384     //##################
1386     /**
1387      *
1388      */
1389     virtual ~SVGEllipseElement() {}
1391 };
1398 /*#########################################################################
1399 ## SVGLineElement
1400 #########################################################################*/
1402 /**
1403  * The SVGLineElement  interface corresponds to the 'line' element.
1404  */
1405 class SVGLineElement :
1406                     virtual public SVGElement,
1407                     public SVGTests,
1408                     public SVGLangSpace,
1409                     public SVGExternalResourcesRequired,
1410                     public SVGStylable,
1411                     public SVGTransformable,
1412                     public events::EventTarget
1414 public:
1416     /**
1417      * Corresponds to attribute x1 on the given 'line' element.
1418      */
1419     virtual SVGAnimatedLength getX1() =0;
1421     /**
1422      * Corresponds to attribute y1 on the given 'line' element.
1423      */
1424     virtual SVGAnimatedLength getY1() =0;
1426     /**
1427      * Corresponds to attribute x2 on the given 'line' element.
1428      */
1429     virtual SVGAnimatedLength getX2() =0;
1431     /**
1432      * Corresponds to attribute y2 on the given 'line' element.
1433      */
1434     virtual SVGAnimatedLength getY2() =0;
1436     //##################
1437     //# Non-API methods
1438     //##################
1440     /**
1441      *
1442      */
1443     virtual ~SVGLineElement() {}
1445 };
1450 /*#########################################################################
1451 ## SVGPolylineElement
1452 #########################################################################*/
1454 /**
1455  * The SVGPolylineElement  interface corresponds to the 'polyline' element.
1456  */
1457 class SVGPolylineElement :
1458                     virtual public SVGElement,
1459                     public SVGTests,
1460                     public SVGLangSpace,
1461                     public SVGExternalResourcesRequired,
1462                     public SVGStylable,
1463                     public SVGTransformable,
1464                     public events::EventTarget,
1465                     public SVGAnimatedPoints
1468 public:
1470     //##################
1471     //# Non-API methods
1472     //##################
1474     /**
1475      *
1476      */
1477     virtual ~SVGPolylineElement() {}
1479 };
1484 /*#########################################################################
1485 ## SVGPolygonElement
1486 #########################################################################*/
1488 /**
1489  * The SVGPolygonElement  interface corresponds to the 'polygon' element.
1490  */
1491 class SVGPolygonElement :
1492                     virtual public SVGElement,
1493                     public SVGTests,
1494                     public SVGLangSpace,
1495                     public SVGExternalResourcesRequired,
1496                     public SVGStylable,
1497                     public SVGTransformable,
1498                     public events::EventTarget,
1499                     public SVGAnimatedPoints
1501 public:
1503     //##################
1504     //# Non-API methods
1505     //##################
1507     /**
1508      *
1509      */
1510     virtual ~SVGPolygonElement() {}
1512 };
1517 /*#########################################################################
1518 ## SVGTextContentElement
1519 #########################################################################*/
1521 /**
1522  * The SVGTextContentElement interface is inherited by various text-related
1523  * interfaces, such as SVGTextElement, SVGTSpanElement, SVGTRefElement,
1524  * SVGAltGlyphElement and SVGTextPathElement.
1525  */
1526 class SVGTextContentElement :
1527                     virtual public SVGElement,
1528                     public SVGTests,
1529                     public SVGLangSpace,
1530                     public SVGExternalResourcesRequired,
1531                     public SVGStylable,
1532                     public events::EventTarget
1535 public:
1537     /**
1538      * lengthAdjust Types
1539      */
1540     typedef enum
1541         {
1542         LENGTHADJUST_UNKNOWN          = 0,
1543         LENGTHADJUST_SPACING          = 1,
1544         LENGTHADJUST_SPACINGANDGLYPHS = 2
1545         } LengthAdjustType;
1548     /**
1549      * Corresponds to attribute textLength on the given element.
1550      */
1551     virtual SVGAnimatedLength getTextLength() =0;
1554     /**
1555      * Corresponds to attribute lengthAdjust on the given element. The value must be
1556      * one of the length adjust constants specified above.
1557      */
1558     virtual SVGAnimatedEnumeration getLengthAdjust() =0;
1561     /**
1562      * Returns the total number of characters to be rendered within the current
1563      * element. Includes characters which are included via a 'tref' reference.
1564      */
1565     virtual long getNumberOfChars (  ) =0;
1567     /**
1568      * The total sum of all of the advance values from rendering all of the
1569      * characters within this element, including the advance value on the glyphs
1570      * (horizontal or vertical), the effect of properties 'kerning', 'letter-spacing'
1571      * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan'
1572      * elements. For non-rendering environments, the user agent shall make reasonable
1573      * assumptions about glyph metrics.
1574      */
1575     virtual double getComputedTextLength (  ) =0;
1577     /**
1578      * The total sum of all of the advance values from rendering the specified
1579      * substring of the characters, including the advance value on the glyphs
1580      * (horizontal or vertical), the effect of properties 'kerning', 'letter-spacing'
1581      * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan'
1582      * elements. For non-rendering environments, the user agent shall make reasonable
1583      * assumptions about glyph metrics.
1584      */
1585     virtual double getSubStringLength (unsigned long charnum, unsigned long nchars )
1586                                      throw( DOMException ) =0;
1588     /**
1589      * Returns the current text position before rendering the character in the user
1590      * coordinate system for rendering the glyph(s) that correspond to the specified
1591      * character. The current text position has already taken into account the
1592      * effects of any inter-character adjustments due to properties 'kerning',
1593      * 'letter-spacing' and 'word-spacing' and adjustments due to attributes x, y, dx
1594      * and dy. If multiple consecutive characters are rendered inseparably (e.g., as
1595      * a single glyph or a sequence of glyphs), then each of the inseparable
1596      * characters will return the start position for the first glyph.
1597      */
1598     virtual SVGPoint getStartPositionOfChar (unsigned long charnum )
1599                                               throw( DOMException ) =0;
1601     /**
1602      * Returns the current text position after rendering the character in the user
1603      * coordinate system for rendering the glyph(s) that correspond to the specified
1604      * character. This current text position does not take into account the effects
1605      * of any inter-character adjustments to prepare for the next character, such as
1606      * properties 'kerning', 'letter-spacing' and 'word-spacing' and adjustments due
1607      * to attributes x, y, dx and dy. If multiple consecutive characters are rendered
1608      * inseparably (e.g., as a single glyph or a sequence of glyphs), then each of
1609      * the inseparable characters will return the end position for the last glyph.
1610      */
1611     virtual SVGPoint getEndPositionOfChar (unsigned long charnum )
1612                                            throw( DOMException ) =0;
1614     /**
1615      * Returns a tightest rectangle which defines the minimum and maximum X and Y
1616      * values in the user coordinate system for rendering the glyph(s) that
1617      * correspond to the specified character. The calculations assume that all glyphs
1618      * occupy the full standard glyph cell for the font. If multiple consecutive
1619      * characters are rendered inseparably (e.g., as a single glyph or a sequence of
1620      * glyphs), then each of the inseparable characters will return the same extent.
1621      */
1622     virtual SVGRect getExtentOfChar (unsigned long charnum )
1623                                       throw( DOMException ) =0;
1625     /**
1626      * Returns the rotation value relative to the current user coordinate system used
1627      * to render the glyph(s) corresponding to the specified character. If multiple
1628      * glyph(s) are used to render the given character and the glyphs each have
1629      * different rotations (e.g., due to text-on-a-path), the user agent shall return
1630      * an average value (e.g., the rotation angle at the midpoint along the path for
1631      * all glyphs used to render this character). The rotation value represents the
1632      * rotation that is supplemental to any rotation due to properties
1633      * 'glyph-orientation-horizontal' and 'glyph-orientation-vertical'; thus, any
1634      * glyph rotations due to these properties are not included into the returned
1635      * rotation value. If multiple consecutive characters are rendered inseparably
1636      * (e.g., as a single glyph or a sequence of glyphs), then each of the
1637      * inseparable characters will return the same rotation value.
1638      */
1639     virtual double getRotationOfChar (unsigned long charnum )
1640                                      throw( DOMException ) =0;
1642     /**
1643      * Returns the index of the character whose corresponding glyph cell bounding box
1644      * contains the specified point. The calculations assume that all glyphs occupy
1645      * the full standard glyph cell for the font. If no such character exists, a
1646      * value of -1 is returned. If multiple such characters exist, the character
1647      * within the element whose glyphs were rendered last (i.e., take into account
1648      * any reordering such as for bidirectional text) is used. If multiple
1649      * consecutive characters are rendered inseparably (e.g., as a single glyph or a
1650      * sequence of glyphs), then the user agent shall allocate an equal percentage of
1651      * the text advance amount to each of the contributing characters in determining
1652      * which of the characters is chosen.
1653      */
1654     virtual long getCharNumAtPosition (const SVGPoint &point ) =0;
1656     /**
1657      * Causes the specified substring to be selected just as if the user
1658      *      selected the substring interactively.
1659      */
1660     virtual void selectSubString (unsigned long charnum, unsigned long nchars )
1661                                   throw( DOMException ) =0;
1665     //##################
1666     //# Non-API methods
1667     //##################
1669     /**
1670      *
1671      */
1672     virtual ~SVGTextContentElement() {}
1674 };
1681 /*#########################################################################
1682 ## SVGTextPositioningElement
1683 #########################################################################*/
1685 /**
1686  * The SVGTextPositioningElement interface is inherited by text-related
1687  * interfaces: SVGTextElement, SVGTSpanElement, SVGTRefElement and
1688  * SVGAltGlyphElement.
1689  */
1690 class SVGTextPositioningElement : virtual public SVGTextContentElement
1692 public:
1694     /**
1695      * Corresponds to attribute x on the given element.
1696      */
1697     virtual SVGAnimatedLength getX() =0;
1699     /**
1700      * Corresponds to attribute y on the given element.
1701      */
1702     virtual SVGAnimatedLength getY() =0;
1704     /**
1705      * Corresponds to attribute dx on the given element.
1706      */
1707     virtual SVGAnimatedLength getDx() =0;
1709     /**
1710      * Corresponds to attribute dy on the given element.
1711      */
1712     virtual SVGAnimatedLength getDy() =0;
1715     /**
1716      * Corresponds to attribute rotate on the given element.
1717      */
1718     virtual SVGAnimatedNumberList getRotate() =0;
1722     //##################
1723     //# Non-API methods
1724     //##################
1726     /**
1727      *
1728      */
1729     virtual ~SVGTextPositioningElement() {}
1731 };
1738 /*#########################################################################
1739 ## SVGTextElement
1740 #########################################################################*/
1742 /**
1743  * The SVGTextElement  interface corresponds to the 'text' element.
1744  */
1745 class SVGTextElement : virtual public SVGTextPositioningElement,
1746                        public SVGTransformable
1748 public:
1750     //##################
1751     //# Non-API methods
1752     //##################
1754     /**
1755      *
1756      */
1757     virtual ~SVGTextElement() {}
1759 };
1764 /*#########################################################################
1765 ## SVGTSpanElement
1766 #########################################################################*/
1768 /**
1769  * The SVGTSpanElement  interface corresponds to the 'tspan' element.
1770  */
1771 class SVGTSpanElement : virtual public SVGTextPositioningElement
1773 public:
1775     //##################
1776     //# Non-API methods
1777     //##################
1779     /**
1780      *
1781      */
1782     virtual ~SVGTSpanElement() {}
1784 };
1789 /*#########################################################################
1790 ## SVGTRefElement
1791 #########################################################################*/
1793 /**
1794  * The SVGTRefElement  interface corresponds to the 'tref' element.
1795  */
1796 class SVGTRefElement :
1797                     virtual public SVGTextPositioningElement,
1798                     public SVGURIReference
1800 public:
1802     //##################
1803     //# Non-API methods
1804     //##################
1806     /**
1807      *
1808      */
1809     virtual ~SVGTRefElement() {}
1811 };
1816 /*#########################################################################
1817 ## SVGTextPathElement
1818 #########################################################################*/
1820 /**
1821  * The SVGTextPathElement  interface corresponds to the 'textPath' element.
1822  */
1823 class SVGTextPathElement :
1824                     virtual public SVGTextContentElement,
1825                     public SVGURIReference
1827 public:
1831     /**
1832      * textPath Method Types
1833      */
1834     typedef enum
1835         {
1836         TEXTPATH_METHODTYPE_UNKNOWN   = 0,
1837         TEXTPATH_METHODTYPE_ALIGN     = 1,
1838         TEXTPATH_METHODTYPE_STRETCH   = 2
1839         } TextPathMethodType;
1841     /**
1842      * textPath Spacing Types
1843      */
1844     typedef enum
1845         {
1846         TEXTPATH_SPACINGTYPE_UNKNOWN  = 0,
1847         TEXTPATH_SPACINGTYPE_AUTO     = 1,
1848         TEXTPATH_SPACINGTYPE_EXACT    = 2
1849         } TextPathSpacingType;
1852     /**
1853      * Corresponds to attribute startOffset on the given 'textPath' element.
1854      */
1855     virtual SVGAnimatedLength getStartOffset() =0;
1857     /**
1858      * Corresponds to attribute method on the given 'textPath' element. The value
1859      * must be one of the method type constants specified above.
1860      */
1861     virtual SVGAnimatedEnumeration getMethod() =0;
1863     /**
1864      * Corresponds to attribute spacing on the given 'textPath' element.
1865      *  The value must be one of the spacing type constants specified above.
1866      */
1867     virtual SVGAnimatedEnumeration getSpacing() =0;
1871     //##################
1872     //# Non-API methods
1873     //##################
1875     /**
1876      *
1877      */
1878     virtual ~SVGTextPathElement() {}
1880 };
1887 /*#########################################################################
1888 ## SVGAltGlyphElement
1889 #########################################################################*/
1891 /**
1892  * The SVGAltGlyphElement  interface corresponds to the 'altGlyph' element.
1893  */
1894 class SVGAltGlyphElement :
1895                     virtual public SVGTextPositioningElement,
1896                     public SVGURIReference
1898 public:
1900     /**
1901      * Get the attribute glyphRef on the given element.
1902      */
1903     virtual DOMString getGlyphRef() =0;
1905     /**
1906      * Set the attribute glyphRef on the given element.
1907      */
1908     virtual void setGlyphRef(const DOMString &val)
1909                                      throw (DOMException) =0;
1911     /**
1912      * Get the attribute format on the given element.
1913      */
1914     virtual DOMString getFormat() =0;
1916     /**
1917      * Set the attribute format on the given element.
1918      */
1919     virtual void setFormat(const DOMString &val)
1920                                      throw (DOMException) =0;
1925     //##################
1926     //# Non-API methods
1927     //##################
1929     /**
1930      *
1931      */
1932     virtual ~SVGAltGlyphElement() {}
1934 };
1941 /*#########################################################################
1942 ## SVGAltGlyphDefElement
1943 #########################################################################*/
1945 /**
1946  * The SVGAltGlyphDefElement interface corresponds to the 'altGlyphDef' element.
1947  */
1948 class SVGAltGlyphDefElement : virtual public SVGElement
1950 public:
1952     //##################
1953     //# Non-API methods
1954     //##################
1956     /**
1957      *
1958      */
1959     virtual ~SVGAltGlyphDefElement() {}
1961 };
1966 /*#########################################################################
1967 ## SVGAltGlyphItemElement
1968 #########################################################################*/
1970 /**
1971  * The SVGAltGlyphItemElement  interface corresponds to the
1972  *  'altGlyphItem' element.
1973  */
1974 class SVGAltGlyphItemElement : virtual public SVGElement
1976 public:
1978     //##################
1979     //# Non-API methods
1980     //##################
1982     /**
1983      *
1984      */
1985     virtual ~SVGAltGlyphItemElement() {}
1987 };
1992 /*#########################################################################
1993 ## SVGGlyphRefElement
1994 #########################################################################*/
1996 /**
1997  * The SVGGlyphRefElement  interface corresponds to the 'glyphRef' element.
1998  */
1999 class SVGGlyphRefElement : virtual public SVGElement,
2000                            public SVGURIReference,
2001                            public SVGStylable
2003 public:
2005     /**
2006      * Get the attribute glyphRef on the given element.
2007      */
2008     virtual DOMString getGlyphRef() =0;
2010     /**
2011      * Set the attribute glyphRef on the given element.
2012      */
2013     virtual void setGlyphRef(const DOMString &val)
2014                              throw (DOMException) =0;
2016     /**
2017      * Get the attribute format on the given element.
2018      */
2019     virtual DOMString getFormat() =0;
2021     /**
2022      * Set the attribute format on the given element.
2023      */
2024     virtual void setFormat(const DOMString &val)
2025                            throw (DOMException) =0;
2027     /**
2028      * Get the attribute x on the given element.
2029      */
2030     virtual double getX() = 0;
2032     /**
2033      * Set the attribute x on the given element.
2034      */
2035     virtual void setX(double val) throw (DOMException) =0;
2037     /**
2038      * Get the attribute y on the given element.
2039      */
2040     virtual double getY() = 0;
2042     /**
2043      * Set the attribute y on the given element.
2044      */
2045     virtual void setY(double val) throw (DOMException) =0;
2047     /**
2048      * Get the attribute dx on the given element.
2049      */
2050     virtual double getDx() = 0;
2052     /**
2053      * Set the attribute dx on the given element.
2054      */
2055     virtual void setDx(double val) throw (DOMException) =0;
2057     /**
2058      * Get the attribute dy on the given element.
2059      */
2060     virtual double getDy() = 0;
2062     /**
2063      * Set the attribute dy on the given element.
2064      */
2065     virtual void setDy(double val) throw (DOMException) =0;
2070     //##################
2071     //# Non-API methods
2072     //##################
2074     /**
2075      *
2076      */
2077     virtual ~SVGGlyphRefElement() {}
2079 };
2085 /*#########################################################################
2086 ## SVGMarkerElement
2087 #########################################################################*/
2089 /**
2090  * The SVGMarkerElement  interface corresponds to the 'marker' element.
2091  */
2092 class SVGMarkerElement :
2093                     virtual public SVGElement,
2094                     public SVGLangSpace,
2095                     public SVGExternalResourcesRequired,
2096                     public SVGStylable,
2097                     public SVGFitToViewBox
2099 public:
2103     /**
2104      * Marker Unit Types
2105      */
2106     typedef enum
2107         {
2108         SVG_MARKERUNITS_UNKNOWN        = 0,
2109         SVG_MARKERUNITS_USERSPACEONUSE = 1,
2110         SVG_MARKERUNITS_STROKEWIDTH    = 2
2111         } MarkerUnitType;
2113     /**
2114      * Marker Orientation Types
2115      */
2116     typedef enum
2117         {
2118         SVG_MARKER_ORIENT_UNKNOWN      = 0,
2119         SVG_MARKER_ORIENT_AUTO         = 1,
2120         SVG_MARKER_ORIENT_ANGLE        = 2
2121         } MarkerOrientationType;
2124     /**
2125      * Corresponds to attribute refX on the given 'marker' element.
2126      */
2127     virtual SVGAnimatedLength getRefX() =0;
2129     /**
2130      * Corresponds to attribute refY on the given 'marker' element.
2131      */
2132     virtual SVGAnimatedLength getRefY() =0;
2134     /**
2135      * Corresponds to attribute markerUnits on the given 'marker' element.
2136      *      One of the Marker Units Types defined above.
2137      */
2138     virtual SVGAnimatedEnumeration getMarkerUnits() =0;
2140     /**
2141      * Corresponds to attribute markerWidth on the given 'marker' element.
2142      */
2143     virtual SVGAnimatedLength getMarkerWidth() =0;
2145     /**
2146      * Corresponds to attribute markerHeight on the given 'marker' element.
2147      */
2148     virtual SVGAnimatedLength getMarkerHeight() =0;
2150     /**
2151      * Corresponds to attribute orient on the given 'marker' element.
2152      *      One of the Marker Orientation Types defined above.
2153      */
2154     virtual SVGAnimatedEnumeration getOrientType() =0;
2156     /**
2157      * Corresponds to attribute orient on the given 'marker' element.
2158      * If markerUnits is SVG_MARKER_ORIENT_ANGLE, the angle value for
2159      * attribute orient; otherwise, it will be set to zero.
2160      */
2161     virtual SVGAnimatedAngle getOrientAngle() =0;
2164     /**
2165      * Sets the value of attribute orient to 'auto'.
2166      */
2167     virtual void setOrientToAuto (  ) =0;
2169     /**
2170      * Sets the value of attribute orient to the given angle.
2171      */
2172     virtual void setOrientToAngle (const SVGAngle &angle) =0;
2176     //##################
2177     //# Non-API methods
2178     //##################
2180     /**
2181      *
2182      */
2183     virtual ~SVGMarkerElement() {}
2185 };
2192 /*#########################################################################
2193 ## SVGColorProfileElement
2194 #########################################################################*/
2196 /**
2197  * The SVGColorProfileElement  interface corresponds to the
2198  *  'color-profile' element.
2199  */
2200 class SVGColorProfileElement :
2201                     virtual public SVGElement,
2202                     public SVGURIReference,
2203                     public SVGRenderingIntent
2205 public:
2207     /**
2208      * Get the attribute local on the given element.
2209      */
2210     virtual DOMString getLocal() =0;
2212     /**
2213      * Set the attribute local on the given element.
2214      */
2215     virtual void setLocal(const DOMString &val)
2216                           throw (DOMException) =0;
2218     /**
2219      * Get the attribute name on the given element.
2220      */
2221     virtual DOMString getName() =0;
2223     /**
2224      * Set the attribute name on the given element.
2225      */
2226     virtual void setName(const DOMString &val)
2227                          throw (DOMException) =0;
2229     /**
2230      * Set the attribute rendering-intent on the given element.
2231      * The type of rendering intent, identified by one of the
2232      *      SVGRenderingIntent constants.
2233      */
2234     virtual unsigned short getRenderingIntent() =0;
2236     /**
2237      * Get the attribute rendering-intent on the given element.
2238      */
2239     virtual void setRenderingIntent(unsigned short val)
2240                                     throw (DOMException) =0;
2244     //##################
2245     //# Non-API methods
2246     //##################
2248     /**
2249      *
2250      */
2251     virtual ~SVGColorProfileElement() {}
2253 };
2258 /*#########################################################################
2259 ## SVGGradientElement
2260 #########################################################################*/
2262 /**
2263  * The SVGGradientElement interface is a base interface used by
2264  * SVGLinearGradientElement and SVGRadialGradientElement.
2265  */
2266 class SVGGradientElement :
2267                     virtual public SVGElement,
2268                     public SVGURIReference,
2269                     public SVGExternalResourcesRequired,
2270                     public SVGStylable,
2271                     public SVGUnitTypes
2274 public:
2276     /**
2277      * Spread Method Types
2278      */
2279     typedef enum
2280         {
2281         SVG_SPREADMETHOD_UNKNOWN = 0,
2282         SVG_SPREADMETHOD_PAD     = 1,
2283         SVG_SPREADMETHOD_REFLECT = 2,
2284         SVG_SPREADMETHOD_REPEAT  = 3
2285         } SpreadMethodType;
2288     /**
2289      * Corresponds to attribute gradientUnits on the given element.
2290      *      Takes one of the constants defined in SVGUnitTypes.
2291      */
2292     virtual SVGAnimatedEnumeration getGradientUnits() =0;
2294     /**
2295      * Corresponds to attribute gradientTransform on the given element.
2296      */
2297     virtual SVGAnimatedTransformList getGradientTransform() =0;
2299     /**
2300      * Corresponds to attribute spreadMethod on the given element.
2301      *      One of the Spread Method Types.
2302      */
2303     virtual SVGAnimatedEnumeration getSpreadMethod() =0;
2307     //##################
2308     //# Non-API methods
2309     //##################
2311     /**
2312      *
2313      */
2314     virtual ~SVGGradientElement() {}
2316 };
2323 /*#########################################################################
2324 ## SVGLinearGradientElement
2325 #########################################################################*/
2327 /**
2328  * The SVGLinearGradientElement  interface corresponds to the
2329  *  'linearGradient' element.
2330  */
2331 class SVGLinearGradientElement : virtual public SVGGradientElement
2333 public:
2336     /**
2337      * Corresponds to attribute x1 on the given 'linearGradient'  element.
2338      */
2339     virtual SVGAnimatedLength getX1() =0;
2341     /**
2342      * Corresponds to attribute y1 on the given 'linearGradient'  element.
2343      */
2344     virtual SVGAnimatedLength getY1() =0;
2346     /**
2347      * Corresponds to attribute x2 on the given 'linearGradient'  element.
2348      */
2349     virtual SVGAnimatedLength getX2() =0;
2351     /**
2352      * Corresponds to attribute y2 on the given 'linearGradient'  element.
2353      */
2354     virtual SVGAnimatedLength getY2() =0;
2357     //##################
2358     //# Non-API methods
2359     //##################
2361     /**
2362      *
2363      */
2364     virtual ~SVGLinearGradientElement() {}
2366 };
2373 /*#########################################################################
2374 ## SVGRadialGradientElement
2375 #########################################################################*/
2377 /**
2378  * The SVGRadialGradientElement  interface corresponds to the
2379  *  'radialGradient' element.
2380  */
2381 class SVGRadialGradientElement : virtual public SVGGradientElement
2384 public:
2386     /**
2387      * Corresponds to attribute cx on the given 'radialGradient'  element.
2388      */
2389     virtual SVGAnimatedLength getCx() =0;
2392     /**
2393      * Corresponds to attribute cy on the given 'radialGradient'  element.
2394      */
2395     virtual SVGAnimatedLength getCy() =0;
2398     /**
2399      * Corresponds to attribute r on the given 'radialGradient'  element.
2400      */
2401     virtual SVGAnimatedLength getR() =0;
2404     /**
2405      * Corresponds to attribute fx on the given 'radialGradient'  element.
2406      */
2407     virtual SVGAnimatedLength getFx() =0;
2410     /**
2411      * Corresponds to attribute fy on the given 'radialGradient'  element.
2412      */
2413     virtual SVGAnimatedLength getFy() =0;
2418     //##################
2419     //# Non-API methods
2420     //##################
2422     /**
2423      *
2424      */
2425     virtual ~SVGRadialGradientElement() {}
2427 };
2434 /*#########################################################################
2435 ## SVGStopElement
2436 #########################################################################*/
2438 /**
2439  * The SVGStopElement  interface corresponds to the 'stop' element.
2440  */
2441 class SVGStopElement :
2442                     virtual public SVGElement,
2443                     public SVGStylable
2445 public:
2447     /**
2448      * Corresponds to attribute offset on the given 'stop' element.
2449      */
2450     virtual SVGAnimatedNumber getOffset() =0;
2454     //##################
2455     //# Non-API methods
2456     //##################
2458     /**
2459      *
2460      */
2461     virtual ~SVGStopElement() {}
2463 };
2470 /*#########################################################################
2471 ## SVGPatternElement
2472 #########################################################################*/
2474 /**
2475  * The SVGPatternElement  interface corresponds to the 'pattern' element.
2476  */
2477 class SVGPatternElement :
2478                     virtual public SVGElement,
2479                     public SVGURIReference,
2480                     public SVGTests,
2481                     public SVGLangSpace,
2482                     public SVGExternalResourcesRequired,
2483                     public SVGStylable,
2484                     public SVGFitToViewBox,
2485                     public SVGUnitTypes
2488 public:
2490     /**
2491      * Corresponds to attribute patternUnits on the given 'pattern' element. Takes
2492      * one of the constants defined in SVGUnitTypes.
2493      */
2494     virtual SVGAnimatedEnumeration getPatternUnits() =0;
2496     /**
2497      * Corresponds to attribute patternContentUnits on the given 'pattern'
2498      *      element. Takes one of the constants defined in SVGUnitTypes.
2499      */
2500     virtual SVGAnimatedEnumeration getPatternContentUnits() =0;
2502     /**
2503      * Corresponds to attribute patternTransform on the given 'pattern' element.
2504      */
2505     virtual SVGAnimatedTransformList getPatternTransform() =0;
2507     /**
2508      * Corresponds to attribute x on the given 'pattern' element.
2509      */
2510     virtual SVGAnimatedLength getX() =0;
2512     /**
2513      *
2514      */
2515     virtual SVGAnimatedLength getY() =0;
2517     /**
2518      * Corresponds to attribute width on the given 'pattern' element.
2519      */
2520     virtual SVGAnimatedLength getWidth() =0;
2522     /**
2523      * Corresponds to attribute height on the given 'pattern' element.
2524      */
2525     virtual SVGAnimatedLength getHeight() =0;
2529     //##################
2530     //# Non-API methods
2531     //##################
2533     /**
2534      *
2535      */
2536     virtual ~SVGPatternElement() {}
2538 };
2545 /*#########################################################################
2546 ## SVGClipPathElement
2547 #########################################################################*/
2549 /**
2550  * The SVGClipPathElement  interface corresponds to the 'clipPath' element.
2551  */
2552 class SVGClipPathElement :
2553                     virtual public SVGElement,
2554                     public SVGTests,
2555                     public SVGLangSpace,
2556                     public SVGExternalResourcesRequired,
2557                     public SVGStylable,
2558                     public SVGTransformable,
2559                     public SVGUnitTypes
2562 public:
2564     /**
2565      * Corresponds to attribute clipPathUnits on the given 'clipPath' element.
2566      *      Takes one of the constants defined in SVGUnitTypes.
2567      */
2568     virtual SVGAnimatedEnumeration getClipPathUnits() =0;
2573     //##################
2574     //# Non-API methods
2575     //##################
2577     /**
2578      *
2579      */
2580     virtual ~SVGClipPathElement() {}
2582 };
2589 /*#########################################################################
2590 ## SVGMaskElement
2591 #########################################################################*/
2593 /**
2594  * The SVGMaskElement  interface corresponds to the 'mask' element.
2595  */
2596 class SVGMaskElement :
2597                     virtual public SVGElement,
2598                     public SVGTests,
2599                     public SVGLangSpace,
2600                     public SVGExternalResourcesRequired,
2601                     public SVGStylable,
2602                     public SVGUnitTypes
2604 public:
2608     /**
2609      * Corresponds to attribute maskUnits on the given 'mask' element. Takes one of
2610      * the constants defined in SVGUnitTypes.
2611      */
2612     virtual SVGAnimatedEnumeration getMaskUnits() =0;
2614     /**
2615      * Corresponds to attribute maskContentUnits on the given 'mask' element. Takes
2616      * one of the constants defined in SVGUnitTypes.
2617      */
2618     virtual SVGAnimatedEnumeration getMaskContentUnits() =0;
2620     /**
2621      * Corresponds to attribute x on the given 'mask' element.
2622      */
2623     virtual SVGAnimatedLength getX() =0;
2625     /**
2626      * Corresponds to attribute y on the given 'mask' element.
2627      */
2628     virtual SVGAnimatedLength getY() =0;
2630     /**
2631      * Corresponds to attribute width on the given 'mask' element.
2632      */
2633     virtual SVGAnimatedLength getWidth() =0;
2635     /**
2636      * Corresponds to attribute height on the given 'mask' element.
2637      */
2638     virtual SVGAnimatedLength getHeight() =0;
2640     //##################
2641     //# Non-API methods
2642     //##################
2644     /**
2645      *
2646      */
2647     virtual ~SVGMaskElement() {}
2649 };
2656 /*#########################################################################
2657 ## SVGFilterElement
2658 #########################################################################*/
2660 /**
2661  * The SVGFilterElement  interface corresponds to the 'filter' element.
2662  */
2663 class SVGFilterElement :
2664                     virtual public SVGElement,
2665                     public SVGURIReference,
2666                     public SVGLangSpace,
2667                     public SVGExternalResourcesRequired,
2668                     public SVGStylable,
2669                     public SVGUnitTypes
2672 public:
2674     /**
2675      * Corresponds to attribute filterUnits on the given 'filter' element. Takes one
2676      * of the constants defined in SVGUnitTypes.
2677      */
2678     virtual SVGAnimatedEnumeration getFilterUnits() =0;
2680     /**
2681      * Corresponds to attribute primitiveUnits on the given 'filter' element. Takes
2682      * one of the constants defined in SVGUnitTypes.
2683      */
2684     virtual SVGAnimatedEnumeration getPrimitiveUnits() =0;
2686     /**
2687      *
2688      */
2689     virtual SVGAnimatedLength getX() =0;
2691     /**
2692      * Corresponds to attribute x on the given 'filter' element.
2693      */
2694     virtual SVGAnimatedLength getY() =0;
2696     /**
2697      * Corresponds to attribute y on the given 'filter' element.
2698      */
2699     virtual SVGAnimatedLength getWidth() =0;
2701     /**
2702      * Corresponds to attribute height on the given 'filter' element.
2703      */
2704     virtual SVGAnimatedLength getHeight() =0;
2707     /**
2708      * Corresponds to attribute filterRes on the given 'filter' element.
2709      *      Contains the X component of attribute filterRes.
2710      */
2711     virtual SVGAnimatedInteger getFilterResX() =0;
2713     /**
2714      * Corresponds to attribute filterRes on the given 'filter' element.
2715      * Contains the Y component (possibly computed automatically)
2716      *      of attribute filterRes.
2717      */
2718     virtual SVGAnimatedInteger getFilterResY() =0;
2720     /**
2721      * Sets the values for attribute filterRes.
2722      */
2723     virtual void setFilterRes (unsigned long filterResX,
2724                                unsigned long filterResY ) =0;
2728     //##################
2729     //# Non-API methods
2730     //##################
2732     /**
2733      *
2734      */
2735     virtual ~SVGFilterElement() {}
2737 };
2743 /*#########################################################################
2744 ## SVGFEBlendElement
2745 #########################################################################*/
2747 /**
2748  * The SVGFEBlendElement  interface corresponds to the 'feBlend' element.
2749  */
2750 class SVGFEBlendElement :
2751                     virtual public SVGElement,
2752                     public SVGFilterPrimitiveStandardAttributes
2754 public:
2757     /**
2758      * Blend Mode Types
2759      */
2760     typedef enum
2761         {
2762         SVG_FEBLEND_MODE_UNKNOWN  = 0,
2763         SVG_FEBLEND_MODE_NORMAL   = 1,
2764         SVG_FEBLEND_MODE_MULTIPLY = 2,
2765         SVG_FEBLEND_MODE_SCREEN   = 3,
2766         SVG_FEBLEND_MODE_DARKEN   = 4,
2767         SVG_FEBLEND_MODE_LIGHTEN  = 5
2768         } BlendModeType;
2770     /**
2771      * Corresponds to attribute in on the given 'feBlend' element.
2772      */
2773     virtual SVGAnimatedString getIn1() =0;
2775     /**
2776      * Corresponds to attribute in2 on the given 'feBlend' element.
2777      */
2778     virtual SVGAnimatedString getIn2() =0;
2780     /**
2781      * Corresponds to attribute mode on the given 'feBlend' element.
2782      *      Takes one of the Blend Mode Types.
2783      */
2784     virtual SVGAnimatedEnumeration getMode() =0;
2787     //##################
2788     //# Non-API methods
2789     //##################
2791     /**
2792      *
2793      */
2794     virtual ~SVGFEBlendElement() {}
2796 };
2803 /*#########################################################################
2804 ## SVGFEColorMatrixElement
2805 #########################################################################*/
2807 /**
2808  * The SVGFEColorMatrixElement  interface corresponds to the
2809  *  'feColorMatrix' element.
2810  */
2811 class SVGFEColorMatrixElement :
2812                     virtual public SVGElement,
2813                     public SVGFilterPrimitiveStandardAttributes
2816 public:
2818     /**
2819      * Color Matrix Types
2820      */
2821     typedef enum
2822         {
2823         SVG_FECOLORMATRIX_TYPE_UNKNOWN          = 0,
2824         SVG_FECOLORMATRIX_TYPE_MATRIX           = 1,
2825         SVG_FECOLORMATRIX_TYPE_SATURATE         = 2,
2826         SVG_FECOLORMATRIX_TYPE_HUEROTATE        = 3,
2827         SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4
2828         } ColorMatrixType;
2831     /**
2832      * Corresponds to attribute in on the given 'feColorMatrix' element.
2833      */
2834     virtual SVGAnimatedString getIn1() =0;
2836     /**
2837      * Corresponds to attribute type on the given 'feColorMatrix' element.
2838      *      Takes one of the Color Matrix Types.
2839      */
2840     virtual SVGAnimatedEnumeration getType() =0;
2842     /**
2843      * Corresponds to attribute values on the given 'feColorMatrix' element.
2844      * Provides access to the contents of the values attribute.
2845      */
2846     virtual SVGAnimatedNumberList getValues() =0;
2850     //##################
2851     //# Non-API methods
2852     //##################
2854     /**
2855      *
2856      */
2857     virtual ~SVGFEColorMatrixElement() {}
2859 };
2866 /*#########################################################################
2867 ## SVGFEComponentTransferElement
2868 #########################################################################*/
2870 /**
2871  * The SVGFEComponentTransferElement  interface corresponds to
2872  *  the 'feComponentTransfer' element.
2873  */
2874 class SVGFEComponentTransferElement :
2875                     virtual public SVGElement,
2876                     public SVGFilterPrimitiveStandardAttributes
2878 public:
2880     /**
2881      * Corresponds to attribute in on the given 'feComponentTransfer'  element.
2882      */
2883     virtual SVGAnimatedString getIn1() =0;
2885     //##################
2886     //# Non-API methods
2887     //##################
2889     /**
2890      *
2891      */
2892     virtual ~SVGFEComponentTransferElement() {}
2894 };
2901 /*#########################################################################
2902 ## SVGComponentTransferFunctionElement
2903 #########################################################################*/
2905 /**
2906  * This interface defines a base interface used by the component
2907  *  transfer function interfaces.
2908  */
2909 class SVGComponentTransferFunctionElement : virtual public SVGElement
2911 public:
2914     /**
2915      * Component Transfer Types
2916      */
2917     typedef enum
2918         {
2919         SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN  = 0,
2920         SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1,
2921         SVG_FECOMPONENTTRANSFER_TYPE_TABLE    = 2,
2922         SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3,
2923         SVG_FECOMPONENTTRANSFER_TYPE_LINEAR   = 4,
2924         SVG_FECOMPONENTTRANSFER_TYPE_GAMMA    = 5
2925         } ComponentTransferType;
2928     /**
2929      * Corresponds to attribute type on the given element. Takes one\
2930      *      of the Component Transfer Types.
2931      */
2932     virtual SVGAnimatedEnumeration getType() =0;
2934     /**
2935      * Corresponds to attribute tableValues on the given element.
2936      */
2937     virtual SVGAnimatedNumberList getTableValues() =0;
2939     /**
2940      * Corresponds to attribute slope on the given element.
2941      */
2942     virtual SVGAnimatedNumber getSlope() =0;
2944     /**
2945      * Corresponds to attribute intercept on the given element.
2946      */
2947     virtual SVGAnimatedNumber getIntercept() =0;
2949     /**
2950      * Corresponds to attribute amplitude on the given element.
2951      */
2952     virtual SVGAnimatedNumber getAmplitude() =0;
2954     /**
2955      * Corresponds to attribute exponent on the given element.
2956      */
2957     virtual SVGAnimatedNumber getExponent() =0;
2959     /**
2960      * Corresponds to attribute offset on the given element.
2961      */
2962     virtual SVGAnimatedNumber getOffset() =0;
2965     //##################
2966     //# Non-API methods
2967     //##################
2969     /**
2970      *
2971      */
2972     virtual ~SVGComponentTransferFunctionElement() {}
2974 };
2981 /*#########################################################################
2982 ## SVGFEFuncRElement
2983 #########################################################################*/
2985 /**
2986  * The SVGFEFuncRElement  interface corresponds to the 'feFuncR' element.
2987  */
2988 class SVGFEFuncRElement : virtual public SVGComponentTransferFunctionElement
2990 public:
2992     //##################
2993     //# Non-API methods
2994     //##################
2996     /**
2997      *
2998      */
2999     virtual ~SVGFEFuncRElement() {}
3001 };
3006 /*#########################################################################
3007 ## SVGFEFuncGElement
3008 #########################################################################*/
3010 /**
3011  * The SVGFEFuncGElement  interface corresponds to the 'feFuncG' element.
3012  */
3013 class SVGFEFuncGElement : public virtual SVGComponentTransferFunctionElement
3015 public:
3017     //##################
3018     //# Non-API methods
3019     //##################
3021     /**
3022      *
3023      */
3024     virtual ~SVGFEFuncGElement() {}
3026 };
3031 /*#########################################################################
3032 ## SVGFEFuncBElement
3033 #########################################################################*/
3035 /**
3036  * The SVGFEFuncBElement  interface corresponds to the 'feFuncB' element.
3037  */
3038 class SVGFEFuncBElement : virtual public SVGComponentTransferFunctionElement
3040 public:
3042     //##################
3043     //# Non-API methods
3044     //##################
3046     /**
3047      *
3048      */
3049     virtual ~SVGFEFuncBElement() {}
3051 };
3056 /*#########################################################################
3057 ## SVGFEFuncAElement
3058 #########################################################################*/
3060 /**
3061  * The SVGFEFuncAElement  interface corresponds to the 'feFuncA' element.
3062  */
3063 class SVGFEFuncAElement : virtual public SVGComponentTransferFunctionElement
3065 public:
3067     //##################
3068     //# Non-API methods
3069     //##################
3071     /**
3072      *
3073      */
3074     virtual ~SVGFEFuncAElement() {}
3076 };
3081 /*#########################################################################
3082 ## SVGFECompositeElement
3083 #########################################################################*/
3085 /**
3086  * The SVGFECompositeElement interface corresponds to the 'feComposite' element.
3087  */
3088 class SVGFECompositeElement :
3089                     virtual public SVGElement,
3090                     public SVGFilterPrimitiveStandardAttributes
3092 public:
3096     /**
3097      *  Composite Operators
3098      */
3099     typedef enum
3100         {
3101         SVG_FECOMPOSITE_OPERATOR_UNKNOWN    = 0,
3102         SVG_FECOMPOSITE_OPERATOR_OVER       = 1,
3103         SVG_FECOMPOSITE_OPERATOR_IN         = 2,
3104         SVG_FECOMPOSITE_OPERATOR_OUT        = 3,
3105         SVG_FECOMPOSITE_OPERATOR_ATOP       = 4,
3106         SVG_FECOMPOSITE_OPERATOR_XOR        = 5,
3107         SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6
3108         } CompositeOperatorType;
3110     /**
3111      * Corresponds to attribute in on the given 'feComposite' element.
3112      */
3113     virtual SVGAnimatedString getIn1() =0;
3115     /**
3116      * Corresponds to attribute in2 on the given 'feComposite' element.
3117      */
3118     virtual SVGAnimatedString getIn2() =0;
3120     /**
3121      * Corresponds to attribute operator on the given 'feComposite' element.
3122      *      Takes one of the Composite Operators.
3123      */
3124     virtual SVGAnimatedEnumeration getOperator() =0;
3126     /**
3127      * Corresponds to attribute k1 on the given 'feComposite' element.
3128      */
3129     virtual SVGAnimatedNumber getK1() =0;
3131     /**
3132      * Corresponds to attribute k2 on the given 'feComposite' element.
3133      */
3134     virtual SVGAnimatedNumber getK2() =0;
3136     /**
3137      * Corresponds to attribute k3 on the given 'feComposite' element.
3138      */
3139     virtual SVGAnimatedNumber getK3() =0;
3141     /**
3142      * Corresponds to attribute k4 on the given 'feComposite' element.
3143      */
3144     virtual SVGAnimatedNumber getK4() =0;
3148     //##################
3149     //# Non-API methods
3150     //##################
3152     /**
3153      *
3154      */
3155     virtual ~SVGFECompositeElement() {}
3157 };
3164 /*#########################################################################
3165 ## SVGFEConvolveMatrixElement
3166 #########################################################################*/
3168 /**
3169  * The SVGFEConvolveMatrixElement  interface corresponds to
3170  *  the 'feConvolveMatrix' element.
3171  */
3172 class SVGFEConvolveMatrixElement :
3173                     virtual public SVGElement,
3174                     public SVGFilterPrimitiveStandardAttributes
3177 public:
3179     /**
3180      * Edge Mode Values
3181      */
3182     typedef enum
3183         {
3184         SVG_EDGEMODE_UNKNOWN   = 0,
3185         SVG_EDGEMODE_DUPLICATE = 1,
3186         SVG_EDGEMODE_WRAP      = 2,
3187         SVG_EDGEMODE_NONE      = 3
3188         } EdgeModeType;
3191     /**
3192      * Corresponds to attribute order on the given 'feConvolveMatrix'  element.
3193      */
3194     virtual SVGAnimatedInteger getOrderX() =0;
3196     /**
3197      * Corresponds to attribute order on the given 'feConvolveMatrix'  element.
3198      */
3199     virtual SVGAnimatedInteger getOrderY() =0;
3201     /**
3202      * Corresponds to attribute kernelMatrix on the given element.
3203      */
3204     virtual SVGAnimatedNumberList getKernelMatrix() =0;
3206     /**
3207      * Corresponds to attribute divisor on the given 'feConvolveMatrix' element.
3208      */
3209     virtual SVGAnimatedNumber getDivisor() =0;
3211     /**
3212      * Corresponds to attribute bias on the given 'feConvolveMatrix'  element.
3213      */
3214     virtual SVGAnimatedNumber getBias() =0;
3216     /**
3217      * Corresponds to attribute targetX on the given 'feConvolveMatrix'  element.
3218      */
3219     virtual SVGAnimatedInteger getTargetX() =0;
3221     /**
3222      * Corresponds to attribute targetY on the given 'feConvolveMatrix'  element.
3223      */
3224     virtual SVGAnimatedInteger getTargetY() =0;
3226     /**
3227      * Corresponds to attribute edgeMode on the given 'feConvolveMatrix'
3228      *      element. Takes one of the Edge Mode Types.
3229      */
3230     virtual SVGAnimatedEnumeration getEdgeMode() =0;
3232     /**
3233      * Corresponds to attribute kernelUnitLength on the
3234      *      given 'feConvolveMatrix'  element.
3235      */
3236     virtual SVGAnimatedLength getKernelUnitLengthX() =0;
3238     /**
3239      * Corresponds to attribute kernelUnitLength on the given
3240      *      'feConvolveMatrix'  element.
3241      */
3242     virtual SVGAnimatedLength getKernelUnitLengthY() =0;
3244     /**
3245      * Corresponds to attribute preserveAlpha on the
3246      *      given 'feConvolveMatrix'  element.
3247      */
3248     virtual SVGAnimatedBoolean getPreserveAlpha() =0;
3252     //##################
3253     //# Non-API methods
3254     //##################
3256     /**
3257      *
3258      */
3259     virtual ~SVGFEConvolveMatrixElement() {}
3261 };
3268 /*#########################################################################
3269 ## SVGFEDiffuseLightingElement
3270 #########################################################################*/
3272 /**
3273  * The SVGFEDiffuseLightingElement  interface corresponds to the
3274  *  'feDiffuseLighting' element.
3275  */
3276 class SVGFEDiffuseLightingElement :
3277                     virtual public SVGElement,
3278                     public SVGFilterPrimitiveStandardAttributes
3280 public:
3282     /**
3283      * Corresponds to attribute in on the given 'feDiffuseLighting'  element.
3284      */
3285     virtual SVGAnimatedString getIn1() =0;
3287     /**
3288      * Corresponds to attribute surfaceScale on the given
3289      *      'feDiffuseLighting'  element.
3290      */
3291     virtual SVGAnimatedNumber getSurfaceScale() =0;
3293     /**
3294      * Corresponds to attribute diffuseConstant on the given
3295      *      'feDiffuseLighting'  element.
3296      */
3297     virtual SVGAnimatedNumber getDiffuseConstant() =0;
3299     /**
3300      * Corresponds to attribute kernelUnitLength on the given
3301      *      'feDiffuseLighting'  element.
3302      */
3303     virtual SVGAnimatedNumber getKernelUnitLengthX() =0;
3305     /**
3306      * Corresponds to attribute kernelUnitLength on the given
3307      *      'feDiffuseLighting'  element.
3308      */
3309     virtual SVGAnimatedNumber getKernelUnitLengthY() =0;
3313     //##################
3314     //# Non-API methods
3315     //##################
3317     /**
3318      *
3319      */
3320     virtual ~SVGFEDiffuseLightingElement() {}
3322 };
3329 /*#########################################################################
3330 ## SVGFEDistantLightElement
3331 #########################################################################*/
3333 /**
3334  * The SVGFEDistantLightElement interface corresponds to the
3335  *  'feDistantLight' element.
3336  */
3337 class SVGFEDistantLightElement : virtual public SVGElement
3339 public:
3341     /**
3342      * Corresponds to attribute azimuth on the given 'feDistantLight'  element.
3343      */
3344     virtual SVGAnimatedNumber getAzimuth() =0;
3347     /**
3348      * Corresponds to attribute elevation on the given 'feDistantLight'
3349      *    element
3350      */
3351     virtual SVGAnimatedNumber getElevation() =0;
3355     //##################
3356     //# Non-API methods
3357     //##################
3359     /**
3360      *
3361      */
3362     virtual ~SVGFEDistantLightElement() {}
3364 };
3371 /*#########################################################################
3372 ## SVGFEPointLightElement
3373 #########################################################################*/
3375 /**
3376  * The SVGFEPointLightElement interface corresponds to the 'fePointLight' element.
3377  */
3378 class SVGFEPointLightElement : virtual public SVGElement
3380 public:
3382     /**
3383      * Corresponds to attribute x on the given 'fePointLight' element.
3384      */
3385     virtual SVGAnimatedNumber getX() =0;
3387     /**
3388      * Corresponds to attribute y on the given 'fePointLight' element.
3389      */
3390     virtual SVGAnimatedNumber getY() =0;
3392     /**
3393      * Corresponds to attribute z on the given 'fePointLight' element.
3394      */
3395     virtual SVGAnimatedNumber getZ() =0;
3397     //##################
3398     //# Non-API methods
3399     //##################
3401     /**
3402      *
3403      */
3404     virtual ~SVGFEPointLightElement() {}
3406 };
3413 /*#########################################################################
3414 ## SVGFESpotLightElement
3415 #########################################################################*/
3417 /**
3418  * The SVGFESpotLightElement interface corresponds to the 'feSpotLight' element.
3419  */
3420 class SVGFESpotLightElement : virtual public SVGElement
3422 public:
3424     /**
3425      * Corresponds to attribute x on the given 'feSpotLight' element.
3426      */
3427     virtual SVGAnimatedNumber getX() =0;
3429     /**
3430      * Corresponds to attribute y on the given 'feSpotLight' element.
3431      */
3432     virtual SVGAnimatedNumber getY() =0;
3434     /**
3435      * Corresponds to attribute z on the given 'feSpotLight' element.
3436      */
3437     virtual SVGAnimatedNumber getZ() =0;
3439     /**
3440      * Corresponds to attribute pointsAtX on the given 'feSpotLight' element.
3441      */
3442     virtual SVGAnimatedNumber getPointsAtX() =0;
3444     /**
3445      * Corresponds to attribute pointsAtY on the given 'feSpotLight' element.
3446      */
3447     virtual SVGAnimatedNumber getPointsAtY() =0;
3449     /**
3450      * Corresponds to attribute pointsAtZ on the given 'feSpotLight' element.
3451      */
3452     virtual SVGAnimatedNumber getPointsAtZ() =0;
3454     /**
3455      * Corresponds to attribute specularExponent on the
3456      *      given 'feSpotLight'  element.
3457      */
3458     virtual SVGAnimatedNumber getSpecularExponent() =0;
3460     /**
3461      * Corresponds to attribute limitingConeAngle on the
3462      *      given 'feSpotLight'  element.
3463      */
3464     virtual SVGAnimatedNumber getLimitingConeAngle() =0;
3468     //##################
3469     //# Non-API methods
3470     //##################
3472     /**
3473      *
3474      */
3475     virtual ~SVGFESpotLightElement() {}
3477 };
3484 /*#########################################################################
3485 ## SVGFEDisplacementMapElement
3486 #########################################################################*/
3488 /**
3489  *
3490  */
3491 class SVGFEDisplacementMapElement :
3492                     virtual public SVGElement,
3493                     public SVGFilterPrimitiveStandardAttributes
3495 public:
3499     /**
3500      *  Channel Selectors
3501      */
3502     typedef enum
3503         {
3504         SVG_CHANNEL_UNKNOWN = 0,
3505         SVG_CHANNEL_R       = 1,
3506         SVG_CHANNEL_G       = 2,
3507         SVG_CHANNEL_B       = 3,
3508         SVG_CHANNEL_A       = 4
3509         } ChannelSelector;
3511     /**
3512      *
3513      */
3514     virtual SVGAnimatedString getIn1() =0;
3516     /**
3517      *
3518      */
3519     virtual SVGAnimatedString getIn2() =0;
3522     /**
3523      *
3524      */
3525     virtual SVGAnimatedNumber getScale() =0;
3527     /**
3528      *
3529      */
3530     virtual SVGAnimatedEnumeration getXChannelSelector() =0;
3532     /**
3533      *
3534      */
3535     virtual SVGAnimatedEnumeration getYChannelSelector() =0;
3539     //##################
3540     //# Non-API methods
3541     //##################
3543     /**
3544      *
3545      */
3546     virtual ~SVGFEDisplacementMapElement() {}
3548 };
3555 /*#########################################################################
3556 ## SVGFEFloodElement
3557 #########################################################################*/
3559 /**
3560  *
3561  */
3562 class SVGFEFloodElement :
3563                     virtual public SVGElement,
3564                     public SVGFilterPrimitiveStandardAttributes
3566 public:
3567     /**
3568      *
3569      */
3570     virtual SVGAnimatedString getIn1() =0;
3573     //##################
3574     //# Non-API methods
3575     //##################
3577     /**
3578      *
3579      */
3580     virtual ~SVGFEFloodElement() {}
3582 };
3589 /*#########################################################################
3590 ## SVGFEGaussianBlurElement
3591 #########################################################################*/
3593 /**
3594  *
3595  */
3596 class SVGFEGaussianBlurElement :
3597                     virtual public SVGElement,
3598                     public SVGFilterPrimitiveStandardAttributes
3600 public:
3601     /**
3602      *
3603      */
3604     virtual SVGAnimatedString getIn1() =0;
3607     /**
3608      *
3609      */
3610     virtual SVGAnimatedNumber getStdDeviationX() =0;
3612     /**
3613      *
3614      */
3615     virtual SVGAnimatedNumber getStdDeviationY() =0;
3618     /**
3619      *
3620      */
3621     virtual void setStdDeviation (double stdDeviationX, double stdDeviationY ) =0;
3625     //##################
3626     //# Non-API methods
3627     //##################
3629     /**
3630      *
3631      */
3632     virtual ~SVGFEGaussianBlurElement() {}
3634 };
3641 /*#########################################################################
3642 ## SVGFEImageElement
3643 #########################################################################*/
3645 /**
3646  *
3647  */
3648 class SVGFEImageElement :
3649                     virtual public SVGElement,
3650                     public SVGURIReference,
3651                     public SVGLangSpace,
3652                     public SVGExternalResourcesRequired,
3653                     public SVGFilterPrimitiveStandardAttributes
3655 public:
3657     //##################
3658     //# Non-API methods
3659     //##################
3661     /**
3662      *
3663      */
3664     virtual ~SVGFEImageElement() {}
3666 };
3671 /*#########################################################################
3672 ## SVGFEMergeElement
3673 #########################################################################*/
3675 /**
3676  *
3677  */
3678 class SVGFEMergeElement :
3679                     virtual public SVGElement,
3680                     public SVGFilterPrimitiveStandardAttributes
3682 public:
3684     //##################
3685     //# Non-API methods
3686     //##################
3688     /**
3689      *
3690      */
3691     virtual ~SVGFEMergeElement() {}
3693 };
3698 /*#########################################################################
3699 ## SVGFEMergeNodeElement
3700 #########################################################################*/
3702 /**
3703  *
3704  */
3705 class SVGFEMergeNodeElement : virtual public SVGElement
3707 public:
3708     /**
3709      *
3710      */
3711     virtual SVGAnimatedString getIn1() =0;
3714     //##################
3715     //# Non-API methods
3716     //##################
3718     /**
3719      *
3720      */
3721     virtual ~SVGFEMergeNodeElement() {}
3723 };
3730 /*#########################################################################
3731 ## SVGFEMorphologyElement
3732 #########################################################################*/
3734 /**
3735  *
3736  */
3737 class SVGFEMorphologyElement :
3738                     virtual public SVGElement,
3739                     public SVGFilterPrimitiveStandardAttributes
3741 public:
3745     /**
3746      *  Morphology Operators
3747      */
3748     typedef enum
3749         {
3750         SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0,
3751         SVG_MORPHOLOGY_OPERATOR_ERODE   = 1,
3752         SVG_MORPHOLOGY_OPERATOR_DILATE  = 2
3753         } MorphologyOperatorType;
3756     /**
3757      *
3758      */
3759     virtual SVGAnimatedString getIn1() =0;
3762     /**
3763      *
3764      */
3765     virtual SVGAnimatedEnumeration getOperator() =0;
3767     /**
3768      *
3769      */
3770     virtual SVGAnimatedLength getRadiusX() =0;
3772     /**
3773      *
3774      */
3775     virtual SVGAnimatedLength getRadiusY() =0;
3779     //##################
3780     //# Non-API methods
3781     //##################
3783     /**
3784      *
3785      */
3786     virtual ~SVGFEMorphologyElement() {}
3788 };
3795 /*#########################################################################
3796 ## SVGFEOffsetElement
3797 #########################################################################*/
3799 /**
3800  *
3801  */
3802 class SVGFEOffsetElement :
3803                     virtual public SVGElement,
3804                     public SVGFilterPrimitiveStandardAttributes
3806 public:
3810     /**
3811      *
3812      */
3813     virtual SVGAnimatedString getIn1() =0;
3815     /**
3816      *
3817      */
3818     virtual SVGAnimatedLength getDx() =0;
3820     /**
3821      *
3822      */
3823     virtual SVGAnimatedLength getDy() =0;
3828     //##################
3829     //# Non-API methods
3830     //##################
3832     /**
3833      *
3834      */
3835     virtual ~SVGFEOffsetElement() {}
3837 };
3844 /*#########################################################################
3845 ## SVGFESpecularLightingElement
3846 #########################################################################*/
3848 /**
3849  *
3850  */
3851 class SVGFESpecularLightingElement :
3852                     virtual public SVGElement,
3853                     public SVGFilterPrimitiveStandardAttributes
3855 public:
3857     /**
3858      *
3859      */
3860     virtual SVGAnimatedString getIn1() =0;
3862     /**
3863      *
3864      */
3865     virtual SVGAnimatedNumber getSurfaceScale() =0;
3867     /**
3868      *
3869      */
3870     virtual SVGAnimatedNumber getSpecularConstant() =0;
3872     /**
3873      *
3874      */
3875     virtual SVGAnimatedNumber getSpecularExponent() =0;
3878     //##################
3879     //# Non-API methods
3880     //##################
3882     /**
3883      *
3884      */
3885     virtual ~SVGFESpecularLightingElement() {}
3887 };
3894 /*#########################################################################
3895 ## SVGFETileElement
3896 #########################################################################*/
3898 /**
3899  *
3900  */
3901 class SVGFETileElement :
3902                     virtual public SVGElement,
3903                     public SVGFilterPrimitiveStandardAttributes
3905 public:
3908     /**
3909      *
3910      */
3911     virtual SVGAnimatedString getIn1() =0;
3915     //##################
3916     //# Non-API methods
3917     //##################
3919     /**
3920      *
3921      */
3922     virtual ~SVGFETileElement() {}
3924 };
3931 /*#########################################################################
3932 ## SVGFETurbulenceElement
3933 #########################################################################*/
3935 /**
3936  *
3937  */
3938 class SVGFETurbulenceElement :
3939                     virtual public SVGElement,
3940                     public SVGFilterPrimitiveStandardAttributes
3942 public:
3946     /**
3947      *  Turbulence Types
3948      */
3949     typedef enum
3950         {
3951         SVG_TURBULENCE_TYPE_UNKNOWN      = 0,
3952         SVG_TURBULENCE_TYPE_FRACTALNOISE = 1,
3953         SVG_TURBULENCE_TYPE_TURBULENCE   = 2
3954         } TurbulenceType;
3956     /**
3957      *  Stitch Options
3958      */
3959     typedef enum
3960         {
3961         SVG_STITCHTYPE_UNKNOWN  = 0,
3962         SVG_STITCHTYPE_STITCH   = 1,
3963         SVG_STITCHTYPE_NOSTITCH = 2
3964         } StitchOption;
3968     /**
3969      *
3970      */
3971     virtual SVGAnimatedNumber getBaseFrequencyX() =0;
3973     /**
3974      *
3975      */
3976     virtual SVGAnimatedNumber getBaseFrequencyY() =0;
3978     /**
3979      *
3980      */
3981     virtual SVGAnimatedInteger getNumOctaves() =0;
3983     /**
3984      *
3985      */
3986     virtual SVGAnimatedNumber getSeed() =0;
3988     /**
3989      *
3990      */
3991     virtual SVGAnimatedEnumeration getStitchTiles() =0;
3993     /**
3994      *
3995      */
3996     virtual SVGAnimatedEnumeration getType() =0;
4000     //##################
4001     //# Non-API methods
4002     //##################
4004     /**
4005      *
4006      */
4007     virtual ~SVGFETurbulenceElement() {}
4009 };
4016 /*#########################################################################
4017 ## SVGCursorElement
4018 #########################################################################*/
4020 /**
4021  *
4022  */
4023 class SVGCursorElement :
4024                     virtual public SVGElement,
4025                     public SVGURIReference,
4026                     public SVGTests,
4027                     public SVGExternalResourcesRequired
4029 public:
4030     /**
4031      *
4032      */
4033     virtual SVGAnimatedLength getX() =0;
4035     /**
4036      *
4037      */
4038     virtual SVGAnimatedLength getY() =0;
4040     //##################
4041     //# Non-API methods
4042     //##################
4044     /**
4045      *
4046      */
4047     virtual ~SVGCursorElement() {}
4049 };
4056 /*#########################################################################
4057 ## SVGAElement
4058 #########################################################################*/
4060 /**
4061  *
4062  */
4063 class SVGAElement : virtual public SVGElement,
4064                     public SVGURIReference,
4065                     public SVGTests,
4066                     public SVGLangSpace,
4067                     public SVGExternalResourcesRequired,
4068                     public SVGStylable,
4069                     public SVGTransformable,
4070                     public events::EventTarget
4072 public:
4074     /**
4075      *
4076      */
4077     virtual SVGAnimatedString getTarget() =0;
4081     //##################
4082     //# Non-API methods
4083     //##################
4085     /**
4086      *
4087      */
4088     virtual ~SVGAElement() {}
4090 };
4097 /*#########################################################################
4098 ## SVGViewElement
4099 #########################################################################*/
4101 /**
4102  *
4103  */
4104 class SVGViewElement : virtual public SVGElement,
4105                        public SVGExternalResourcesRequired,
4106                        public SVGFitToViewBox,
4107                        public SVGZoomAndPan
4109 public:
4111     /**
4112      *
4113      */
4114     virtual SVGStringList getViewTarget() =0;
4118     //##################
4119     //# Non-API methods
4120     //##################
4122     /**
4123      *
4124      */
4125     virtual ~SVGViewElement() {}
4127 };
4134 /*#########################################################################
4135 ## SVGScriptElement
4136 #########################################################################*/
4138 /**
4139  *
4140  */
4141 class SVGScriptElement :
4142                     virtual public SVGElement,
4143                     public SVGURIReference,
4144                     public SVGExternalResourcesRequired
4146 public:
4148     /**
4149      *
4150      */
4151     virtual DOMString getType() =0;
4153     /**
4154      *
4155      */
4156     virtual void setType(const DOMString &val)
4157                                throw (DOMException) =0;
4160     //##################
4161     //# Non-API methods
4162     //##################
4164     /**
4165      *
4166      */
4167     virtual ~SVGScriptElement() {}
4169 };
4175 /*#########################################################################
4176 ## SVGAnimationElement
4177 #########################################################################*/
4179 /**
4180  *
4181  */
4182 class SVGAnimationElement :
4183                     virtual public SVGElement,
4184                     public SVGTests,
4185                     public SVGExternalResourcesRequired,
4186                     public smil::ElementTimeControl,
4187                     public events::EventTarget
4189 public:
4192     /**
4193      *
4194      */
4195     virtual SVGElementPtr getTargetElement() =0;
4198     /**
4199      *
4200      */
4201     virtual double getStartTime (  ) =0;
4203     /**
4204      *
4205      */
4206     virtual double getCurrentTime (  ) =0;
4208     /**
4209      *
4210      */
4211     virtual double getSimpleDuration (  )
4212                     throw( DOMException ) =0;
4217     //##################
4218     //# Non-API methods
4219     //##################
4221     /**
4222      *
4223      */
4224     virtual ~SVGAnimationElement() {}
4226 };
4233 /*#########################################################################
4234 ## SVGAnimateElement
4235 #########################################################################*/
4237 /**
4238  *
4239  */
4240 class SVGAnimateElement : virtual public SVGAnimationElement
4242 public:
4244     //##################
4245     //# Non-API methods
4246     //##################
4248     /**
4249      *
4250      */
4251     virtual ~SVGAnimateElement() {}
4253 };
4258 /*#########################################################################
4259 ## SVGSetElement
4260 #########################################################################*/
4262 /**
4263  *
4264  */
4265 class SVGSetElement : virtual public SVGAnimationElement
4267 public:
4269     //##################
4270     //# Non-API methods
4271     //##################
4273     /**
4274      *
4275      */
4276     virtual ~SVGSetElement() {}
4278 };
4283 /*#########################################################################
4284 ## SVGAnimateMotionElement
4285 #########################################################################*/
4287 /**
4288  *
4289  */
4290 class SVGAnimateMotionElement : virtual public SVGAnimationElement
4292 public:
4294     //##################
4295     //# Non-API methods
4296     //##################
4298     /**
4299      *
4300      */
4301     virtual ~SVGAnimateMotionElement() {}
4303 };
4308 /*#########################################################################
4309 ## SVGMPathElement
4310 #########################################################################*/
4312 /**
4313  *
4314  */
4315 class SVGMPathElement :
4316                     virtual public SVGElement,
4317                     public SVGURIReference,
4318                     public SVGExternalResourcesRequired
4320 public:
4322     //##################
4323     //# Non-API methods
4324     //##################
4326     /**
4327      *
4328      */
4329     virtual ~SVGMPathElement() {}
4331 };
4336 /*#########################################################################
4337 ## SVGAnimateColorElement
4338 #########################################################################*/
4340 /**
4341  *
4342  */
4343 class SVGAnimateColorElement : virtual public SVGAnimationElement
4345 public:
4347     //##################
4348     //# Non-API methods
4349     //##################
4351     /**
4352      *
4353      */
4354     virtual ~SVGAnimateColorElement() {}
4356 };
4361 /*#########################################################################
4362 ## SVGAnimateTransformElement
4363 #########################################################################*/
4365 /**
4366  *
4367  */
4368 class SVGAnimateTransformElement : virtual public SVGAnimationElement
4370 public:
4372     //##################
4373     //# Non-API methods
4374     //##################
4376     /**
4377      *
4378      */
4379     virtual ~SVGAnimateTransformElement() {}
4381 };
4386 /*#########################################################################
4387 ## SVGFontElement
4388 #########################################################################*/
4390 /**
4391  *
4392  */
4393 class SVGFontElement :  virtual public SVGElement,
4394                         public SVGExternalResourcesRequired,
4395                         public SVGStylable
4397 public:
4399     //##################
4400     //# Non-API methods
4401     //##################
4403     /**
4404      *
4405      */
4406     virtual ~SVGFontElement() {}
4408 };
4413 /*#########################################################################
4414 ## SVGGlyphElement
4415 #########################################################################*/
4417 /**
4418  *
4419  */
4420 class SVGGlyphElement :  virtual public SVGElement,
4421                          public SVGStylable
4423 public:
4425     //##################
4426     //# Non-API methods
4427     //##################
4429     /**
4430      *
4431      */
4432     virtual ~SVGGlyphElement() {}
4434 };
4439 /*#########################################################################
4440 ## SVGMissingGlyphElement
4441 #########################################################################*/
4443 /**
4444  *
4445  */
4446 class SVGMissingGlyphElement :
4447                     virtual public SVGElement,
4448                     public SVGStylable
4450 public:
4452     //##################
4453     //# Non-API methods
4454     //##################
4456     /**
4457      *
4458      */
4459     virtual ~SVGMissingGlyphElement() {}
4461 };
4466 /*#########################################################################
4467 ## SVGHKernElement
4468 #########################################################################*/
4470 /**
4471  *
4472  */
4473 class SVGHKernElement : virtual public SVGElement
4475 public:
4477     //##################
4478     //# Non-API methods
4479     //##################
4481     /**
4482      *
4483      */
4484     virtual ~SVGHKernElement() {}
4486 };
4491 /*#########################################################################
4492 ## SVGVKernElement
4493 #########################################################################*/
4495 /**
4496  *
4497  */
4498 class SVGVKernElement : public virtual SVGElement
4500 public:
4502     //##################
4503     //# Non-API methods
4504     //##################
4506     /**
4507      *
4508      */
4509     virtual ~SVGVKernElement() {}
4511 };
4516 /*#########################################################################
4517 ## SVGFontFaceElement
4518 #########################################################################*/
4520 /**
4521  *
4522  */
4523 class SVGFontFaceElement : virtual public SVGElement
4525 public:
4527     //##################
4528     //# Non-API methods
4529     //##################
4531     /**
4532      *
4533      */
4534     virtual ~SVGFontFaceElement() {}
4536 };
4541 /*#########################################################################
4542 ## SVGFontFaceSrcElement
4543 #########################################################################*/
4545 /**
4546  *
4547  */
4548 class SVGFontFaceSrcElement : virtual public SVGElement
4550 public:
4552     //##################
4553     //# Non-API methods
4554     //##################
4556     /**
4557      *
4558      */
4559     virtual ~SVGFontFaceSrcElement() {}
4561 };
4566 /*#########################################################################
4567 ## SVGFontFaceUriElement
4568 #########################################################################*/
4570 /**
4571  *
4572  */
4573 class SVGFontFaceUriElement : virtual public SVGElement
4575 public:
4577     //##################
4578     //# Non-API methods
4579     //##################
4581     /**
4582      *
4583      */
4584     virtual ~SVGFontFaceUriElement() {}
4586 };
4591 /*#########################################################################
4592 ## SVGFontFaceFormatElement
4593 #########################################################################*/
4595 /**
4596  *
4597  */
4598 class SVGFontFaceFormatElement : virtual public SVGElement
4600 public:
4602     //##################
4603     //# Non-API methods
4604     //##################
4606     /**
4607      *
4608      */
4609     virtual ~SVGFontFaceFormatElement() {}
4611 };
4616 /*#########################################################################
4617 ## SVGFontFaceNameElement
4618 #########################################################################*/
4620 /**
4621  *
4622  */
4623 class SVGFontFaceNameElement : virtual public SVGElement
4625 public:
4627     //##################
4628     //# Non-API methods
4629     //##################
4631     /**
4632      *
4633      */
4634     virtual ~SVGFontFaceNameElement() {}
4636 };
4641 /*#########################################################################
4642 ## SVGDefinitionSrcElement
4643 #########################################################################*/
4645 /**
4646  *
4647  */
4648 class SVGDefinitionSrcElement : virtual public SVGElement
4650 public:
4652     //##################
4653     //# Non-API methods
4654     //##################
4656     /**
4657      *
4658      */
4659     virtual ~SVGDefinitionSrcElement() {}
4661 };
4666 /*#########################################################################
4667 ## SVGMetadataElement
4668 #########################################################################*/
4670 /**
4671  *
4672  */
4673 class SVGMetadataElement : virtual public SVGElement
4675 public:
4677     //##################
4678     //# Non-API methods
4679     //##################
4681     /**
4682      *
4683      */
4684     virtual ~SVGMetadataElement() {}
4686 };
4690 /*#########################################################################
4691 ## SVGForeignObjectElement
4692 #########################################################################*/
4694 /**
4695  *
4696  */
4697 class SVGForeignObjectElement :
4698                     virtual public SVGElement,
4699                     public SVGTests,
4700                     public SVGLangSpace,
4701                     public SVGExternalResourcesRequired,
4702                     public SVGStylable,
4703                     public SVGTransformable,
4704                     public events::EventTarget
4706 public:
4709     /**
4710      *
4711      */
4712     virtual SVGAnimatedLength getX() =0;
4714     /**
4715      *
4716      */
4717     virtual SVGAnimatedLength getY() =0;
4719     /**
4720      *
4721      */
4722     virtual SVGAnimatedLength getWidth() =0;
4724     /**
4725      *
4726      */
4727     virtual SVGAnimatedLength getHeight() =0;
4731     //##################
4732     //# Non-API methods
4733     //##################
4736     /**
4737      *
4738      */
4739     virtual ~SVGForeignObjectElement() {}
4741 };
4747 }  //namespace svg
4748 }  //namespace dom
4749 }  //namespace w3c
4750 }  //namespace org
4752 #endif // __SVG_H__
4753 /*#########################################################################
4754 ## E N D    O F    F I L E
4755 #########################################################################*/