Code

09a58a7e52ae4c7fd8ad125d643a8a232525e46c
[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>
67 namespace org
68 {
69 namespace w3c
70 {
71 namespace dom
72 {
73 namespace svg
74 {
77 //local definitions
78 typedef dom::DOMString DOMString;
79 typedef dom::DOMException DOMException;
80 typedef dom::Element Element;
81 typedef dom::ElementPtr ElementPtr;
82 typedef dom::Document Document;
83 typedef dom::DocumentPtr DocumentPtr;
84 typedef dom::NodeList NodeList;
89 class SVGElement;
90 typedef Ptr<SVGElement> SVGElementPtr;
91 class SVGSVGElement;
92 typedef Ptr<SVGSVGElement> SVGSVGElementPtr;
93 class SVGDocument;
94 typedef Ptr<SVGDocument> SVGDocumentPtr;
97 /*#########################################################################
98 ## SVGElement
99 #########################################################################*/
101 /**
102  * All of the SVG DOM interfaces that correspond directly to elements in the SVG
103  * language (e.g., the SVGPathElement interface corresponds directly to the
104  * 'path' element in the language) are derivative from base class SVGElement.
105  */
106 class SVGElement : virtual public Element
108 public:
110     /**
111      * Get the value of the id attribute on the given element.
112      */
113     virtual DOMString getId() =0;
115     /**
116      * Set the value of the id attribute on the given element.
117      */
118     virtual void setId(const DOMString &val)
119                        throw (DOMException) =0;
121     /**
122      * Corresponds to attribute xml:base on the given element.
123      */
124     virtual DOMString getXmlBase() = 0;
126     /**
127      * Corresponds to attribute xml:base on the given element.
128      */
129     virtual void setXmlBase(const DOMString &val)
130                             throw (DOMException) = 0;
132     /**
133      * The nearest ancestor 'svg' element. Null if the given element is the
134      *      outermost 'svg' element.
135      */
136     virtual SVGSVGElementPtr getOwnerSVGElement() = 0;
138     /**
139      * The element which established the current viewport. Often, the nearest
140      * ancestor 'svg' element. Null if the given element is the outermost 'svg'
141      * element.
142      */
143     virtual SVGElementPtr getViewportElement() = 0;
146     //##################
147     //# Non-API methods
148     //##################
151     /**
152      *
153      */
154     virtual ~SVGElement() {}
157 };
161 /*#########################################################################
162 ## SVGDocument
163 #########################################################################*/
165 /**
166  * When an 'svg' element is embedded inline as a component of a document from
167  * another namespace, such as when an 'svg' element is embedded inline within an
168  * XHTML document [XHTML], then an SVGDocument object will not exist; instead,
169  * the root object in the document object hierarchy will be a Document object of
170  * a different type, such as an HTMLDocument object.
171  *
172  * However, an SVGDocument object will indeed exist when the root element of the
173  * XML document hierarchy is an 'svg' element, such as when viewing a stand-alone
174  * SVG file (i.e., a file with MIME type "image/svg+xml"). In this case, the
175  * SVGDocument object will be the root object of the document object model
176  * hierarchy.
177  *
178  * In the case where an SVG document is embedded by reference, such as when an
179  * XHTML document has an 'object' element whose href attribute references an SVG
180  * document (i.e., a document whose MIME type is "image/svg+xml" and whose root
181  * element is thus an 'svg' element), there will exist two distinct DOM
182  * hierarchies. The first DOM hierarchy will be for the referencing document
183  * (e.g., an XHTML document). The second DOM hierarchy will be for the referenced
184  * SVG document. In this second DOM hierarchy, the root object of the document
185  * object model hierarchy is an SVGDocument object.
186  */
187 class SVGDocument : virtual public Document,
188                     virtual public events::DocumentEvent
190 public:
193     /**
194      * The title of a document as specified by the title sub-element of the 'svg'
195      * root element (i.e., <svg><title>Here is the title</title>...</svg>)
196      */
197     virtual DOMString getTitle() =0;
199     /**
200      * Returns the URI of the page that linked to this page. The value is an empty
201      * string if the user navigated to the page directly (not through a link, but,
202      * for example, via a bookmark).
203      */
204     virtual DOMString getReferrer() =0;
206     /**
207      * The domain name of the server that served the document, or a null string if
208      * the server cannot be identified by a domain name.
209      */
210     virtual DOMString getDomain() =0;
212     /**
213      * The complete URI of the document.
214      */
215     virtual DOMString getURL() =0;
217     /**
218      * The root 'svg'  element in the document hierarchy.
219      */
220     virtual SVGSVGElementPtr getRootElement() =0;
223     //##################
224     //# Non-API methods
225     //##################
227     /**
228      *
229      */
230     virtual ~SVGDocument() {}
232 };
236 /*#########################################################################
237 ## SVGSVGElement
238 #########################################################################*/
240 /**
241  * A key interface definition is the SVGSVGElement interface, which is the
242  * interface that corresponds to the 'svg' element. This interface contains
243  * various miscellaneous commonly-used utility methods, such as matrix operations
244  * and the ability to control the time of redraw on visual rendering devices.
245  *
246  * SVGSVGElement extends ViewCSS and DocumentCSS to provide access to the
247  * computed values of properties and the override style sheet as described in DOM2.
248  */
249 class SVGSVGElement : virtual public SVGElement,
250                       public SVGTests,
251                       public SVGLangSpace,
252                       public SVGExternalResourcesRequired,
253                       public SVGStylable,
254                       public SVGLocatable,
255                       public SVGFitToViewBox,
256                       public SVGZoomAndPan,
257                       public events::EventTarget,
258                       public events::DocumentEvent,
259                       public css::ViewCSS,
260                       public css::DocumentCSS
262 public:
264     /**
265      * Corresponds to attribute x on the given 'svg' element.
266      */
267     virtual SVGAnimatedLength getX() =0;
269     /**
270      * Corresponds to attribute y on the given 'svg' element.
271      */
272     virtual SVGAnimatedLength getY() =0;
274     /**
275      * Corresponds to attribute width on the given 'svg' element.
276      */
277     virtual SVGAnimatedLength getWidth() =0;
279     /**
280      * Corresponds to attribute height on the given 'svg' element.
281      */
282     virtual SVGAnimatedLength getHeight() =0;
284     /**
285      * Get the attribute contentScriptType on the given 'svg' element.
286      */
287     virtual DOMString getContentScriptType() =0;
289     /**
290      * Set the attribute contentScriptType on the given 'svg' element.
291      */
292     virtual void setContentScriptType(const DOMString &val)
293                                      throw (DOMException) =0;
296     /**
297      * Get the attribute contentStyleType on the given 'svg' element.
298      */
299     virtual DOMString getContentStyleType() =0;
301     /**
302      * Set the attribute contentStyleType on the given 'svg' element.
303      */
304     virtual void setContentStyleType(const DOMString &val)
305                                      throw (DOMException) =0;
307     /**
308      * The position and size of the viewport (implicit or explicit) that corresponds
309      * to this 'svg' element. When the user agent is actually rendering the content,
310      * then the position and size values represent the actual values when rendering.
311      * The position and size values are unitless values in the coordinate system of
312      * the parent element. If no parent element exists (i.e., 'svg' element
313      * represents the root of the document tree), if this SVG document is embedded as
314      * part of another document (e.g., via the HTML 'object' element), then the
315      * position and size are unitless values in the coordinate system of the parent
316      * document. (If the parent uses CSS or XSL layout, then unitless values
317      * represent pixel units for the current CSS or XSL viewport, as described in the
318      * CSS2 specification.) If the parent element does not have a coordinate system,
319      * then the user agent should provide reasonable default values for this attribute.
320      *      */
321     virtual SVGRect getViewport() =0;
323     /**
324      * Size of a pixel units (as defined by CSS2) along the x-axis of the viewport,
325      * which represents a unit somewhere in the range of 70dpi to 120dpi, and, on
326      * systems that support this, might actually match the characteristics of the
327      * target medium. On systems where it is impossible to know the size of a pixel,
328      * a suitable default pixel size is provided.
329      */
330     virtual double getPixelUnitToMillimeterX() =0;
332     /**
333      * Corresponding size of a pixel unit along the y-axis of the viewport.
334      */
335     virtual double getPixelUnitToMillimeterY() =0;
337     /**
338      * User interface (UI) events in DOM Level 2 indicate the screen positions at
339      * which the given UI event occurred. When the user agent actually knows the
340      * physical size of a "screen unit", this attribute will express that information;
341      *  otherwise, user agents will provide a suitable default value such as .28mm.
342      */
343     virtual double getScreenPixelToMillimeterX() =0;
345     /**
346      * Corresponding size of a screen pixel along the y-axis of the viewport.
347      */
348     virtual double getScreenPixelToMillimeterY() =0;
351     /**
352      * The initial view (i.e., before magnification and panning) of the current
353      * innermost SVG document fragment can be either the "standard" view (i.e., based
354      * on attributes on the 'svg' element such as fitBoxToViewport) or to a "custom"
355      * view (i.e., a hyperlink into a particular 'view' or other element - see
356      * Linking into SVG content: URI fragments and SVG views). If the initial view is
357      * the "standard" view, then this attribute is false. If the initial view is a
358      * "custom" view, then this attribute is true.
359      */
360     virtual bool getUseCurrentView() =0;
362     /**
363      * Set the value above
364      */
365     virtual void setUseCurrentView(bool val) throw (DOMException) =0;
367     /**
368      * The definition of the initial view (i.e., before magnification and panning) of
369      * the current innermost SVG document fragment. The meaning depends on the
370      * situation:
371      * 
372      *    * If the initial view was a "standard" view, then:
373      *      o the values for viewBox, preserveAspectRatio and zoomAndPan within
374      *        currentView will match the values for the corresponding DOM attributes that
375      *        are on SVGSVGElement directly
376      *      o the values for transform and viewTarget within currentView will be null
377      *    * If the initial view was a link into a 'view' element, then:
378      *      o the values for viewBox, preserveAspectRatio and zoomAndPan within
379      *        currentView will correspond to the corresponding attributes for the given
380      *        'view' element
381      *      o the values for transform and viewTarget within currentView will be null
382      *    * If the initial view was a link into another element (i.e., other than a
383      *      'view'), then:
384      *      o the values for viewBox, preserveAspectRatio and zoomAndPan within
385      *        currentView will match the values for the corresponding DOM attributes that
386      *        are on SVGSVGElement directly for the closest ancestor 'svg' element
387      *      o the values for transform within currentView will be null
388      *      o the viewTarget within currentView will represent the target of the link
389      *    * If the initial view was a link into the SVG document fragment using an SVG
390      *      view specification fragment identifier (i.e., #svgView(...)), then:
391      *      o the values for viewBox, preserveAspectRatio, zoomAndPan, transform and
392      *        viewTarget within currentView will correspond to the values from the SVG view
393      *        specification fragment identifier
394      * 
395      */
396     virtual SVGViewSpec getCurrentView() =0;
399     /**
400      * This attribute indicates the current scale factor relative to the initial view
401      * to take into account user magnification and panning operations, as described
402      * under Magnification and panning. DOM attributes currentScale and
403      * currentTranslate are equivalent to the 2x3 matrix [a b c d e f] =
404      * [currentScale 0 0 currentScale currentTranslate.x currentTranslate.y]. If
405      * "magnification" is enabled (i.e., zoomAndPan="magnify"), then the effect is as
406      * if an extra transformation were placed at the outermost level on the SVG
407      * document fragment (i.e., outside the outermost 'svg' element).
408      */
409     virtual double getCurrentScale() =0;
411     /**
412      *  Set the value above.
413      */
414     virtual void setCurrentScale(double val)
415                                  throw (DOMException) =0;
418     /**
419      * The corresponding translation factor that takes into account
420      *      user "magnification".
421      */
422     virtual SVGPoint getCurrentTranslate() =0;
425     /**
426      * Takes a time-out value which indicates that redraw shall not occur until: (a)
427      * the corresponding unsuspendRedraw(suspend_handle_id) call has been made, (b)
428      * an unsuspendRedrawAll() call has been made, or (c) its timer has timed out. In
429      * environments that do not support interactivity (e.g., print media), then
430      * redraw shall not be suspended. suspend_handle_id =
431      * suspendRedraw(max_wait_milliseconds) and unsuspendRedraw(suspend_handle_id)
432      * must be packaged as balanced pairs. When you want to suspend redraw actions as
433      * a collection of SVG DOM changes occur, then precede the changes to the SVG DOM
434      * with a method call similar to suspend_handle_id =
435      * suspendRedraw(max_wait_milliseconds) and follow the changes with a method call
436      * similar to unsuspendRedraw(suspend_handle_id). Note that multiple
437      * suspendRedraw calls can be used at once and that each such method call is
438      * treated independently of the other suspendRedraw method calls.
439      */
440     virtual unsigned long suspendRedraw (unsigned long max_wait_milliseconds ) =0;
442     /**
443      * Cancels a specified suspendRedraw() by providing a unique suspend_handle_id.
444      */
445     virtual void unsuspendRedraw (unsigned long suspend_handle_id )
446                                   throw( DOMException ) =0;
448     /**
449      * Cancels all currently active suspendRedraw() method calls. This method is most
450      * useful at the very end of a set of SVG DOM calls to ensure that all pending
451      * suspendRedraw() method calls have been cancelled.
452      */
453     virtual void unsuspendRedrawAll (  ) =0;
455     /**
456      * In rendering environments supporting interactivity, forces the user agent to
457      * immediately redraw all regions of the viewport that require updating.
458      */
459     virtual void forceRedraw (  ) =0;
461     /**
462      * Suspends (i.e., pauses) all currently running animations that are defined
463      * within the SVG document fragment corresponding to this 'svg' element, causing
464      * the animation clock corresponding to this document fragment to stand still
465      * until it is unpaused.
466      */
467     virtual void pauseAnimations (  ) =0;
469     /**
470      * Unsuspends (i.e., unpauses) currently running animations that are defined
471      * within the SVG document fragment, causing the animation clock to continue from
472      * the time at which it was suspended.
473      */
474     virtual void unpauseAnimations (  ) =0;
476     /**
477      * Returns true if this SVG document fragment is in a paused state.
478      */
479     virtual bool animationsPaused (  ) =0;
481     /**
482      * Returns the current time in seconds relative to the start time for
483      *      the current SVG document fragment.
484      */
485     virtual double getCurrentTime (  ) =0;
487     /**
488      * Adjusts the clock for this SVG document fragment, establishing
489      *      a new current time.
490      */
491     virtual void setCurrentTime (double seconds ) =0;
493     /**
494      * Returns the list of graphics elements whose rendered content intersects the
495      * supplied rectangle, honoring the 'pointer-events' property value on each
496      * candidate graphics element.
497      */
498     virtual NodeList getIntersectionList(const SVGRect &rect,
499                                          const SVGElementPtr referenceElement ) =0;
501     /**
502      * Returns the list of graphics elements whose rendered content is entirely
503      * contained within the supplied rectangle, honoring the 'pointer-events'
504      * property value on each candidate graphics element.
505      */
506     virtual NodeList getEnclosureList (const SVGRect &rect,
507                                        const SVGElementPtr referenceElement ) =0;
509     /**
510      * Returns true if the rendered content of the given element intersects the
511      * supplied rectangle, honoring the 'pointer-events' property value on each
512      * candidate graphics element.
513      */
514     virtual bool checkIntersection (const SVGElementPtr element, const SVGRect &rect ) =0;
516     /**
517      * Returns true if the rendered content of the given element is entirely
518      * contained within the supplied rectangle, honoring the 'pointer-events'
519      * property value on each candidate graphics element.
520      */
521     virtual bool checkEnclosure (const SVGElementPtr element, const SVGRect &rect ) =0;
523     /**
524      * Unselects any selected objects, including any selections of text
525      *      strings and type-in bars.
526      */
527     virtual void deselectAll (  ) =0;
529     /**
530      * Creates an SVGNumber object outside of any document trees. The object
531      *      is initialized to a value of zero.
532      */
533     virtual SVGNumber createSVGNumber (  ) =0;
535     /**
536      * Creates an SVGLength object outside of any document trees. The object
537      *      is initialized to the value of 0 user units.
538      */
539     virtual SVGLength createSVGLength (  ) =0;
541     /**
542      * Creates an SVGAngle object outside of any document trees. The object
543      *      is initialized to the value 0 degrees (unitless).
544      */
545     virtual SVGAngle createSVGAngle (  ) =0;
547     /**
548      * Creates an SVGPoint object outside of any document trees. The object
549      * is initialized to the point (0,0) in the user coordinate system.
550      */
551     virtual SVGPoint createSVGPoint (  ) =0;
553     /**
554      * Creates an SVGMatrix object outside of any document trees. The object
555      *      is initialized to the identity matrix.
556      */
557     virtual SVGMatrix createSVGMatrix (  ) =0;
559     /**
560      * Creates an SVGRect object outside of any document trees. The object
561      *      is initialized such that all values are set to 0 user units.
562      */
563     virtual SVGRect createSVGRect (  ) =0;
565     /**
566      * Creates an SVGTransform object outside of any document trees.
567      * The object is initialized to an identity matrix transform
568      *      (SVG_TRANSFORM_MATRIX).
569      */
570     virtual SVGTransform createSVGTransform (  ) =0;
572     /**
573      * Creates an SVGTransform object outside of any document trees.
574      * The object is initialized to the given matrix transform
575      *      (i.e., SVG_TRANSFORM_MATRIX).
576      */
577     virtual SVGTransform createSVGTransformFromMatrix(const SVGMatrix &matrix ) =0;
579     /**
580      * Searches this SVG document fragment (i.e., the search is restricted to a
581      * subset of the document tree) for an Element whose id is given by elementId. If
582      * an Element is found, that Element is returned. If no such element exists,
583      * returns null. Behavior is not defined if more than one element has this id.
584      */
585     virtual ElementPtr getElementById (const DOMString& elementId ) =0;
589     //##################
590     //# Non-API methods
591     //##################
593     /**
594      *
595      */
596     virtual ~SVGSVGElement() {}
598 };
602 /*#########################################################################
603 ## SVGGElement
604 #########################################################################*/
606 /**
607  * The SVGGElement  interface corresponds to the 'g' element.
608  */
609 class SVGGElement : virtual public SVGElement,
610                     public SVGTests,
611                     public SVGLangSpace,
612                     public SVGExternalResourcesRequired,
613                     public SVGStylable,
614                     public SVGTransformable,
615                     public events::EventTarget
617 public:
619     //##################
620     //# Non-API methods
621     //##################
623     /**
624      *
625      */
626     virtual ~SVGGElement() {}
628 };
633 /*#########################################################################
634 ## SVGDefsElement
635 #########################################################################*/
637 /**
638  * The SVGDefsElement  interface corresponds to the 'defs' element.
639  */
640 class SVGDefsElement :
641                     virtual public SVGElement,
642                     public SVGTests,
643                     public SVGLangSpace,
644                     public SVGExternalResourcesRequired,
645                     public SVGStylable,
646                     public SVGTransformable,
647                     public events::EventTarget
649 public:
651     //##################
652     //# Non-API methods
653     //##################
655     /**
656      *
657      */
658     virtual ~SVGDefsElement() {}
660 };
665 /*#########################################################################
666 ## SVGDescElement
667 #########################################################################*/
669 /**
670  * The SVGDescElement  interface corresponds to the 'desc' element.
671  */
672 class SVGDescElement :
673                     virtual public SVGElement,
674                     public SVGLangSpace,
675                     public SVGStylable
677 public:
679     //##################
680     //# Non-API methods
681     //##################
683     /**
684      *
685      */
686     virtual ~SVGDescElement() {}
688 };
693 /*#########################################################################
694 ## SVGTitleElement
695 #########################################################################*/
697 /**
698  * The SVGTitleElement  interface corresponds to the 'title' element.
699  */
700 class SVGTitleElement :
701                     virtual public SVGElement,
702                     public SVGLangSpace,
703                     public SVGStylable
705 public:
707     //##################
708     //# Non-API methods
709     //##################
711     /**
712      *
713      */
714     virtual ~SVGTitleElement() {}
716 };
721 /*#########################################################################
722 ## SVGSymbolElement
723 #########################################################################*/
725 /**
726  * The SVGSymbolElement  interface corresponds to the 'symbol' element.
727  */
728 class SVGSymbolElement :
729                     virtual public SVGElement,
730                     public SVGLangSpace,
731                     public SVGExternalResourcesRequired,
732                     public SVGStylable,
733                     public SVGFitToViewBox,
734                     public events::EventTarget
736 public:
738     //##################
739     //# Non-API methods
740     //##################
742     /**
743      *
744      */
745     virtual ~SVGSymbolElement() {}
747 };
752 /*#########################################################################
753 ## SVGUseElement
754 #########################################################################*/
756 /**
757  * The SVGUseElement  interface corresponds to the 'use' element.
758  */
759 class SVGUseElement :
760                     virtual public SVGElement,
761                     public SVGURIReference,
762                     public SVGTests,
763                     public SVGLangSpace,
764                     public SVGExternalResourcesRequired,
765                     public SVGStylable,
766                     public SVGTransformable,
767                     public events::EventTarget
769 public:
774     /**
775      * Corresponds to attribute x on the given 'use' element.
776      */
777     virtual SVGAnimatedLength getX() =0;
779     /**
780      * Corresponds to attribute y on the given 'use' element.
781      */
782     virtual SVGAnimatedLength getY() =0;
784     /**
785      * Corresponds to attribute width on the given 'use' element.
786      */
787     virtual SVGAnimatedLength getWidth() =0;
789     /**
790      * Corresponds to attribute height on the given 'use' element.
791      */
792     virtual SVGAnimatedLength getHeight() =0;
794     /**
795      * The root of the "instance tree". See description of SVGElementInstance for
796      * a discussion on the instance tree.
797      *      */
798     virtual SVGElementInstance getInstanceRoot() =0;
800     /**
801      * If the 'href' attribute is being animated, contains the current animated root
802      * of the "instance tree". If the 'href' attribute is not currently being
803      * animated, contains the same value as 'instanceRoot'. The root of the "instance
804      * tree". See description of SVGElementInstance for a discussion on the instance
805      * tree.
806      */
807     virtual SVGElementInstance getAnimatedInstanceRoot() =0;
811     //##################
812     //# Non-API methods
813     //##################
815     /**
816      *
817      */
818     virtual ~SVGUseElement() {}
820 };
828 /*#########################################################################
829 ## SVGImageElement
830 #########################################################################*/
832 /**
833  * The SVGImageElement interface corresponds to the 'image' element.
834  */
835 class SVGImageElement :
836                     virtual public SVGElement,
837                     public SVGURIReference,
838                     public SVGTests,
839                     public SVGLangSpace,
840                     public SVGExternalResourcesRequired,
841                     public SVGStylable,
842                     public SVGTransformable,
843                     public events::EventTarget
845 public:
848     /**
849      * Corresponds to attribute x on the given 'image' element.
850      */
851     virtual SVGAnimatedLength getX() =0;
853     /**
854      * Corresponds to attribute y on the given 'image' element.
855      */
856     virtual SVGAnimatedLength getY() =0;
858     /**
859      * Corresponds to attribute width on the given 'image' element.
860      */
861     virtual SVGAnimatedLength getWidth() =0;
863     /**
864      * Corresponds to attribute height on the given 'image' element.
865      */
866     virtual SVGAnimatedLength getHeight() =0;
869     /**
870      * Corresponds to attribute preserveAspectRatio on the given element.
871      */
872     virtual SVGAnimatedPreserveAspectRatio getPreserveAspectRatio() =0;
876     //##################
877     //# Non-API methods
878     //##################
880     /**
881      *
882      */
883     virtual ~SVGImageElement() {}
885 };
892 /*#########################################################################
893 ## SVGSwitchElement
894 #########################################################################*/
896 /**
897  * The SVGSwitchElement  interface corresponds to the 'switch' element.
898  */
899 class SVGSwitchElement :
900                     virtual public SVGElement,
901                     public SVGTests,
902                     public SVGLangSpace,
903                     public SVGExternalResourcesRequired,
904                     public SVGStylable,
905                     public SVGTransformable,
906                     public events::EventTarget
908 public:
910     //##################
911     //# Non-API methods
912     //##################
914     /**
915      *
916      */
917     virtual ~SVGSwitchElement() {}
919 };
924 /*#########################################################################
925 ## GetSVGDocument
926 #########################################################################*/
928 /**
929  * In the case where an SVG document is embedded by reference, such as when an
930  * XHTML document has an 'object' element whose href (or equivalent) attribute
931  * references an SVG document (i.e., a document whose MIME type is
932  * "image/svg+xml" and whose root element is thus an 'svg' element), the SVG user
933  * agent is required to implement the GetSVGDocument interface for the element
934  * which references the SVG document (e.g., the HTML 'object' or comparable
935  * referencing elements).
936  */
937 class GetSVGDocument
939 public:
941     /**
942      * Returns the SVGDocument  object for the referenced SVG document.
943      */
944     virtual SVGDocumentPtr getSVGDocument (  )
945                     throw( DOMException ) =0;
947     //##################
948     //# Non-API methods
949     //##################
951     /**
952      *
953      */
954     virtual ~GetSVGDocument() {}
956 };
963 /*#########################################################################
964 ## SVGStyleElement
965 #########################################################################*/
967 /**
968  * The SVGStyleElement interface corresponds to the 'style' element.
969  */
970 class SVGStyleElement : virtual public SVGElement
972 public:
974     /**
975      * Get the attribute xml:space on the given element.
976      */
977     virtual DOMString getXmlspace() = 0;
979     /**
980      * Set the attribute xml:space on the given element.
981      */
982     virtual void setXmlspace(const DOMString &val)
983                              throw (DOMException) =0;
985     /**
986      * Get the attribute type on the given 'style' element.
987      */
988     virtual DOMString getType() = 0;
990     /**
991      * Set the attribute type on the given 'style' element.
992      */
993     virtual void setType(const DOMString &val)
994                          throw (DOMException) =0;
996     /**
997      * Get the attribute media on the given 'style' element.
998      */
999     virtual DOMString getMedia() = 0;
1001     /**
1002      * Set the attribute media on the given 'style' element.
1003      */
1004     virtual void setMedia(const DOMString &val)
1005                           throw (DOMException) =0;
1007     /**
1008      * Get the attribute title on the given 'style' element.
1009      */
1010     virtual DOMString getTitle() = 0;
1012     /**
1013      * Set the attribute title on the given 'style' element.
1014      */
1015     virtual void setTitle(const DOMString &val)
1016                           throw (DOMException) =0;
1020     //##################
1021     //# Non-API methods
1022     //##################
1024     /**
1025      *
1026      */
1027     virtual ~SVGStyleElement() {}
1029 };
1036 /*#########################################################################
1037 ## SVGPathElement
1038 #########################################################################*/
1040 /**
1041  * The SVGPathElement  interface corresponds to the 'path' element.
1042  */
1043 class SVGPathElement :
1044                     virtual public SVGElement,
1045                     public SVGTests,
1046                     public SVGLangSpace,
1047                     public SVGExternalResourcesRequired,
1048                     public SVGStylable,
1049                     public SVGTransformable,
1050                     public events::EventTarget,
1051                     public SVGAnimatedPathData
1054 public:
1056     /**
1057      * Corresponds to attribute pathLength on the given 'path' element.
1058      */
1059     virtual SVGAnimatedNumber getPathLength() =0;
1061     /**
1062      * Returns the user agent's computed value for the total length of the path using
1063      * the user agent's distance-along-a-path algorithm, as a distance in the current
1064      * user coordinate system.
1065      */
1066     virtual double getTotalLength (  ) =0;
1068     /**
1069      * Returns the (x,y) coordinate in user space which is distance units along the
1070      * path, utilizing the user agent's distance-along-a-path algorithm.
1071      */
1072     virtual SVGPoint getPointAtLength (double distance ) =0;
1074     /**
1075      * Returns the index into pathSegList which is distance units along the path,
1076      * utilizing the user agent's distance-along-a-path algorithm.
1077      */
1078     virtual unsigned long getPathSegAtLength (double distance ) =0;
1080     /**
1081      * Returns a stand-alone, parentless SVGPathSegClosePath object.
1082      */
1083     virtual SVGPathSegClosePath
1084               createSVGPathSegClosePath (  ) =0;
1086     /**
1087      * Returns a stand-alone, parentless SVGPathSegMovetoAbs object.
1088      */
1089     virtual SVGPathSegMovetoAbs
1090               createSVGPathSegMovetoAbs (double x, double y ) =0;
1092     /**
1093      * Returns a stand-alone, parentless SVGPathSegMovetoRel object.
1094      */
1095     virtual SVGPathSegMovetoRel
1096               createSVGPathSegMovetoRel (double x, double y ) =0;
1098     /**
1099      * Returns a stand-alone, parentless SVGPathSegLinetoAbs object.
1100      */
1101     virtual SVGPathSegLinetoAbs
1102               createSVGPathSegLinetoAbs (double x, double y ) =0;
1104     /**
1105      * Returns a stand-alone, parentless SVGPathSegLinetoRel object.
1106      */
1107     virtual SVGPathSegLinetoRel
1108               createSVGPathSegLinetoRel (double x, double y ) =0;
1110     /**
1111      * Returns a stand-alone, parentless SVGPathSegCurvetoCubicAbs object.
1112      */
1113     virtual SVGPathSegCurvetoCubicAbs
1114               createSVGPathSegCurvetoCubicAbs (double x, double y,
1115                         double x1, double y1, double x2, double y2 ) =0;
1117     /**
1118      * Returns a stand-alone, parentless SVGPathSegCurvetoCubicRel object.
1119      */
1120     virtual SVGPathSegCurvetoCubicRel
1121               createSVGPathSegCurvetoCubicRel (double x, double y,
1122                         double x1, double y1, double x2, double y2 ) =0;
1124     /**
1125      * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticAbs object.
1126      */
1127     virtual SVGPathSegCurvetoQuadraticAbs
1128               createSVGPathSegCurvetoQuadraticAbs (double x, double y,
1129                          double x1, double y1 ) =0;
1131     /**
1132      * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticRel object.
1133      */
1134     virtual SVGPathSegCurvetoQuadraticRel
1135               createSVGPathSegCurvetoQuadraticRel (double x, double y,
1136                          double x1, double y1 ) =0;
1138     /**
1139      * Returns a stand-alone, parentless SVGPathSegArcAbs object.
1140      */
1141     virtual SVGPathSegArcAbs
1142               createSVGPathSegArcAbs (double x, double y,
1143                          double r1, double r2, double angle,
1144                          bool largeArcFlag, bool sweepFlag ) =0;
1146     /**
1147      * Returns a stand-alone, parentless SVGPathSegArcRel object.
1148      */
1149     virtual SVGPathSegArcRel
1150               createSVGPathSegArcRel (double x, double y, double r1,
1151                          double r2, double angle, bool largeArcFlag,
1152                          bool sweepFlag ) =0;
1154     /**
1155      * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalAbs object.
1156      */
1157     virtual SVGPathSegLinetoHorizontalAbs
1158               createSVGPathSegLinetoHorizontalAbs (double x ) =0;
1160     /**
1161      * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalRel object.
1162      */
1163     virtual SVGPathSegLinetoHorizontalRel
1164               createSVGPathSegLinetoHorizontalRel (double x ) =0;
1166     /**
1167      * Returns a stand-alone, parentless SVGPathSegLinetoVerticalAbs object.
1168      */
1169     virtual SVGPathSegLinetoVerticalAbs
1170               createSVGPathSegLinetoVerticalAbs (double y ) =0;
1172     /**
1173      * Returns a stand-alone, parentless SVGPathSegLinetoVerticalRel object.
1174      */
1175     virtual SVGPathSegLinetoVerticalRel
1176               createSVGPathSegLinetoVerticalRel (double y ) =0;
1178     /**
1179      * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothAbs object.
1180      */
1181     virtual SVGPathSegCurvetoCubicSmoothAbs
1182               createSVGPathSegCurvetoCubicSmoothAbs (double x, double y,
1183                                              double x2, double y2 ) =0;
1185     /**
1186      * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothRel object.
1187      */
1188     virtual SVGPathSegCurvetoCubicSmoothRel
1189               createSVGPathSegCurvetoCubicSmoothRel (double x, double y,
1190                                                       double x2, double y2 ) =0;
1192     /**
1193      * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothAbs
1194      *      object.
1195      */
1196     virtual SVGPathSegCurvetoQuadraticSmoothAbs
1197               createSVGPathSegCurvetoQuadraticSmoothAbs (double x, double y ) =0;
1199     /**
1200      * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothRel
1201      *      object.
1202      */
1203     virtual SVGPathSegCurvetoQuadraticSmoothRel
1204               createSVGPathSegCurvetoQuadraticSmoothRel (double x, double y ) =0;
1208     //##################
1209     //# Non-API methods
1210     //##################
1212     /**
1213      *
1214      */
1215     virtual ~SVGPathElement() {}
1217 };
1224 /*#########################################################################
1225 ## SVGRectElement
1226 #########################################################################*/
1228 /**
1229  * The SVGRectElement  interface corresponds to the 'rect' element.
1230  */
1231 class SVGRectElement :
1232                     virtual public SVGElement,
1233                     public SVGTests,
1234                     public SVGLangSpace,
1235                     public SVGExternalResourcesRequired,
1236                     public SVGStylable,
1237                     public SVGTransformable,
1238                     public events::EventTarget
1240 public:
1242     /**
1243      * Corresponds to attribute x on the given 'rect' element.
1244      */
1245     virtual SVGAnimatedLength getX() =0;
1247     /**
1248      * Corresponds to attribute y on the given 'rect' element.
1249      */
1250     virtual SVGAnimatedLength getY() =0;
1252     /**
1253      * Corresponds to attribute width on the given 'rect' element.
1254      */
1255     virtual SVGAnimatedLength getWidth() =0;
1257     /**
1258      * Corresponds to attribute height on the given 'rect' element.
1259      */
1260     virtual SVGAnimatedLength getHeight() =0;
1263     /**
1264      * Corresponds to attribute rx on the given 'rect' element.
1265      */
1266     virtual SVGAnimatedLength getRx() =0;
1268     /**
1269      * Corresponds to attribute ry on the given 'rect' element.
1270      */
1271     virtual SVGAnimatedLength getRy() =0;
1275     //##################
1276     //# Non-API methods
1277     //##################
1279     /**
1280      *
1281      */
1282     virtual ~SVGRectElement() {}
1284 };
1291 /*#########################################################################
1292 ## SVGCircleElement
1293 #########################################################################*/
1295 /**
1296  * The SVGCircleElement  interface corresponds to the 'circle' element.
1297  */
1298 class SVGCircleElement :
1299                     virtual public SVGElement,
1300                     public SVGTests,
1301                     public SVGLangSpace,
1302                     public SVGExternalResourcesRequired,
1303                     public SVGStylable,
1304                     public SVGTransformable,
1305                     public events::EventTarget
1307 public:
1309     /**
1310      * Corresponds to attribute cx on the given 'circle' element.
1311      */
1312     virtual SVGAnimatedLength getCx() =0;
1314     /**
1315      * Corresponds to attribute cy on the given 'circle' element.
1316      */
1317     virtual SVGAnimatedLength getCy() =0;
1319     /**
1320      * Corresponds to attribute r on the given 'circle' element.
1321      */
1322     virtual SVGAnimatedLength getR() =0;
1326     //##################
1327     //# Non-API methods
1328     //##################
1330     /**
1331      *
1332      */
1333     virtual ~SVGCircleElement() {}
1335 };
1342 /*#########################################################################
1343 ## SVGEllipseElement
1344 #########################################################################*/
1346 /**
1347  * The SVGEllipseElement  interface corresponds to the 'ellipse' element.
1348  */
1349 class SVGEllipseElement :
1350                     virtual public SVGElement,
1351                     public SVGTests,
1352                     public SVGLangSpace,
1353                     public SVGExternalResourcesRequired,
1354                     public SVGStylable,
1355                     public SVGTransformable,
1356                     public events::EventTarget
1358 public:
1360     /**
1361      * Corresponds to attribute cx on the given 'ellipse' element.
1362      */
1363     virtual SVGAnimatedLength getCx() =0;
1365     /**
1366      * Corresponds to attribute cy on the given 'ellipse' element.
1367      */
1368     virtual SVGAnimatedLength getCy() =0;
1370     /**
1371      * Corresponds to attribute rx on the given 'ellipse' element.
1372      */
1373     virtual SVGAnimatedLength getRx() =0;
1375     /**
1376      * Corresponds to attribute ry on the given 'ellipse' element.
1377      */
1378     virtual SVGAnimatedLength getRy() =0;
1381     //##################
1382     //# Non-API methods
1383     //##################
1385     /**
1386      *
1387      */
1388     virtual ~SVGEllipseElement() {}
1390 };
1397 /*#########################################################################
1398 ## SVGLineElement
1399 #########################################################################*/
1401 /**
1402  * The SVGLineElement  interface corresponds to the 'line' element.
1403  */
1404 class SVGLineElement :
1405                     virtual public SVGElement,
1406                     public SVGTests,
1407                     public SVGLangSpace,
1408                     public SVGExternalResourcesRequired,
1409                     public SVGStylable,
1410                     public SVGTransformable,
1411                     public events::EventTarget
1413 public:
1415     /**
1416      * Corresponds to attribute x1 on the given 'line' element.
1417      */
1418     virtual SVGAnimatedLength getX1() =0;
1420     /**
1421      * Corresponds to attribute y1 on the given 'line' element.
1422      */
1423     virtual SVGAnimatedLength getY1() =0;
1425     /**
1426      * Corresponds to attribute x2 on the given 'line' element.
1427      */
1428     virtual SVGAnimatedLength getX2() =0;
1430     /**
1431      * Corresponds to attribute y2 on the given 'line' element.
1432      */
1433     virtual SVGAnimatedLength getY2() =0;
1435     //##################
1436     //# Non-API methods
1437     //##################
1439     /**
1440      *
1441      */
1442     virtual ~SVGLineElement() {}
1444 };
1449 /*#########################################################################
1450 ## SVGPolylineElement
1451 #########################################################################*/
1453 /**
1454  * The SVGPolylineElement  interface corresponds to the 'polyline' element.
1455  */
1456 class SVGPolylineElement :
1457                     virtual public SVGElement,
1458                     public SVGTests,
1459                     public SVGLangSpace,
1460                     public SVGExternalResourcesRequired,
1461                     public SVGStylable,
1462                     public SVGTransformable,
1463                     public events::EventTarget,
1464                     public SVGAnimatedPoints
1467 public:
1469     //##################
1470     //# Non-API methods
1471     //##################
1473     /**
1474      *
1475      */
1476     virtual ~SVGPolylineElement() {}
1478 };
1483 /*#########################################################################
1484 ## SVGPolygonElement
1485 #########################################################################*/
1487 /**
1488  * The SVGPolygonElement  interface corresponds to the 'polygon' element.
1489  */
1490 class SVGPolygonElement :
1491                     virtual public SVGElement,
1492                     public SVGTests,
1493                     public SVGLangSpace,
1494                     public SVGExternalResourcesRequired,
1495                     public SVGStylable,
1496                     public SVGTransformable,
1497                     public events::EventTarget,
1498                     public SVGAnimatedPoints
1500 public:
1502     //##################
1503     //# Non-API methods
1504     //##################
1506     /**
1507      *
1508      */
1509     virtual ~SVGPolygonElement() {}
1511 };
1516 /*#########################################################################
1517 ## SVGTextContentElement
1518 #########################################################################*/
1520 /**
1521  * The SVGTextContentElement interface is inherited by various text-related
1522  * interfaces, such as SVGTextElement, SVGTSpanElement, SVGTRefElement,
1523  * SVGAltGlyphElement and SVGTextPathElement.
1524  */
1525 class SVGTextContentElement :
1526                     virtual public SVGElement,
1527                     public SVGTests,
1528                     public SVGLangSpace,
1529                     public SVGExternalResourcesRequired,
1530                     public SVGStylable,
1531                     public events::EventTarget
1534 public:
1536     /**
1537      * lengthAdjust Types
1538      */
1539     typedef enum
1540         {
1541         LENGTHADJUST_UNKNOWN          = 0,
1542         LENGTHADJUST_SPACING          = 1,
1543         LENGTHADJUST_SPACINGANDGLYPHS = 2
1544         } LengthAdjustType;
1547     /**
1548      * Corresponds to attribute textLength on the given element.
1549      */
1550     virtual SVGAnimatedLength getTextLength() =0;
1553     /**
1554      * Corresponds to attribute lengthAdjust on the given element. The value must be
1555      * one of the length adjust constants specified above.
1556      */
1557     virtual SVGAnimatedEnumeration getLengthAdjust() =0;
1560     /**
1561      * Returns the total number of characters to be rendered within the current
1562      * element. Includes characters which are included via a 'tref' reference.
1563      */
1564     virtual long getNumberOfChars (  ) =0;
1566     /**
1567      * The total sum of all of the advance values from rendering all of the
1568      * characters within this element, including the advance value on the glyphs
1569      * (horizontal or vertical), the effect of properties 'kerning', 'letter-spacing'
1570      * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan'
1571      * elements. For non-rendering environments, the user agent shall make reasonable
1572      * assumptions about glyph metrics.
1573      */
1574     virtual double getComputedTextLength (  ) =0;
1576     /**
1577      * The total sum of all of the advance values from rendering the specified
1578      * substring of the characters, including the advance value on the glyphs
1579      * (horizontal or vertical), the effect of properties 'kerning', 'letter-spacing'
1580      * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan'
1581      * elements. For non-rendering environments, the user agent shall make reasonable
1582      * assumptions about glyph metrics.
1583      */
1584     virtual double getSubStringLength (unsigned long charnum, unsigned long nchars )
1585                                      throw( DOMException ) =0;
1587     /**
1588      * Returns the current text position before rendering the character in the user
1589      * coordinate system for rendering the glyph(s) that correspond to the specified
1590      * character. The current text position has already taken into account the
1591      * effects of any inter-character adjustments due to properties 'kerning',
1592      * 'letter-spacing' and 'word-spacing' and adjustments due to attributes x, y, dx
1593      * and dy. If multiple consecutive characters are rendered inseparably (e.g., as
1594      * a single glyph or a sequence of glyphs), then each of the inseparable
1595      * characters will return the start position for the first glyph.
1596      */
1597     virtual SVGPoint getStartPositionOfChar (unsigned long charnum )
1598                                               throw( DOMException ) =0;
1600     /**
1601      * Returns the current text position after rendering the character in the user
1602      * coordinate system for rendering the glyph(s) that correspond to the specified
1603      * character. This current text position does not take into account the effects
1604      * of any inter-character adjustments to prepare for the next character, such as
1605      * properties 'kerning', 'letter-spacing' and 'word-spacing' and adjustments due
1606      * to attributes x, y, dx and dy. If multiple consecutive characters are rendered
1607      * inseparably (e.g., as a single glyph or a sequence of glyphs), then each of
1608      * the inseparable characters will return the end position for the last glyph.
1609      */
1610     virtual SVGPoint getEndPositionOfChar (unsigned long charnum )
1611                                            throw( DOMException ) =0;
1613     /**
1614      * Returns a tightest rectangle which defines the minimum and maximum X and Y
1615      * values in the user coordinate system for rendering the glyph(s) that
1616      * correspond to the specified character. The calculations assume that all glyphs
1617      * occupy the full standard glyph cell for the font. If multiple consecutive
1618      * characters are rendered inseparably (e.g., as a single glyph or a sequence of
1619      * glyphs), then each of the inseparable characters will return the same extent.
1620      */
1621     virtual SVGRect getExtentOfChar (unsigned long charnum )
1622                                       throw( DOMException ) =0;
1624     /**
1625      * Returns the rotation value relative to the current user coordinate system used
1626      * to render the glyph(s) corresponding to the specified character. If multiple
1627      * glyph(s) are used to render the given character and the glyphs each have
1628      * different rotations (e.g., due to text-on-a-path), the user agent shall return
1629      * an average value (e.g., the rotation angle at the midpoint along the path for
1630      * all glyphs used to render this character). The rotation value represents the
1631      * rotation that is supplemental to any rotation due to properties
1632      * 'glyph-orientation-horizontal' and 'glyph-orientation-vertical'; thus, any
1633      * glyph rotations due to these properties are not included into the returned
1634      * rotation value. If multiple consecutive characters are rendered inseparably
1635      * (e.g., as a single glyph or a sequence of glyphs), then each of the
1636      * inseparable characters will return the same rotation value.
1637      */
1638     virtual double getRotationOfChar (unsigned long charnum )
1639                                      throw( DOMException ) =0;
1641     /**
1642      * Returns the index of the character whose corresponding glyph cell bounding box
1643      * contains the specified point. The calculations assume that all glyphs occupy
1644      * the full standard glyph cell for the font. If no such character exists, a
1645      * value of -1 is returned. If multiple such characters exist, the character
1646      * within the element whose glyphs were rendered last (i.e., take into account
1647      * any reordering such as for bidirectional text) is used. If multiple
1648      * consecutive characters are rendered inseparably (e.g., as a single glyph or a
1649      * sequence of glyphs), then the user agent shall allocate an equal percentage of
1650      * the text advance amount to each of the contributing characters in determining
1651      * which of the characters is chosen.
1652      */
1653     virtual long getCharNumAtPosition (const SVGPoint &point ) =0;
1655     /**
1656      * Causes the specified substring to be selected just as if the user
1657      *      selected the substring interactively.
1658      */
1659     virtual void selectSubString (unsigned long charnum, unsigned long nchars )
1660                                   throw( DOMException ) =0;
1664     //##################
1665     //# Non-API methods
1666     //##################
1668     /**
1669      *
1670      */
1671     virtual ~SVGTextContentElement() {}
1673 };
1680 /*#########################################################################
1681 ## SVGTextPositioningElement
1682 #########################################################################*/
1684 /**
1685  * The SVGTextPositioningElement interface is inherited by text-related
1686  * interfaces: SVGTextElement, SVGTSpanElement, SVGTRefElement and
1687  * SVGAltGlyphElement.
1688  */
1689 class SVGTextPositioningElement : virtual public SVGTextContentElement
1691 public:
1693     /**
1694      * Corresponds to attribute x on the given element.
1695      */
1696     virtual SVGAnimatedLength getX() =0;
1698     /**
1699      * Corresponds to attribute y on the given element.
1700      */
1701     virtual SVGAnimatedLength getY() =0;
1703     /**
1704      * Corresponds to attribute dx on the given element.
1705      */
1706     virtual SVGAnimatedLength getDx() =0;
1708     /**
1709      * Corresponds to attribute dy on the given element.
1710      */
1711     virtual SVGAnimatedLength getDy() =0;
1714     /**
1715      * Corresponds to attribute rotate on the given element.
1716      */
1717     virtual SVGAnimatedNumberList getRotate() =0;
1721     //##################
1722     //# Non-API methods
1723     //##################
1725     /**
1726      *
1727      */
1728     virtual ~SVGTextPositioningElement() {}
1730 };
1737 /*#########################################################################
1738 ## SVGTextElement
1739 #########################################################################*/
1741 /**
1742  * The SVGTextElement  interface corresponds to the 'text' element.
1743  */
1744 class SVGTextElement : virtual public SVGTextPositioningElement,
1745                        public SVGTransformable
1747 public:
1749     //##################
1750     //# Non-API methods
1751     //##################
1753     /**
1754      *
1755      */
1756     virtual ~SVGTextElement() {}
1758 };
1763 /*#########################################################################
1764 ## SVGTSpanElement
1765 #########################################################################*/
1767 /**
1768  * The SVGTSpanElement  interface corresponds to the 'tspan' element.
1769  */
1770 class SVGTSpanElement : virtual public SVGTextPositioningElement
1772 public:
1774     //##################
1775     //# Non-API methods
1776     //##################
1778     /**
1779      *
1780      */
1781     virtual ~SVGTSpanElement() {}
1783 };
1788 /*#########################################################################
1789 ## SVGTRefElement
1790 #########################################################################*/
1792 /**
1793  * The SVGTRefElement  interface corresponds to the 'tref' element.
1794  */
1795 class SVGTRefElement :
1796                     virtual public SVGTextPositioningElement,
1797                     public SVGURIReference
1799 public:
1801     //##################
1802     //# Non-API methods
1803     //##################
1805     /**
1806      *
1807      */
1808     virtual ~SVGTRefElement() {}
1810 };
1815 /*#########################################################################
1816 ## SVGTextPathElement
1817 #########################################################################*/
1819 /**
1820  * The SVGTextPathElement  interface corresponds to the 'textPath' element.
1821  */
1822 class SVGTextPathElement :
1823                     virtual public SVGTextContentElement,
1824                     public SVGURIReference
1826 public:
1830     /**
1831      * textPath Method Types
1832      */
1833     typedef enum
1834         {
1835         TEXTPATH_METHODTYPE_UNKNOWN   = 0,
1836         TEXTPATH_METHODTYPE_ALIGN     = 1,
1837         TEXTPATH_METHODTYPE_STRETCH   = 2
1838         } TextPathMethodType;
1840     /**
1841      * textPath Spacing Types
1842      */
1843     typedef enum
1844         {
1845         TEXTPATH_SPACINGTYPE_UNKNOWN  = 0,
1846         TEXTPATH_SPACINGTYPE_AUTO     = 1,
1847         TEXTPATH_SPACINGTYPE_EXACT    = 2
1848         } TextPathSpacingType;
1851     /**
1852      * Corresponds to attribute startOffset on the given 'textPath' element.
1853      */
1854     virtual SVGAnimatedLength getStartOffset() =0;
1856     /**
1857      * Corresponds to attribute method on the given 'textPath' element. The value
1858      * must be one of the method type constants specified above.
1859      */
1860     virtual SVGAnimatedEnumeration getMethod() =0;
1862     /**
1863      * Corresponds to attribute spacing on the given 'textPath' element.
1864      *  The value must be one of the spacing type constants specified above.
1865      */
1866     virtual SVGAnimatedEnumeration getSpacing() =0;
1870     //##################
1871     //# Non-API methods
1872     //##################
1874     /**
1875      *
1876      */
1877     virtual ~SVGTextPathElement() {}
1879 };
1886 /*#########################################################################
1887 ## SVGAltGlyphElement
1888 #########################################################################*/
1890 /**
1891  * The SVGAltGlyphElement  interface corresponds to the 'altGlyph' element.
1892  */
1893 class SVGAltGlyphElement :
1894                     virtual public SVGTextPositioningElement,
1895                     public SVGURIReference
1897 public:
1899     /**
1900      * Get the attribute glyphRef on the given element.
1901      */
1902     virtual DOMString getGlyphRef() =0;
1904     /**
1905      * Set the attribute glyphRef on the given element.
1906      */
1907     virtual void setGlyphRef(const DOMString &val)
1908                                      throw (DOMException) =0;
1910     /**
1911      * Get the attribute format on the given element.
1912      */
1913     virtual DOMString getFormat() =0;
1915     /**
1916      * Set the attribute format on the given element.
1917      */
1918     virtual void setFormat(const DOMString &val)
1919                                      throw (DOMException) =0;
1924     //##################
1925     //# Non-API methods
1926     //##################
1928     /**
1929      *
1930      */
1931     virtual ~SVGAltGlyphElement() {}
1933 };
1940 /*#########################################################################
1941 ## SVGAltGlyphDefElement
1942 #########################################################################*/
1944 /**
1945  * The SVGAltGlyphDefElement interface corresponds to the 'altGlyphDef' element.
1946  */
1947 class SVGAltGlyphDefElement : virtual public SVGElement
1949 public:
1951     //##################
1952     //# Non-API methods
1953     //##################
1955     /**
1956      *
1957      */
1958     virtual ~SVGAltGlyphDefElement() {}
1960 };
1965 /*#########################################################################
1966 ## SVGAltGlyphItemElement
1967 #########################################################################*/
1969 /**
1970  * The SVGAltGlyphItemElement  interface corresponds to the
1971  *  'altGlyphItem' element.
1972  */
1973 class SVGAltGlyphItemElement : virtual public SVGElement
1975 public:
1977     //##################
1978     //# Non-API methods
1979     //##################
1981     /**
1982      *
1983      */
1984     virtual ~SVGAltGlyphItemElement() {}
1986 };
1991 /*#########################################################################
1992 ## SVGGlyphRefElement
1993 #########################################################################*/
1995 /**
1996  * The SVGGlyphRefElement  interface corresponds to the 'glyphRef' element.
1997  */
1998 class SVGGlyphRefElement : virtual public SVGElement,
1999                            public SVGURIReference,
2000                            public SVGStylable
2002 public:
2004     /**
2005      * Get the attribute glyphRef on the given element.
2006      */
2007     virtual DOMString getGlyphRef() =0;
2009     /**
2010      * Set the attribute glyphRef on the given element.
2011      */
2012     virtual void setGlyphRef(const DOMString &val)
2013                              throw (DOMException) =0;
2015     /**
2016      * Get the attribute format on the given element.
2017      */
2018     virtual DOMString getFormat() =0;
2020     /**
2021      * Set the attribute format on the given element.
2022      */
2023     virtual void setFormat(const DOMString &val)
2024                            throw (DOMException) =0;
2026     /**
2027      * Get the attribute x on the given element.
2028      */
2029     virtual double getX() = 0;
2031     /**
2032      * Set the attribute x on the given element.
2033      */
2034     virtual void setX(double val) throw (DOMException) =0;
2036     /**
2037      * Get the attribute y on the given element.
2038      */
2039     virtual double getY() = 0;
2041     /**
2042      * Set the attribute y on the given element.
2043      */
2044     virtual void setY(double val) throw (DOMException) =0;
2046     /**
2047      * Get the attribute dx on the given element.
2048      */
2049     virtual double getDx() = 0;
2051     /**
2052      * Set the attribute dx on the given element.
2053      */
2054     virtual void setDx(double val) throw (DOMException) =0;
2056     /**
2057      * Get the attribute dy on the given element.
2058      */
2059     virtual double getDy() = 0;
2061     /**
2062      * Set the attribute dy on the given element.
2063      */
2064     virtual void setDy(double val) throw (DOMException) =0;
2069     //##################
2070     //# Non-API methods
2071     //##################
2073     /**
2074      *
2075      */
2076     virtual ~SVGGlyphRefElement() {}
2078 };
2084 /*#########################################################################
2085 ## SVGMarkerElement
2086 #########################################################################*/
2088 /**
2089  * The SVGMarkerElement  interface corresponds to the 'marker' element.
2090  */
2091 class SVGMarkerElement :
2092                     virtual public SVGElement,
2093                     public SVGLangSpace,
2094                     public SVGExternalResourcesRequired,
2095                     public SVGStylable,
2096                     public SVGFitToViewBox
2098 public:
2102     /**
2103      * Marker Unit Types
2104      */
2105     typedef enum
2106         {
2107         SVG_MARKERUNITS_UNKNOWN        = 0,
2108         SVG_MARKERUNITS_USERSPACEONUSE = 1,
2109         SVG_MARKERUNITS_STROKEWIDTH    = 2
2110         } MarkerUnitType;
2112     /**
2113      * Marker Orientation Types
2114      */
2115     typedef enum
2116         {
2117         SVG_MARKER_ORIENT_UNKNOWN      = 0,
2118         SVG_MARKER_ORIENT_AUTO         = 1,
2119         SVG_MARKER_ORIENT_ANGLE        = 2
2120         } MarkerOrientationType;
2123     /**
2124      * Corresponds to attribute refX on the given 'marker' element.
2125      */
2126     virtual SVGAnimatedLength getRefX() =0;
2128     /**
2129      * Corresponds to attribute refY on the given 'marker' element.
2130      */
2131     virtual SVGAnimatedLength getRefY() =0;
2133     /**
2134      * Corresponds to attribute markerUnits on the given 'marker' element.
2135      *      One of the Marker Units Types defined above.
2136      */
2137     virtual SVGAnimatedEnumeration getMarkerUnits() =0;
2139     /**
2140      * Corresponds to attribute markerWidth on the given 'marker' element.
2141      */
2142     virtual SVGAnimatedLength getMarkerWidth() =0;
2144     /**
2145      * Corresponds to attribute markerHeight on the given 'marker' element.
2146      */
2147     virtual SVGAnimatedLength getMarkerHeight() =0;
2149     /**
2150      * Corresponds to attribute orient on the given 'marker' element.
2151      *      One of the Marker Orientation Types defined above.
2152      */
2153     virtual SVGAnimatedEnumeration getOrientType() =0;
2155     /**
2156      * Corresponds to attribute orient on the given 'marker' element.
2157      * If markerUnits is SVG_MARKER_ORIENT_ANGLE, the angle value for
2158      * attribute orient; otherwise, it will be set to zero.
2159      */
2160     virtual SVGAnimatedAngle getOrientAngle() =0;
2163     /**
2164      * Sets the value of attribute orient to 'auto'.
2165      */
2166     virtual void setOrientToAuto (  ) =0;
2168     /**
2169      * Sets the value of attribute orient to the given angle.
2170      */
2171     virtual void setOrientToAngle (const SVGAngle &angle) =0;
2175     //##################
2176     //# Non-API methods
2177     //##################
2179     /**
2180      *
2181      */
2182     virtual ~SVGMarkerElement() {}
2184 };
2191 /*#########################################################################
2192 ## SVGColorProfileElement
2193 #########################################################################*/
2195 /**
2196  * The SVGColorProfileElement  interface corresponds to the
2197  *  'color-profile' element.
2198  */
2199 class SVGColorProfileElement :
2200                     virtual public SVGElement,
2201                     public SVGURIReference,
2202                     public SVGRenderingIntent
2204 public:
2206     /**
2207      * Get the attribute local on the given element.
2208      */
2209     virtual DOMString getLocal() =0;
2211     /**
2212      * Set the attribute local on the given element.
2213      */
2214     virtual void setLocal(const DOMString &val)
2215                           throw (DOMException) =0;
2217     /**
2218      * Get the attribute name on the given element.
2219      */
2220     virtual DOMString getName() =0;
2222     /**
2223      * Set the attribute name on the given element.
2224      */
2225     virtual void setName(const DOMString &val)
2226                          throw (DOMException) =0;
2228     /**
2229      * Set the attribute rendering-intent on the given element.
2230      * The type of rendering intent, identified by one of the
2231      *      SVGRenderingIntent constants.
2232      */
2233     virtual unsigned short getRenderingIntent() =0;
2235     /**
2236      * Get the attribute rendering-intent on the given element.
2237      */
2238     virtual void setRenderingIntent(unsigned short val)
2239                                     throw (DOMException) =0;
2243     //##################
2244     //# Non-API methods
2245     //##################
2247     /**
2248      *
2249      */
2250     virtual ~SVGColorProfileElement() {}
2252 };
2257 /*#########################################################################
2258 ## SVGGradientElement
2259 #########################################################################*/
2261 /**
2262  * The SVGGradientElement interface is a base interface used by
2263  * SVGLinearGradientElement and SVGRadialGradientElement.
2264  */
2265 class SVGGradientElement :
2266                     virtual public SVGElement,
2267                     public SVGURIReference,
2268                     public SVGExternalResourcesRequired,
2269                     public SVGStylable,
2270                     public SVGUnitTypes
2273 public:
2275     /**
2276      * Spread Method Types
2277      */
2278     typedef enum
2279         {
2280         SVG_SPREADMETHOD_UNKNOWN = 0,
2281         SVG_SPREADMETHOD_PAD     = 1,
2282         SVG_SPREADMETHOD_REFLECT = 2,
2283         SVG_SPREADMETHOD_REPEAT  = 3
2284         } SpreadMethodType;
2287     /**
2288      * Corresponds to attribute gradientUnits on the given element.
2289      *      Takes one of the constants defined in SVGUnitTypes.
2290      */
2291     virtual SVGAnimatedEnumeration getGradientUnits() =0;
2293     /**
2294      * Corresponds to attribute gradientTransform on the given element.
2295      */
2296     virtual SVGAnimatedTransformList getGradientTransform() =0;
2298     /**
2299      * Corresponds to attribute spreadMethod on the given element.
2300      *      One of the Spread Method Types.
2301      */
2302     virtual SVGAnimatedEnumeration getSpreadMethod() =0;
2306     //##################
2307     //# Non-API methods
2308     //##################
2310     /**
2311      *
2312      */
2313     virtual ~SVGGradientElement() {}
2315 };
2322 /*#########################################################################
2323 ## SVGLinearGradientElement
2324 #########################################################################*/
2326 /**
2327  * The SVGLinearGradientElement  interface corresponds to the
2328  *  'linearGradient' element.
2329  */
2330 class SVGLinearGradientElement : virtual public SVGGradientElement
2332 public:
2335     /**
2336      * Corresponds to attribute x1 on the given 'linearGradient'  element.
2337      */
2338     virtual SVGAnimatedLength getX1() =0;
2340     /**
2341      * Corresponds to attribute y1 on the given 'linearGradient'  element.
2342      */
2343     virtual SVGAnimatedLength getY1() =0;
2345     /**
2346      * Corresponds to attribute x2 on the given 'linearGradient'  element.
2347      */
2348     virtual SVGAnimatedLength getX2() =0;
2350     /**
2351      * Corresponds to attribute y2 on the given 'linearGradient'  element.
2352      */
2353     virtual SVGAnimatedLength getY2() =0;
2356     //##################
2357     //# Non-API methods
2358     //##################
2360     /**
2361      *
2362      */
2363     virtual ~SVGLinearGradientElement() {}
2365 };
2372 /*#########################################################################
2373 ## SVGRadialGradientElement
2374 #########################################################################*/
2376 /**
2377  * The SVGRadialGradientElement  interface corresponds to the
2378  *  'radialGradient' element.
2379  */
2380 class SVGRadialGradientElement : virtual public SVGGradientElement
2383 public:
2385     /**
2386      * Corresponds to attribute cx on the given 'radialGradient'  element.
2387      */
2388     virtual SVGAnimatedLength getCx() =0;
2391     /**
2392      * Corresponds to attribute cy on the given 'radialGradient'  element.
2393      */
2394     virtual SVGAnimatedLength getCy() =0;
2397     /**
2398      * Corresponds to attribute r on the given 'radialGradient'  element.
2399      */
2400     virtual SVGAnimatedLength getR() =0;
2403     /**
2404      * Corresponds to attribute fx on the given 'radialGradient'  element.
2405      */
2406     virtual SVGAnimatedLength getFx() =0;
2409     /**
2410      * Corresponds to attribute fy on the given 'radialGradient'  element.
2411      */
2412     virtual SVGAnimatedLength getFy() =0;
2417     //##################
2418     //# Non-API methods
2419     //##################
2421     /**
2422      *
2423      */
2424     virtual ~SVGRadialGradientElement() {}
2426 };
2433 /*#########################################################################
2434 ## SVGStopElement
2435 #########################################################################*/
2437 /**
2438  * The SVGStopElement  interface corresponds to the 'stop' element.
2439  */
2440 class SVGStopElement :
2441                     virtual public SVGElement,
2442                     public SVGStylable
2444 public:
2446     /**
2447      * Corresponds to attribute offset on the given 'stop' element.
2448      */
2449     virtual SVGAnimatedNumber getOffset() =0;
2453     //##################
2454     //# Non-API methods
2455     //##################
2457     /**
2458      *
2459      */
2460     virtual ~SVGStopElement() {}
2462 };
2469 /*#########################################################################
2470 ## SVGPatternElement
2471 #########################################################################*/
2473 /**
2474  * The SVGPatternElement  interface corresponds to the 'pattern' element.
2475  */
2476 class SVGPatternElement :
2477                     virtual public SVGElement,
2478                     public SVGURIReference,
2479                     public SVGTests,
2480                     public SVGLangSpace,
2481                     public SVGExternalResourcesRequired,
2482                     public SVGStylable,
2483                     public SVGFitToViewBox,
2484                     public SVGUnitTypes
2487 public:
2489     /**
2490      * Corresponds to attribute patternUnits on the given 'pattern' element. Takes
2491      * one of the constants defined in SVGUnitTypes.
2492      */
2493     virtual SVGAnimatedEnumeration getPatternUnits() =0;
2495     /**
2496      * Corresponds to attribute patternContentUnits on the given 'pattern'
2497      *      element. Takes one of the constants defined in SVGUnitTypes.
2498      */
2499     virtual SVGAnimatedEnumeration getPatternContentUnits() =0;
2501     /**
2502      * Corresponds to attribute patternTransform on the given 'pattern' element.
2503      */
2504     virtual SVGAnimatedTransformList getPatternTransform() =0;
2506     /**
2507      * Corresponds to attribute x on the given 'pattern' element.
2508      */
2509     virtual SVGAnimatedLength getX() =0;
2511     /**
2512      *
2513      */
2514     virtual SVGAnimatedLength getY() =0;
2516     /**
2517      * Corresponds to attribute width on the given 'pattern' element.
2518      */
2519     virtual SVGAnimatedLength getWidth() =0;
2521     /**
2522      * Corresponds to attribute height on the given 'pattern' element.
2523      */
2524     virtual SVGAnimatedLength getHeight() =0;
2528     //##################
2529     //# Non-API methods
2530     //##################
2532     /**
2533      *
2534      */
2535     virtual ~SVGPatternElement() {}
2537 };
2544 /*#########################################################################
2545 ## SVGClipPathElement
2546 #########################################################################*/
2548 /**
2549  * The SVGClipPathElement  interface corresponds to the 'clipPath' element.
2550  */
2551 class SVGClipPathElement :
2552                     virtual public SVGElement,
2553                     public SVGTests,
2554                     public SVGLangSpace,
2555                     public SVGExternalResourcesRequired,
2556                     public SVGStylable,
2557                     public SVGTransformable,
2558                     public SVGUnitTypes
2561 public:
2563     /**
2564      * Corresponds to attribute clipPathUnits on the given 'clipPath' element.
2565      *      Takes one of the constants defined in SVGUnitTypes.
2566      */
2567     virtual SVGAnimatedEnumeration getClipPathUnits() =0;
2572     //##################
2573     //# Non-API methods
2574     //##################
2576     /**
2577      *
2578      */
2579     virtual ~SVGClipPathElement() {}
2581 };
2588 /*#########################################################################
2589 ## SVGMaskElement
2590 #########################################################################*/
2592 /**
2593  * The SVGMaskElement  interface corresponds to the 'mask' element.
2594  */
2595 class SVGMaskElement :
2596                     virtual public SVGElement,
2597                     public SVGTests,
2598                     public SVGLangSpace,
2599                     public SVGExternalResourcesRequired,
2600                     public SVGStylable,
2601                     public SVGUnitTypes
2603 public:
2607     /**
2608      * Corresponds to attribute maskUnits on the given 'mask' element. Takes one of
2609      * the constants defined in SVGUnitTypes.
2610      */
2611     virtual SVGAnimatedEnumeration getMaskUnits() =0;
2613     /**
2614      * Corresponds to attribute maskContentUnits on the given 'mask' element. Takes
2615      * one of the constants defined in SVGUnitTypes.
2616      */
2617     virtual SVGAnimatedEnumeration getMaskContentUnits() =0;
2619     /**
2620      * Corresponds to attribute x on the given 'mask' element.
2621      */
2622     virtual SVGAnimatedLength getX() =0;
2624     /**
2625      * Corresponds to attribute y on the given 'mask' element.
2626      */
2627     virtual SVGAnimatedLength getY() =0;
2629     /**
2630      * Corresponds to attribute width on the given 'mask' element.
2631      */
2632     virtual SVGAnimatedLength getWidth() =0;
2634     /**
2635      * Corresponds to attribute height on the given 'mask' element.
2636      */
2637     virtual SVGAnimatedLength getHeight() =0;
2639     //##################
2640     //# Non-API methods
2641     //##################
2643     /**
2644      *
2645      */
2646     virtual ~SVGMaskElement() {}
2648 };
2655 /*#########################################################################
2656 ## SVGFilterElement
2657 #########################################################################*/
2659 /**
2660  * The SVGFilterElement  interface corresponds to the 'filter' element.
2661  */
2662 class SVGFilterElement :
2663                     virtual public SVGElement,
2664                     public SVGURIReference,
2665                     public SVGLangSpace,
2666                     public SVGExternalResourcesRequired,
2667                     public SVGStylable,
2668                     public SVGUnitTypes
2671 public:
2673     /**
2674      * Corresponds to attribute filterUnits on the given 'filter' element. Takes one
2675      * of the constants defined in SVGUnitTypes.
2676      */
2677     virtual SVGAnimatedEnumeration getFilterUnits() =0;
2679     /**
2680      * Corresponds to attribute primitiveUnits on the given 'filter' element. Takes
2681      * one of the constants defined in SVGUnitTypes.
2682      */
2683     virtual SVGAnimatedEnumeration getPrimitiveUnits() =0;
2685     /**
2686      *
2687      */
2688     virtual SVGAnimatedLength getX() =0;
2690     /**
2691      * Corresponds to attribute x on the given 'filter' element.
2692      */
2693     virtual SVGAnimatedLength getY() =0;
2695     /**
2696      * Corresponds to attribute y on the given 'filter' element.
2697      */
2698     virtual SVGAnimatedLength getWidth() =0;
2700     /**
2701      * Corresponds to attribute height on the given 'filter' element.
2702      */
2703     virtual SVGAnimatedLength getHeight() =0;
2706     /**
2707      * Corresponds to attribute filterRes on the given 'filter' element.
2708      *      Contains the X component of attribute filterRes.
2709      */
2710     virtual SVGAnimatedInteger getFilterResX() =0;
2712     /**
2713      * Corresponds to attribute filterRes on the given 'filter' element.
2714      * Contains the Y component (possibly computed automatically)
2715      *      of attribute filterRes.
2716      */
2717     virtual SVGAnimatedInteger getFilterResY() =0;
2719     /**
2720      * Sets the values for attribute filterRes.
2721      */
2722     virtual void setFilterRes (unsigned long filterResX,
2723                                unsigned long filterResY ) =0;
2727     //##################
2728     //# Non-API methods
2729     //##################
2731     /**
2732      *
2733      */
2734     virtual ~SVGFilterElement() {}
2736 };
2742 /*#########################################################################
2743 ## SVGFEBlendElement
2744 #########################################################################*/
2746 /**
2747  * The SVGFEBlendElement  interface corresponds to the 'feBlend' element.
2748  */
2749 class SVGFEBlendElement :
2750                     virtual public SVGElement,
2751                     public SVGFilterPrimitiveStandardAttributes
2753 public:
2756     /**
2757      * Blend Mode Types
2758      */
2759     typedef enum
2760         {
2761         SVG_FEBLEND_MODE_UNKNOWN  = 0,
2762         SVG_FEBLEND_MODE_NORMAL   = 1,
2763         SVG_FEBLEND_MODE_MULTIPLY = 2,
2764         SVG_FEBLEND_MODE_SCREEN   = 3,
2765         SVG_FEBLEND_MODE_DARKEN   = 4,
2766         SVG_FEBLEND_MODE_LIGHTEN  = 5
2767         } BlendModeType;
2769     /**
2770      * Corresponds to attribute in on the given 'feBlend' element.
2771      */
2772     virtual SVGAnimatedString getIn1() =0;
2774     /**
2775      * Corresponds to attribute in2 on the given 'feBlend' element.
2776      */
2777     virtual SVGAnimatedString getIn2() =0;
2779     /**
2780      * Corresponds to attribute mode on the given 'feBlend' element.
2781      *      Takes one of the Blend Mode Types.
2782      */
2783     virtual SVGAnimatedEnumeration getMode() =0;
2786     //##################
2787     //# Non-API methods
2788     //##################
2790     /**
2791      *
2792      */
2793     virtual ~SVGFEBlendElement() {}
2795 };
2802 /*#########################################################################
2803 ## SVGFEColorMatrixElement
2804 #########################################################################*/
2806 /**
2807  * The SVGFEColorMatrixElement  interface corresponds to the
2808  *  'feColorMatrix' element.
2809  */
2810 class SVGFEColorMatrixElement :
2811                     virtual public SVGElement,
2812                     public SVGFilterPrimitiveStandardAttributes
2815 public:
2817     /**
2818      * Color Matrix Types
2819      */
2820     typedef enum
2821         {
2822         SVG_FECOLORMATRIX_TYPE_UNKNOWN          = 0,
2823         SVG_FECOLORMATRIX_TYPE_MATRIX           = 1,
2824         SVG_FECOLORMATRIX_TYPE_SATURATE         = 2,
2825         SVG_FECOLORMATRIX_TYPE_HUEROTATE        = 3,
2826         SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4
2827         } ColorMatrixType;
2830     /**
2831      * Corresponds to attribute in on the given 'feColorMatrix' element.
2832      */
2833     virtual SVGAnimatedString getIn1() =0;
2835     /**
2836      * Corresponds to attribute type on the given 'feColorMatrix' element.
2837      *      Takes one of the Color Matrix Types.
2838      */
2839     virtual SVGAnimatedEnumeration getType() =0;
2841     /**
2842      * Corresponds to attribute values on the given 'feColorMatrix' element.
2843      * Provides access to the contents of the values attribute.
2844      */
2845     virtual SVGAnimatedNumberList getValues() =0;
2849     //##################
2850     //# Non-API methods
2851     //##################
2853     /**
2854      *
2855      */
2856     virtual ~SVGFEColorMatrixElement() {}
2858 };
2865 /*#########################################################################
2866 ## SVGFEComponentTransferElement
2867 #########################################################################*/
2869 /**
2870  * The SVGFEComponentTransferElement  interface corresponds to
2871  *  the 'feComponentTransfer' element.
2872  */
2873 class SVGFEComponentTransferElement :
2874                     virtual public SVGElement,
2875                     public SVGFilterPrimitiveStandardAttributes
2877 public:
2879     /**
2880      * Corresponds to attribute in on the given 'feComponentTransfer'  element.
2881      */
2882     virtual SVGAnimatedString getIn1() =0;
2884     //##################
2885     //# Non-API methods
2886     //##################
2888     /**
2889      *
2890      */
2891     virtual ~SVGFEComponentTransferElement() {}
2893 };
2900 /*#########################################################################
2901 ## SVGComponentTransferFunctionElement
2902 #########################################################################*/
2904 /**
2905  * This interface defines a base interface used by the component
2906  *  transfer function interfaces.
2907  */
2908 class SVGComponentTransferFunctionElement : virtual public SVGElement
2910 public:
2913     /**
2914      * Component Transfer Types
2915      */
2916     typedef enum
2917         {
2918         SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN  = 0,
2919         SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1,
2920         SVG_FECOMPONENTTRANSFER_TYPE_TABLE    = 2,
2921         SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3,
2922         SVG_FECOMPONENTTRANSFER_TYPE_LINEAR   = 4,
2923         SVG_FECOMPONENTTRANSFER_TYPE_GAMMA    = 5
2924         } ComponentTransferType;
2927     /**
2928      * Corresponds to attribute type on the given element. Takes one\
2929      *      of the Component Transfer Types.
2930      */
2931     virtual SVGAnimatedEnumeration getType() =0;
2933     /**
2934      * Corresponds to attribute tableValues on the given element.
2935      */
2936     virtual SVGAnimatedNumberList getTableValues() =0;
2938     /**
2939      * Corresponds to attribute slope on the given element.
2940      */
2941     virtual SVGAnimatedNumber getSlope() =0;
2943     /**
2944      * Corresponds to attribute intercept on the given element.
2945      */
2946     virtual SVGAnimatedNumber getIntercept() =0;
2948     /**
2949      * Corresponds to attribute amplitude on the given element.
2950      */
2951     virtual SVGAnimatedNumber getAmplitude() =0;
2953     /**
2954      * Corresponds to attribute exponent on the given element.
2955      */
2956     virtual SVGAnimatedNumber getExponent() =0;
2958     /**
2959      * Corresponds to attribute offset on the given element.
2960      */
2961     virtual SVGAnimatedNumber getOffset() =0;
2964     //##################
2965     //# Non-API methods
2966     //##################
2968     /**
2969      *
2970      */
2971     virtual ~SVGComponentTransferFunctionElement() {}
2973 };
2980 /*#########################################################################
2981 ## SVGFEFuncRElement
2982 #########################################################################*/
2984 /**
2985  * The SVGFEFuncRElement  interface corresponds to the 'feFuncR' element.
2986  */
2987 class SVGFEFuncRElement : virtual public SVGComponentTransferFunctionElement
2989 public:
2991     //##################
2992     //# Non-API methods
2993     //##################
2995     /**
2996      *
2997      */
2998     virtual ~SVGFEFuncRElement() {}
3000 };
3005 /*#########################################################################
3006 ## SVGFEFuncGElement
3007 #########################################################################*/
3009 /**
3010  * The SVGFEFuncGElement  interface corresponds to the 'feFuncG' element.
3011  */
3012 class SVGFEFuncGElement : public virtual SVGComponentTransferFunctionElement
3014 public:
3016     //##################
3017     //# Non-API methods
3018     //##################
3020     /**
3021      *
3022      */
3023     virtual ~SVGFEFuncGElement() {}
3025 };
3030 /*#########################################################################
3031 ## SVGFEFuncBElement
3032 #########################################################################*/
3034 /**
3035  * The SVGFEFuncBElement  interface corresponds to the 'feFuncB' element.
3036  */
3037 class SVGFEFuncBElement : virtual public SVGComponentTransferFunctionElement
3039 public:
3041     //##################
3042     //# Non-API methods
3043     //##################
3045     /**
3046      *
3047      */
3048     virtual ~SVGFEFuncBElement() {}
3050 };
3055 /*#########################################################################
3056 ## SVGFEFuncAElement
3057 #########################################################################*/
3059 /**
3060  * The SVGFEFuncAElement  interface corresponds to the 'feFuncA' element.
3061  */
3062 class SVGFEFuncAElement : virtual public SVGComponentTransferFunctionElement
3064 public:
3066     //##################
3067     //# Non-API methods
3068     //##################
3070     /**
3071      *
3072      */
3073     virtual ~SVGFEFuncAElement() {}
3075 };
3080 /*#########################################################################
3081 ## SVGFECompositeElement
3082 #########################################################################*/
3084 /**
3085  * The SVGFECompositeElement interface corresponds to the 'feComposite' element.
3086  */
3087 class SVGFECompositeElement :
3088                     virtual public SVGElement,
3089                     public SVGFilterPrimitiveStandardAttributes
3091 public:
3095     /**
3096      *  Composite Operators
3097      */
3098     typedef enum
3099         {
3100         SVG_FECOMPOSITE_OPERATOR_UNKNOWN    = 0,
3101         SVG_FECOMPOSITE_OPERATOR_OVER       = 1,
3102         SVG_FECOMPOSITE_OPERATOR_IN         = 2,
3103         SVG_FECOMPOSITE_OPERATOR_OUT        = 3,
3104         SVG_FECOMPOSITE_OPERATOR_ATOP       = 4,
3105         SVG_FECOMPOSITE_OPERATOR_XOR        = 5,
3106         SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6
3107         } CompositeOperatorType;
3109     /**
3110      * Corresponds to attribute in on the given 'feComposite' element.
3111      */
3112     virtual SVGAnimatedString getIn1() =0;
3114     /**
3115      * Corresponds to attribute in2 on the given 'feComposite' element.
3116      */
3117     virtual SVGAnimatedString getIn2() =0;
3119     /**
3120      * Corresponds to attribute operator on the given 'feComposite' element.
3121      *      Takes one of the Composite Operators.
3122      */
3123     virtual SVGAnimatedEnumeration getOperator() =0;
3125     /**
3126      * Corresponds to attribute k1 on the given 'feComposite' element.
3127      */
3128     virtual SVGAnimatedNumber getK1() =0;
3130     /**
3131      * Corresponds to attribute k2 on the given 'feComposite' element.
3132      */
3133     virtual SVGAnimatedNumber getK2() =0;
3135     /**
3136      * Corresponds to attribute k3 on the given 'feComposite' element.
3137      */
3138     virtual SVGAnimatedNumber getK3() =0;
3140     /**
3141      * Corresponds to attribute k4 on the given 'feComposite' element.
3142      */
3143     virtual SVGAnimatedNumber getK4() =0;
3147     //##################
3148     //# Non-API methods
3149     //##################
3151     /**
3152      *
3153      */
3154     virtual ~SVGFECompositeElement() {}
3156 };
3163 /*#########################################################################
3164 ## SVGFEConvolveMatrixElement
3165 #########################################################################*/
3167 /**
3168  * The SVGFEConvolveMatrixElement  interface corresponds to
3169  *  the 'feConvolveMatrix' element.
3170  */
3171 class SVGFEConvolveMatrixElement :
3172                     virtual public SVGElement,
3173                     public SVGFilterPrimitiveStandardAttributes
3176 public:
3178     /**
3179      * Edge Mode Values
3180      */
3181     typedef enum
3182         {
3183         SVG_EDGEMODE_UNKNOWN   = 0,
3184         SVG_EDGEMODE_DUPLICATE = 1,
3185         SVG_EDGEMODE_WRAP      = 2,
3186         SVG_EDGEMODE_NONE      = 3
3187         } EdgeModeType;
3190     /**
3191      * Corresponds to attribute order on the given 'feConvolveMatrix'  element.
3192      */
3193     virtual SVGAnimatedInteger getOrderX() =0;
3195     /**
3196      * Corresponds to attribute order on the given 'feConvolveMatrix'  element.
3197      */
3198     virtual SVGAnimatedInteger getOrderY() =0;
3200     /**
3201      * Corresponds to attribute kernelMatrix on the given element.
3202      */
3203     virtual SVGAnimatedNumberList getKernelMatrix() =0;
3205     /**
3206      * Corresponds to attribute divisor on the given 'feConvolveMatrix' element.
3207      */
3208     virtual SVGAnimatedNumber getDivisor() =0;
3210     /**
3211      * Corresponds to attribute bias on the given 'feConvolveMatrix'  element.
3212      */
3213     virtual SVGAnimatedNumber getBias() =0;
3215     /**
3216      * Corresponds to attribute targetX on the given 'feConvolveMatrix'  element.
3217      */
3218     virtual SVGAnimatedInteger getTargetX() =0;
3220     /**
3221      * Corresponds to attribute targetY on the given 'feConvolveMatrix'  element.
3222      */
3223     virtual SVGAnimatedInteger getTargetY() =0;
3225     /**
3226      * Corresponds to attribute edgeMode on the given 'feConvolveMatrix'
3227      *      element. Takes one of the Edge Mode Types.
3228      */
3229     virtual SVGAnimatedEnumeration getEdgeMode() =0;
3231     /**
3232      * Corresponds to attribute kernelUnitLength on the
3233      *      given 'feConvolveMatrix'  element.
3234      */
3235     virtual SVGAnimatedLength getKernelUnitLengthX() =0;
3237     /**
3238      * Corresponds to attribute kernelUnitLength on the given
3239      *      'feConvolveMatrix'  element.
3240      */
3241     virtual SVGAnimatedLength getKernelUnitLengthY() =0;
3243     /**
3244      * Corresponds to attribute preserveAlpha on the
3245      *      given 'feConvolveMatrix'  element.
3246      */
3247     virtual SVGAnimatedBoolean getPreserveAlpha() =0;
3251     //##################
3252     //# Non-API methods
3253     //##################
3255     /**
3256      *
3257      */
3258     virtual ~SVGFEConvolveMatrixElement() {}
3260 };
3267 /*#########################################################################
3268 ## SVGFEDiffuseLightingElement
3269 #########################################################################*/
3271 /**
3272  * The SVGFEDiffuseLightingElement  interface corresponds to the
3273  *  'feDiffuseLighting' element.
3274  */
3275 class SVGFEDiffuseLightingElement :
3276                     virtual public SVGElement,
3277                     public SVGFilterPrimitiveStandardAttributes
3279 public:
3281     /**
3282      * Corresponds to attribute in on the given 'feDiffuseLighting'  element.
3283      */
3284     virtual SVGAnimatedString getIn1() =0;
3286     /**
3287      * Corresponds to attribute surfaceScale on the given
3288      *      'feDiffuseLighting'  element.
3289      */
3290     virtual SVGAnimatedNumber getSurfaceScale() =0;
3292     /**
3293      * Corresponds to attribute diffuseConstant on the given
3294      *      'feDiffuseLighting'  element.
3295      */
3296     virtual SVGAnimatedNumber getDiffuseConstant() =0;
3298     /**
3299      * Corresponds to attribute kernelUnitLength on the given
3300      *      'feDiffuseLighting'  element.
3301      */
3302     virtual SVGAnimatedNumber getKernelUnitLengthX() =0;
3304     /**
3305      * Corresponds to attribute kernelUnitLength on the given
3306      *      'feDiffuseLighting'  element.
3307      */
3308     virtual SVGAnimatedNumber getKernelUnitLengthY() =0;
3312     //##################
3313     //# Non-API methods
3314     //##################
3316     /**
3317      *
3318      */
3319     virtual ~SVGFEDiffuseLightingElement() {}
3321 };
3328 /*#########################################################################
3329 ## SVGFEDistantLightElement
3330 #########################################################################*/
3332 /**
3333  * The SVGFEDistantLightElement interface corresponds to the
3334  *  'feDistantLight' element.
3335  */
3336 class SVGFEDistantLightElement : virtual public SVGElement
3338 public:
3340     /**
3341      * Corresponds to attribute azimuth on the given 'feDistantLight'  element.
3342      */
3343     virtual SVGAnimatedNumber getAzimuth() =0;
3346     /**
3347      * Corresponds to attribute elevation on the given 'feDistantLight'
3348      *    element
3349      */
3350     virtual SVGAnimatedNumber getElevation() =0;
3354     //##################
3355     //# Non-API methods
3356     //##################
3358     /**
3359      *
3360      */
3361     virtual ~SVGFEDistantLightElement() {}
3363 };
3370 /*#########################################################################
3371 ## SVGFEPointLightElement
3372 #########################################################################*/
3374 /**
3375  * The SVGFEPointLightElement interface corresponds to the 'fePointLight' element.
3376  */
3377 class SVGFEPointLightElement : virtual public SVGElement
3379 public:
3381     /**
3382      * Corresponds to attribute x on the given 'fePointLight' element.
3383      */
3384     virtual SVGAnimatedNumber getX() =0;
3386     /**
3387      * Corresponds to attribute y on the given 'fePointLight' element.
3388      */
3389     virtual SVGAnimatedNumber getY() =0;
3391     /**
3392      * Corresponds to attribute z on the given 'fePointLight' element.
3393      */
3394     virtual SVGAnimatedNumber getZ() =0;
3396     //##################
3397     //# Non-API methods
3398     //##################
3400     /**
3401      *
3402      */
3403     virtual ~SVGFEPointLightElement() {}
3405 };
3412 /*#########################################################################
3413 ## SVGFESpotLightElement
3414 #########################################################################*/
3416 /**
3417  * The SVGFESpotLightElement interface corresponds to the 'feSpotLight' element.
3418  */
3419 class SVGFESpotLightElement : virtual public SVGElement
3421 public:
3423     /**
3424      * Corresponds to attribute x on the given 'feSpotLight' element.
3425      */
3426     virtual SVGAnimatedNumber getX() =0;
3428     /**
3429      * Corresponds to attribute y on the given 'feSpotLight' element.
3430      */
3431     virtual SVGAnimatedNumber getY() =0;
3433     /**
3434      * Corresponds to attribute z on the given 'feSpotLight' element.
3435      */
3436     virtual SVGAnimatedNumber getZ() =0;
3438     /**
3439      * Corresponds to attribute pointsAtX on the given 'feSpotLight' element.
3440      */
3441     virtual SVGAnimatedNumber getPointsAtX() =0;
3443     /**
3444      * Corresponds to attribute pointsAtY on the given 'feSpotLight' element.
3445      */
3446     virtual SVGAnimatedNumber getPointsAtY() =0;
3448     /**
3449      * Corresponds to attribute pointsAtZ on the given 'feSpotLight' element.
3450      */
3451     virtual SVGAnimatedNumber getPointsAtZ() =0;
3453     /**
3454      * Corresponds to attribute specularExponent on the
3455      *      given 'feSpotLight'  element.
3456      */
3457     virtual SVGAnimatedNumber getSpecularExponent() =0;
3459     /**
3460      * Corresponds to attribute limitingConeAngle on the
3461      *      given 'feSpotLight'  element.
3462      */
3463     virtual SVGAnimatedNumber getLimitingConeAngle() =0;
3467     //##################
3468     //# Non-API methods
3469     //##################
3471     /**
3472      *
3473      */
3474     virtual ~SVGFESpotLightElement() {}
3476 };
3483 /*#########################################################################
3484 ## SVGFEDisplacementMapElement
3485 #########################################################################*/
3487 /**
3488  *
3489  */
3490 class SVGFEDisplacementMapElement :
3491                     virtual public SVGElement,
3492                     public SVGFilterPrimitiveStandardAttributes
3494 public:
3498     /**
3499      *  Channel Selectors
3500      */
3501     typedef enum
3502         {
3503         SVG_CHANNEL_UNKNOWN = 0,
3504         SVG_CHANNEL_R       = 1,
3505         SVG_CHANNEL_G       = 2,
3506         SVG_CHANNEL_B       = 3,
3507         SVG_CHANNEL_A       = 4
3508         } ChannelSelector;
3510     /**
3511      *
3512      */
3513     virtual SVGAnimatedString getIn1() =0;
3515     /**
3516      *
3517      */
3518     virtual SVGAnimatedString getIn2() =0;
3521     /**
3522      *
3523      */
3524     virtual SVGAnimatedNumber getScale() =0;
3526     /**
3527      *
3528      */
3529     virtual SVGAnimatedEnumeration getXChannelSelector() =0;
3531     /**
3532      *
3533      */
3534     virtual SVGAnimatedEnumeration getYChannelSelector() =0;
3538     //##################
3539     //# Non-API methods
3540     //##################
3542     /**
3543      *
3544      */
3545     virtual ~SVGFEDisplacementMapElement() {}
3547 };
3554 /*#########################################################################
3555 ## SVGFEFloodElement
3556 #########################################################################*/
3558 /**
3559  *
3560  */
3561 class SVGFEFloodElement :
3562                     virtual public SVGElement,
3563                     public SVGFilterPrimitiveStandardAttributes
3565 public:
3566     /**
3567      *
3568      */
3569     virtual SVGAnimatedString getIn1() =0;
3572     //##################
3573     //# Non-API methods
3574     //##################
3576     /**
3577      *
3578      */
3579     virtual ~SVGFEFloodElement() {}
3581 };
3588 /*#########################################################################
3589 ## SVGFEGaussianBlurElement
3590 #########################################################################*/
3592 /**
3593  *
3594  */
3595 class SVGFEGaussianBlurElement :
3596                     virtual public SVGElement,
3597                     public SVGFilterPrimitiveStandardAttributes
3599 public:
3600     /**
3601      *
3602      */
3603     virtual SVGAnimatedString getIn1() =0;
3606     /**
3607      *
3608      */
3609     virtual SVGAnimatedNumber getStdDeviationX() =0;
3611     /**
3612      *
3613      */
3614     virtual SVGAnimatedNumber getStdDeviationY() =0;
3617     /**
3618      *
3619      */
3620     virtual void setStdDeviation (double stdDeviationX, double stdDeviationY ) =0;
3624     //##################
3625     //# Non-API methods
3626     //##################
3628     /**
3629      *
3630      */
3631     virtual ~SVGFEGaussianBlurElement() {}
3633 };
3640 /*#########################################################################
3641 ## SVGFEImageElement
3642 #########################################################################*/
3644 /**
3645  *
3646  */
3647 class SVGFEImageElement :
3648                     virtual public SVGElement,
3649                     public SVGURIReference,
3650                     public SVGLangSpace,
3651                     public SVGExternalResourcesRequired,
3652                     public SVGFilterPrimitiveStandardAttributes
3654 public:
3656     //##################
3657     //# Non-API methods
3658     //##################
3660     /**
3661      *
3662      */
3663     virtual ~SVGFEImageElement() {}
3665 };
3670 /*#########################################################################
3671 ## SVGFEMergeElement
3672 #########################################################################*/
3674 /**
3675  *
3676  */
3677 class SVGFEMergeElement :
3678                     virtual public SVGElement,
3679                     public SVGFilterPrimitiveStandardAttributes
3681 public:
3683     //##################
3684     //# Non-API methods
3685     //##################
3687     /**
3688      *
3689      */
3690     virtual ~SVGFEMergeElement() {}
3692 };
3697 /*#########################################################################
3698 ## SVGFEMergeNodeElement
3699 #########################################################################*/
3701 /**
3702  *
3703  */
3704 class SVGFEMergeNodeElement : virtual public SVGElement
3706 public:
3707     /**
3708      *
3709      */
3710     virtual SVGAnimatedString getIn1() =0;
3713     //##################
3714     //# Non-API methods
3715     //##################
3717     /**
3718      *
3719      */
3720     virtual ~SVGFEMergeNodeElement() {}
3722 };
3729 /*#########################################################################
3730 ## SVGFEMorphologyElement
3731 #########################################################################*/
3733 /**
3734  *
3735  */
3736 class SVGFEMorphologyElement :
3737                     virtual public SVGElement,
3738                     public SVGFilterPrimitiveStandardAttributes
3740 public:
3744     /**
3745      *  Morphology Operators
3746      */
3747     typedef enum
3748         {
3749         SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0,
3750         SVG_MORPHOLOGY_OPERATOR_ERODE   = 1,
3751         SVG_MORPHOLOGY_OPERATOR_DILATE  = 2
3752         } MorphologyOperatorType;
3755     /**
3756      *
3757      */
3758     virtual SVGAnimatedString getIn1() =0;
3761     /**
3762      *
3763      */
3764     virtual SVGAnimatedEnumeration getOperator() =0;
3766     /**
3767      *
3768      */
3769     virtual SVGAnimatedLength getRadiusX() =0;
3771     /**
3772      *
3773      */
3774     virtual SVGAnimatedLength getRadiusY() =0;
3778     //##################
3779     //# Non-API methods
3780     //##################
3782     /**
3783      *
3784      */
3785     virtual ~SVGFEMorphologyElement() {}
3787 };
3794 /*#########################################################################
3795 ## SVGFEOffsetElement
3796 #########################################################################*/
3798 /**
3799  *
3800  */
3801 class SVGFEOffsetElement :
3802                     virtual public SVGElement,
3803                     public SVGFilterPrimitiveStandardAttributes
3805 public:
3809     /**
3810      *
3811      */
3812     virtual SVGAnimatedString getIn1() =0;
3814     /**
3815      *
3816      */
3817     virtual SVGAnimatedLength getDx() =0;
3819     /**
3820      *
3821      */
3822     virtual SVGAnimatedLength getDy() =0;
3827     //##################
3828     //# Non-API methods
3829     //##################
3831     /**
3832      *
3833      */
3834     virtual ~SVGFEOffsetElement() {}
3836 };
3843 /*#########################################################################
3844 ## SVGFESpecularLightingElement
3845 #########################################################################*/
3847 /**
3848  *
3849  */
3850 class SVGFESpecularLightingElement :
3851                     virtual public SVGElement,
3852                     public SVGFilterPrimitiveStandardAttributes
3854 public:
3856     /**
3857      *
3858      */
3859     virtual SVGAnimatedString getIn1() =0;
3861     /**
3862      *
3863      */
3864     virtual SVGAnimatedNumber getSurfaceScale() =0;
3866     /**
3867      *
3868      */
3869     virtual SVGAnimatedNumber getSpecularConstant() =0;
3871     /**
3872      *
3873      */
3874     virtual SVGAnimatedNumber getSpecularExponent() =0;
3877     //##################
3878     //# Non-API methods
3879     //##################
3881     /**
3882      *
3883      */
3884     virtual ~SVGFESpecularLightingElement() {}
3886 };
3893 /*#########################################################################
3894 ## SVGFETileElement
3895 #########################################################################*/
3897 /**
3898  *
3899  */
3900 class SVGFETileElement :
3901                     virtual public SVGElement,
3902                     public SVGFilterPrimitiveStandardAttributes
3904 public:
3907     /**
3908      *
3909      */
3910     virtual SVGAnimatedString getIn1() =0;
3914     //##################
3915     //# Non-API methods
3916     //##################
3918     /**
3919      *
3920      */
3921     virtual ~SVGFETileElement() {}
3923 };
3930 /*#########################################################################
3931 ## SVGFETurbulenceElement
3932 #########################################################################*/
3934 /**
3935  *
3936  */
3937 class SVGFETurbulenceElement :
3938                     virtual public SVGElement,
3939                     public SVGFilterPrimitiveStandardAttributes
3941 public:
3945     /**
3946      *  Turbulence Types
3947      */
3948     typedef enum
3949         {
3950         SVG_TURBULENCE_TYPE_UNKNOWN      = 0,
3951         SVG_TURBULENCE_TYPE_FRACTALNOISE = 1,
3952         SVG_TURBULENCE_TYPE_TURBULENCE   = 2
3953         } TurbulenceType;
3955     /**
3956      *  Stitch Options
3957      */
3958     typedef enum
3959         {
3960         SVG_STITCHTYPE_UNKNOWN  = 0,
3961         SVG_STITCHTYPE_STITCH   = 1,
3962         SVG_STITCHTYPE_NOSTITCH = 2
3963         } StitchOption;
3967     /**
3968      *
3969      */
3970     virtual SVGAnimatedNumber getBaseFrequencyX() =0;
3972     /**
3973      *
3974      */
3975     virtual SVGAnimatedNumber getBaseFrequencyY() =0;
3977     /**
3978      *
3979      */
3980     virtual SVGAnimatedInteger getNumOctaves() =0;
3982     /**
3983      *
3984      */
3985     virtual SVGAnimatedNumber getSeed() =0;
3987     /**
3988      *
3989      */
3990     virtual SVGAnimatedEnumeration getStitchTiles() =0;
3992     /**
3993      *
3994      */
3995     virtual SVGAnimatedEnumeration getType() =0;
3999     //##################
4000     //# Non-API methods
4001     //##################
4003     /**
4004      *
4005      */
4006     virtual ~SVGFETurbulenceElement() {}
4008 };
4015 /*#########################################################################
4016 ## SVGCursorElement
4017 #########################################################################*/
4019 /**
4020  *
4021  */
4022 class SVGCursorElement :
4023                     virtual public SVGElement,
4024                     public SVGURIReference,
4025                     public SVGTests,
4026                     public SVGExternalResourcesRequired
4028 public:
4029     /**
4030      *
4031      */
4032     virtual SVGAnimatedLength getX() =0;
4034     /**
4035      *
4036      */
4037     virtual SVGAnimatedLength getY() =0;
4039     //##################
4040     //# Non-API methods
4041     //##################
4043     /**
4044      *
4045      */
4046     virtual ~SVGCursorElement() {}
4048 };
4055 /*#########################################################################
4056 ## SVGAElement
4057 #########################################################################*/
4059 /**
4060  *
4061  */
4062 class SVGAElement : virtual public SVGElement,
4063                     public SVGURIReference,
4064                     public SVGTests,
4065                     public SVGLangSpace,
4066                     public SVGExternalResourcesRequired,
4067                     public SVGStylable,
4068                     public SVGTransformable,
4069                     public events::EventTarget
4071 public:
4073     /**
4074      *
4075      */
4076     virtual SVGAnimatedString getTarget() =0;
4080     //##################
4081     //# Non-API methods
4082     //##################
4084     /**
4085      *
4086      */
4087     virtual ~SVGAElement() {}
4089 };
4096 /*#########################################################################
4097 ## SVGViewElement
4098 #########################################################################*/
4100 /**
4101  *
4102  */
4103 class SVGViewElement : virtual public SVGElement,
4104                        public SVGExternalResourcesRequired,
4105                        public SVGFitToViewBox,
4106                        public SVGZoomAndPan
4108 public:
4110     /**
4111      *
4112      */
4113     virtual SVGStringList getViewTarget() =0;
4117     //##################
4118     //# Non-API methods
4119     //##################
4121     /**
4122      *
4123      */
4124     virtual ~SVGViewElement() {}
4126 };
4133 /*#########################################################################
4134 ## SVGScriptElement
4135 #########################################################################*/
4137 /**
4138  *
4139  */
4140 class SVGScriptElement :
4141                     virtual public SVGElement,
4142                     public SVGURIReference,
4143                     public SVGExternalResourcesRequired
4145 public:
4147     /**
4148      *
4149      */
4150     virtual DOMString getType() =0;
4152     /**
4153      *
4154      */
4155     virtual void setType(const DOMString &val)
4156                                throw (DOMException) =0;
4159     //##################
4160     //# Non-API methods
4161     //##################
4163     /**
4164      *
4165      */
4166     virtual ~SVGScriptElement() {}
4168 };
4174 /*#########################################################################
4175 ## SVGAnimationElement
4176 #########################################################################*/
4178 /**
4179  *
4180  */
4181 class SVGAnimationElement :
4182                     virtual public SVGElement,
4183                     public SVGTests,
4184                     public SVGExternalResourcesRequired,
4185                     public smil::ElementTimeControl,
4186                     public events::EventTarget
4188 public:
4191     /**
4192      *
4193      */
4194     virtual SVGElementPtr getTargetElement() =0;
4197     /**
4198      *
4199      */
4200     virtual double getStartTime (  ) =0;
4202     /**
4203      *
4204      */
4205     virtual double getCurrentTime (  ) =0;
4207     /**
4208      *
4209      */
4210     virtual double getSimpleDuration (  )
4211                     throw( DOMException ) =0;
4216     //##################
4217     //# Non-API methods
4218     //##################
4220     /**
4221      *
4222      */
4223     virtual ~SVGAnimationElement() {}
4225 };
4232 /*#########################################################################
4233 ## SVGAnimateElement
4234 #########################################################################*/
4236 /**
4237  *
4238  */
4239 class SVGAnimateElement : virtual public SVGAnimationElement
4241 public:
4243     //##################
4244     //# Non-API methods
4245     //##################
4247     /**
4248      *
4249      */
4250     virtual ~SVGAnimateElement() {}
4252 };
4257 /*#########################################################################
4258 ## SVGSetElement
4259 #########################################################################*/
4261 /**
4262  *
4263  */
4264 class SVGSetElement : virtual public SVGAnimationElement
4266 public:
4268     //##################
4269     //# Non-API methods
4270     //##################
4272     /**
4273      *
4274      */
4275     virtual ~SVGSetElement() {}
4277 };
4282 /*#########################################################################
4283 ## SVGAnimateMotionElement
4284 #########################################################################*/
4286 /**
4287  *
4288  */
4289 class SVGAnimateMotionElement : virtual public SVGAnimationElement
4291 public:
4293     //##################
4294     //# Non-API methods
4295     //##################
4297     /**
4298      *
4299      */
4300     virtual ~SVGAnimateMotionElement() {}
4302 };
4307 /*#########################################################################
4308 ## SVGMPathElement
4309 #########################################################################*/
4311 /**
4312  *
4313  */
4314 class SVGMPathElement :
4315                     virtual public SVGElement,
4316                     public SVGURIReference,
4317                     public SVGExternalResourcesRequired
4319 public:
4321     //##################
4322     //# Non-API methods
4323     //##################
4325     /**
4326      *
4327      */
4328     virtual ~SVGMPathElement() {}
4330 };
4335 /*#########################################################################
4336 ## SVGAnimateColorElement
4337 #########################################################################*/
4339 /**
4340  *
4341  */
4342 class SVGAnimateColorElement : virtual public SVGAnimationElement
4344 public:
4346     //##################
4347     //# Non-API methods
4348     //##################
4350     /**
4351      *
4352      */
4353     virtual ~SVGAnimateColorElement() {}
4355 };
4360 /*#########################################################################
4361 ## SVGAnimateTransformElement
4362 #########################################################################*/
4364 /**
4365  *
4366  */
4367 class SVGAnimateTransformElement : virtual public SVGAnimationElement
4369 public:
4371     //##################
4372     //# Non-API methods
4373     //##################
4375     /**
4376      *
4377      */
4378     virtual ~SVGAnimateTransformElement() {}
4380 };
4385 /*#########################################################################
4386 ## SVGFontElement
4387 #########################################################################*/
4389 /**
4390  *
4391  */
4392 class SVGFontElement :  virtual public SVGElement,
4393                         public SVGExternalResourcesRequired,
4394                         public SVGStylable
4396 public:
4398     //##################
4399     //# Non-API methods
4400     //##################
4402     /**
4403      *
4404      */
4405     virtual ~SVGFontElement() {}
4407 };
4412 /*#########################################################################
4413 ## SVGGlyphElement
4414 #########################################################################*/
4416 /**
4417  *
4418  */
4419 class SVGGlyphElement :  virtual public SVGElement,
4420                          public SVGStylable
4422 public:
4424     //##################
4425     //# Non-API methods
4426     //##################
4428     /**
4429      *
4430      */
4431     virtual ~SVGGlyphElement() {}
4433 };
4438 /*#########################################################################
4439 ## SVGMissingGlyphElement
4440 #########################################################################*/
4442 /**
4443  *
4444  */
4445 class SVGMissingGlyphElement :
4446                     virtual public SVGElement,
4447                     public SVGStylable
4449 public:
4451     //##################
4452     //# Non-API methods
4453     //##################
4455     /**
4456      *
4457      */
4458     virtual ~SVGMissingGlyphElement() {}
4460 };
4465 /*#########################################################################
4466 ## SVGHKernElement
4467 #########################################################################*/
4469 /**
4470  *
4471  */
4472 class SVGHKernElement : virtual public SVGElement
4474 public:
4476     //##################
4477     //# Non-API methods
4478     //##################
4480     /**
4481      *
4482      */
4483     virtual ~SVGHKernElement() {}
4485 };
4490 /*#########################################################################
4491 ## SVGVKernElement
4492 #########################################################################*/
4494 /**
4495  *
4496  */
4497 class SVGVKernElement : public virtual SVGElement
4499 public:
4501     //##################
4502     //# Non-API methods
4503     //##################
4505     /**
4506      *
4507      */
4508     virtual ~SVGVKernElement() {}
4510 };
4515 /*#########################################################################
4516 ## SVGFontFaceElement
4517 #########################################################################*/
4519 /**
4520  *
4521  */
4522 class SVGFontFaceElement : virtual public SVGElement
4524 public:
4526     //##################
4527     //# Non-API methods
4528     //##################
4530     /**
4531      *
4532      */
4533     virtual ~SVGFontFaceElement() {}
4535 };
4540 /*#########################################################################
4541 ## SVGFontFaceSrcElement
4542 #########################################################################*/
4544 /**
4545  *
4546  */
4547 class SVGFontFaceSrcElement : virtual public SVGElement
4549 public:
4551     //##################
4552     //# Non-API methods
4553     //##################
4555     /**
4556      *
4557      */
4558     virtual ~SVGFontFaceSrcElement() {}
4560 };
4565 /*#########################################################################
4566 ## SVGFontFaceUriElement
4567 #########################################################################*/
4569 /**
4570  *
4571  */
4572 class SVGFontFaceUriElement : virtual public SVGElement
4574 public:
4576     //##################
4577     //# Non-API methods
4578     //##################
4580     /**
4581      *
4582      */
4583     virtual ~SVGFontFaceUriElement() {}
4585 };
4590 /*#########################################################################
4591 ## SVGFontFaceFormatElement
4592 #########################################################################*/
4594 /**
4595  *
4596  */
4597 class SVGFontFaceFormatElement : virtual public SVGElement
4599 public:
4601     //##################
4602     //# Non-API methods
4603     //##################
4605     /**
4606      *
4607      */
4608     virtual ~SVGFontFaceFormatElement() {}
4610 };
4615 /*#########################################################################
4616 ## SVGFontFaceNameElement
4617 #########################################################################*/
4619 /**
4620  *
4621  */
4622 class SVGFontFaceNameElement : virtual public SVGElement
4624 public:
4626     //##################
4627     //# Non-API methods
4628     //##################
4630     /**
4631      *
4632      */
4633     virtual ~SVGFontFaceNameElement() {}
4635 };
4640 /*#########################################################################
4641 ## SVGDefinitionSrcElement
4642 #########################################################################*/
4644 /**
4645  *
4646  */
4647 class SVGDefinitionSrcElement : virtual public SVGElement
4649 public:
4651     //##################
4652     //# Non-API methods
4653     //##################
4655     /**
4656      *
4657      */
4658     virtual ~SVGDefinitionSrcElement() {}
4660 };
4665 /*#########################################################################
4666 ## SVGMetadataElement
4667 #########################################################################*/
4669 /**
4670  *
4671  */
4672 class SVGMetadataElement : virtual public SVGElement
4674 public:
4676     //##################
4677     //# Non-API methods
4678     //##################
4680     /**
4681      *
4682      */
4683     virtual ~SVGMetadataElement() {}
4685 };
4689 /*#########################################################################
4690 ## SVGForeignObjectElement
4691 #########################################################################*/
4693 /**
4694  *
4695  */
4696 class SVGForeignObjectElement :
4697                     virtual public SVGElement,
4698                     public SVGTests,
4699                     public SVGLangSpace,
4700                     public SVGExternalResourcesRequired,
4701                     public SVGStylable,
4702                     public SVGTransformable,
4703                     public events::EventTarget
4705 public:
4708     /**
4709      *
4710      */
4711     virtual SVGAnimatedLength getX() =0;
4713     /**
4714      *
4715      */
4716     virtual SVGAnimatedLength getY() =0;
4718     /**
4719      *
4720      */
4721     virtual SVGAnimatedLength getWidth() =0;
4723     /**
4724      *
4725      */
4726     virtual SVGAnimatedLength getHeight() =0;
4730     //##################
4731     //# Non-API methods
4732     //##################
4735     /**
4736      *
4737      */
4738     virtual ~SVGForeignObjectElement() {}
4740 };
4746 }  //namespace svg
4747 }  //namespace dom
4748 }  //namespace w3c
4749 }  //namespace org
4751 #endif // __SVG_H__
4752 /*#########################################################################
4753 ## E N D    O F    F I L E
4754 #########################################################################*/