Code

More documentation. Fix scope bug in uristream.cpp. Remove warnings.
[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  */
41 // For access to DOM2 core
42 #include "dom/dom.h"
44 // For access to DOM2 events
45 #include "dom/events.h"
47 // For access to those parts from DOM2 CSS OM used by SVG DOM.
48 #include "dom/css.h"
50 // For access to those parts from DOM2 Views OM used by SVG DOM.
51 #include "dom/views.h"
53 // For access to the SMIL OM used by SVG DOM.
54 #include "dom/smil.h"
58 #include "svgtypes.h"
60 #include <math.h>
64 namespace org
65 {
66 namespace w3c
67 {
68 namespace dom
69 {
70 namespace svg
71 {
74 //local definitions
75 typedef dom::DOMString DOMString;
76 typedef dom::DOMException DOMException;
77 typedef dom::Element Element;
78 typedef dom::ElementPtr ElementPtr;
79 typedef dom::Document Document;
80 typedef dom::DocumentPtr DocumentPtr;
81 typedef dom::NodeList NodeList;
86 class SVGElement;
87 typedef Ptr<SVGElement> SVGElementPtr;
88 class SVGSVGElement;
89 typedef Ptr<SVGSVGElement> SVGSVGElementPtr;
90 class SVGDocument;
91 typedef Ptr<SVGDocument> SVGDocumentPtr;
94 /*#########################################################################
95 ## SVGElement
96 #########################################################################*/
98 /**
99  * All of the SVG DOM interfaces that correspond directly to elements in the SVG
100  * language (e.g., the SVGPathElement interface corresponds directly to the
101  * 'path' element in the language) are derivative from base class SVGElement.
102  */
103 class SVGElement : virtual public Element
105 public:
107     /**
108      * Get the value of the id attribute on the given element.
109      */
110     virtual DOMString getId() =0;
112     /**
113      * Set the value of the id attribute on the given element.
114      */
115     virtual void setId(const DOMString &val)
116                        throw (DOMException) =0;
118     /**
119      * Corresponds to attribute xml:base on the given element.
120      */
121     virtual DOMString getXmlBase() = 0;
123     /**
124      * Corresponds to attribute xml:base on the given element.
125      */
126     virtual void setXmlBase(const DOMString &val)
127                             throw (DOMException) = 0;
129     /**
130      * The nearest ancestor 'svg' element. Null if the given element is the
131      *      outermost 'svg' element.
132      */
133     virtual SVGSVGElementPtr getOwnerSVGElement() = 0;
135     /**
136      * The element which established the current viewport. Often, the nearest
137      * ancestor 'svg' element. Null if the given element is the outermost 'svg'
138      * element.
139      */
140     virtual SVGElementPtr getViewportElement() = 0;
143     //##################
144     //# Non-API methods
145     //##################
148     /**
149      *
150      */
151     virtual ~SVGElement() {}
154 };
158 /*#########################################################################
159 ## SVGDocument
160 #########################################################################*/
162 /**
163  * When an 'svg' element is embedded inline as a component of a document from
164  * another namespace, such as when an 'svg' element is embedded inline within an
165  * XHTML document [XHTML], then an SVGDocument object will not exist; instead,
166  * the root object in the document object hierarchy will be a Document object of
167  * a different type, such as an HTMLDocument object.
168  *
169  * However, an SVGDocument object will indeed exist when the root element of the
170  * XML document hierarchy is an 'svg' element, such as when viewing a stand-alone
171  * SVG file (i.e., a file with MIME type "image/svg+xml"). In this case, the
172  * SVGDocument object will be the root object of the document object model
173  * hierarchy.
174  *
175  * In the case where an SVG document is embedded by reference, such as when an
176  * XHTML document has an 'object' element whose href attribute references an SVG
177  * document (i.e., a document whose MIME type is "image/svg+xml" and whose root
178  * element is thus an 'svg' element), there will exist two distinct DOM
179  * hierarchies. The first DOM hierarchy will be for the referencing document
180  * (e.g., an XHTML document). The second DOM hierarchy will be for the referenced
181  * SVG document. In this second DOM hierarchy, the root object of the document
182  * object model hierarchy is an SVGDocument object.
183  */
184 class SVGDocument : virtual public Document,
185                     virtual public events::DocumentEvent
187 public:
190     /**
191      * The title of a document as specified by the title sub-element of the 'svg'
192      * root element (i.e., <svg><title>Here is the title</title>...</svg>)
193      */
194     virtual DOMString getTitle() =0;
196     /**
197      * Returns the URI of the page that linked to this page. The value is an empty
198      * string if the user navigated to the page directly (not through a link, but,
199      * for example, via a bookmark).
200      */
201     virtual DOMString getReferrer() =0;
203     /**
204      * The domain name of the server that served the document, or a null string if
205      * the server cannot be identified by a domain name.
206      */
207     virtual DOMString getDomain() =0;
209     /**
210      * The complete URI of the document.
211      */
212     virtual DOMString getURL() =0;
214     /**
215      * The root 'svg'  element in the document hierarchy.
216      */
217     virtual SVGSVGElementPtr getRootElement() =0;
220     //##################
221     //# Non-API methods
222     //##################
224     /**
225      *
226      */
227     virtual ~SVGDocument() {}
229 };
233 /*#########################################################################
234 ## SVGSVGElement
235 #########################################################################*/
237 /**
238  * A key interface definition is the SVGSVGElement interface, which is the
239  * interface that corresponds to the 'svg' element. This interface contains
240  * various miscellaneous commonly-used utility methods, such as matrix operations
241  * and the ability to control the time of redraw on visual rendering devices.
242  *
243  * SVGSVGElement extends ViewCSS and DocumentCSS to provide access to the
244  * computed values of properties and the override style sheet as described in DOM2.
245  */
246 class SVGSVGElement : virtual public SVGElement,
247                       public SVGTests,
248                       public SVGLangSpace,
249                       public SVGExternalResourcesRequired,
250                       public SVGStylable,
251                       public SVGLocatable,
252                       public SVGFitToViewBox,
253                       public SVGZoomAndPan,
254                       public events::EventTarget,
255                       public events::DocumentEvent,
256                       public css::ViewCSS,
257                       public css::DocumentCSS
259 public:
261     /**
262      * Corresponds to attribute x on the given 'svg' element.
263      */
264     virtual SVGAnimatedLength getX() =0;
266     /**
267      * Corresponds to attribute y on the given 'svg' element.
268      */
269     virtual SVGAnimatedLength getY() =0;
271     /**
272      * Corresponds to attribute width on the given 'svg' element.
273      */
274     virtual SVGAnimatedLength getWidth() =0;
276     /**
277      * Corresponds to attribute height on the given 'svg' element.
278      */
279     virtual SVGAnimatedLength getHeight() =0;
281     /**
282      * Get the attribute contentScriptType on the given 'svg' element.
283      */
284     virtual DOMString getContentScriptType() =0;
286     /**
287      * Set the attribute contentScriptType on the given 'svg' element.
288      */
289     virtual void setContentScriptType(const DOMString &val)
290                                      throw (DOMException) =0;
293     /**
294      * Get the attribute contentStyleType on the given 'svg' element.
295      */
296     virtual DOMString getContentStyleType() =0;
298     /**
299      * Set the attribute contentStyleType on the given 'svg' element.
300      */
301     virtual void setContentStyleType(const DOMString &val)
302                                      throw (DOMException) =0;
304     /**
305      * The position and size of the viewport (implicit or explicit) that corresponds
306      * to this 'svg' element. When the user agent is actually rendering the content,
307      * then the position and size values represent the actual values when rendering.
308      * The position and size values are unitless values in the coordinate system of
309      * the parent element. If no parent element exists (i.e., 'svg' element
310      * represents the root of the document tree), if this SVG document is embedded as
311      * part of another document (e.g., via the HTML 'object' element), then the
312      * position and size are unitless values in the coordinate system of the parent
313      * document. (If the parent uses CSS or XSL layout, then unitless values
314      * represent pixel units for the current CSS or XSL viewport, as described in the
315      * CSS2 specification.) If the parent element does not have a coordinate system,
316      * then the user agent should provide reasonable default values for this attribute.
317      *      */
318     virtual SVGRect getViewport() =0;
320     /**
321      * Size of a pixel units (as defined by CSS2) along the x-axis of the viewport,
322      * which represents a unit somewhere in the range of 70dpi to 120dpi, and, on
323      * systems that support this, might actually match the characteristics of the
324      * target medium. On systems where it is impossible to know the size of a pixel,
325      * a suitable default pixel size is provided.
326      */
327     virtual double getPixelUnitToMillimeterX() =0;
329     /**
330      * Corresponding size of a pixel unit along the y-axis of the viewport.
331      */
332     virtual double getPixelUnitToMillimeterY() =0;
334     /**
335      * User interface (UI) events in DOM Level 2 indicate the screen positions at
336      * which the given UI event occurred. When the user agent actually knows the
337      * physical size of a "screen unit", this attribute will express that information;
338      *  otherwise, user agents will provide a suitable default value such as .28mm.
339      */
340     virtual double getScreenPixelToMillimeterX() =0;
342     /**
343      * Corresponding size of a screen pixel along the y-axis of the viewport.
344      */
345     virtual double getScreenPixelToMillimeterY() =0;
348     /**
349      * The initial view (i.e., before magnification and panning) of the current
350      * innermost SVG document fragment can be either the "standard" view (i.e., based
351      * on attributes on the 'svg' element such as fitBoxToViewport) or to a "custom"
352      * view (i.e., a hyperlink into a particular 'view' or other element - see
353      * Linking into SVG content: URI fragments and SVG views). If the initial view is
354      * the "standard" view, then this attribute is false. If the initial view is a
355      * "custom" view, then this attribute is true.
356      */
357     virtual bool getUseCurrentView() =0;
359     /**
360      * Set the value above
361      */
362     virtual void setUseCurrentView(bool val) throw (DOMException) =0;
364     /**
365      * The definition of the initial view (i.e., before magnification and panning) of
366      * the current innermost SVG document fragment. The meaning depends on the
367      * situation:
368      * 
369      *    * If the initial view was a "standard" view, then:
370      *      o the values for viewBox, preserveAspectRatio and zoomAndPan within
371      *        currentView will match the values for the corresponding DOM attributes that
372      *        are on SVGSVGElement directly
373      *      o the values for transform and viewTarget within currentView will be null
374      *    * If the initial view was a link into a 'view' element, then:
375      *      o the values for viewBox, preserveAspectRatio and zoomAndPan within
376      *        currentView will correspond to the corresponding attributes for the given
377      *        'view' element
378      *      o the values for transform and viewTarget within currentView will be null
379      *    * If the initial view was a link into another element (i.e., other than a
380      *      'view'), then:
381      *      o the values for viewBox, preserveAspectRatio and zoomAndPan within
382      *        currentView will match the values for the corresponding DOM attributes that
383      *        are on SVGSVGElement directly for the closest ancestor 'svg' element
384      *      o the values for transform within currentView will be null
385      *      o the viewTarget within currentView will represent the target of the link
386      *    * If the initial view was a link into the SVG document fragment using an SVG
387      *      view specification fragment identifier (i.e., #svgView(...)), then:
388      *      o the values for viewBox, preserveAspectRatio, zoomAndPan, transform and
389      *        viewTarget within currentView will correspond to the values from the SVG view
390      *        specification fragment identifier
391      * 
392      */
393     virtual SVGViewSpec getCurrentView() =0;
396     /**
397      * This attribute indicates the current scale factor relative to the initial view
398      * to take into account user magnification and panning operations, as described
399      * under Magnification and panning. DOM attributes currentScale and
400      * currentTranslate are equivalent to the 2x3 matrix [a b c d e f] =
401      * [currentScale 0 0 currentScale currentTranslate.x currentTranslate.y]. If
402      * "magnification" is enabled (i.e., zoomAndPan="magnify"), then the effect is as
403      * if an extra transformation were placed at the outermost level on the SVG
404      * document fragment (i.e., outside the outermost 'svg' element).
405      */
406     virtual double getCurrentScale() =0;
408     /**
409      *  Set the value above.
410      */
411     virtual void setCurrentScale(double val)
412                                  throw (DOMException) =0;
415     /**
416      * The corresponding translation factor that takes into account
417      *      user "magnification".
418      */
419     virtual SVGPoint getCurrentTranslate() =0;
422     /**
423      * Takes a time-out value which indicates that redraw shall not occur until: (a)
424      * the corresponding unsuspendRedraw(suspend_handle_id) call has been made, (b)
425      * an unsuspendRedrawAll() call has been made, or (c) its timer has timed out. In
426      * environments that do not support interactivity (e.g., print media), then
427      * redraw shall not be suspended. suspend_handle_id =
428      * suspendRedraw(max_wait_milliseconds) and unsuspendRedraw(suspend_handle_id)
429      * must be packaged as balanced pairs. When you want to suspend redraw actions as
430      * a collection of SVG DOM changes occur, then precede the changes to the SVG DOM
431      * with a method call similar to suspend_handle_id =
432      * suspendRedraw(max_wait_milliseconds) and follow the changes with a method call
433      * similar to unsuspendRedraw(suspend_handle_id). Note that multiple
434      * suspendRedraw calls can be used at once and that each such method call is
435      * treated independently of the other suspendRedraw method calls.
436      */
437     virtual unsigned long suspendRedraw (unsigned long max_wait_milliseconds ) =0;
439     /**
440      * Cancels a specified suspendRedraw() by providing a unique suspend_handle_id.
441      */
442     virtual void unsuspendRedraw (unsigned long suspend_handle_id )
443                                   throw( DOMException ) =0;
445     /**
446      * Cancels all currently active suspendRedraw() method calls. This method is most
447      * useful at the very end of a set of SVG DOM calls to ensure that all pending
448      * suspendRedraw() method calls have been cancelled.
449      */
450     virtual void unsuspendRedrawAll (  ) =0;
452     /**
453      * In rendering environments supporting interactivity, forces the user agent to
454      * immediately redraw all regions of the viewport that require updating.
455      */
456     virtual void forceRedraw (  ) =0;
458     /**
459      * Suspends (i.e., pauses) all currently running animations that are defined
460      * within the SVG document fragment corresponding to this 'svg' element, causing
461      * the animation clock corresponding to this document fragment to stand still
462      * until it is unpaused.
463      */
464     virtual void pauseAnimations (  ) =0;
466     /**
467      * Unsuspends (i.e., unpauses) currently running animations that are defined
468      * within the SVG document fragment, causing the animation clock to continue from
469      * the time at which it was suspended.
470      */
471     virtual void unpauseAnimations (  ) =0;
473     /**
474      * Returns true if this SVG document fragment is in a paused state.
475      */
476     virtual bool animationsPaused (  ) =0;
478     /**
479      * Returns the current time in seconds relative to the start time for
480      *      the current SVG document fragment.
481      */
482     virtual double getCurrentTime (  ) =0;
484     /**
485      * Adjusts the clock for this SVG document fragment, establishing
486      *      a new current time.
487      */
488     virtual void setCurrentTime (double seconds ) =0;
490     /**
491      * Returns the list of graphics elements whose rendered content intersects the
492      * supplied rectangle, honoring the 'pointer-events' property value on each
493      * candidate graphics element.
494      */
495     virtual NodeList getIntersectionList(const SVGRect &rect,
496                                          const SVGElementPtr referenceElement ) =0;
498     /**
499      * Returns the list of graphics elements whose rendered content is entirely
500      * contained within the supplied rectangle, honoring the 'pointer-events'
501      * property value on each candidate graphics element.
502      */
503     virtual NodeList getEnclosureList (const SVGRect &rect,
504                                        const SVGElementPtr referenceElement ) =0;
506     /**
507      * Returns true if the rendered content of the given element intersects the
508      * supplied rectangle, honoring the 'pointer-events' property value on each
509      * candidate graphics element.
510      */
511     virtual bool checkIntersection (const SVGElementPtr element, const SVGRect &rect ) =0;
513     /**
514      * Returns true if the rendered content of the given element is entirely
515      * contained within the supplied rectangle, honoring the 'pointer-events'
516      * property value on each candidate graphics element.
517      */
518     virtual bool checkEnclosure (const SVGElementPtr element, const SVGRect &rect ) =0;
520     /**
521      * Unselects any selected objects, including any selections of text
522      *      strings and type-in bars.
523      */
524     virtual void deselectAll (  ) =0;
526     /**
527      * Creates an SVGNumber object outside of any document trees. The object
528      *      is initialized to a value of zero.
529      */
530     virtual SVGNumber createSVGNumber (  ) =0;
532     /**
533      * Creates an SVGLength object outside of any document trees. The object
534      *      is initialized to the value of 0 user units.
535      */
536     virtual SVGLength createSVGLength (  ) =0;
538     /**
539      * Creates an SVGAngle object outside of any document trees. The object
540      *      is initialized to the value 0 degrees (unitless).
541      */
542     virtual SVGAngle createSVGAngle (  ) =0;
544     /**
545      * Creates an SVGPoint object outside of any document trees. The object
546      * is initialized to the point (0,0) in the user coordinate system.
547      */
548     virtual SVGPoint createSVGPoint (  ) =0;
550     /**
551      * Creates an SVGMatrix object outside of any document trees. The object
552      *      is initialized to the identity matrix.
553      */
554     virtual SVGMatrix createSVGMatrix (  ) =0;
556     /**
557      * Creates an SVGRect object outside of any document trees. The object
558      *      is initialized such that all values are set to 0 user units.
559      */
560     virtual SVGRect createSVGRect (  ) =0;
562     /**
563      * Creates an SVGTransform object outside of any document trees.
564      * The object is initialized to an identity matrix transform
565      *      (SVG_TRANSFORM_MATRIX).
566      */
567     virtual SVGTransform createSVGTransform (  ) =0;
569     /**
570      * Creates an SVGTransform object outside of any document trees.
571      * The object is initialized to the given matrix transform
572      *      (i.e., SVG_TRANSFORM_MATRIX).
573      */
574     virtual SVGTransform createSVGTransformFromMatrix(const SVGMatrix &matrix ) =0;
576     /**
577      * Searches this SVG document fragment (i.e., the search is restricted to a
578      * subset of the document tree) for an Element whose id is given by elementId. If
579      * an Element is found, that Element is returned. If no such element exists,
580      * returns null. Behavior is not defined if more than one element has this id.
581      */
582     virtual ElementPtr getElementById (const DOMString& elementId ) =0;
586     //##################
587     //# Non-API methods
588     //##################
590     /**
591      *
592      */
593     virtual ~SVGSVGElement() {}
595 };
599 /*#########################################################################
600 ## SVGGElement
601 #########################################################################*/
603 /**
604  * The SVGGElement  interface corresponds to the 'g' element.
605  */
606 class SVGGElement : virtual public SVGElement,
607                     public SVGTests,
608                     public SVGLangSpace,
609                     public SVGExternalResourcesRequired,
610                     public SVGStylable,
611                     public SVGTransformable,
612                     public events::EventTarget
614 public:
616     //##################
617     //# Non-API methods
618     //##################
620     /**
621      *
622      */
623     virtual ~SVGGElement() {}
625 };
630 /*#########################################################################
631 ## SVGDefsElement
632 #########################################################################*/
634 /**
635  * The SVGDefsElement  interface corresponds to the 'defs' element.
636  */
637 class SVGDefsElement :
638                     virtual public SVGElement,
639                     public SVGTests,
640                     public SVGLangSpace,
641                     public SVGExternalResourcesRequired,
642                     public SVGStylable,
643                     public SVGTransformable,
644                     public events::EventTarget
646 public:
648     //##################
649     //# Non-API methods
650     //##################
652     /**
653      *
654      */
655     virtual ~SVGDefsElement() {}
657 };
662 /*#########################################################################
663 ## SVGDescElement
664 #########################################################################*/
666 /**
667  * The SVGDescElement  interface corresponds to the 'desc' element.
668  */
669 class SVGDescElement :
670                     virtual public SVGElement,
671                     public SVGLangSpace,
672                     public SVGStylable
674 public:
676     //##################
677     //# Non-API methods
678     //##################
680     /**
681      *
682      */
683     virtual ~SVGDescElement() {}
685 };
690 /*#########################################################################
691 ## SVGTitleElement
692 #########################################################################*/
694 /**
695  * The SVGTitleElement  interface corresponds to the 'title' element.
696  */
697 class SVGTitleElement :
698                     virtual public SVGElement,
699                     public SVGLangSpace,
700                     public SVGStylable
702 public:
704     //##################
705     //# Non-API methods
706     //##################
708     /**
709      *
710      */
711     virtual ~SVGTitleElement() {}
713 };
718 /*#########################################################################
719 ## SVGSymbolElement
720 #########################################################################*/
722 /**
723  * The SVGSymbolElement  interface corresponds to the 'symbol' element.
724  */
725 class SVGSymbolElement :
726                     virtual public SVGElement,
727                     public SVGLangSpace,
728                     public SVGExternalResourcesRequired,
729                     public SVGStylable,
730                     public SVGFitToViewBox,
731                     public events::EventTarget
733 public:
735     //##################
736     //# Non-API methods
737     //##################
739     /**
740      *
741      */
742     virtual ~SVGSymbolElement() {}
744 };
749 /*#########################################################################
750 ## SVGUseElement
751 #########################################################################*/
753 /**
754  * The SVGUseElement  interface corresponds to the 'use' element.
755  */
756 class SVGUseElement :
757                     virtual public SVGElement,
758                     public SVGURIReference,
759                     public SVGTests,
760                     public SVGLangSpace,
761                     public SVGExternalResourcesRequired,
762                     public SVGStylable,
763                     public SVGTransformable,
764                     public events::EventTarget
766 public:
771     /**
772      * Corresponds to attribute x on the given 'use' element.
773      */
774     virtual SVGAnimatedLength getX() =0;
776     /**
777      * Corresponds to attribute y on the given 'use' element.
778      */
779     virtual SVGAnimatedLength getY() =0;
781     /**
782      * Corresponds to attribute width on the given 'use' element.
783      */
784     virtual SVGAnimatedLength getWidth() =0;
786     /**
787      * Corresponds to attribute height on the given 'use' element.
788      */
789     virtual SVGAnimatedLength getHeight() =0;
791     /**
792      * The root of the "instance tree". See description of SVGElementInstance for
793      * a discussion on the instance tree.
794      *      */
795     virtual SVGElementInstance getInstanceRoot() =0;
797     /**
798      * If the 'href' attribute is being animated, contains the current animated root
799      * of the "instance tree". If the 'href' attribute is not currently being
800      * animated, contains the same value as 'instanceRoot'. The root of the "instance
801      * tree". See description of SVGElementInstance for a discussion on the instance
802      * tree.
803      */
804     virtual SVGElementInstance getAnimatedInstanceRoot() =0;
808     //##################
809     //# Non-API methods
810     //##################
812     /**
813      *
814      */
815     virtual ~SVGUseElement() {}
817 };
825 /*#########################################################################
826 ## SVGImageElement
827 #########################################################################*/
829 /**
830  * The SVGImageElement interface corresponds to the 'image' element.
831  */
832 class SVGImageElement :
833                     virtual public SVGElement,
834                     public SVGURIReference,
835                     public SVGTests,
836                     public SVGLangSpace,
837                     public SVGExternalResourcesRequired,
838                     public SVGStylable,
839                     public SVGTransformable,
840                     public events::EventTarget
842 public:
845     /**
846      * Corresponds to attribute x on the given 'image' element.
847      */
848     virtual SVGAnimatedLength getX() =0;
850     /**
851      * Corresponds to attribute y on the given 'image' element.
852      */
853     virtual SVGAnimatedLength getY() =0;
855     /**
856      * Corresponds to attribute width on the given 'image' element.
857      */
858     virtual SVGAnimatedLength getWidth() =0;
860     /**
861      * Corresponds to attribute height on the given 'image' element.
862      */
863     virtual SVGAnimatedLength getHeight() =0;
866     /**
867      * Corresponds to attribute preserveAspectRatio on the given element.
868      */
869     virtual SVGAnimatedPreserveAspectRatio getPreserveAspectRatio() =0;
873     //##################
874     //# Non-API methods
875     //##################
877     /**
878      *
879      */
880     virtual ~SVGImageElement() {}
882 };
889 /*#########################################################################
890 ## SVGSwitchElement
891 #########################################################################*/
893 /**
894  * The SVGSwitchElement  interface corresponds to the 'switch' element.
895  */
896 class SVGSwitchElement :
897                     virtual public SVGElement,
898                     public SVGTests,
899                     public SVGLangSpace,
900                     public SVGExternalResourcesRequired,
901                     public SVGStylable,
902                     public SVGTransformable,
903                     public events::EventTarget
905 public:
907     //##################
908     //# Non-API methods
909     //##################
911     /**
912      *
913      */
914     virtual ~SVGSwitchElement() {}
916 };
921 /*#########################################################################
922 ## GetSVGDocument
923 #########################################################################*/
925 /**
926  * In the case where an SVG document is embedded by reference, such as when an
927  * XHTML document has an 'object' element whose href (or equivalent) attribute
928  * references an SVG document (i.e., a document whose MIME type is
929  * "image/svg+xml" and whose root element is thus an 'svg' element), the SVG user
930  * agent is required to implement the GetSVGDocument interface for the element
931  * which references the SVG document (e.g., the HTML 'object' or comparable
932  * referencing elements).
933  */
934 class GetSVGDocument
936 public:
938     /**
939      * Returns the SVGDocument  object for the referenced SVG document.
940      */
941     virtual SVGDocumentPtr getSVGDocument (  )
942                     throw( DOMException ) =0;
944     //##################
945     //# Non-API methods
946     //##################
948     /**
949      *
950      */
951     virtual ~GetSVGDocument() {}
953 };
960 /*#########################################################################
961 ## SVGStyleElement
962 #########################################################################*/
964 /**
965  * The SVGStyleElement interface corresponds to the 'style' element.
966  */
967 class SVGStyleElement : virtual public SVGElement
969 public:
971     /**
972      * Get the attribute xml:space on the given element.
973      */
974     virtual DOMString getXmlspace() = 0;
976     /**
977      * Set the attribute xml:space on the given element.
978      */
979     virtual void setXmlspace(const DOMString &val)
980                              throw (DOMException) =0;
982     /**
983      * Get the attribute type on the given 'style' element.
984      */
985     virtual DOMString getType() = 0;
987     /**
988      * Set the attribute type on the given 'style' element.
989      */
990     virtual void setType(const DOMString &val)
991                          throw (DOMException) =0;
993     /**
994      * Get the attribute media on the given 'style' element.
995      */
996     virtual DOMString getMedia() = 0;
998     /**
999      * Set the attribute media on the given 'style' element.
1000      */
1001     virtual void setMedia(const DOMString &val)
1002                           throw (DOMException) =0;
1004     /**
1005      * Get the attribute title on the given 'style' element.
1006      */
1007     virtual DOMString getTitle() = 0;
1009     /**
1010      * Set the attribute title on the given 'style' element.
1011      */
1012     virtual void setTitle(const DOMString &val)
1013                           throw (DOMException) =0;
1017     //##################
1018     //# Non-API methods
1019     //##################
1021     /**
1022      *
1023      */
1024     virtual ~SVGStyleElement() {}
1026 };
1033 /*#########################################################################
1034 ## SVGPathElement
1035 #########################################################################*/
1037 /**
1038  * The SVGPathElement  interface corresponds to the 'path' element.
1039  */
1040 class SVGPathElement :
1041                     virtual public SVGElement,
1042                     public SVGTests,
1043                     public SVGLangSpace,
1044                     public SVGExternalResourcesRequired,
1045                     public SVGStylable,
1046                     public SVGTransformable,
1047                     public events::EventTarget,
1048                     public SVGAnimatedPathData
1051 public:
1053     /**
1054      * Corresponds to attribute pathLength on the given 'path' element.
1055      */
1056     virtual SVGAnimatedNumber getPathLength() =0;
1058     /**
1059      * Returns the user agent's computed value for the total length of the path using
1060      * the user agent's distance-along-a-path algorithm, as a distance in the current
1061      * user coordinate system.
1062      */
1063     virtual double getTotalLength (  ) =0;
1065     /**
1066      * Returns the (x,y) coordinate in user space which is distance units along the
1067      * path, utilizing the user agent's distance-along-a-path algorithm.
1068      */
1069     virtual SVGPoint getPointAtLength (double distance ) =0;
1071     /**
1072      * Returns the index into pathSegList which is distance units along the path,
1073      * utilizing the user agent's distance-along-a-path algorithm.
1074      */
1075     virtual unsigned long getPathSegAtLength (double distance ) =0;
1077     /**
1078      * Returns a stand-alone, parentless SVGPathSegClosePath object.
1079      */
1080     virtual SVGPathSegClosePath
1081               createSVGPathSegClosePath (  ) =0;
1083     /**
1084      * Returns a stand-alone, parentless SVGPathSegMovetoAbs object.
1085      */
1086     virtual SVGPathSegMovetoAbs
1087               createSVGPathSegMovetoAbs (double x, double y ) =0;
1089     /**
1090      * Returns a stand-alone, parentless SVGPathSegMovetoRel object.
1091      */
1092     virtual SVGPathSegMovetoRel
1093               createSVGPathSegMovetoRel (double x, double y ) =0;
1095     /**
1096      * Returns a stand-alone, parentless SVGPathSegLinetoAbs object.
1097      */
1098     virtual SVGPathSegLinetoAbs
1099               createSVGPathSegLinetoAbs (double x, double y ) =0;
1101     /**
1102      * Returns a stand-alone, parentless SVGPathSegLinetoRel object.
1103      */
1104     virtual SVGPathSegLinetoRel
1105               createSVGPathSegLinetoRel (double x, double y ) =0;
1107     /**
1108      * Returns a stand-alone, parentless SVGPathSegCurvetoCubicAbs object.
1109      */
1110     virtual SVGPathSegCurvetoCubicAbs
1111               createSVGPathSegCurvetoCubicAbs (double x, double y,
1112                         double x1, double y1, double x2, double y2 ) =0;
1114     /**
1115      * Returns a stand-alone, parentless SVGPathSegCurvetoCubicRel object.
1116      */
1117     virtual SVGPathSegCurvetoCubicRel
1118               createSVGPathSegCurvetoCubicRel (double x, double y,
1119                         double x1, double y1, double x2, double y2 ) =0;
1121     /**
1122      * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticAbs object.
1123      */
1124     virtual SVGPathSegCurvetoQuadraticAbs
1125               createSVGPathSegCurvetoQuadraticAbs (double x, double y,
1126                          double x1, double y1 ) =0;
1128     /**
1129      * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticRel object.
1130      */
1131     virtual SVGPathSegCurvetoQuadraticRel
1132               createSVGPathSegCurvetoQuadraticRel (double x, double y,
1133                          double x1, double y1 ) =0;
1135     /**
1136      * Returns a stand-alone, parentless SVGPathSegArcAbs object.
1137      */
1138     virtual SVGPathSegArcAbs
1139               createSVGPathSegArcAbs (double x, double y,
1140                          double r1, double r2, double angle,
1141                          bool largeArcFlag, bool sweepFlag ) =0;
1143     /**
1144      * Returns a stand-alone, parentless SVGPathSegArcRel object.
1145      */
1146     virtual SVGPathSegArcRel
1147               createSVGPathSegArcRel (double x, double y, double r1,
1148                          double r2, double angle, bool largeArcFlag,
1149                          bool sweepFlag ) =0;
1151     /**
1152      * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalAbs object.
1153      */
1154     virtual SVGPathSegLinetoHorizontalAbs
1155               createSVGPathSegLinetoHorizontalAbs (double x ) =0;
1157     /**
1158      * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalRel object.
1159      */
1160     virtual SVGPathSegLinetoHorizontalRel
1161               createSVGPathSegLinetoHorizontalRel (double x ) =0;
1163     /**
1164      * Returns a stand-alone, parentless SVGPathSegLinetoVerticalAbs object.
1165      */
1166     virtual SVGPathSegLinetoVerticalAbs
1167               createSVGPathSegLinetoVerticalAbs (double y ) =0;
1169     /**
1170      * Returns a stand-alone, parentless SVGPathSegLinetoVerticalRel object.
1171      */
1172     virtual SVGPathSegLinetoVerticalRel
1173               createSVGPathSegLinetoVerticalRel (double y ) =0;
1175     /**
1176      * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothAbs object.
1177      */
1178     virtual SVGPathSegCurvetoCubicSmoothAbs
1179               createSVGPathSegCurvetoCubicSmoothAbs (double x, double y,
1180                                              double x2, double y2 ) =0;
1182     /**
1183      * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothRel object.
1184      */
1185     virtual SVGPathSegCurvetoCubicSmoothRel
1186               createSVGPathSegCurvetoCubicSmoothRel (double x, double y,
1187                                                       double x2, double y2 ) =0;
1189     /**
1190      * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothAbs
1191      *      object.
1192      */
1193     virtual SVGPathSegCurvetoQuadraticSmoothAbs
1194               createSVGPathSegCurvetoQuadraticSmoothAbs (double x, double y ) =0;
1196     /**
1197      * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothRel
1198      *      object.
1199      */
1200     virtual SVGPathSegCurvetoQuadraticSmoothRel
1201               createSVGPathSegCurvetoQuadraticSmoothRel (double x, double y ) =0;
1205     //##################
1206     //# Non-API methods
1207     //##################
1209     /**
1210      *
1211      */
1212     virtual ~SVGPathElement() {}
1214 };
1221 /*#########################################################################
1222 ## SVGRectElement
1223 #########################################################################*/
1225 /**
1226  * The SVGRectElement  interface corresponds to the 'rect' element.
1227  */
1228 class SVGRectElement :
1229                     virtual public SVGElement,
1230                     public SVGTests,
1231                     public SVGLangSpace,
1232                     public SVGExternalResourcesRequired,
1233                     public SVGStylable,
1234                     public SVGTransformable,
1235                     public events::EventTarget
1237 public:
1239     /**
1240      * Corresponds to attribute x on the given 'rect' element.
1241      */
1242     virtual SVGAnimatedLength getX() =0;
1244     /**
1245      * Corresponds to attribute y on the given 'rect' element.
1246      */
1247     virtual SVGAnimatedLength getY() =0;
1249     /**
1250      * Corresponds to attribute width on the given 'rect' element.
1251      */
1252     virtual SVGAnimatedLength getWidth() =0;
1254     /**
1255      * Corresponds to attribute height on the given 'rect' element.
1256      */
1257     virtual SVGAnimatedLength getHeight() =0;
1260     /**
1261      * Corresponds to attribute rx on the given 'rect' element.
1262      */
1263     virtual SVGAnimatedLength getRx() =0;
1265     /**
1266      * Corresponds to attribute ry on the given 'rect' element.
1267      */
1268     virtual SVGAnimatedLength getRy() =0;
1272     //##################
1273     //# Non-API methods
1274     //##################
1276     /**
1277      *
1278      */
1279     virtual ~SVGRectElement() {}
1281 };
1288 /*#########################################################################
1289 ## SVGCircleElement
1290 #########################################################################*/
1292 /**
1293  * The SVGCircleElement  interface corresponds to the 'circle' element.
1294  */
1295 class SVGCircleElement :
1296                     virtual public SVGElement,
1297                     public SVGTests,
1298                     public SVGLangSpace,
1299                     public SVGExternalResourcesRequired,
1300                     public SVGStylable,
1301                     public SVGTransformable,
1302                     public events::EventTarget
1304 public:
1306     /**
1307      * Corresponds to attribute cx on the given 'circle' element.
1308      */
1309     virtual SVGAnimatedLength getCx() =0;
1311     /**
1312      * Corresponds to attribute cy on the given 'circle' element.
1313      */
1314     virtual SVGAnimatedLength getCy() =0;
1316     /**
1317      * Corresponds to attribute r on the given 'circle' element.
1318      */
1319     virtual SVGAnimatedLength getR() =0;
1323     //##################
1324     //# Non-API methods
1325     //##################
1327     /**
1328      *
1329      */
1330     virtual ~SVGCircleElement() {}
1332 };
1339 /*#########################################################################
1340 ## SVGEllipseElement
1341 #########################################################################*/
1343 /**
1344  * The SVGEllipseElement  interface corresponds to the 'ellipse' element.
1345  */
1346 class SVGEllipseElement :
1347                     virtual public SVGElement,
1348                     public SVGTests,
1349                     public SVGLangSpace,
1350                     public SVGExternalResourcesRequired,
1351                     public SVGStylable,
1352                     public SVGTransformable,
1353                     public events::EventTarget
1355 public:
1357     /**
1358      * Corresponds to attribute cx on the given 'ellipse' element.
1359      */
1360     virtual SVGAnimatedLength getCx() =0;
1362     /**
1363      * Corresponds to attribute cy on the given 'ellipse' element.
1364      */
1365     virtual SVGAnimatedLength getCy() =0;
1367     /**
1368      * Corresponds to attribute rx on the given 'ellipse' element.
1369      */
1370     virtual SVGAnimatedLength getRx() =0;
1372     /**
1373      * Corresponds to attribute ry on the given 'ellipse' element.
1374      */
1375     virtual SVGAnimatedLength getRy() =0;
1378     //##################
1379     //# Non-API methods
1380     //##################
1382     /**
1383      *
1384      */
1385     virtual ~SVGEllipseElement() {}
1387 };
1394 /*#########################################################################
1395 ## SVGLineElement
1396 #########################################################################*/
1398 /**
1399  * The SVGLineElement  interface corresponds to the 'line' element.
1400  */
1401 class SVGLineElement :
1402                     virtual public SVGElement,
1403                     public SVGTests,
1404                     public SVGLangSpace,
1405                     public SVGExternalResourcesRequired,
1406                     public SVGStylable,
1407                     public SVGTransformable,
1408                     public events::EventTarget
1410 public:
1412     /**
1413      * Corresponds to attribute x1 on the given 'line' element.
1414      */
1415     virtual SVGAnimatedLength getX1() =0;
1417     /**
1418      * Corresponds to attribute y1 on the given 'line' element.
1419      */
1420     virtual SVGAnimatedLength getY1() =0;
1422     /**
1423      * Corresponds to attribute x2 on the given 'line' element.
1424      */
1425     virtual SVGAnimatedLength getX2() =0;
1427     /**
1428      * Corresponds to attribute y2 on the given 'line' element.
1429      */
1430     virtual SVGAnimatedLength getY2() =0;
1432     //##################
1433     //# Non-API methods
1434     //##################
1436     /**
1437      *
1438      */
1439     virtual ~SVGLineElement() {}
1441 };
1446 /*#########################################################################
1447 ## SVGPolylineElement
1448 #########################################################################*/
1450 /**
1451  * The SVGPolylineElement  interface corresponds to the 'polyline' element.
1452  */
1453 class SVGPolylineElement :
1454                     virtual public SVGElement,
1455                     public SVGTests,
1456                     public SVGLangSpace,
1457                     public SVGExternalResourcesRequired,
1458                     public SVGStylable,
1459                     public SVGTransformable,
1460                     public events::EventTarget,
1461                     public SVGAnimatedPoints
1464 public:
1466     //##################
1467     //# Non-API methods
1468     //##################
1470     /**
1471      *
1472      */
1473     virtual ~SVGPolylineElement() {}
1475 };
1480 /*#########################################################################
1481 ## SVGPolygonElement
1482 #########################################################################*/
1484 /**
1485  * The SVGPolygonElement  interface corresponds to the 'polygon' element.
1486  */
1487 class SVGPolygonElement :
1488                     virtual public SVGElement,
1489                     public SVGTests,
1490                     public SVGLangSpace,
1491                     public SVGExternalResourcesRequired,
1492                     public SVGStylable,
1493                     public SVGTransformable,
1494                     public events::EventTarget,
1495                     public SVGAnimatedPoints
1497 public:
1499     //##################
1500     //# Non-API methods
1501     //##################
1503     /**
1504      *
1505      */
1506     virtual ~SVGPolygonElement() {}
1508 };
1513 /*#########################################################################
1514 ## SVGTextContentElement
1515 #########################################################################*/
1517 /**
1518  * The SVGTextContentElement interface is inherited by various text-related
1519  * interfaces, such as SVGTextElement, SVGTSpanElement, SVGTRefElement,
1520  * SVGAltGlyphElement and SVGTextPathElement.
1521  */
1522 class SVGTextContentElement :
1523                     virtual public SVGElement,
1524                     public SVGTests,
1525                     public SVGLangSpace,
1526                     public SVGExternalResourcesRequired,
1527                     public SVGStylable,
1528                     public events::EventTarget
1531 public:
1533     /**
1534      * lengthAdjust Types
1535      */
1536     typedef enum
1537         {
1538         LENGTHADJUST_UNKNOWN          = 0,
1539         LENGTHADJUST_SPACING          = 1,
1540         LENGTHADJUST_SPACINGANDGLYPHS = 2
1541         } LengthAdjustType;
1544     /**
1545      * Corresponds to attribute textLength on the given element.
1546      */
1547     virtual SVGAnimatedLength getTextLength() =0;
1550     /**
1551      * Corresponds to attribute lengthAdjust on the given element. The value must be
1552      * one of the length adjust constants specified above.
1553      */
1554     virtual SVGAnimatedEnumeration getLengthAdjust() =0;
1557     /**
1558      * Returns the total number of characters to be rendered within the current
1559      * element. Includes characters which are included via a 'tref' reference.
1560      */
1561     virtual long getNumberOfChars (  ) =0;
1563     /**
1564      * The total sum of all of the advance values from rendering all of the
1565      * characters within this element, including the advance value on the glyphs
1566      * (horizontal or vertical), the effect of properties 'kerning', 'letter-spacing'
1567      * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan'
1568      * elements. For non-rendering environments, the user agent shall make reasonable
1569      * assumptions about glyph metrics.
1570      */
1571     virtual double getComputedTextLength (  ) =0;
1573     /**
1574      * The total sum of all of the advance values from rendering the specified
1575      * substring of the characters, including the advance value on the glyphs
1576      * (horizontal or vertical), the effect of properties 'kerning', 'letter-spacing'
1577      * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan'
1578      * elements. For non-rendering environments, the user agent shall make reasonable
1579      * assumptions about glyph metrics.
1580      */
1581     virtual double getSubStringLength (unsigned long charnum, unsigned long nchars )
1582                                      throw( DOMException ) =0;
1584     /**
1585      * Returns the current text position before rendering the character in the user
1586      * coordinate system for rendering the glyph(s) that correspond to the specified
1587      * character. The current text position has already taken into account the
1588      * effects of any inter-character adjustments due to properties 'kerning',
1589      * 'letter-spacing' and 'word-spacing' and adjustments due to attributes x, y, dx
1590      * and dy. If multiple consecutive characters are rendered inseparably (e.g., as
1591      * a single glyph or a sequence of glyphs), then each of the inseparable
1592      * characters will return the start position for the first glyph.
1593      */
1594     virtual SVGPoint getStartPositionOfChar (unsigned long charnum )
1595                                               throw( DOMException ) =0;
1597     /**
1598      * Returns the current text position after rendering the character in the user
1599      * coordinate system for rendering the glyph(s) that correspond to the specified
1600      * character. This current text position does not take into account the effects
1601      * of any inter-character adjustments to prepare for the next character, such as
1602      * properties 'kerning', 'letter-spacing' and 'word-spacing' and adjustments due
1603      * to attributes x, y, dx and dy. If multiple consecutive characters are rendered
1604      * inseparably (e.g., as a single glyph or a sequence of glyphs), then each of
1605      * the inseparable characters will return the end position for the last glyph.
1606      */
1607     virtual SVGPoint getEndPositionOfChar (unsigned long charnum )
1608                                            throw( DOMException ) =0;
1610     /**
1611      * Returns a tightest rectangle which defines the minimum and maximum X and Y
1612      * values in the user coordinate system for rendering the glyph(s) that
1613      * correspond to the specified character. The calculations assume that all glyphs
1614      * occupy the full standard glyph cell for the font. If multiple consecutive
1615      * characters are rendered inseparably (e.g., as a single glyph or a sequence of
1616      * glyphs), then each of the inseparable characters will return the same extent.
1617      */
1618     virtual SVGRect getExtentOfChar (unsigned long charnum )
1619                                       throw( DOMException ) =0;
1621     /**
1622      * Returns the rotation value relative to the current user coordinate system used
1623      * to render the glyph(s) corresponding to the specified character. If multiple
1624      * glyph(s) are used to render the given character and the glyphs each have
1625      * different rotations (e.g., due to text-on-a-path), the user agent shall return
1626      * an average value (e.g., the rotation angle at the midpoint along the path for
1627      * all glyphs used to render this character). The rotation value represents the
1628      * rotation that is supplemental to any rotation due to properties
1629      * 'glyph-orientation-horizontal' and 'glyph-orientation-vertical'; thus, any
1630      * glyph rotations due to these properties are not included into the returned
1631      * rotation value. If multiple consecutive characters are rendered inseparably
1632      * (e.g., as a single glyph or a sequence of glyphs), then each of the
1633      * inseparable characters will return the same rotation value.
1634      */
1635     virtual double getRotationOfChar (unsigned long charnum )
1636                                      throw( DOMException ) =0;
1638     /**
1639      * Returns the index of the character whose corresponding glyph cell bounding box
1640      * contains the specified point. The calculations assume that all glyphs occupy
1641      * the full standard glyph cell for the font. If no such character exists, a
1642      * value of -1 is returned. If multiple such characters exist, the character
1643      * within the element whose glyphs were rendered last (i.e., take into account
1644      * any reordering such as for bidirectional text) is used. If multiple
1645      * consecutive characters are rendered inseparably (e.g., as a single glyph or a
1646      * sequence of glyphs), then the user agent shall allocate an equal percentage of
1647      * the text advance amount to each of the contributing characters in determining
1648      * which of the characters is chosen.
1649      */
1650     virtual long getCharNumAtPosition (const SVGPoint &point ) =0;
1652     /**
1653      * Causes the specified substring to be selected just as if the user
1654      *      selected the substring interactively.
1655      */
1656     virtual void selectSubString (unsigned long charnum, unsigned long nchars )
1657                                   throw( DOMException ) =0;
1661     //##################
1662     //# Non-API methods
1663     //##################
1665     /**
1666      *
1667      */
1668     virtual ~SVGTextContentElement() {}
1670 };
1677 /*#########################################################################
1678 ## SVGTextPositioningElement
1679 #########################################################################*/
1681 /**
1682  * The SVGTextPositioningElement interface is inherited by text-related
1683  * interfaces: SVGTextElement, SVGTSpanElement, SVGTRefElement and
1684  * SVGAltGlyphElement.
1685  */
1686 class SVGTextPositioningElement : virtual public SVGTextContentElement
1688 public:
1690     /**
1691      * Corresponds to attribute x on the given element.
1692      */
1693     virtual SVGAnimatedLength getX() =0;
1695     /**
1696      * Corresponds to attribute y on the given element.
1697      */
1698     virtual SVGAnimatedLength getY() =0;
1700     /**
1701      * Corresponds to attribute dx on the given element.
1702      */
1703     virtual SVGAnimatedLength getDx() =0;
1705     /**
1706      * Corresponds to attribute dy on the given element.
1707      */
1708     virtual SVGAnimatedLength getDy() =0;
1711     /**
1712      * Corresponds to attribute rotate on the given element.
1713      */
1714     virtual SVGAnimatedNumberList getRotate() =0;
1718     //##################
1719     //# Non-API methods
1720     //##################
1722     /**
1723      *
1724      */
1725     virtual ~SVGTextPositioningElement() {}
1727 };
1734 /*#########################################################################
1735 ## SVGTextElement
1736 #########################################################################*/
1738 /**
1739  * The SVGTextElement  interface corresponds to the 'text' element.
1740  */
1741 class SVGTextElement : virtual public SVGTextPositioningElement,
1742                        public SVGTransformable
1744 public:
1746     //##################
1747     //# Non-API methods
1748     //##################
1750     /**
1751      *
1752      */
1753     virtual ~SVGTextElement() {}
1755 };
1760 /*#########################################################################
1761 ## SVGTSpanElement
1762 #########################################################################*/
1764 /**
1765  * The SVGTSpanElement  interface corresponds to the 'tspan' element.
1766  */
1767 class SVGTSpanElement : virtual public SVGTextPositioningElement
1769 public:
1771     //##################
1772     //# Non-API methods
1773     //##################
1775     /**
1776      *
1777      */
1778     virtual ~SVGTSpanElement() {}
1780 };
1785 /*#########################################################################
1786 ## SVGTRefElement
1787 #########################################################################*/
1789 /**
1790  * The SVGTRefElement  interface corresponds to the 'tref' element.
1791  */
1792 class SVGTRefElement :
1793                     virtual public SVGTextPositioningElement,
1794                     public SVGURIReference
1796 public:
1798     //##################
1799     //# Non-API methods
1800     //##################
1802     /**
1803      *
1804      */
1805     virtual ~SVGTRefElement() {}
1807 };
1812 /*#########################################################################
1813 ## SVGTextPathElement
1814 #########################################################################*/
1816 /**
1817  * The SVGTextPathElement  interface corresponds to the 'textPath' element.
1818  */
1819 class SVGTextPathElement :
1820                     virtual public SVGTextContentElement,
1821                     public SVGURIReference
1823 public:
1827     /**
1828      * textPath Method Types
1829      */
1830     typedef enum
1831         {
1832         TEXTPATH_METHODTYPE_UNKNOWN   = 0,
1833         TEXTPATH_METHODTYPE_ALIGN     = 1,
1834         TEXTPATH_METHODTYPE_STRETCH   = 2
1835         } TextPathMethodType;
1837     /**
1838      * textPath Spacing Types
1839      */
1840     typedef enum
1841         {
1842         TEXTPATH_SPACINGTYPE_UNKNOWN  = 0,
1843         TEXTPATH_SPACINGTYPE_AUTO     = 1,
1844         TEXTPATH_SPACINGTYPE_EXACT    = 2
1845         } TextPathSpacingType;
1848     /**
1849      * Corresponds to attribute startOffset on the given 'textPath' element.
1850      */
1851     virtual SVGAnimatedLength getStartOffset() =0;
1853     /**
1854      * Corresponds to attribute method on the given 'textPath' element. The value
1855      * must be one of the method type constants specified above.
1856      */
1857     virtual SVGAnimatedEnumeration getMethod() =0;
1859     /**
1860      * Corresponds to attribute spacing on the given 'textPath' element.
1861      *  The value must be one of the spacing type constants specified above.
1862      */
1863     virtual SVGAnimatedEnumeration getSpacing() =0;
1867     //##################
1868     //# Non-API methods
1869     //##################
1871     /**
1872      *
1873      */
1874     virtual ~SVGTextPathElement() {}
1876 };
1883 /*#########################################################################
1884 ## SVGAltGlyphElement
1885 #########################################################################*/
1887 /**
1888  * The SVGAltGlyphElement  interface corresponds to the 'altGlyph' element.
1889  */
1890 class SVGAltGlyphElement :
1891                     virtual public SVGTextPositioningElement,
1892                     public SVGURIReference
1894 public:
1896     /**
1897      * Get the attribute glyphRef on the given element.
1898      */
1899     virtual DOMString getGlyphRef() =0;
1901     /**
1902      * Set the attribute glyphRef on the given element.
1903      */
1904     virtual void setGlyphRef(const DOMString &val)
1905                                      throw (DOMException) =0;
1907     /**
1908      * Get the attribute format on the given element.
1909      */
1910     virtual DOMString getFormat() =0;
1912     /**
1913      * Set the attribute format on the given element.
1914      */
1915     virtual void setFormat(const DOMString &val)
1916                                      throw (DOMException) =0;
1921     //##################
1922     //# Non-API methods
1923     //##################
1925     /**
1926      *
1927      */
1928     virtual ~SVGAltGlyphElement() {}
1930 };
1937 /*#########################################################################
1938 ## SVGAltGlyphDefElement
1939 #########################################################################*/
1941 /**
1942  * The SVGAltGlyphDefElement interface corresponds to the 'altGlyphDef' element.
1943  */
1944 class SVGAltGlyphDefElement : virtual public SVGElement
1946 public:
1948     //##################
1949     //# Non-API methods
1950     //##################
1952     /**
1953      *
1954      */
1955     virtual ~SVGAltGlyphDefElement() {}
1957 };
1962 /*#########################################################################
1963 ## SVGAltGlyphItemElement
1964 #########################################################################*/
1966 /**
1967  * The SVGAltGlyphItemElement  interface corresponds to the
1968  *  'altGlyphItem' element.
1969  */
1970 class SVGAltGlyphItemElement : virtual public SVGElement
1972 public:
1974     //##################
1975     //# Non-API methods
1976     //##################
1978     /**
1979      *
1980      */
1981     virtual ~SVGAltGlyphItemElement() {}
1983 };
1988 /*#########################################################################
1989 ## SVGGlyphRefElement
1990 #########################################################################*/
1992 /**
1993  * The SVGGlyphRefElement  interface corresponds to the 'glyphRef' element.
1994  */
1995 class SVGGlyphRefElement : virtual public SVGElement,
1996                            public SVGURIReference,
1997                            public SVGStylable
1999 public:
2001     /**
2002      * Get the attribute glyphRef on the given element.
2003      */
2004     virtual DOMString getGlyphRef() =0;
2006     /**
2007      * Set the attribute glyphRef on the given element.
2008      */
2009     virtual void setGlyphRef(const DOMString &val)
2010                              throw (DOMException) =0;
2012     /**
2013      * Get the attribute format on the given element.
2014      */
2015     virtual DOMString getFormat() =0;
2017     /**
2018      * Set the attribute format on the given element.
2019      */
2020     virtual void setFormat(const DOMString &val)
2021                            throw (DOMException) =0;
2023     /**
2024      * Get the attribute x on the given element.
2025      */
2026     virtual double getX() = 0;
2028     /**
2029      * Set the attribute x on the given element.
2030      */
2031     virtual void setX(double val) throw (DOMException) =0;
2033     /**
2034      * Get the attribute y on the given element.
2035      */
2036     virtual double getY() = 0;
2038     /**
2039      * Set the attribute y on the given element.
2040      */
2041     virtual void setY(double val) throw (DOMException) =0;
2043     /**
2044      * Get the attribute dx on the given element.
2045      */
2046     virtual double getDx() = 0;
2048     /**
2049      * Set the attribute dx on the given element.
2050      */
2051     virtual void setDx(double val) throw (DOMException) =0;
2053     /**
2054      * Get the attribute dy on the given element.
2055      */
2056     virtual double getDy() = 0;
2058     /**
2059      * Set the attribute dy on the given element.
2060      */
2061     virtual void setDy(double val) throw (DOMException) =0;
2066     //##################
2067     //# Non-API methods
2068     //##################
2070     /**
2071      *
2072      */
2073     virtual ~SVGGlyphRefElement() {}
2075 };
2081 /*#########################################################################
2082 ## SVGMarkerElement
2083 #########################################################################*/
2085 /**
2086  * The SVGMarkerElement  interface corresponds to the 'marker' element.
2087  */
2088 class SVGMarkerElement :
2089                     virtual public SVGElement,
2090                     public SVGLangSpace,
2091                     public SVGExternalResourcesRequired,
2092                     public SVGStylable,
2093                     public SVGFitToViewBox
2095 public:
2099     /**
2100      * Marker Unit Types
2101      */
2102     typedef enum
2103         {
2104         SVG_MARKERUNITS_UNKNOWN        = 0,
2105         SVG_MARKERUNITS_USERSPACEONUSE = 1,
2106         SVG_MARKERUNITS_STROKEWIDTH    = 2
2107         } MarkerUnitType;
2109     /**
2110      * Marker Orientation Types
2111      */
2112     typedef enum
2113         {
2114         SVG_MARKER_ORIENT_UNKNOWN      = 0,
2115         SVG_MARKER_ORIENT_AUTO         = 1,
2116         SVG_MARKER_ORIENT_ANGLE        = 2
2117         } MarkerOrientationType;
2120     /**
2121      * Corresponds to attribute refX on the given 'marker' element.
2122      */
2123     virtual SVGAnimatedLength getRefX() =0;
2125     /**
2126      * Corresponds to attribute refY on the given 'marker' element.
2127      */
2128     virtual SVGAnimatedLength getRefY() =0;
2130     /**
2131      * Corresponds to attribute markerUnits on the given 'marker' element.
2132      *      One of the Marker Units Types defined above.
2133      */
2134     virtual SVGAnimatedEnumeration getMarkerUnits() =0;
2136     /**
2137      * Corresponds to attribute markerWidth on the given 'marker' element.
2138      */
2139     virtual SVGAnimatedLength getMarkerWidth() =0;
2141     /**
2142      * Corresponds to attribute markerHeight on the given 'marker' element.
2143      */
2144     virtual SVGAnimatedLength getMarkerHeight() =0;
2146     /**
2147      * Corresponds to attribute orient on the given 'marker' element.
2148      *      One of the Marker Orientation Types defined above.
2149      */
2150     virtual SVGAnimatedEnumeration getOrientType() =0;
2152     /**
2153      * Corresponds to attribute orient on the given 'marker' element.
2154      * If markerUnits is SVG_MARKER_ORIENT_ANGLE, the angle value for
2155      * attribute orient; otherwise, it will be set to zero.
2156      */
2157     virtual SVGAnimatedAngle getOrientAngle() =0;
2160     /**
2161      * Sets the value of attribute orient to 'auto'.
2162      */
2163     virtual void setOrientToAuto (  ) =0;
2165     /**
2166      * Sets the value of attribute orient to the given angle.
2167      */
2168     virtual void setOrientToAngle (const SVGAngle &angle) =0;
2172     //##################
2173     //# Non-API methods
2174     //##################
2176     /**
2177      *
2178      */
2179     virtual ~SVGMarkerElement() {}
2181 };
2188 /*#########################################################################
2189 ## SVGColorProfileElement
2190 #########################################################################*/
2192 /**
2193  * The SVGColorProfileElement  interface corresponds to the
2194  *  'color-profile' element.
2195  */
2196 class SVGColorProfileElement :
2197                     virtual public SVGElement,
2198                     public SVGURIReference,
2199                     public SVGRenderingIntent
2201 public:
2203     /**
2204      * Get the attribute local on the given element.
2205      */
2206     virtual DOMString getLocal() =0;
2208     /**
2209      * Set the attribute local on the given element.
2210      */
2211     virtual void setLocal(const DOMString &val)
2212                           throw (DOMException) =0;
2214     /**
2215      * Get the attribute name on the given element.
2216      */
2217     virtual DOMString getName() =0;
2219     /**
2220      * Set the attribute name on the given element.
2221      */
2222     virtual void setName(const DOMString &val)
2223                          throw (DOMException) =0;
2225     /**
2226      * Set the attribute rendering-intent on the given element.
2227      * The type of rendering intent, identified by one of the
2228      *      SVGRenderingIntent constants.
2229      */
2230     virtual unsigned short getRenderingIntent() =0;
2232     /**
2233      * Get the attribute rendering-intent on the given element.
2234      */
2235     virtual void setRenderingIntent(unsigned short val)
2236                                     throw (DOMException) =0;
2240     //##################
2241     //# Non-API methods
2242     //##################
2244     /**
2245      *
2246      */
2247     virtual ~SVGColorProfileElement() {}
2249 };
2254 /*#########################################################################
2255 ## SVGGradientElement
2256 #########################################################################*/
2258 /**
2259  * The SVGGradientElement interface is a base interface used by
2260  * SVGLinearGradientElement and SVGRadialGradientElement.
2261  */
2262 class SVGGradientElement :
2263                     virtual public SVGElement,
2264                     public SVGURIReference,
2265                     public SVGExternalResourcesRequired,
2266                     public SVGStylable,
2267                     public SVGUnitTypes
2270 public:
2272     /**
2273      * Spread Method Types
2274      */
2275     typedef enum
2276         {
2277         SVG_SPREADMETHOD_UNKNOWN = 0,
2278         SVG_SPREADMETHOD_PAD     = 1,
2279         SVG_SPREADMETHOD_REFLECT = 2,
2280         SVG_SPREADMETHOD_REPEAT  = 3
2281         } SpreadMethodType;
2284     /**
2285      * Corresponds to attribute gradientUnits on the given element.
2286      *      Takes one of the constants defined in SVGUnitTypes.
2287      */
2288     virtual SVGAnimatedEnumeration getGradientUnits() =0;
2290     /**
2291      * Corresponds to attribute gradientTransform on the given element.
2292      */
2293     virtual SVGAnimatedTransformList getGradientTransform() =0;
2295     /**
2296      * Corresponds to attribute spreadMethod on the given element.
2297      *      One of the Spread Method Types.
2298      */
2299     virtual SVGAnimatedEnumeration getSpreadMethod() =0;
2303     //##################
2304     //# Non-API methods
2305     //##################
2307     /**
2308      *
2309      */
2310     virtual ~SVGGradientElement() {}
2312 };
2319 /*#########################################################################
2320 ## SVGLinearGradientElement
2321 #########################################################################*/
2323 /**
2324  * The SVGLinearGradientElement  interface corresponds to the
2325  *  'linearGradient' element.
2326  */
2327 class SVGLinearGradientElement : virtual public SVGGradientElement
2329 public:
2332     /**
2333      * Corresponds to attribute x1 on the given 'linearGradient'  element.
2334      */
2335     virtual SVGAnimatedLength getX1() =0;
2337     /**
2338      * Corresponds to attribute y1 on the given 'linearGradient'  element.
2339      */
2340     virtual SVGAnimatedLength getY1() =0;
2342     /**
2343      * Corresponds to attribute x2 on the given 'linearGradient'  element.
2344      */
2345     virtual SVGAnimatedLength getX2() =0;
2347     /**
2348      * Corresponds to attribute y2 on the given 'linearGradient'  element.
2349      */
2350     virtual SVGAnimatedLength getY2() =0;
2353     //##################
2354     //# Non-API methods
2355     //##################
2357     /**
2358      *
2359      */
2360     virtual ~SVGLinearGradientElement() {}
2362 };
2369 /*#########################################################################
2370 ## SVGRadialGradientElement
2371 #########################################################################*/
2373 /**
2374  * The SVGRadialGradientElement  interface corresponds to the
2375  *  'radialGradient' element.
2376  */
2377 class SVGRadialGradientElement : virtual public SVGGradientElement
2380 public:
2382     /**
2383      * Corresponds to attribute cx on the given 'radialGradient'  element.
2384      */
2385     virtual SVGAnimatedLength getCx() =0;
2388     /**
2389      * Corresponds to attribute cy on the given 'radialGradient'  element.
2390      */
2391     virtual SVGAnimatedLength getCy() =0;
2394     /**
2395      * Corresponds to attribute r on the given 'radialGradient'  element.
2396      */
2397     virtual SVGAnimatedLength getR() =0;
2400     /**
2401      * Corresponds to attribute fx on the given 'radialGradient'  element.
2402      */
2403     virtual SVGAnimatedLength getFx() =0;
2406     /**
2407      * Corresponds to attribute fy on the given 'radialGradient'  element.
2408      */
2409     virtual SVGAnimatedLength getFy() =0;
2414     //##################
2415     //# Non-API methods
2416     //##################
2418     /**
2419      *
2420      */
2421     virtual ~SVGRadialGradientElement() {}
2423 };
2430 /*#########################################################################
2431 ## SVGStopElement
2432 #########################################################################*/
2434 /**
2435  * The SVGStopElement  interface corresponds to the 'stop' element.
2436  */
2437 class SVGStopElement :
2438                     virtual public SVGElement,
2439                     public SVGStylable
2441 public:
2443     /**
2444      * Corresponds to attribute offset on the given 'stop' element.
2445      */
2446     virtual SVGAnimatedNumber getOffset() =0;
2450     //##################
2451     //# Non-API methods
2452     //##################
2454     /**
2455      *
2456      */
2457     virtual ~SVGStopElement() {}
2459 };
2466 /*#########################################################################
2467 ## SVGPatternElement
2468 #########################################################################*/
2470 /**
2471  * The SVGPatternElement  interface corresponds to the 'pattern' element.
2472  */
2473 class SVGPatternElement :
2474                     virtual public SVGElement,
2475                     public SVGURIReference,
2476                     public SVGTests,
2477                     public SVGLangSpace,
2478                     public SVGExternalResourcesRequired,
2479                     public SVGStylable,
2480                     public SVGFitToViewBox,
2481                     public SVGUnitTypes
2484 public:
2486     /**
2487      * Corresponds to attribute patternUnits on the given 'pattern' element. Takes
2488      * one of the constants defined in SVGUnitTypes.
2489      */
2490     virtual SVGAnimatedEnumeration getPatternUnits() =0;
2492     /**
2493      * Corresponds to attribute patternContentUnits on the given 'pattern'
2494      *      element. Takes one of the constants defined in SVGUnitTypes.
2495      */
2496     virtual SVGAnimatedEnumeration getPatternContentUnits() =0;
2498     /**
2499      * Corresponds to attribute patternTransform on the given 'pattern' element.
2500      */
2501     virtual SVGAnimatedTransformList getPatternTransform() =0;
2503     /**
2504      * Corresponds to attribute x on the given 'pattern' element.
2505      */
2506     virtual SVGAnimatedLength getX() =0;
2508     /**
2509      *
2510      */
2511     virtual SVGAnimatedLength getY() =0;
2513     /**
2514      * Corresponds to attribute width on the given 'pattern' element.
2515      */
2516     virtual SVGAnimatedLength getWidth() =0;
2518     /**
2519      * Corresponds to attribute height on the given 'pattern' element.
2520      */
2521     virtual SVGAnimatedLength getHeight() =0;
2525     //##################
2526     //# Non-API methods
2527     //##################
2529     /**
2530      *
2531      */
2532     virtual ~SVGPatternElement() {}
2534 };
2541 /*#########################################################################
2542 ## SVGClipPathElement
2543 #########################################################################*/
2545 /**
2546  * The SVGClipPathElement  interface corresponds to the 'clipPath' element.
2547  */
2548 class SVGClipPathElement :
2549                     virtual public SVGElement,
2550                     public SVGTests,
2551                     public SVGLangSpace,
2552                     public SVGExternalResourcesRequired,
2553                     public SVGStylable,
2554                     public SVGTransformable,
2555                     public SVGUnitTypes
2558 public:
2560     /**
2561      * Corresponds to attribute clipPathUnits on the given 'clipPath' element.
2562      *      Takes one of the constants defined in SVGUnitTypes.
2563      */
2564     virtual SVGAnimatedEnumeration getClipPathUnits() =0;
2569     //##################
2570     //# Non-API methods
2571     //##################
2573     /**
2574      *
2575      */
2576     virtual ~SVGClipPathElement() {}
2578 };
2585 /*#########################################################################
2586 ## SVGMaskElement
2587 #########################################################################*/
2589 /**
2590  * The SVGMaskElement  interface corresponds to the 'mask' element.
2591  */
2592 class SVGMaskElement :
2593                     virtual public SVGElement,
2594                     public SVGTests,
2595                     public SVGLangSpace,
2596                     public SVGExternalResourcesRequired,
2597                     public SVGStylable,
2598                     public SVGUnitTypes
2600 public:
2604     /**
2605      * Corresponds to attribute maskUnits on the given 'mask' element. Takes one of
2606      * the constants defined in SVGUnitTypes.
2607      */
2608     virtual SVGAnimatedEnumeration getMaskUnits() =0;
2610     /**
2611      * Corresponds to attribute maskContentUnits on the given 'mask' element. Takes
2612      * one of the constants defined in SVGUnitTypes.
2613      */
2614     virtual SVGAnimatedEnumeration getMaskContentUnits() =0;
2616     /**
2617      * Corresponds to attribute x on the given 'mask' element.
2618      */
2619     virtual SVGAnimatedLength getX() =0;
2621     /**
2622      * Corresponds to attribute y on the given 'mask' element.
2623      */
2624     virtual SVGAnimatedLength getY() =0;
2626     /**
2627      * Corresponds to attribute width on the given 'mask' element.
2628      */
2629     virtual SVGAnimatedLength getWidth() =0;
2631     /**
2632      * Corresponds to attribute height on the given 'mask' element.
2633      */
2634     virtual SVGAnimatedLength getHeight() =0;
2636     //##################
2637     //# Non-API methods
2638     //##################
2640     /**
2641      *
2642      */
2643     virtual ~SVGMaskElement() {}
2645 };
2652 /*#########################################################################
2653 ## SVGFilterElement
2654 #########################################################################*/
2656 /**
2657  * The SVGFilterElement  interface corresponds to the 'filter' element.
2658  */
2659 class SVGFilterElement :
2660                     virtual public SVGElement,
2661                     public SVGURIReference,
2662                     public SVGLangSpace,
2663                     public SVGExternalResourcesRequired,
2664                     public SVGStylable,
2665                     public SVGUnitTypes
2668 public:
2670     /**
2671      * Corresponds to attribute filterUnits on the given 'filter' element. Takes one
2672      * of the constants defined in SVGUnitTypes.
2673      */
2674     virtual SVGAnimatedEnumeration getFilterUnits() =0;
2676     /**
2677      * Corresponds to attribute primitiveUnits on the given 'filter' element. Takes
2678      * one of the constants defined in SVGUnitTypes.
2679      */
2680     virtual SVGAnimatedEnumeration getPrimitiveUnits() =0;
2682     /**
2683      *
2684      */
2685     virtual SVGAnimatedLength getX() =0;
2687     /**
2688      * Corresponds to attribute x on the given 'filter' element.
2689      */
2690     virtual SVGAnimatedLength getY() =0;
2692     /**
2693      * Corresponds to attribute y on the given 'filter' element.
2694      */
2695     virtual SVGAnimatedLength getWidth() =0;
2697     /**
2698      * Corresponds to attribute height on the given 'filter' element.
2699      */
2700     virtual SVGAnimatedLength getHeight() =0;
2703     /**
2704      * Corresponds to attribute filterRes on the given 'filter' element.
2705      *      Contains the X component of attribute filterRes.
2706      */
2707     virtual SVGAnimatedInteger getFilterResX() =0;
2709     /**
2710      * Corresponds to attribute filterRes on the given 'filter' element.
2711      * Contains the Y component (possibly computed automatically)
2712      *      of attribute filterRes.
2713      */
2714     virtual SVGAnimatedInteger getFilterResY() =0;
2716     /**
2717      * Sets the values for attribute filterRes.
2718      */
2719     virtual void setFilterRes (unsigned long filterResX,
2720                                unsigned long filterResY ) =0;
2724     //##################
2725     //# Non-API methods
2726     //##################
2728     /**
2729      *
2730      */
2731     virtual ~SVGFilterElement() {}
2733 };
2739 /*#########################################################################
2740 ## SVGFEBlendElement
2741 #########################################################################*/
2743 /**
2744  * The SVGFEBlendElement  interface corresponds to the 'feBlend' element.
2745  */
2746 class SVGFEBlendElement :
2747                     virtual public SVGElement,
2748                     public SVGFilterPrimitiveStandardAttributes
2750 public:
2753     /**
2754      * Blend Mode Types
2755      */
2756     typedef enum
2757         {
2758         SVG_FEBLEND_MODE_UNKNOWN  = 0,
2759         SVG_FEBLEND_MODE_NORMAL   = 1,
2760         SVG_FEBLEND_MODE_MULTIPLY = 2,
2761         SVG_FEBLEND_MODE_SCREEN   = 3,
2762         SVG_FEBLEND_MODE_DARKEN   = 4,
2763         SVG_FEBLEND_MODE_LIGHTEN  = 5
2764         } BlendModeType;
2766     /**
2767      * Corresponds to attribute in on the given 'feBlend' element.
2768      */
2769     virtual SVGAnimatedString getIn1() =0;
2771     /**
2772      * Corresponds to attribute in2 on the given 'feBlend' element.
2773      */
2774     virtual SVGAnimatedString getIn2() =0;
2776     /**
2777      * Corresponds to attribute mode on the given 'feBlend' element.
2778      *      Takes one of the Blend Mode Types.
2779      */
2780     virtual SVGAnimatedEnumeration getMode() =0;
2783     //##################
2784     //# Non-API methods
2785     //##################
2787     /**
2788      *
2789      */
2790     virtual ~SVGFEBlendElement() {}
2792 };
2799 /*#########################################################################
2800 ## SVGFEColorMatrixElement
2801 #########################################################################*/
2803 /**
2804  * The SVGFEColorMatrixElement  interface corresponds to the
2805  *  'feColorMatrix' element.
2806  */
2807 class SVGFEColorMatrixElement :
2808                     virtual public SVGElement,
2809                     public SVGFilterPrimitiveStandardAttributes
2812 public:
2814     /**
2815      * Color Matrix Types
2816      */
2817     typedef enum
2818         {
2819         SVG_FECOLORMATRIX_TYPE_UNKNOWN          = 0,
2820         SVG_FECOLORMATRIX_TYPE_MATRIX           = 1,
2821         SVG_FECOLORMATRIX_TYPE_SATURATE         = 2,
2822         SVG_FECOLORMATRIX_TYPE_HUEROTATE        = 3,
2823         SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4
2824         } ColorMatrixType;
2827     /**
2828      * Corresponds to attribute in on the given 'feColorMatrix' element.
2829      */
2830     virtual SVGAnimatedString getIn1() =0;
2832     /**
2833      * Corresponds to attribute type on the given 'feColorMatrix' element.
2834      *      Takes one of the Color Matrix Types.
2835      */
2836     virtual SVGAnimatedEnumeration getType() =0;
2838     /**
2839      * Corresponds to attribute values on the given 'feColorMatrix' element.
2840      * Provides access to the contents of the values attribute.
2841      */
2842     virtual SVGAnimatedNumberList getValues() =0;
2846     //##################
2847     //# Non-API methods
2848     //##################
2850     /**
2851      *
2852      */
2853     virtual ~SVGFEColorMatrixElement() {}
2855 };
2862 /*#########################################################################
2863 ## SVGFEComponentTransferElement
2864 #########################################################################*/
2866 /**
2867  * The SVGFEComponentTransferElement  interface corresponds to
2868  *  the 'feComponentTransfer' element.
2869  */
2870 class SVGFEComponentTransferElement :
2871                     virtual public SVGElement,
2872                     public SVGFilterPrimitiveStandardAttributes
2874 public:
2876     /**
2877      * Corresponds to attribute in on the given 'feComponentTransfer'  element.
2878      */
2879     virtual SVGAnimatedString getIn1() =0;
2881     //##################
2882     //# Non-API methods
2883     //##################
2885     /**
2886      *
2887      */
2888     virtual ~SVGFEComponentTransferElement() {}
2890 };
2897 /*#########################################################################
2898 ## SVGComponentTransferFunctionElement
2899 #########################################################################*/
2901 /**
2902  * This interface defines a base interface used by the component
2903  *  transfer function interfaces.
2904  */
2905 class SVGComponentTransferFunctionElement : virtual public SVGElement
2907 public:
2910     /**
2911      * Component Transfer Types
2912      */
2913     typedef enum
2914         {
2915         SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN  = 0,
2916         SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1,
2917         SVG_FECOMPONENTTRANSFER_TYPE_TABLE    = 2,
2918         SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3,
2919         SVG_FECOMPONENTTRANSFER_TYPE_LINEAR   = 4,
2920         SVG_FECOMPONENTTRANSFER_TYPE_GAMMA    = 5
2921         } ComponentTransferType;
2924     /**
2925      * Corresponds to attribute type on the given element. Takes one\
2926      *      of the Component Transfer Types.
2927      */
2928     virtual SVGAnimatedEnumeration getType() =0;
2930     /**
2931      * Corresponds to attribute tableValues on the given element.
2932      */
2933     virtual SVGAnimatedNumberList getTableValues() =0;
2935     /**
2936      * Corresponds to attribute slope on the given element.
2937      */
2938     virtual SVGAnimatedNumber getSlope() =0;
2940     /**
2941      * Corresponds to attribute intercept on the given element.
2942      */
2943     virtual SVGAnimatedNumber getIntercept() =0;
2945     /**
2946      * Corresponds to attribute amplitude on the given element.
2947      */
2948     virtual SVGAnimatedNumber getAmplitude() =0;
2950     /**
2951      * Corresponds to attribute exponent on the given element.
2952      */
2953     virtual SVGAnimatedNumber getExponent() =0;
2955     /**
2956      * Corresponds to attribute offset on the given element.
2957      */
2958     virtual SVGAnimatedNumber getOffset() =0;
2961     //##################
2962     //# Non-API methods
2963     //##################
2965     /**
2966      *
2967      */
2968     virtual ~SVGComponentTransferFunctionElement() {}
2970 };
2977 /*#########################################################################
2978 ## SVGFEFuncRElement
2979 #########################################################################*/
2981 /**
2982  * The SVGFEFuncRElement  interface corresponds to the 'feFuncR' element.
2983  */
2984 class SVGFEFuncRElement : virtual public SVGComponentTransferFunctionElement
2986 public:
2988     //##################
2989     //# Non-API methods
2990     //##################
2992     /**
2993      *
2994      */
2995     virtual ~SVGFEFuncRElement() {}
2997 };
3002 /*#########################################################################
3003 ## SVGFEFuncGElement
3004 #########################################################################*/
3006 /**
3007  * The SVGFEFuncGElement  interface corresponds to the 'feFuncG' element.
3008  */
3009 class SVGFEFuncGElement : public virtual SVGComponentTransferFunctionElement
3011 public:
3013     //##################
3014     //# Non-API methods
3015     //##################
3017     /**
3018      *
3019      */
3020     virtual ~SVGFEFuncGElement() {}
3022 };
3027 /*#########################################################################
3028 ## SVGFEFuncBElement
3029 #########################################################################*/
3031 /**
3032  * The SVGFEFuncBElement  interface corresponds to the 'feFuncB' element.
3033  */
3034 class SVGFEFuncBElement : virtual public SVGComponentTransferFunctionElement
3036 public:
3038     //##################
3039     //# Non-API methods
3040     //##################
3042     /**
3043      *
3044      */
3045     virtual ~SVGFEFuncBElement() {}
3047 };
3052 /*#########################################################################
3053 ## SVGFEFuncAElement
3054 #########################################################################*/
3056 /**
3057  * The SVGFEFuncAElement  interface corresponds to the 'feFuncA' element.
3058  */
3059 class SVGFEFuncAElement : virtual public SVGComponentTransferFunctionElement
3061 public:
3063     //##################
3064     //# Non-API methods
3065     //##################
3067     /**
3068      *
3069      */
3070     virtual ~SVGFEFuncAElement() {}
3072 };
3077 /*#########################################################################
3078 ## SVGFECompositeElement
3079 #########################################################################*/
3081 /**
3082  * The SVGFECompositeElement interface corresponds to the 'feComposite' element.
3083  */
3084 class SVGFECompositeElement :
3085                     virtual public SVGElement,
3086                     public SVGFilterPrimitiveStandardAttributes
3088 public:
3092     /**
3093      *  Composite Operators
3094      */
3095     typedef enum
3096         {
3097         SVG_FECOMPOSITE_OPERATOR_UNKNOWN    = 0,
3098         SVG_FECOMPOSITE_OPERATOR_OVER       = 1,
3099         SVG_FECOMPOSITE_OPERATOR_IN         = 2,
3100         SVG_FECOMPOSITE_OPERATOR_OUT        = 3,
3101         SVG_FECOMPOSITE_OPERATOR_ATOP       = 4,
3102         SVG_FECOMPOSITE_OPERATOR_XOR        = 5,
3103         SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6
3104         } CompositeOperatorType;
3106     /**
3107      * Corresponds to attribute in on the given 'feComposite' element.
3108      */
3109     virtual SVGAnimatedString getIn1() =0;
3111     /**
3112      * Corresponds to attribute in2 on the given 'feComposite' element.
3113      */
3114     virtual SVGAnimatedString getIn2() =0;
3116     /**
3117      * Corresponds to attribute operator on the given 'feComposite' element.
3118      *      Takes one of the Composite Operators.
3119      */
3120     virtual SVGAnimatedEnumeration getOperator() =0;
3122     /**
3123      * Corresponds to attribute k1 on the given 'feComposite' element.
3124      */
3125     virtual SVGAnimatedNumber getK1() =0;
3127     /**
3128      * Corresponds to attribute k2 on the given 'feComposite' element.
3129      */
3130     virtual SVGAnimatedNumber getK2() =0;
3132     /**
3133      * Corresponds to attribute k3 on the given 'feComposite' element.
3134      */
3135     virtual SVGAnimatedNumber getK3() =0;
3137     /**
3138      * Corresponds to attribute k4 on the given 'feComposite' element.
3139      */
3140     virtual SVGAnimatedNumber getK4() =0;
3144     //##################
3145     //# Non-API methods
3146     //##################
3148     /**
3149      *
3150      */
3151     virtual ~SVGFECompositeElement() {}
3153 };
3160 /*#########################################################################
3161 ## SVGFEConvolveMatrixElement
3162 #########################################################################*/
3164 /**
3165  * The SVGFEConvolveMatrixElement  interface corresponds to
3166  *  the 'feConvolveMatrix' element.
3167  */
3168 class SVGFEConvolveMatrixElement :
3169                     virtual public SVGElement,
3170                     public SVGFilterPrimitiveStandardAttributes
3173 public:
3175     /**
3176      * Edge Mode Values
3177      */
3178     typedef enum
3179         {
3180         SVG_EDGEMODE_UNKNOWN   = 0,
3181         SVG_EDGEMODE_DUPLICATE = 1,
3182         SVG_EDGEMODE_WRAP      = 2,
3183         SVG_EDGEMODE_NONE      = 3
3184         } EdgeModeType;
3187     /**
3188      * Corresponds to attribute order on the given 'feConvolveMatrix'  element.
3189      */
3190     virtual SVGAnimatedInteger getOrderX() =0;
3192     /**
3193      * Corresponds to attribute order on the given 'feConvolveMatrix'  element.
3194      */
3195     virtual SVGAnimatedInteger getOrderY() =0;
3197     /**
3198      * Corresponds to attribute kernelMatrix on the given element.
3199      */
3200     virtual SVGAnimatedNumberList getKernelMatrix() =0;
3202     /**
3203      * Corresponds to attribute divisor on the given 'feConvolveMatrix' element.
3204      */
3205     virtual SVGAnimatedNumber getDivisor() =0;
3207     /**
3208      * Corresponds to attribute bias on the given 'feConvolveMatrix'  element.
3209      */
3210     virtual SVGAnimatedNumber getBias() =0;
3212     /**
3213      * Corresponds to attribute targetX on the given 'feConvolveMatrix'  element.
3214      */
3215     virtual SVGAnimatedInteger getTargetX() =0;
3217     /**
3218      * Corresponds to attribute targetY on the given 'feConvolveMatrix'  element.
3219      */
3220     virtual SVGAnimatedInteger getTargetY() =0;
3222     /**
3223      * Corresponds to attribute edgeMode on the given 'feConvolveMatrix'
3224      *      element. Takes one of the Edge Mode Types.
3225      */
3226     virtual SVGAnimatedEnumeration getEdgeMode() =0;
3228     /**
3229      * Corresponds to attribute kernelUnitLength on the
3230      *      given 'feConvolveMatrix'  element.
3231      */
3232     virtual SVGAnimatedLength getKernelUnitLengthX() =0;
3234     /**
3235      * Corresponds to attribute kernelUnitLength on the given
3236      *      'feConvolveMatrix'  element.
3237      */
3238     virtual SVGAnimatedLength getKernelUnitLengthY() =0;
3240     /**
3241      * Corresponds to attribute preserveAlpha on the
3242      *      given 'feConvolveMatrix'  element.
3243      */
3244     virtual SVGAnimatedBoolean getPreserveAlpha() =0;
3248     //##################
3249     //# Non-API methods
3250     //##################
3252     /**
3253      *
3254      */
3255     virtual ~SVGFEConvolveMatrixElement() {}
3257 };
3264 /*#########################################################################
3265 ## SVGFEDiffuseLightingElement
3266 #########################################################################*/
3268 /**
3269  * The SVGFEDiffuseLightingElement  interface corresponds to the
3270  *  'feDiffuseLighting' element.
3271  */
3272 class SVGFEDiffuseLightingElement :
3273                     virtual public SVGElement,
3274                     public SVGFilterPrimitiveStandardAttributes
3276 public:
3278     /**
3279      * Corresponds to attribute in on the given 'feDiffuseLighting'  element.
3280      */
3281     virtual SVGAnimatedString getIn1() =0;
3283     /**
3284      * Corresponds to attribute surfaceScale on the given
3285      *      'feDiffuseLighting'  element.
3286      */
3287     virtual SVGAnimatedNumber getSurfaceScale() =0;
3289     /**
3290      * Corresponds to attribute diffuseConstant on the given
3291      *      'feDiffuseLighting'  element.
3292      */
3293     virtual SVGAnimatedNumber getDiffuseConstant() =0;
3295     /**
3296      * Corresponds to attribute kernelUnitLength on the given
3297      *      'feDiffuseLighting'  element.
3298      */
3299     virtual SVGAnimatedNumber getKernelUnitLengthX() =0;
3301     /**
3302      * Corresponds to attribute kernelUnitLength on the given
3303      *      'feDiffuseLighting'  element.
3304      */
3305     virtual SVGAnimatedNumber getKernelUnitLengthY() =0;
3309     //##################
3310     //# Non-API methods
3311     //##################
3313     /**
3314      *
3315      */
3316     virtual ~SVGFEDiffuseLightingElement() {}
3318 };
3325 /*#########################################################################
3326 ## SVGFEDistantLightElement
3327 #########################################################################*/
3329 /**
3330  * The SVGFEDistantLightElement interface corresponds to the
3331  *  'feDistantLight' element.
3332  */
3333 class SVGFEDistantLightElement : virtual public SVGElement
3335 public:
3337     /**
3338      * Corresponds to attribute azimuth on the given 'feDistantLight'  element.
3339      */
3340     virtual SVGAnimatedNumber getAzimuth() =0;
3343     /**
3344      * Corresponds to attribute elevation on the given 'feDistantLight'
3345      *    element
3346      */
3347     virtual SVGAnimatedNumber getElevation() =0;
3351     //##################
3352     //# Non-API methods
3353     //##################
3355     /**
3356      *
3357      */
3358     virtual ~SVGFEDistantLightElement() {}
3360 };
3367 /*#########################################################################
3368 ## SVGFEPointLightElement
3369 #########################################################################*/
3371 /**
3372  * The SVGFEPointLightElement interface corresponds to the 'fePointLight' element.
3373  */
3374 class SVGFEPointLightElement : virtual public SVGElement
3376 public:
3378     /**
3379      * Corresponds to attribute x on the given 'fePointLight' element.
3380      */
3381     virtual SVGAnimatedNumber getX() =0;
3383     /**
3384      * Corresponds to attribute y on the given 'fePointLight' element.
3385      */
3386     virtual SVGAnimatedNumber getY() =0;
3388     /**
3389      * Corresponds to attribute z on the given 'fePointLight' element.
3390      */
3391     virtual SVGAnimatedNumber getZ() =0;
3393     //##################
3394     //# Non-API methods
3395     //##################
3397     /**
3398      *
3399      */
3400     virtual ~SVGFEPointLightElement() {}
3402 };
3409 /*#########################################################################
3410 ## SVGFESpotLightElement
3411 #########################################################################*/
3413 /**
3414  * The SVGFESpotLightElement interface corresponds to the 'feSpotLight' element.
3415  */
3416 class SVGFESpotLightElement : virtual public SVGElement
3418 public:
3420     /**
3421      * Corresponds to attribute x on the given 'feSpotLight' element.
3422      */
3423     virtual SVGAnimatedNumber getX() =0;
3425     /**
3426      * Corresponds to attribute y on the given 'feSpotLight' element.
3427      */
3428     virtual SVGAnimatedNumber getY() =0;
3430     /**
3431      * Corresponds to attribute z on the given 'feSpotLight' element.
3432      */
3433     virtual SVGAnimatedNumber getZ() =0;
3435     /**
3436      * Corresponds to attribute pointsAtX on the given 'feSpotLight' element.
3437      */
3438     virtual SVGAnimatedNumber getPointsAtX() =0;
3440     /**
3441      * Corresponds to attribute pointsAtY on the given 'feSpotLight' element.
3442      */
3443     virtual SVGAnimatedNumber getPointsAtY() =0;
3445     /**
3446      * Corresponds to attribute pointsAtZ on the given 'feSpotLight' element.
3447      */
3448     virtual SVGAnimatedNumber getPointsAtZ() =0;
3450     /**
3451      * Corresponds to attribute specularExponent on the
3452      *      given 'feSpotLight'  element.
3453      */
3454     virtual SVGAnimatedNumber getSpecularExponent() =0;
3456     /**
3457      * Corresponds to attribute limitingConeAngle on the
3458      *      given 'feSpotLight'  element.
3459      */
3460     virtual SVGAnimatedNumber getLimitingConeAngle() =0;
3464     //##################
3465     //# Non-API methods
3466     //##################
3468     /**
3469      *
3470      */
3471     virtual ~SVGFESpotLightElement() {}
3473 };
3480 /*#########################################################################
3481 ## SVGFEDisplacementMapElement
3482 #########################################################################*/
3484 /**
3485  *
3486  */
3487 class SVGFEDisplacementMapElement :
3488                     virtual public SVGElement,
3489                     public SVGFilterPrimitiveStandardAttributes
3491 public:
3495     /**
3496      *  Channel Selectors
3497      */
3498     typedef enum
3499         {
3500         SVG_CHANNEL_UNKNOWN = 0,
3501         SVG_CHANNEL_R       = 1,
3502         SVG_CHANNEL_G       = 2,
3503         SVG_CHANNEL_B       = 3,
3504         SVG_CHANNEL_A       = 4
3505         } ChannelSelector;
3507     /**
3508      *
3509      */
3510     virtual SVGAnimatedString getIn1() =0;
3512     /**
3513      *
3514      */
3515     virtual SVGAnimatedString getIn2() =0;
3518     /**
3519      *
3520      */
3521     virtual SVGAnimatedNumber getScale() =0;
3523     /**
3524      *
3525      */
3526     virtual SVGAnimatedEnumeration getXChannelSelector() =0;
3528     /**
3529      *
3530      */
3531     virtual SVGAnimatedEnumeration getYChannelSelector() =0;
3535     //##################
3536     //# Non-API methods
3537     //##################
3539     /**
3540      *
3541      */
3542     virtual ~SVGFEDisplacementMapElement() {}
3544 };
3551 /*#########################################################################
3552 ## SVGFEFloodElement
3553 #########################################################################*/
3555 /**
3556  *
3557  */
3558 class SVGFEFloodElement :
3559                     virtual public SVGElement,
3560                     public SVGFilterPrimitiveStandardAttributes
3562 public:
3563     /**
3564      *
3565      */
3566     virtual SVGAnimatedString getIn1() =0;
3569     //##################
3570     //# Non-API methods
3571     //##################
3573     /**
3574      *
3575      */
3576     virtual ~SVGFEFloodElement() {}
3578 };
3585 /*#########################################################################
3586 ## SVGFEGaussianBlurElement
3587 #########################################################################*/
3589 /**
3590  *
3591  */
3592 class SVGFEGaussianBlurElement :
3593                     virtual public SVGElement,
3594                     public SVGFilterPrimitiveStandardAttributes
3596 public:
3597     /**
3598      *
3599      */
3600     virtual SVGAnimatedString getIn1() =0;
3603     /**
3604      *
3605      */
3606     virtual SVGAnimatedNumber getStdDeviationX() =0;
3608     /**
3609      *
3610      */
3611     virtual SVGAnimatedNumber getStdDeviationY() =0;
3614     /**
3615      *
3616      */
3617     virtual void setStdDeviation (double stdDeviationX, double stdDeviationY ) =0;
3621     //##################
3622     //# Non-API methods
3623     //##################
3625     /**
3626      *
3627      */
3628     virtual ~SVGFEGaussianBlurElement() {}
3630 };
3637 /*#########################################################################
3638 ## SVGFEImageElement
3639 #########################################################################*/
3641 /**
3642  *
3643  */
3644 class SVGFEImageElement :
3645                     virtual public SVGElement,
3646                     public SVGURIReference,
3647                     public SVGLangSpace,
3648                     public SVGExternalResourcesRequired,
3649                     public SVGFilterPrimitiveStandardAttributes
3651 public:
3653     //##################
3654     //# Non-API methods
3655     //##################
3657     /**
3658      *
3659      */
3660     virtual ~SVGFEImageElement() {}
3662 };
3667 /*#########################################################################
3668 ## SVGFEMergeElement
3669 #########################################################################*/
3671 /**
3672  *
3673  */
3674 class SVGFEMergeElement :
3675                     virtual public SVGElement,
3676                     public SVGFilterPrimitiveStandardAttributes
3678 public:
3680     //##################
3681     //# Non-API methods
3682     //##################
3684     /**
3685      *
3686      */
3687     virtual ~SVGFEMergeElement() {}
3689 };
3694 /*#########################################################################
3695 ## SVGFEMergeNodeElement
3696 #########################################################################*/
3698 /**
3699  *
3700  */
3701 class SVGFEMergeNodeElement : virtual public SVGElement
3703 public:
3704     /**
3705      *
3706      */
3707     virtual SVGAnimatedString getIn1() =0;
3710     //##################
3711     //# Non-API methods
3712     //##################
3714     /**
3715      *
3716      */
3717     virtual ~SVGFEMergeNodeElement() {}
3719 };
3726 /*#########################################################################
3727 ## SVGFEMorphologyElement
3728 #########################################################################*/
3730 /**
3731  *
3732  */
3733 class SVGFEMorphologyElement :
3734                     virtual public SVGElement,
3735                     public SVGFilterPrimitiveStandardAttributes
3737 public:
3741     /**
3742      *  Morphology Operators
3743      */
3744     typedef enum
3745         {
3746         SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0,
3747         SVG_MORPHOLOGY_OPERATOR_ERODE   = 1,
3748         SVG_MORPHOLOGY_OPERATOR_DILATE  = 2
3749         } MorphologyOperatorType;
3752     /**
3753      *
3754      */
3755     virtual SVGAnimatedString getIn1() =0;
3758     /**
3759      *
3760      */
3761     virtual SVGAnimatedEnumeration getOperator() =0;
3763     /**
3764      *
3765      */
3766     virtual SVGAnimatedLength getRadiusX() =0;
3768     /**
3769      *
3770      */
3771     virtual SVGAnimatedLength getRadiusY() =0;
3775     //##################
3776     //# Non-API methods
3777     //##################
3779     /**
3780      *
3781      */
3782     virtual ~SVGFEMorphologyElement() {}
3784 };
3791 /*#########################################################################
3792 ## SVGFEOffsetElement
3793 #########################################################################*/
3795 /**
3796  *
3797  */
3798 class SVGFEOffsetElement :
3799                     virtual public SVGElement,
3800                     public SVGFilterPrimitiveStandardAttributes
3802 public:
3806     /**
3807      *
3808      */
3809     virtual SVGAnimatedString getIn1() =0;
3811     /**
3812      *
3813      */
3814     virtual SVGAnimatedLength getDx() =0;
3816     /**
3817      *
3818      */
3819     virtual SVGAnimatedLength getDy() =0;
3824     //##################
3825     //# Non-API methods
3826     //##################
3828     /**
3829      *
3830      */
3831     virtual ~SVGFEOffsetElement() {}
3833 };
3840 /*#########################################################################
3841 ## SVGFESpecularLightingElement
3842 #########################################################################*/
3844 /**
3845  *
3846  */
3847 class SVGFESpecularLightingElement :
3848                     virtual public SVGElement,
3849                     public SVGFilterPrimitiveStandardAttributes
3851 public:
3853     /**
3854      *
3855      */
3856     virtual SVGAnimatedString getIn1() =0;
3858     /**
3859      *
3860      */
3861     virtual SVGAnimatedNumber getSurfaceScale() =0;
3863     /**
3864      *
3865      */
3866     virtual SVGAnimatedNumber getSpecularConstant() =0;
3868     /**
3869      *
3870      */
3871     virtual SVGAnimatedNumber getSpecularExponent() =0;
3874     //##################
3875     //# Non-API methods
3876     //##################
3878     /**
3879      *
3880      */
3881     virtual ~SVGFESpecularLightingElement() {}
3883 };
3890 /*#########################################################################
3891 ## SVGFETileElement
3892 #########################################################################*/
3894 /**
3895  *
3896  */
3897 class SVGFETileElement :
3898                     virtual public SVGElement,
3899                     public SVGFilterPrimitiveStandardAttributes
3901 public:
3904     /**
3905      *
3906      */
3907     virtual SVGAnimatedString getIn1() =0;
3911     //##################
3912     //# Non-API methods
3913     //##################
3915     /**
3916      *
3917      */
3918     virtual ~SVGFETileElement() {}
3920 };
3927 /*#########################################################################
3928 ## SVGFETurbulenceElement
3929 #########################################################################*/
3931 /**
3932  *
3933  */
3934 class SVGFETurbulenceElement :
3935                     virtual public SVGElement,
3936                     public SVGFilterPrimitiveStandardAttributes
3938 public:
3942     /**
3943      *  Turbulence Types
3944      */
3945     typedef enum
3946         {
3947         SVG_TURBULENCE_TYPE_UNKNOWN      = 0,
3948         SVG_TURBULENCE_TYPE_FRACTALNOISE = 1,
3949         SVG_TURBULENCE_TYPE_TURBULENCE   = 2
3950         } TurbulenceType;
3952     /**
3953      *  Stitch Options
3954      */
3955     typedef enum
3956         {
3957         SVG_STITCHTYPE_UNKNOWN  = 0,
3958         SVG_STITCHTYPE_STITCH   = 1,
3959         SVG_STITCHTYPE_NOSTITCH = 2
3960         } StitchOption;
3964     /**
3965      *
3966      */
3967     virtual SVGAnimatedNumber getBaseFrequencyX() =0;
3969     /**
3970      *
3971      */
3972     virtual SVGAnimatedNumber getBaseFrequencyY() =0;
3974     /**
3975      *
3976      */
3977     virtual SVGAnimatedInteger getNumOctaves() =0;
3979     /**
3980      *
3981      */
3982     virtual SVGAnimatedNumber getSeed() =0;
3984     /**
3985      *
3986      */
3987     virtual SVGAnimatedEnumeration getStitchTiles() =0;
3989     /**
3990      *
3991      */
3992     virtual SVGAnimatedEnumeration getType() =0;
3996     //##################
3997     //# Non-API methods
3998     //##################
4000     /**
4001      *
4002      */
4003     virtual ~SVGFETurbulenceElement() {}
4005 };
4012 /*#########################################################################
4013 ## SVGCursorElement
4014 #########################################################################*/
4016 /**
4017  *
4018  */
4019 class SVGCursorElement :
4020                     virtual public SVGElement,
4021                     public SVGURIReference,
4022                     public SVGTests,
4023                     public SVGExternalResourcesRequired
4025 public:
4026     /**
4027      *
4028      */
4029     virtual SVGAnimatedLength getX() =0;
4031     /**
4032      *
4033      */
4034     virtual SVGAnimatedLength getY() =0;
4036     //##################
4037     //# Non-API methods
4038     //##################
4040     /**
4041      *
4042      */
4043     virtual ~SVGCursorElement() {}
4045 };
4052 /*#########################################################################
4053 ## SVGAElement
4054 #########################################################################*/
4056 /**
4057  *
4058  */
4059 class SVGAElement : virtual public SVGElement,
4060                     public SVGURIReference,
4061                     public SVGTests,
4062                     public SVGLangSpace,
4063                     public SVGExternalResourcesRequired,
4064                     public SVGStylable,
4065                     public SVGTransformable,
4066                     public events::EventTarget
4068 public:
4070     /**
4071      *
4072      */
4073     virtual SVGAnimatedString getTarget() =0;
4077     //##################
4078     //# Non-API methods
4079     //##################
4081     /**
4082      *
4083      */
4084     virtual ~SVGAElement() {}
4086 };
4093 /*#########################################################################
4094 ## SVGViewElement
4095 #########################################################################*/
4097 /**
4098  *
4099  */
4100 class SVGViewElement : virtual public SVGElement,
4101                        public SVGExternalResourcesRequired,
4102                        public SVGFitToViewBox,
4103                        public SVGZoomAndPan
4105 public:
4107     /**
4108      *
4109      */
4110     virtual SVGStringList getViewTarget() =0;
4114     //##################
4115     //# Non-API methods
4116     //##################
4118     /**
4119      *
4120      */
4121     virtual ~SVGViewElement() {}
4123 };
4130 /*#########################################################################
4131 ## SVGScriptElement
4132 #########################################################################*/
4134 /**
4135  *
4136  */
4137 class SVGScriptElement :
4138                     virtual public SVGElement,
4139                     public SVGURIReference,
4140                     public SVGExternalResourcesRequired
4142 public:
4144     /**
4145      *
4146      */
4147     virtual DOMString getType() =0;
4149     /**
4150      *
4151      */
4152     virtual void setType(const DOMString &val)
4153                                throw (DOMException) =0;
4156     //##################
4157     //# Non-API methods
4158     //##################
4160     /**
4161      *
4162      */
4163     virtual ~SVGScriptElement() {}
4165 };
4171 /*#########################################################################
4172 ## SVGAnimationElement
4173 #########################################################################*/
4175 /**
4176  *
4177  */
4178 class SVGAnimationElement :
4179                     virtual public SVGElement,
4180                     public SVGTests,
4181                     public SVGExternalResourcesRequired,
4182                     public smil::ElementTimeControl,
4183                     public events::EventTarget
4185 public:
4188     /**
4189      *
4190      */
4191     virtual SVGElementPtr getTargetElement() =0;
4194     /**
4195      *
4196      */
4197     virtual double getStartTime (  ) =0;
4199     /**
4200      *
4201      */
4202     virtual double getCurrentTime (  ) =0;
4204     /**
4205      *
4206      */
4207     virtual double getSimpleDuration (  )
4208                     throw( DOMException ) =0;
4213     //##################
4214     //# Non-API methods
4215     //##################
4217     /**
4218      *
4219      */
4220     virtual ~SVGAnimationElement() {}
4222 };
4229 /*#########################################################################
4230 ## SVGAnimateElement
4231 #########################################################################*/
4233 /**
4234  *
4235  */
4236 class SVGAnimateElement : virtual public SVGAnimationElement
4238 public:
4240     //##################
4241     //# Non-API methods
4242     //##################
4244     /**
4245      *
4246      */
4247     virtual ~SVGAnimateElement() {}
4249 };
4254 /*#########################################################################
4255 ## SVGSetElement
4256 #########################################################################*/
4258 /**
4259  *
4260  */
4261 class SVGSetElement : virtual public SVGAnimationElement
4263 public:
4265     //##################
4266     //# Non-API methods
4267     //##################
4269     /**
4270      *
4271      */
4272     virtual ~SVGSetElement() {}
4274 };
4279 /*#########################################################################
4280 ## SVGAnimateMotionElement
4281 #########################################################################*/
4283 /**
4284  *
4285  */
4286 class SVGAnimateMotionElement : virtual public SVGAnimationElement
4288 public:
4290     //##################
4291     //# Non-API methods
4292     //##################
4294     /**
4295      *
4296      */
4297     virtual ~SVGAnimateMotionElement() {}
4299 };
4304 /*#########################################################################
4305 ## SVGMPathElement
4306 #########################################################################*/
4308 /**
4309  *
4310  */
4311 class SVGMPathElement :
4312                     virtual public SVGElement,
4313                     public SVGURIReference,
4314                     public SVGExternalResourcesRequired
4316 public:
4318     //##################
4319     //# Non-API methods
4320     //##################
4322     /**
4323      *
4324      */
4325     virtual ~SVGMPathElement() {}
4327 };
4332 /*#########################################################################
4333 ## SVGAnimateColorElement
4334 #########################################################################*/
4336 /**
4337  *
4338  */
4339 class SVGAnimateColorElement : virtual public SVGAnimationElement
4341 public:
4343     //##################
4344     //# Non-API methods
4345     //##################
4347     /**
4348      *
4349      */
4350     virtual ~SVGAnimateColorElement() {}
4352 };
4357 /*#########################################################################
4358 ## SVGAnimateTransformElement
4359 #########################################################################*/
4361 /**
4362  *
4363  */
4364 class SVGAnimateTransformElement : virtual public SVGAnimationElement
4366 public:
4368     //##################
4369     //# Non-API methods
4370     //##################
4372     /**
4373      *
4374      */
4375     virtual ~SVGAnimateTransformElement() {}
4377 };
4382 /*#########################################################################
4383 ## SVGFontElement
4384 #########################################################################*/
4386 /**
4387  *
4388  */
4389 class SVGFontElement :  virtual public SVGElement,
4390                         public SVGExternalResourcesRequired,
4391                         public SVGStylable
4393 public:
4395     //##################
4396     //# Non-API methods
4397     //##################
4399     /**
4400      *
4401      */
4402     virtual ~SVGFontElement() {}
4404 };
4409 /*#########################################################################
4410 ## SVGGlyphElement
4411 #########################################################################*/
4413 /**
4414  *
4415  */
4416 class SVGGlyphElement :  virtual public SVGElement,
4417                          public SVGStylable
4419 public:
4421     //##################
4422     //# Non-API methods
4423     //##################
4425     /**
4426      *
4427      */
4428     virtual ~SVGGlyphElement() {}
4430 };
4435 /*#########################################################################
4436 ## SVGMissingGlyphElement
4437 #########################################################################*/
4439 /**
4440  *
4441  */
4442 class SVGMissingGlyphElement :
4443                     virtual public SVGElement,
4444                     public SVGStylable
4446 public:
4448     //##################
4449     //# Non-API methods
4450     //##################
4452     /**
4453      *
4454      */
4455     virtual ~SVGMissingGlyphElement() {}
4457 };
4462 /*#########################################################################
4463 ## SVGHKernElement
4464 #########################################################################*/
4466 /**
4467  *
4468  */
4469 class SVGHKernElement : virtual public SVGElement
4471 public:
4473     //##################
4474     //# Non-API methods
4475     //##################
4477     /**
4478      *
4479      */
4480     virtual ~SVGHKernElement() {}
4482 };
4487 /*#########################################################################
4488 ## SVGVKernElement
4489 #########################################################################*/
4491 /**
4492  *
4493  */
4494 class SVGVKernElement : public virtual SVGElement
4496 public:
4498     //##################
4499     //# Non-API methods
4500     //##################
4502     /**
4503      *
4504      */
4505     virtual ~SVGVKernElement() {}
4507 };
4512 /*#########################################################################
4513 ## SVGFontFaceElement
4514 #########################################################################*/
4516 /**
4517  *
4518  */
4519 class SVGFontFaceElement : virtual public SVGElement
4521 public:
4523     //##################
4524     //# Non-API methods
4525     //##################
4527     /**
4528      *
4529      */
4530     virtual ~SVGFontFaceElement() {}
4532 };
4537 /*#########################################################################
4538 ## SVGFontFaceSrcElement
4539 #########################################################################*/
4541 /**
4542  *
4543  */
4544 class SVGFontFaceSrcElement : virtual public SVGElement
4546 public:
4548     //##################
4549     //# Non-API methods
4550     //##################
4552     /**
4553      *
4554      */
4555     virtual ~SVGFontFaceSrcElement() {}
4557 };
4562 /*#########################################################################
4563 ## SVGFontFaceUriElement
4564 #########################################################################*/
4566 /**
4567  *
4568  */
4569 class SVGFontFaceUriElement : virtual public SVGElement
4571 public:
4573     //##################
4574     //# Non-API methods
4575     //##################
4577     /**
4578      *
4579      */
4580     virtual ~SVGFontFaceUriElement() {}
4582 };
4587 /*#########################################################################
4588 ## SVGFontFaceFormatElement
4589 #########################################################################*/
4591 /**
4592  *
4593  */
4594 class SVGFontFaceFormatElement : virtual public SVGElement
4596 public:
4598     //##################
4599     //# Non-API methods
4600     //##################
4602     /**
4603      *
4604      */
4605     virtual ~SVGFontFaceFormatElement() {}
4607 };
4612 /*#########################################################################
4613 ## SVGFontFaceNameElement
4614 #########################################################################*/
4616 /**
4617  *
4618  */
4619 class SVGFontFaceNameElement : virtual public SVGElement
4621 public:
4623     //##################
4624     //# Non-API methods
4625     //##################
4627     /**
4628      *
4629      */
4630     virtual ~SVGFontFaceNameElement() {}
4632 };
4637 /*#########################################################################
4638 ## SVGDefinitionSrcElement
4639 #########################################################################*/
4641 /**
4642  *
4643  */
4644 class SVGDefinitionSrcElement : virtual public SVGElement
4646 public:
4648     //##################
4649     //# Non-API methods
4650     //##################
4652     /**
4653      *
4654      */
4655     virtual ~SVGDefinitionSrcElement() {}
4657 };
4662 /*#########################################################################
4663 ## SVGMetadataElement
4664 #########################################################################*/
4666 /**
4667  *
4668  */
4669 class SVGMetadataElement : virtual public SVGElement
4671 public:
4673     //##################
4674     //# Non-API methods
4675     //##################
4677     /**
4678      *
4679      */
4680     virtual ~SVGMetadataElement() {}
4682 };
4686 /*#########################################################################
4687 ## SVGForeignObjectElement
4688 #########################################################################*/
4690 /**
4691  *
4692  */
4693 class SVGForeignObjectElement :
4694                     virtual public SVGElement,
4695                     public SVGTests,
4696                     public SVGLangSpace,
4697                     public SVGExternalResourcesRequired,
4698                     public SVGStylable,
4699                     public SVGTransformable,
4700                     public events::EventTarget
4702 public:
4705     /**
4706      *
4707      */
4708     virtual SVGAnimatedLength getX() =0;
4710     /**
4711      *
4712      */
4713     virtual SVGAnimatedLength getY() =0;
4715     /**
4716      *
4717      */
4718     virtual SVGAnimatedLength getWidth() =0;
4720     /**
4721      *
4722      */
4723     virtual SVGAnimatedLength getHeight() =0;
4727     //##################
4728     //# Non-API methods
4729     //##################
4732     /**
4733      *
4734      */
4735     virtual ~SVGForeignObjectElement() {}
4737 };
4743 }  //namespace svg
4744 }  //namespace dom
4745 }  //namespace w3c
4746 }  //namespace org
4748 #endif // __SVG_H__
4749 /*#########################################################################
4750 ## E N D    O F    F I L E
4751 #########################################################################*/