Code

experimental version without multiple inheritance
authorishmal <ishmal@users.sourceforge.net>
Sat, 14 Jun 2008 19:51:16 +0000 (19:51 +0000)
committerishmal <ishmal@users.sourceforge.net>
Sat, 14 Jun 2008 19:51:16 +0000 (19:51 +0000)
src/dom/svg2.h [new file with mode: 0644]

diff --git a/src/dom/svg2.h b/src/dom/svg2.h
new file mode 100644 (file)
index 0000000..0e980cf
--- /dev/null
@@ -0,0 +1,3488 @@
+#ifndef __SVG_H__\r
+#define __SVG_H__\r
+\r
+/**\r
+ * Phoebe DOM Implementation.\r
+ *\r
+ * This is a C++ approximation of the W3C DOM model, which follows\r
+ * fairly closely the specifications in the various .idl files, copies of\r
+ * which are provided for reference.  Most important is this one:\r
+ *\r
+ * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html\r
+ *\r
+ * Authors:\r
+ *   Bob Jamison\r
+ *\r
+ * Copyright(C) 2005-2008 Bob Jamison\r
+ *\r
+ *  This library is free software; you can redistribute it and/or\r
+ *  modify it under the terms of the GNU Lesser General Public\r
+ *  License as published by the Free Software Foundation; either\r
+ *  version 2.1 of the License, or(at your option) any later version.\r
+ *\r
+ *  This library is distributed in the hope that it will be useful,\r
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
+ *  Lesser General Public License for more details.\r
+ *\r
+ *  You should have received a copy of the GNU Lesser General Public\r
+ *  License along with this library; if not, write to the Free Software\r
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA\r
+ *\r
+ * =======================================================================\r
+ * NOTES\r
+ *\r
+ * This API follows:\r
+ * http://www.w3.org/TR/SVG11/svgdom.html\r
+ *\r
+ * This file defines the main SVG-DOM Node types.  Other non-Node types are\r
+ * defined in svgtypes.h.\r
+ *    \r
+ */\r
+\r
+\r
+// For access to DOM2 core\r
+#include "dom/dom.h"\r
+\r
+// For access to DOM2 events\r
+#include "dom/events.h"\r
+\r
+// For access to those parts from DOM2 CSS OM used by SVG DOM.\r
+#include "dom/css.h"\r
+\r
+// For access to those parts from DOM2 Views OM used by SVG DOM.\r
+#include "dom/views.h"\r
+\r
+// For access to the SMIL OM used by SVG DOM.\r
+#include "dom/smil.h"\r
+\r
+\r
+\r
+#include "svgtypes.h"\r
+\r
+#include <math.h>\r
+\r
+#define SVG_NAMESPACE "http://www.w3.org/2000/svg"\r
+\r
+\r
+namespace org\r
+{\r
+namespace w3c\r
+{\r
+namespace dom\r
+{\r
+namespace svg\r
+{\r
+\r
+\r
+//local definitions\r
+typedef dom::DOMString DOMString;\r
+typedef dom::DOMException DOMException;\r
+typedef dom::Element Element;\r
+typedef dom::ElementPtr ElementPtr;\r
+typedef dom::Document Document;\r
+typedef dom::DocumentPtr DocumentPtr;\r
+typedef dom::NodeList NodeList;\r
+\r
+\r
+\r
+\r
+class SVGElement;\r
+typedef Ptr<SVGElement> SVGElementPtr;\r
+class SVGDocument;\r
+typedef Ptr<SVGDocument> SVGDocumentPtr;\r
+\r
+/*#########################################################################\r
+## Types\r
+#########################################################################*/\r
+\r
+/**\r
+ * Bitmasks for has_an interface for SVGElement\r
+ */ \r
+#define SVG_ANGLE                          0x00000001\r
+#define SVG_ANIMATED_ANGLE                 0x00000002\r
+#define SVG_ANIMATED_BOOLEAN               0x00000004\r
+#define SVG_ANIMATED_ENUMERATION           0x00000008\r
+#define SVG_ANIMATED_INTEGER               0x00000010\r
+#define SVG_ANIMATED_LENGTH                0x00000020\r
+#define SVG_ANIMATED_LENGTH_LIST           0x00000040\r
+#define SVG_ANIMATED_NUMBER                0x00000080\r
+#define SVG_ANIMATED_NUMBER_LIST           0x00000100\r
+#define SVG_ANIMATED_RECT                  0x00000200\r
+#define SVG_ANIMATED_STRING                0x00000400\r
+#define SVG_COLOR                          0x00000800\r
+#define SVG_CSS_RULE                       0x00001000\r
+#define SVG_EXTERNAL_RESOURCES_REQUIRED    0x00002000\r
+#define SVG_FIT_TO_VIEWBOX                 0x00004000\r
+#define SVG_ICCCOLOR                       0x00008000\r
+#define SVG_LANG_SPACE                     0x00010000\r
+#define SVG_LENGTH                         0x00020000\r
+#define SVG_LENGTH_LIST                    0x00040000\r
+#define SVG_LOCATABLE                      0x00080000\r
+#define SVG_NUMBER                         0x00100000\r
+#define SVG_NUMBER_LIST                    0x00200000\r
+#define SVG_RECT                           0x00400000\r
+#define SVG_RENDERING_INTENT               0x00800000\r
+#define SVG_STRING_LIST                    0x01000000\r
+#define SVG_STYLABLE                       0x02000000\r
+#define SVG_TESTS                          0x04000000\r
+#define SVG_TRANSFORMABLE                  0x08000000\r
+#define SVG_UNIT_TYPES                     0x10000000\r
+#define SVG_URI_REFERENCE                  0x20000000\r
+#define SVG_VIEW_SPEC                      0x40000000\r
+#define SVG_ZOOM_AND_PAN                   0x80000000\r
+\r
+/**\r
+ * How many above?  Quite handy\r
+ */ \r
+#define SVG_NR_INTERFACES                  32\r
+\r
+\r
+/**\r
+ * Enumerations for SVGElement types\r
+ */ \r
+typedef enum\r
+{\r
+    SVG_A_ELEMENT = 0,\r
+    SVG_ALTGLYPH_ELEMENT,\r
+    SVG_ALTGLYPHDEF_ELEMENT,\r
+    SVG_ALTGLYPHITEM_ELEMENT,\r
+    SVG_ANIMATE_ELEMENT,\r
+    SVG_ANIMATECOLOR_ELEMENT,\r
+    SVG_ANIMATEMOTION_ELEMENT,\r
+    SVG_ANIMATETRANSFORM_ELEMENT,\r
+    SVG_CIRCLE_ELEMENT,\r
+    SVG_CLIPPATH_ELEMENT,\r
+    SVG_COLOR_PROFILE_ELEMENT,\r
+    SVG_CURSOR_ELEMENT,\r
+    SVG_DEFINITION_SRC_ELEMENT,\r
+    SVG_DEFS_ELEMENT,\r
+    SVG_DESC_ELEMENT,\r
+    SVG_ELLIPSE_ELEMENT,\r
+    SVG_FEBLEND_ELEMENT,\r
+    SVG_FECOLORMATRIX_ELEMENT,\r
+    SVG_FECOMPONENTTRANSFER_ELEMENT,\r
+    SVG_FECOMPOSITE_ELEMENT,\r
+    SVG_FECONVOLVEMATRIX_ELEMENT,\r
+    SVG_FEDIFFUSELIGHTING_ELEMENT,\r
+    SVG_FEDISPLACEMENTMAP_ELEMENT,\r
+    SVG_FEDISTANTLIGHT_ELEMENT,\r
+    SVG_FEFLOOD_ELEMENT,\r
+    SVG_FEFUNCA_ELEMENT,\r
+    SVG_FEFUNCB_ELEMENT,\r
+    SVG_FEFUNCG_ELEMENT,\r
+    SVG_FEFUNCR_ELEMENT,\r
+    SVG_FEGAUSSIANBLUR_ELEMENT,\r
+    SVG_FEIMAGE_ELEMENT,\r
+    SVG_FEMERGE_ELEMENT,\r
+    SVG_FEMERGENODE_ELEMENT,\r
+    SVG_FEMORPHOLOGY_ELEMENT,\r
+    SVG_FEOFFSET_ELEMENT,\r
+    SVG_FEPOINTLIGHT_ELEMENT,\r
+    SVG_FESPECULARLIGHTING_ELEMENT,\r
+    SVG_FESPOTLIGHT_ELEMENT,\r
+    SVG_FETILE_ELEMENT,\r
+    SVG_FETURBULENCE_ELEMENT,\r
+    SVG_FILTER_ELEMENT,\r
+    SVG_FONT_ELEMENT,\r
+    SVG_FONT_FACE_ELEMENT,\r
+    SVG_FONT_FACE_FORMAT_ELEMENT,\r
+    SVG_FONT_FACE_NAME_ELEMENT,\r
+    SVG_FONT_FACE_SRC_ELEMENT,\r
+    SVG_FONT_FACE_URI_ELEMENT,\r
+    SVG_FOREIGNOBJECT_ELEMENT,\r
+    SVG_G_ELEMENT,\r
+    SVG_GLYPH_ELEMENT,\r
+    SVG_GLYPHREF_ELEMENT,\r
+    SVG_HKERN_ELEMENT,\r
+    SVG_IMAGE_ELEMENT,\r
+    SVG_LINE_ELEMENT,\r
+    SVG_LINEARGRADIENT_ELEMENT,\r
+    SVG_MARKER_ELEMENT,\r
+    SVG_MASK_ELEMENT,\r
+    SVG_METADATA_ELEMENT,\r
+    SVG_MISSING_GLYPH_ELEMENT,\r
+    SVG_MPATH_ELEMENT,\r
+    SVG_PATH_ELEMENT,\r
+    SVG_PATTERN_ELEMENT,\r
+    SVG_POLYGON_ELEMENT,\r
+    SVG_POLYLINE_ELEMENT,\r
+    SVG_RADIALGRADIENT_ELEMENT,\r
+    SVG_RECT_ELEMENT,\r
+    SVG_SCRIPT_ELEMENT,\r
+    SVG_SET_ELEMENT,\r
+    SVG_STOP_ELEMENT,\r
+    SVG_STYLE_ELEMENT,\r
+    SVG_SVG_ELEMENT,\r
+    SVG_SWITCH_ELEMENT,\r
+    SVG_SYMBOL_ELEMENT,\r
+    SVG_TEXT_ELEMENT,\r
+    SVG_TEXTPATH_ELEMENT,\r
+    SVG_TITLE_ELEMENT,\r
+    SVG_TREF_ELEMENT,\r
+    SVG_TSPAN_ELEMENT,\r
+    SVG_USE_ELEMENT,\r
+    SVG_VIEW_ELEMENT,\r
+    SVG_VKERN_ELEMENT,\r
+    SVG_MAX_ELEMENT\r
+} SVGElementType;\r
+\r
+\r
+\r
+\r
+/**\r
+ * Look up the SVG Element type enum for a given string\r
+ * Return -1 if not found\r
+ */\r
+int svgElementStrToEnum(const char *str);\r
+\r
+\r
+/**\r
+ * Return the string corresponding to a given SVG element type enum\r
+ * Return "unknown" if not found\r
+ */\r
+const char *svgElementEnumToStr(int type);\r
+\r
+\r
+\r
+/*#########################################################################\r
+## SVGElement\r
+#########################################################################*/\r
+\r
+/**\r
+ * All of the SVG DOM interfaces that correspond directly to elements in the SVG\r
+ * language(e.g., the SVGPathElement interface corresponds directly to the\r
+ * 'path' element in the language) are derivative from base class SVGElement.\r
+ */\r
+class SVGElement : public Element\r
+{\r
+public:\r
+\r
+    //####################################################################\r
+    //# BASE METHODS FOR SVGElement\r
+    //####################################################################\r
+\r
+    /**\r
+     * Get the value of the id attribute on the given element.\r
+     */\r
+    DOMString getId();\r
+\r
+    /**\r
+     * Set the value of the id attribute on the given element.\r
+     */\r
+    void setId(const DOMString &val) throw (DOMException);\r
+\r
+    /**\r
+     * Corresponds to attribute xml:base on the given element.\r
+     */\r
+    DOMString getXmlBase();\r
+\r
+    /**\r
+     * Corresponds to attribute xml:base on the given element.\r
+     */\r
+    void setXmlBase(const DOMString &val) throw (DOMException);\r
+\r
+    /**\r
+     * The nearest ancestor 'svg' element. Null if the given element is the\r
+     *      outermost 'svg' element.\r
+     */\r
+    SVGElementPtr getOwnerSVGElement();\r
+\r
+    /**\r
+     * The element which established the current viewport. Often, the nearest\r
+     * ancestor 'svg' element. Null if the given element is the outermost 'svg'\r
+     * element.\r
+     */\r
+    SVGElementPtr getViewportElement();\r
+\r
+\r
+    //####################################################################\r
+    //####################################################################\r
+    //# I N T E R F A C E S\r
+    //####################################################################\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGAngle                    \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    unsigned short getUnitType();\r
+\r
+    /**\r
+     *\r
+     */\r
+    double getValue();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setValue(double val) throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    double getValueInSpecifiedUnits();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setValueInSpecifiedUnits(double /*val*/) throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    DOMString getValueAsString();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setValueAsString(const DOMString &/*val*/) throw (DOMException);\r
+\r
+\r
+    /**\r
+     *\r
+     */\r
+    void newValueSpecifiedUnits(unsigned short /*unitType*/,\r
+                                double /*valueInSpecifiedUnits*/);\r
+\r
+    /**\r
+     *\r
+     */\r
+    void convertToSpecifiedUnits(unsigned short /*unitType*/);\r
+\r
+    //####################################################################\r
+    //# SVGAnimatedAngle            \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAngle getBaseAngleVal();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAngle getAnimAngleVal();\r
+\r
+\r
+    //####################################################################\r
+    //# SVGAnimatedBoolean          \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    bool getBaseBooleanVal();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setBaseBooleanVal(bool val) throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    bool getAnimBooleanVal();\r
+\r
+    //####################################################################\r
+    //# SVGAnimatedEnumeration      \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    unsigned short getBaseEnumerationVal();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setBaseEnumerationVal(unsigned short val) throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    unsigned short getAnimEnumerationVal();\r
+\r
+    //####################################################################\r
+    //# SVGAnimatedInteger          \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    long getBaseIntegerVal();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setBaseIntegerVal(long val) throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    long getAnimIntegerVal();\r
+\r
+    //####################################################################\r
+    //# SVGAnimatedLength           \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGLength &getBaseLengthVal();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGLength &getAnimLengthVal();\r
+\r
+    //####################################################################\r
+    //# SVGAnimatedLengthList       \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGLengthList &getBaseLengthListVal();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGLengthList &getAnimLengthListVal();\r
+\r
+    //####################################################################\r
+    //# SVGAnimatedNumber           \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    double getBaseNumberVal();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setBaseNumberVal(double val) throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    double getAnimNumberVal();\r
+\r
+    //####################################################################\r
+    //# SVGAnimatedNumberList       \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGNumberList &getBaseNumberListVal();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGNumberList &getAnimNumberListVal();\r
+\r
+    //####################################################################\r
+    //# SVGAnimatedRect             \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGRect &getBaseRectVal();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGRect &getAnimRectVal();\r
+\r
+    //####################################################################\r
+    //# SVGAnimatedString           \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    DOMString getBaseVal();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setBaseVal(const DOMString &val) throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    DOMString getAnimVal();\r
+\r
+    //####################################################################\r
+    //# SVGColor                    \r
+    //####################################################################\r
+\r
+    /**\r
+     * From CSSValue \r
+     * A code defining the type of the value as defined above.\r
+     */\r
+    unsigned short getCssValueType();\r
+\r
+    /**\r
+     * From CSSValue \r
+     * A string representation of the current value.\r
+     */\r
+    DOMString getCssText();\r
+\r
+    /**\r
+     * From CSSValue \r
+     * A string representation of the current value.\r
+     * Note that setting implies parsing.     \r
+     */\r
+    void setCssText(const DOMString &val) throw (dom::DOMException);\r
+\r
+\r
+    /**\r
+     *\r
+     */\r
+    unsigned short getColorType();\r
+\r
+    /**\r
+     *\r
+     */\r
+    css::RGBColor getRgbColor();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGICCColor getIccColor();\r
+\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setRGBColor(const DOMString& /*rgbColor*/) throw (SVGException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setRGBColorICCColor(const DOMString& /*rgbColor*/,\r
+                             const DOMString& /*iccColor*/)\r
+                             throw (SVGException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setColor(unsigned short /*colorType*/,\r
+                           const DOMString& /*rgbColor*/,\r
+                           const DOMString& /*iccColor*/)\r
+                           throw (SVGException);\r
+\r
+    //####################################################################\r
+    //# SVGCSSRule                  \r
+    //####################################################################\r
+\r
+    /**\r
+     * From CSSRule    \r
+     * The type of the rule, as defined above. The expectation is that \r
+     * binding-specific casting methods can be used to cast down from an instance of \r
+     * the CSSRule interface to the specific derived interface implied by the type.\r
+     */\r
+    unsigned short getType();\r
+\r
+    /**\r
+     * From CSSRule    \r
+     * The parsable textual representation of the rule. This reflects the current \r
+     * state of the rule and not its initial value.\r
+     */\r
+    DOMString getCssText();\r
+\r
+    /**\r
+     * From CSSRule    \r
+     * The parsable textual representation of the rule. This reflects the current \r
+     * state of the rule and not its initial value.\r
+     * Note that setting involves reparsing.     \r
+     */\r
+    void setCssText(const DOMString &val) throw (DOMException);\r
+\r
+    /**\r
+     * From CSSRule    \r
+     * The style sheet that contains this rule.\r
+     */\r
+    css::CSSStyleSheet *getParentStyleSheet();\r
+\r
+    /**\r
+     * From CSSRule    \r
+     * If this rule is contained inside another rule(e.g. a style rule inside an \r
+     * @media block), this is the containing rule. If this rule is not nested inside \r
+     * any other rules, this returns null.\r
+     */\r
+    css::CSSRule *getParentRule();\r
+\r
+    //####################################################################\r
+    //# SVGExternalResourcesRequired\r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedBoolean getExternalResourcesRequired();\r
+\r
+    //####################################################################\r
+    //# SVGFitToViewBox             \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedRect getViewBox();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedPreserveAspectRatio getPreserveAspectRatio();\r
+\r
+    //####################################################################\r
+    //# SVGICCColor                 \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    DOMString getColorProfile();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setColorProfile(const DOMString &val) throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGNumberList &getColors();\r
+\r
+    //####################################################################\r
+    //# SVGLangSpace                \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    DOMString getXmllang();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setXmllang(const DOMString &val) throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    DOMString getXmlspace();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setXmlspace(const DOMString &val) throw (DOMException);\r
+\r
+    //####################################################################\r
+    //# SVGLength                   \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    unsigned short getUnitType();\r
+\r
+    /**\r
+     *\r
+     */\r
+    double getValue();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setValue(double val) throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    double getValueInSpecifiedUnits();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setValueInSpecifiedUnits(double /*val*/) throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    DOMString getValueAsString();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setValueAsString(const DOMString& /*val*/) throw (DOMException);\r
+\r
+\r
+    /**\r
+     *\r
+     */\r
+    void newValueSpecifiedUnits(unsigned short /*unitType*/, double /*val*/);\r
+\r
+    /**\r
+     *\r
+     */\r
+    void convertToSpecifiedUnits(unsigned short /*unitType*/);\r
+\r
+    //####################################################################\r
+    //# SVGLengthList               \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    unsigned long getNumberOfItems();\r
+\r
+\r
+    /**\r
+     *\r
+     */\r
+    void clear() throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGLength initialize(const SVGLength &newItem)\r
+                    throw (DOMException, SVGException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGLength getItem(unsigned long index) throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGLength insertItemBefore(const SVGLength &newItem, unsigned long index)\r
+                                   throw (DOMException, SVGException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGLength replaceItem(const SVGLength &newItem, unsigned long index)\r
+                               throw (DOMException, SVGException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGLength removeItem(unsigned long index) throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGLength appendItem(const SVGLength &newItem)\r
+                    throw (DOMException, SVGException);\r
+\r
+    //####################################################################\r
+    //# SVGLocatable                \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGElementPtr getNearestViewportElement();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGElement *getFarthestViewportElement();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGRect getBBox();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGMatrix getCTM();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGMatrix getScreenCTM();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGMatrix getTransformToElement(const SVGElement &/*element*/)\r
+                                    throw (SVGException);\r
+\r
+    //####################################################################\r
+    //# SVGNumber                   \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    double getValue();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setValue(double val) throw (DOMException);\r
+\r
+    //####################################################################\r
+    //# SVGNumberList               \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    unsigned long getNumberOfItems();\r
+\r
+\r
+    /**\r
+     *\r
+     */\r
+    void clear() throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGNumber initialize(const SVGNumber &newItem)\r
+                    throw (DOMException, SVGException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGNumber getItem(unsigned long index) throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGNumber insertItemBefore(const SVGNumber &newItem, unsigned long index)\r
+                                         throw (DOMException, SVGException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGNumber replaceItem(const SVGNumber &newItem, unsigned long index)\r
+                          throw (DOMException, SVGException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGNumber removeItem(unsigned long index) throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGNumber appendItem(const SVGNumber &newItem)\r
+                                   throw (DOMException, SVGException);\r
+\r
+    //####################################################################\r
+    //# SVGRect                     \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    double getX();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setX(double val) throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    double getY();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setY(double val) throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    double getWidth();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setWidth(double val) throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    double getHeight();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setHeight(double val) throw (DOMException);\r
+\r
+    //####################################################################\r
+    //# SVGRenderingIntent          \r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGStringList               \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    unsigned long getNumberOfItems();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void clear() throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    DOMString initialize(const DOMString& newItem)\r
+                    throw (DOMException, SVGException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    DOMString getItem(unsigned long index) throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    DOMString insertItemBefore(const DOMString& newItem, unsigned long index)\r
+                               throw (DOMException, SVGException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    DOMString replaceItem(const DOMString& newItem, unsigned long index)\r
+                                throw (DOMException, SVGException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    DOMString removeItem(unsigned long index) throw (DOMException);\r
+\r
+    /**\r
+     *\r
+     */\r
+    DOMString appendItem(const DOMString& newItem)\r
+                    throw (DOMException, SVGException);\r
+\r
+    //####################################################################\r
+    //# SVGStylable                 \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedString getClassName();\r
+\r
+    /**\r
+     *\r
+     */\r
+    css::CSSStyleDeclaration getStyle();\r
+\r
+    /**\r
+     *\r
+     */\r
+    css::CSSValue getPresentationAttribute(const DOMString& /*name*/);\r
+\r
+    //####################################################################\r
+    //# SVGTests                    \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGStringList &getRequiredFeatures();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGStringList &getRequiredExtensions();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGStringList &getSystemLanguage();\r
+\r
+    /**\r
+     *\r
+     */\r
+    bool hasExtension(const DOMString& /*extension*/);\r
+\r
+    //####################################################################\r
+    //# SVGTransformable            \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedTransformList &getTransform();\r
+\r
+    //####################################################################\r
+    //# SVGUnitTypes                \r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGURIReference             \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedString getHref();\r
+\r
+    //####################################################################\r
+    //# SVGViewSpec                 \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGTransformList getTransform();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGElement *getViewTarget();\r
+\r
+    /**\r
+     *\r
+     */\r
+    DOMString getViewBoxString();\r
+\r
+    /**\r
+     *\r
+     */\r
+    DOMString getPreserveAspectRatioString();\r
+\r
+    /**\r
+     *\r
+     */\r
+    DOMString getTransformString();\r
+\r
+    /**\r
+     *\r
+     */\r
+    DOMString getViewTargetString();\r
+\r
+    //####################################################################\r
+    //# SVGZoomAndPan               \r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    unsigned short getZoomAndPan();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setZoomAndPan(unsigned short val) throw (DOMException);\r
+\r
+    //####################################################################\r
+    //####################################################################\r
+    //# E L E M E N T S\r
+    //####################################################################\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGAElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedString getTarget();\r
+\r
+\r
+\r
+    //####################################################################\r
+    //# SVGAltGlyphElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     * Get the attribute glyphRef on the given element.\r
+     */\r
+    DOMString getGlyphRef();\r
+\r
+    /**\r
+     * Set the attribute glyphRef on the given element.\r
+     */\r
+    void setGlyphRef(const DOMString &val) throw (DOMException);\r
+\r
+    /**\r
+     * Get the attribute format on the given element.\r
+     */\r
+    DOMString getFormat();\r
+\r
+    /**\r
+     * Set the attribute format on the given element.\r
+     */\r
+    void setFormat(const DOMString &val) throw (DOMException);\r
+\r
+\r
+    //####################################################################\r
+    //# SVGAltGlyphDefElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGAltGlyphItemElement\r
+    //####################################################################\r
+\r
+\r
+    //####################################################################\r
+    //# SVGAnimateElement\r
+    //####################################################################\r
+\r
+\r
+    //####################################################################\r
+    //# SVGAnimateColorElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGAnimateMotionElement\r
+    //####################################################################\r
+\r
+\r
+    //####################################################################\r
+    //# SVGAnimateTransformElement\r
+    //####################################################################\r
+\r
+\r
+    //####################################################################\r
+    //# SVGAnimationElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGElementPtr getTargetElement();\r
+\r
+    /**\r
+     *\r
+     */\r
+    double getStartTime();\r
+\r
+    /**\r
+     *\r
+     */\r
+    double getCurrentTime();\r
+\r
+    /**\r
+     *\r
+     */\r
+    double getSimpleDuration() throw (DOMException);\r
+\r
+\r
+\r
+    //####################################################################\r
+    //# SVGCircleElement\r
+    //####################################################################\r
+\r
+    /**\r
+     * Corresponds to attribute cx on the given 'circle' element.\r
+     */\r
+    SVGAnimatedLength getCx();\r
+\r
+    /**\r
+     * Corresponds to attribute cy on the given 'circle' element.\r
+     */\r
+    SVGAnimatedLength getCy();\r
+\r
+    /**\r
+     * Corresponds to attribute r on the given 'circle' element.\r
+     */\r
+    SVGAnimatedLength getR();\r
+\r
+    //####################################################################\r
+    //# SVGClipPathElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute clipPathUnits on the given 'clipPath' element.\r
+     *      Takes one of the constants defined in SVGUnitTypes.\r
+     */\r
+    SVGAnimatedEnumeration getClipPathUnits();\r
+\r
+\r
+\r
+    //####################################################################\r
+    //# SVGColorProfileElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     * Get the attribute local on the given element.\r
+     */\r
+    DOMString getLocal();\r
+\r
+    /**\r
+     * Set the attribute local on the given element.\r
+     */\r
+    void setLocal(const DOMString &val) throw (DOMException);\r
+\r
+    /**\r
+     * Get the attribute name on the given element.\r
+     */\r
+    DOMString getName();\r
+\r
+    /**\r
+     * Set the attribute name on the given element.\r
+     */\r
+    void setName(const DOMString &val) throw (DOMException);\r
+\r
+    /**\r
+     * Set the attribute rendering-intent on the given element.\r
+     * The type of rendering intent, identified by one of the\r
+     *      SVGRenderingIntent constants.\r
+     */\r
+    unsigned short getRenderingIntent();\r
+\r
+    /**\r
+     * Get the attribute rendering-intent on the given element.\r
+     */\r
+    void setRenderingIntent(unsigned short val) throw (DOMException);\r
+\r
+\r
+    //####################################################################\r
+    //# SVGComponentTransferFunctionElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     * Component Transfer Types\r
+     */\r
+    typedef enum\r
+        {\r
+        SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN  = 0,\r
+        SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1,\r
+        SVG_FECOMPONENTTRANSFER_TYPE_TABLE    = 2,\r
+        SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3,\r
+        SVG_FECOMPONENTTRANSFER_TYPE_LINEAR   = 4,\r
+        SVG_FECOMPONENTTRANSFER_TYPE_GAMMA    = 5\r
+        } ComponentTransferType;\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute type on the given element. Takes one\\r
+     *      of the Component Transfer Types.\r
+     */\r
+    SVGAnimatedEnumeration getType();\r
+\r
+    /**\r
+     * Corresponds to attribute tableValues on the given element.\r
+     */\r
+    SVGAnimatedNumberList getTableValues();\r
+\r
+    /**\r
+     * Corresponds to attribute slope on the given element.\r
+     */\r
+    SVGAnimatedNumber getSlope();\r
+\r
+    /**\r
+     * Corresponds to attribute intercept on the given element.\r
+     */\r
+    SVGAnimatedNumber getIntercept();\r
+\r
+    /**\r
+     * Corresponds to attribute amplitude on the given element.\r
+     */\r
+    SVGAnimatedNumber getAmplitude();\r
+\r
+    /**\r
+     * Corresponds to attribute exponent on the given element.\r
+     */\r
+    SVGAnimatedNumber getExponent();\r
+\r
+    /**\r
+     * Corresponds to attribute offset on the given element.\r
+     */\r
+    SVGAnimatedNumber getOffset();\r
+\r
+    //####################################################################\r
+    //# SVGCursorElement\r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedLength getX();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedLength getY();\r
+\r
+\r
+    //####################################################################\r
+    //# SVGDefinitionSrcElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGDefsElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGDescElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGEllipseElement\r
+    //####################################################################\r
+\r
+    /**\r
+     * Corresponds to attribute cx on the given 'ellipse' element.\r
+     */\r
+    SVGAnimatedLength getCx();\r
+\r
+    /**\r
+     * Corresponds to attribute cy on the given 'ellipse' element.\r
+     */\r
+    SVGAnimatedLength getCy();\r
+\r
+    /**\r
+     * Corresponds to attribute rx on the given 'ellipse' element.\r
+     */\r
+    SVGAnimatedLength getRx();\r
+\r
+    /**\r
+     * Corresponds to attribute ry on the given 'ellipse' element.\r
+     */\r
+    SVGAnimatedLength getRy();\r
+\r
+\r
+    //####################################################################\r
+    //# SVGFEBlendElement\r
+    //####################################################################\r
+\r
+    /**\r
+     * Blend Mode Types\r
+     */\r
+    typedef enum\r
+        {\r
+        SVG_FEBLEND_MODE_UNKNOWN  = 0,\r
+        SVG_FEBLEND_MODE_NORMAL   = 1,\r
+        SVG_FEBLEND_MODE_MULTIPLY = 2,\r
+        SVG_FEBLEND_MODE_SCREEN   = 3,\r
+        SVG_FEBLEND_MODE_DARKEN   = 4,\r
+        SVG_FEBLEND_MODE_LIGHTEN  = 5\r
+        } BlendModeType;\r
+\r
+    /**\r
+     * Corresponds to attribute in on the given 'feBlend' element.\r
+     */\r
+    SVGAnimatedString getIn1();\r
+\r
+    /**\r
+     * Corresponds to attribute in2 on the given 'feBlend' element.\r
+     */\r
+    SVGAnimatedString getIn2();\r
+\r
+    /**\r
+     * Corresponds to attribute mode on the given 'feBlend' element.\r
+     *      Takes one of the Blend Mode Types.\r
+     */\r
+    SVGAnimatedEnumeration getMode();\r
+\r
+\r
+    //####################################################################\r
+    //# SVGFEColorMatrixElement\r
+    //####################################################################\r
+\r
+    /**\r
+     * Color Matrix Types\r
+     */\r
+    typedef enum\r
+        {\r
+        SVG_FECOLORMATRIX_TYPE_UNKNOWN          = 0,\r
+        SVG_FECOLORMATRIX_TYPE_MATRIX           = 1,\r
+        SVG_FECOLORMATRIX_TYPE_SATURATE         = 2,\r
+        SVG_FECOLORMATRIX_TYPE_HUEROTATE        = 3,\r
+        SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4\r
+        } ColorMatrixType;\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute in on the given 'feColorMatrix' element.\r
+     */\r
+    SVGAnimatedString getIn1();\r
+\r
+    /**\r
+     * Corresponds to attribute type on the given 'feColorMatrix' element.\r
+     *      Takes one of the Color Matrix Types.\r
+     */\r
+    SVGAnimatedEnumeration getType();\r
+\r
+    /**\r
+     * Corresponds to attribute values on the given 'feColorMatrix' element.\r
+     * Provides access to the contents of the values attribute.\r
+     */\r
+    SVGAnimatedNumberList getValues();\r
+\r
+\r
+    //####################################################################\r
+    //# SVGFEComponentTransferElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute in on the given 'feComponentTransfer'  element.\r
+     */\r
+    SVGAnimatedString getIn1();\r
+\r
+    //####################################################################\r
+    //# SVGFECompositeElement\r
+    //####################################################################\r
+\r
+    /**\r
+     *  Composite Operators\r
+     */\r
+    typedef enum\r
+        {\r
+        SVG_FECOMPOSITE_OPERATOR_UNKNOWN    = 0,\r
+        SVG_FECOMPOSITE_OPERATOR_OVER       = 1,\r
+        SVG_FECOMPOSITE_OPERATOR_IN         = 2,\r
+        SVG_FECOMPOSITE_OPERATOR_OUT        = 3,\r
+        SVG_FECOMPOSITE_OPERATOR_ATOP       = 4,\r
+        SVG_FECOMPOSITE_OPERATOR_XOR        = 5,\r
+        SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6\r
+        } CompositeOperatorType;\r
+\r
+    /**\r
+     * Corresponds to attribute in on the given 'feComposite' element.\r
+     */\r
+    SVGAnimatedString getIn1();\r
+\r
+    /**\r
+     * Corresponds to attribute in2 on the given 'feComposite' element.\r
+     */\r
+    SVGAnimatedString getIn2();\r
+\r
+    /**\r
+     * Corresponds to attribute operator on the given 'feComposite' element.\r
+     *      Takes one of the Composite Operators.\r
+     */\r
+    SVGAnimatedEnumeration getOperator();\r
+\r
+    /**\r
+     * Corresponds to attribute k1 on the given 'feComposite' element.\r
+     */\r
+    SVGAnimatedNumber getK1();\r
+\r
+    /**\r
+     * Corresponds to attribute k2 on the given 'feComposite' element.\r
+     */\r
+    SVGAnimatedNumber getK2();\r
+\r
+    /**\r
+     * Corresponds to attribute k3 on the given 'feComposite' element.\r
+     */\r
+    SVGAnimatedNumber getK3();\r
+\r
+    /**\r
+     * Corresponds to attribute k4 on the given 'feComposite' element.\r
+     */\r
+    SVGAnimatedNumber getK4();\r
+\r
+\r
+    //####################################################################\r
+    //# SVGFEConvolveMatrixElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     * Edge Mode Values\r
+     */\r
+    typedef enum\r
+        {\r
+        SVG_EDGEMODE_UNKNOWN   = 0,\r
+        SVG_EDGEMODE_DUPLICATE = 1,\r
+        SVG_EDGEMODE_WRAP      = 2,\r
+        SVG_EDGEMODE_NONE      = 3\r
+        } EdgeModeType;\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute order on the given 'feConvolveMatrix'  element.\r
+     */\r
+    SVGAnimatedInteger getOrderX();\r
+\r
+    /**\r
+     * Corresponds to attribute order on the given 'feConvolveMatrix'  element.\r
+     */\r
+    SVGAnimatedInteger getOrderY();\r
+\r
+    /**\r
+     * Corresponds to attribute kernelMatrix on the given element.\r
+     */\r
+    SVGAnimatedNumberList getKernelMatrix();\r
+\r
+    /**\r
+     * Corresponds to attribute divisor on the given 'feConvolveMatrix' element.\r
+     */\r
+    SVGAnimatedNumber getDivisor();\r
+\r
+    /**\r
+     * Corresponds to attribute bias on the given 'feConvolveMatrix'  element.\r
+     */\r
+    SVGAnimatedNumber getBias();\r
+\r
+    /**\r
+     * Corresponds to attribute targetX on the given 'feConvolveMatrix'  element.\r
+     */\r
+    SVGAnimatedInteger getTargetX();\r
+\r
+    /**\r
+     * Corresponds to attribute targetY on the given 'feConvolveMatrix'  element.\r
+     */\r
+    SVGAnimatedInteger getTargetY();\r
+\r
+    /**\r
+     * Corresponds to attribute edgeMode on the given 'feConvolveMatrix'\r
+     *      element. Takes one of the Edge Mode Types.\r
+     */\r
+    SVGAnimatedEnumeration getEdgeMode();\r
+\r
+    /**\r
+     * Corresponds to attribute kernelUnitLength on the\r
+     *      given 'feConvolveMatrix'  element.\r
+     */\r
+    SVGAnimatedLength getKernelUnitLengthX();\r
+\r
+    /**\r
+     * Corresponds to attribute kernelUnitLength on the given\r
+     *      'feConvolveMatrix'  element.\r
+     */\r
+    SVGAnimatedLength getKernelUnitLengthY();\r
+\r
+    /**\r
+     * Corresponds to attribute preserveAlpha on the\r
+     *      given 'feConvolveMatrix'  element.\r
+     */\r
+    SVGAnimatedBoolean getPreserveAlpha();\r
+\r
+\r
+\r
+    //####################################################################\r
+    //# SVGFEDiffuseLightingElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute in on the given 'feDiffuseLighting'  element.\r
+     */\r
+    SVGAnimatedString getIn1();\r
+\r
+    /**\r
+     * Corresponds to attribute surfaceScale on the given\r
+     *      'feDiffuseLighting'  element.\r
+     */\r
+    SVGAnimatedNumber getSurfaceScale();\r
+\r
+    /**\r
+     * Corresponds to attribute diffuseConstant on the given\r
+     *      'feDiffuseLighting'  element.\r
+     */\r
+    SVGAnimatedNumber getDiffuseConstant();\r
+\r
+    /**\r
+     * Corresponds to attribute kernelUnitLength on the given\r
+     *      'feDiffuseLighting'  element.\r
+     */\r
+    SVGAnimatedNumber getKernelUnitLengthX();\r
+\r
+    /**\r
+     * Corresponds to attribute kernelUnitLength on the given\r
+     *      'feDiffuseLighting'  element.\r
+     */\r
+    SVGAnimatedNumber getKernelUnitLengthY();\r
+\r
+\r
+\r
+\r
+    //####################################################################\r
+    //# SVGFEDisplacementMapElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     *  Channel Selectors\r
+     */\r
+    typedef enum\r
+        {\r
+        SVG_CHANNEL_UNKNOWN = 0,\r
+        SVG_CHANNEL_R       = 1,\r
+        SVG_CHANNEL_G       = 2,\r
+        SVG_CHANNEL_B       = 3,\r
+        SVG_CHANNEL_A       = 4\r
+        } ChannelSelector;\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedString getIn1();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedString getIn2();\r
+\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedNumber getScale();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedEnumeration getXChannelSelector();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedEnumeration getYChannelSelector();\r
+\r
+    //####################################################################\r
+    //# SVGFEDistantLightElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute azimuth on the given 'feDistantLight'  element.\r
+     */\r
+    SVGAnimatedNumber getAzimuth();\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute elevation on the given 'feDistantLight'\r
+     *    element\r
+     */\r
+    SVGAnimatedNumber getElevation();\r
+\r
+\r
+    //####################################################################\r
+    //# SVGFEFloodElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedString getIn1();\r
+\r
+\r
+    //####################################################################\r
+    //# SVGFEFuncAElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGFEFuncBElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGFEFuncGElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGFEFuncRElement\r
+    //####################################################################\r
+\r
+\r
+    //####################################################################\r
+    //# SVGFEGaussianBlurElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedString getIn1();\r
+\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedNumber getStdDeviationX();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedNumber getStdDeviationY();\r
+\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setStdDeviation(double stdDeviationX, double stdDeviationY);\r
+\r
+\r
+    //####################################################################\r
+    //# SVGFEImageElement\r
+    //####################################################################\r
+\r
+\r
+    //####################################################################\r
+    //# SVGFEMergeElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGFEMergeNodeElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGFEMorphologyElement\r
+    //####################################################################\r
+\r
+\r
+\r
+    /**\r
+     *  Morphology Operators\r
+     */\r
+    typedef enum\r
+        {\r
+        SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0,\r
+        SVG_MORPHOLOGY_OPERATOR_ERODE   = 1,\r
+        SVG_MORPHOLOGY_OPERATOR_DILATE  = 2\r
+        } MorphologyOperatorType;\r
+\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedString getIn1();\r
+\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedEnumeration getOperator();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedLength getRadiusX();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedLength getRadiusY();\r
+\r
+    //####################################################################\r
+    //# SVGFEOffsetElement\r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedString getIn1();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedLength getDx();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedLength getDy();\r
+\r
+\r
+    //####################################################################\r
+    //# SVGFEPointLightElement\r
+    //####################################################################\r
+\r
+    /**\r
+     * Corresponds to attribute x on the given 'fePointLight' element.\r
+     */\r
+    SVGAnimatedNumber getX();\r
+\r
+    /**\r
+     * Corresponds to attribute y on the given 'fePointLight' element.\r
+     */\r
+    SVGAnimatedNumber getY();\r
+\r
+    /**\r
+     * Corresponds to attribute z on the given 'fePointLight' element.\r
+     */\r
+    SVGAnimatedNumber getZ();\r
+\r
+    //####################################################################\r
+    //# SVGFESpecularLightingElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedString getIn1();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedNumber getSurfaceScale();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedNumber getSpecularConstant();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedNumber getSpecularExponent();\r
+\r
+\r
+    //####################################################################\r
+    //# SVGFESpotLightElement\r
+    //####################################################################\r
+\r
+    /**\r
+     * Corresponds to attribute x on the given 'feSpotLight' element.\r
+     */\r
+    SVGAnimatedNumber getX();\r
+\r
+    /**\r
+     * Corresponds to attribute y on the given 'feSpotLight' element.\r
+     */\r
+    SVGAnimatedNumber getY();\r
+\r
+    /**\r
+     * Corresponds to attribute z on the given 'feSpotLight' element.\r
+     */\r
+    SVGAnimatedNumber getZ();\r
+\r
+    /**\r
+     * Corresponds to attribute pointsAtX on the given 'feSpotLight' element.\r
+     */\r
+    SVGAnimatedNumber getPointsAtX();\r
+\r
+    /**\r
+     * Corresponds to attribute pointsAtY on the given 'feSpotLight' element.\r
+     */\r
+    SVGAnimatedNumber getPointsAtY();\r
+\r
+    /**\r
+     * Corresponds to attribute pointsAtZ on the given 'feSpotLight' element.\r
+     */\r
+    SVGAnimatedNumber getPointsAtZ();\r
+\r
+    /**\r
+     * Corresponds to attribute specularExponent on the\r
+     *      given 'feSpotLight'  element.\r
+     */\r
+    SVGAnimatedNumber getSpecularExponent();\r
+\r
+    /**\r
+     * Corresponds to attribute limitingConeAngle on the\r
+     *      given 'feSpotLight'  element.\r
+     */\r
+    SVGAnimatedNumber getLimitingConeAngle();\r
+\r
+\r
+    //####################################################################\r
+    //# SVGFETileElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedString getIn1();\r
+\r
+\r
+    //####################################################################\r
+    //# SVGFETurbulenceElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     *  Turbulence Types\r
+     */\r
+    typedef enum\r
+        {\r
+        SVG_TURBULENCE_TYPE_UNKNOWN      = 0,\r
+        SVG_TURBULENCE_TYPE_FRACTALNOISE = 1,\r
+        SVG_TURBULENCE_TYPE_TURBULENCE   = 2\r
+        } TurbulenceType;\r
+\r
+    /**\r
+     *  Stitch Options\r
+     */\r
+    typedef enum\r
+        {\r
+        SVG_STITCHTYPE_UNKNOWN  = 0,\r
+        SVG_STITCHTYPE_STITCH   = 1,\r
+        SVG_STITCHTYPE_NOSTITCH = 2\r
+        } StitchOption;\r
+\r
+\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedNumber getBaseFrequencyX();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedNumber getBaseFrequencyY();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedInteger getNumOctaves();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedNumber getSeed();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedEnumeration getStitchTiles();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedEnumeration getType();\r
+\r
+\r
+\r
+    //####################################################################\r
+    //# SVGFilterElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute filterUnits on the given 'filter' element. Takes one\r
+     * of the constants defined in SVGUnitTypes.\r
+     */\r
+    SVGAnimatedEnumeration getFilterUnits();\r
+\r
+    /**\r
+     * Corresponds to attribute primitiveUnits on the given 'filter' element. Takes\r
+     * one of the constants defined in SVGUnitTypes.\r
+     */\r
+    SVGAnimatedEnumeration getPrimitiveUnits();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedLength getX();\r
+\r
+    /**\r
+     * Corresponds to attribute x on the given 'filter' element.\r
+     */\r
+    SVGAnimatedLength getY();\r
+\r
+    /**\r
+     * Corresponds to attribute y on the given 'filter' element.\r
+     */\r
+    SVGAnimatedLength getWidth();\r
+\r
+    /**\r
+     * Corresponds to attribute height on the given 'filter' element.\r
+     */\r
+    SVGAnimatedLength getHeight();\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute filterRes on the given 'filter' element.\r
+     *      Contains the X component of attribute filterRes.\r
+     */\r
+    SVGAnimatedInteger getFilterResX();\r
+\r
+    /**\r
+     * Corresponds to attribute filterRes on the given 'filter' element.\r
+     * Contains the Y component(possibly computed automatically)\r
+     *      of attribute filterRes.\r
+     */\r
+    SVGAnimatedInteger getFilterResY();\r
+\r
+    /**\r
+     * Sets the values for attribute filterRes.\r
+     */\r
+    void setFilterRes(unsigned long filterResX, unsigned long filterResY);\r
+\r
+\r
+    //####################################################################\r
+    //# SVGFontElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGFontFaceElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGFontFaceFormatElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGFontFaceNameElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGFontFaceSrcElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGFontFaceUriElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGForeignObjectElement\r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedLength getX();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedLength getY();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedLength getWidth();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedLength getHeight();\r
+\r
+\r
+\r
+    //####################################################################\r
+    //# SVGGlyphRefElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     * Get the attribute glyphRef on the given element.\r
+     */\r
+    DOMString getGlyphRef();\r
+\r
+    /**\r
+     * Set the attribute glyphRef on the given element.\r
+     */\r
+    void setGlyphRef(const DOMString &val) throw (DOMException);\r
+\r
+    /**\r
+     * Get the attribute format on the given element.\r
+     */\r
+    DOMString getFormat();\r
+\r
+    /**\r
+     * Set the attribute format on the given element.\r
+     */\r
+    void setFormat(const DOMString &val) throw (DOMException);\r
+\r
+    /**\r
+     * Get the attribute x on the given element.\r
+     */\r
+    double getX();\r
+\r
+    /**\r
+     * Set the attribute x on the given element.\r
+     */\r
+    void setX(double val) throw (DOMException);\r
+\r
+    /**\r
+     * Get the attribute y on the given element.\r
+     */\r
+    double getY();\r
+\r
+    /**\r
+     * Set the attribute y on the given element.\r
+     */\r
+    void setY(double val) throw (DOMException);\r
+\r
+    /**\r
+     * Get the attribute dx on the given element.\r
+     */\r
+    double getDx();\r
+\r
+    /**\r
+     * Set the attribute dx on the given element.\r
+     */\r
+    void setDx(double val) throw (DOMException);\r
+\r
+    /**\r
+     * Get the attribute dy on the given element.\r
+     */\r
+    double getDy();\r
+\r
+    /**\r
+     * Set the attribute dy on the given element.\r
+     */\r
+    void setDy(double val) throw (DOMException);\r
+\r
+\r
+    //####################################################################\r
+    //# SVGGradientElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     * Spread Method Types\r
+     */\r
+    typedef enum\r
+        {\r
+        SVG_SPREADMETHOD_UNKNOWN = 0,\r
+        SVG_SPREADMETHOD_PAD     = 1,\r
+        SVG_SPREADMETHOD_REFLECT = 2,\r
+        SVG_SPREADMETHOD_REPEAT  = 3\r
+        } SpreadMethodType;\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute gradientUnits on the given element.\r
+     *      Takes one of the constants defined in SVGUnitTypes.\r
+     */\r
+    SVGAnimatedEnumeration getGradientUnits();\r
+\r
+    /**\r
+     * Corresponds to attribute gradientTransform on the given element.\r
+     */\r
+    SVGAnimatedTransformList getGradientTransform();\r
+\r
+    /**\r
+     * Corresponds to attribute spreadMethod on the given element.\r
+     *      One of the Spread Method Types.\r
+     */\r
+    SVGAnimatedEnumeration getSpreadMethod();\r
+\r
+\r
+\r
+    //####################################################################\r
+    //# SVGHKernElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGImageElement\r
+    //####################################################################\r
+\r
+    /**\r
+     * Corresponds to attribute x on the given 'image' element.\r
+     */\r
+    SVGAnimatedLength getX();\r
+\r
+    /**\r
+     * Corresponds to attribute y on the given 'image' element.\r
+     */\r
+    SVGAnimatedLength getY();\r
+\r
+    /**\r
+     * Corresponds to attribute width on the given 'image' element.\r
+     */\r
+    SVGAnimatedLength getWidth();\r
+\r
+    /**\r
+     * Corresponds to attribute height on the given 'image' element.\r
+     */\r
+    SVGAnimatedLength getHeight();\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute preserveAspectRatio on the given element.\r
+     */\r
+    SVGAnimatedPreserveAspectRatio getPreserveAspectRatio();\r
+\r
+    //####################################################################\r
+    //# SVGLinearGradientElement\r
+    //####################################################################\r
+\r
+    /**\r
+     * Corresponds to attribute x1 on the given 'linearGradient'  element.\r
+     */\r
+    SVGAnimatedLength getX1();\r
+\r
+    /**\r
+     * Corresponds to attribute y1 on the given 'linearGradient'  element.\r
+     */\r
+    SVGAnimatedLength getY1();\r
+\r
+    /**\r
+     * Corresponds to attribute x2 on the given 'linearGradient'  element.\r
+     */\r
+    SVGAnimatedLength getX2();\r
+\r
+    /**\r
+     * Corresponds to attribute y2 on the given 'linearGradient'  element.\r
+     */\r
+    SVGAnimatedLength getY2();\r
+\r
+\r
+\r
+    //####################################################################\r
+    //# SVGLineElement\r
+    //####################################################################\r
+\r
+    /**\r
+     * Corresponds to attribute x1 on the given 'line' element.\r
+     */\r
+    SVGAnimatedLength getX1();\r
+\r
+    /**\r
+     * Corresponds to attribute y1 on the given 'line' element.\r
+     */\r
+    SVGAnimatedLength getY1();\r
+\r
+    /**\r
+     * Corresponds to attribute x2 on the given 'line' element.\r
+     */\r
+    SVGAnimatedLength getX2();\r
+\r
+    /**\r
+     * Corresponds to attribute y2 on the given 'line' element.\r
+     */\r
+    SVGAnimatedLength getY2();\r
+\r
+\r
+    //####################################################################\r
+    //# SVGMarkerElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     * Marker Unit Types\r
+     */\r
+    typedef enum\r
+        {\r
+        SVG_MARKERUNITS_UNKNOWN        = 0,\r
+        SVG_MARKERUNITS_USERSPACEONUSE = 1,\r
+        SVG_MARKERUNITS_STROKEWIDTH    = 2\r
+        } MarkerUnitType;\r
+\r
+    /**\r
+     * Marker Orientation Types\r
+     */\r
+    typedef enum\r
+        {\r
+        SVG_MARKER_ORIENT_UNKNOWN      = 0,\r
+        SVG_MARKER_ORIENT_AUTO         = 1,\r
+        SVG_MARKER_ORIENT_ANGLE        = 2\r
+        } MarkerOrientationType;\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute refX on the given 'marker' element.\r
+     */\r
+    SVGAnimatedLength getRefX();\r
+\r
+    /**\r
+     * Corresponds to attribute refY on the given 'marker' element.\r
+     */\r
+    SVGAnimatedLength getRefY();\r
+\r
+    /**\r
+     * Corresponds to attribute markerUnits on the given 'marker' element.\r
+     *      One of the Marker Units Types defined above.\r
+     */\r
+    SVGAnimatedEnumeration getMarkerUnits();\r
+\r
+    /**\r
+     * Corresponds to attribute markerWidth on the given 'marker' element.\r
+     */\r
+    SVGAnimatedLength getMarkerWidth();\r
+\r
+    /**\r
+     * Corresponds to attribute markerHeight on the given 'marker' element.\r
+     */\r
+    SVGAnimatedLength getMarkerHeight();\r
+\r
+    /**\r
+     * Corresponds to attribute orient on the given 'marker' element.\r
+     *      One of the Marker Orientation Types defined above.\r
+     */\r
+    SVGAnimatedEnumeration getOrientType();\r
+\r
+    /**\r
+     * Corresponds to attribute orient on the given 'marker' element.\r
+     * If markerUnits is SVG_MARKER_ORIENT_ANGLE, the angle value for\r
+     * attribute orient; otherwise, it will be set to zero.\r
+     */\r
+    SVGAnimatedAngle getOrientAngle();\r
+\r
+\r
+    /**\r
+     * Sets the value of attribute orient to 'auto'.\r
+     */\r
+    void setOrientToAuto();\r
+\r
+    /**\r
+     * Sets the value of attribute orient to the given angle.\r
+     */\r
+    void setOrientToAngle(const SVGAngle &angle);\r
+\r
+\r
+    //####################################################################\r
+    //# SVGMaskElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute maskUnits on the given 'mask' element. Takes one of\r
+     * the constants defined in SVGUnitTypes.\r
+     */\r
+    SVGAnimatedEnumeration getMaskUnits();\r
+\r
+    /**\r
+     * Corresponds to attribute maskContentUnits on the given 'mask' element. Takes\r
+     * one of the constants defined in SVGUnitTypes.\r
+     */\r
+    SVGAnimatedEnumeration getMaskContentUnits();\r
+\r
+    /**\r
+     * Corresponds to attribute x on the given 'mask' element.\r
+     */\r
+    SVGAnimatedLength getX();\r
+\r
+    /**\r
+     * Corresponds to attribute y on the given 'mask' element.\r
+     */\r
+    SVGAnimatedLength getY();\r
+\r
+    /**\r
+     * Corresponds to attribute width on the given 'mask' element.\r
+     */\r
+    SVGAnimatedLength getWidth();\r
+\r
+    /**\r
+     * Corresponds to attribute height on the given 'mask' element.\r
+     */\r
+    SVGAnimatedLength getHeight();\r
+\r
+    //####################################################################\r
+    //# SVGMetadataElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGMPathElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGPathElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGPatternElement\r
+    //####################################################################\r
+\r
+    /**\r
+     * Corresponds to attribute patternUnits on the given 'pattern' element.\r
+     * Takes one of the constants defined in SVGUnitTypes.\r
+     */\r
+    SVGAnimatedEnumeration getPatternUnits();\r
+\r
+    /**\r
+     * Corresponds to attribute patternContentUnits on the given 'pattern'\r
+     *      element. Takes one of the constants defined in SVGUnitTypes.\r
+     */\r
+    SVGAnimatedEnumeration getPatternContentUnits();\r
+\r
+    /**\r
+     * Corresponds to attribute patternTransform on the given 'pattern' element.\r
+     */\r
+    SVGAnimatedTransformList getPatternTransform();\r
+\r
+    /**\r
+     * Corresponds to attribute x on the given 'pattern' element.\r
+     */\r
+    SVGAnimatedLength getX();\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGAnimatedLength getY();\r
+\r
+    /**\r
+     * Corresponds to attribute width on the given 'pattern' element.\r
+     */\r
+    SVGAnimatedLength getWidth();\r
+\r
+    /**\r
+     * Corresponds to attribute height on the given 'pattern' element.\r
+     */\r
+    SVGAnimatedLength getHeight();\r
+\r
+\r
+    //####################################################################\r
+    //# SVGPolyLineElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGPolygonElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGMissingGlyphElement\r
+    //####################################################################\r
+\r
+    /**\r
+     * Corresponds to attribute pathLength on the given 'path' element.\r
+     */\r
+    SVGAnimatedNumber getPathLength();\r
+\r
+    /**\r
+     * Returns the user agent's computed value for the total length of the path using\r
+     * the user agent's distance-along-a-path algorithm, as a distance in the current\r
+     * user coordinate system.\r
+     */\r
+    double getTotalLength();\r
+\r
+    /**\r
+     * Returns the(x,y) coordinate in user space which is distance units along the\r
+     * path, utilizing the user agent's distance-along-a-path algorithm.\r
+     */\r
+    SVGPoint getPointAtLength(double distance);\r
+\r
+    /**\r
+     * Returns the index into pathSegList which is distance units along the path,\r
+     * utilizing the user agent's distance-along-a-path algorithm.\r
+     */\r
+    unsigned long getPathSegAtLength(double distance);\r
+\r
+    /**\r
+     * Returns a stand-alone, parentless SVGPathSegClosePath object.\r
+     */\r
+    SVGPathSegClosePath\r
+              createSVGPathSegClosePath();\r
+\r
+    /**\r
+     * Returns a stand-alone, parentless SVGPathSegMovetoAbs object.\r
+     */\r
+    SVGPathSegMovetoAbs\r
+              createSVGPathSegMovetoAbs(double x, double y);\r
+\r
+    /**\r
+     * Returns a stand-alone, parentless SVGPathSegMovetoRel object.\r
+     */\r
+    SVGPathSegMovetoRel\r
+              createSVGPathSegMovetoRel(double x, double y);\r
+\r
+    /**\r
+     * Returns a stand-alone, parentless SVGPathSegLinetoAbs object.\r
+     */\r
+    SVGPathSegLinetoAbs\r
+              createSVGPathSegLinetoAbs(double x, double y);\r
+\r
+    /**\r
+     * Returns a stand-alone, parentless SVGPathSegLinetoRel object.\r
+     */\r
+    SVGPathSegLinetoRel\r
+              createSVGPathSegLinetoRel(double x, double y);\r
+\r
+    /**\r
+     * Returns a stand-alone, parentless SVGPathSegCurvetoCubicAbs object.\r
+     */\r
+    SVGPathSegCurvetoCubicAbs\r
+              createSVGPathSegCurvetoCubicAbs(double x, double y,\r
+                        double x1, double y1, double x2, double y2);\r
+\r
+    /**\r
+     * Returns a stand-alone, parentless SVGPathSegCurvetoCubicRel object.\r
+     */\r
+    SVGPathSegCurvetoCubicRel\r
+              createSVGPathSegCurvetoCubicRel(double x, double y,\r
+                        double x1, double y1, double x2, double y2);\r
+\r
+    /**\r
+     * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticAbs object.\r
+     */\r
+    SVGPathSegCurvetoQuadraticAbs\r
+              createSVGPathSegCurvetoQuadraticAbs(double x, double y,\r
+                         double x1, double y1);\r
+\r
+    /**\r
+     * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticRel object.\r
+     */\r
+    SVGPathSegCurvetoQuadraticRel\r
+              createSVGPathSegCurvetoQuadraticRel(double x, double y,\r
+                         double x1, double y1);\r
+\r
+    /**\r
+     * Returns a stand-alone, parentless SVGPathSegArcAbs object.\r
+     */\r
+    SVGPathSegArcAbs\r
+              createSVGPathSegArcAbs(double x, double y,\r
+                         double r1, double r2, double angle,\r
+                         bool largeArcFlag, bool sweepFlag);\r
+\r
+    /**\r
+     * Returns a stand-alone, parentless SVGPathSegArcRel object.\r
+     */\r
+    SVGPathSegArcRel\r
+              createSVGPathSegArcRel(double x, double y, double r1,\r
+                         double r2, double angle, bool largeArcFlag,\r
+                         bool sweepFlag);\r
+\r
+    /**\r
+     * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalAbs object.\r
+     */\r
+    SVGPathSegLinetoHorizontalAbs\r
+              createSVGPathSegLinetoHorizontalAbs(double x);\r
+\r
+    /**\r
+     * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalRel object.\r
+     */\r
+    SVGPathSegLinetoHorizontalRel\r
+              createSVGPathSegLinetoHorizontalRel(double x);\r
+\r
+    /**\r
+     * Returns a stand-alone, parentless SVGPathSegLinetoVerticalAbs object.\r
+     */\r
+    SVGPathSegLinetoVerticalAbs\r
+              createSVGPathSegLinetoVerticalAbs(double y);\r
+\r
+    /**\r
+     * Returns a stand-alone, parentless SVGPathSegLinetoVerticalRel object.\r
+     */\r
+    SVGPathSegLinetoVerticalRel\r
+              createSVGPathSegLinetoVerticalRel(double y);\r
+\r
+    /**\r
+     * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothAbs object.\r
+     */\r
+    SVGPathSegCurvetoCubicSmoothAbs\r
+              createSVGPathSegCurvetoCubicSmoothAbs(double x, double y,\r
+                                             double x2, double y2);\r
+\r
+    /**\r
+     * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothRel object.\r
+     */\r
+    SVGPathSegCurvetoCubicSmoothRel\r
+              createSVGPathSegCurvetoCubicSmoothRel(double x, double y,\r
+                                                      double x2, double y2);\r
+\r
+    /**\r
+     * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothAbs\r
+     *      object.\r
+     */\r
+    SVGPathSegCurvetoQuadraticSmoothAbs\r
+              createSVGPathSegCurvetoQuadraticSmoothAbs(double x, double y);\r
+\r
+    /**\r
+     * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothRel\r
+     *      object.\r
+     */\r
+    SVGPathSegCurvetoQuadraticSmoothRel\r
+              createSVGPathSegCurvetoQuadraticSmoothRel(double x, double y);\r
+\r
+\r
+    //####################################################################\r
+    //# SVGRadialGradientElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute cx on the given 'radialGradient'  element.\r
+     */\r
+    SVGAnimatedLength getCx();\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute cy on the given 'radialGradient'  element.\r
+     */\r
+    SVGAnimatedLength getCy();\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute r on the given 'radialGradient'  element.\r
+     */\r
+    SVGAnimatedLength getR();\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute fx on the given 'radialGradient'  element.\r
+     */\r
+    SVGAnimatedLength getFx();\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute fy on the given 'radialGradient'  element.\r
+     */\r
+    SVGAnimatedLength getFy();\r
+\r
+\r
+    //####################################################################\r
+    //# SVGRectElement\r
+    //####################################################################\r
+\r
+    /**\r
+     * Corresponds to attribute x on the given 'rect' element.\r
+     */\r
+    SVGAnimatedLength getX();\r
+\r
+    /**\r
+     * Corresponds to attribute y on the given 'rect' element.\r
+     */\r
+    SVGAnimatedLength getY();\r
+\r
+    /**\r
+     * Corresponds to attribute width on the given 'rect' element.\r
+     */\r
+    SVGAnimatedLength getWidth();\r
+\r
+    /**\r
+     * Corresponds to attribute height on the given 'rect' element.\r
+     */\r
+    SVGAnimatedLength getHeight();\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute rx on the given 'rect' element.\r
+     */\r
+    SVGAnimatedLength getRx();\r
+\r
+    /**\r
+     * Corresponds to attribute ry on the given 'rect' element.\r
+     */\r
+    SVGAnimatedLength getRy();\r
+\r
+\r
+    //####################################################################\r
+    //# SVGScriptElement\r
+    //####################################################################\r
+\r
+    /**\r
+     *\r
+     */\r
+    DOMString getType();\r
+\r
+    /**\r
+     *\r
+     */\r
+    void setType(const DOMString &val) throw (DOMException);\r
+\r
+    //####################################################################\r
+    //# SVGSetElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGStopElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute offset on the given 'stop' element.\r
+     */\r
+    SVGAnimatedNumber getOffset();\r
+\r
+\r
+    //####################################################################\r
+    //# SVGStyleElement\r
+    //####################################################################\r
+\r
+    /**\r
+     * Get the attribute xml:space on the given element.\r
+     */\r
+    DOMString getXmlspace();\r
+\r
+    /**\r
+     * Set the attribute xml:space on the given element.\r
+     */\r
+    void setXmlspace(const DOMString &val) throw (DOMException);\r
+\r
+    /**\r
+     * Get the attribute type on the given 'style' element.\r
+     */\r
+    DOMString getType();\r
+\r
+    /**\r
+     * Set the attribute type on the given 'style' element.\r
+     */\r
+    void setType(const DOMString &val) throw (DOMException);\r
+\r
+    /**\r
+     * Get the attribute media on the given 'style' element.\r
+     */\r
+    DOMString getMedia();\r
+\r
+    /**\r
+     * Set the attribute media on the given 'style' element.\r
+     */\r
+    void setMedia(const DOMString &val) throw (DOMException);\r
+\r
+    /**\r
+     * Get the attribute title on the given 'style' element.\r
+     */\r
+    DOMString getTitle();\r
+\r
+    /**\r
+     * Set the attribute title on the given 'style' element.\r
+     */\r
+    void setTitle(const DOMString &val) throw (DOMException);\r
+\r
+    //####################################################################\r
+    //# SVGSymbolElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGSVGElement\r
+    //####################################################################\r
+\r
+    /**\r
+     * Corresponds to attribute x on the given 'svg' element.\r
+     */\r
+    SVGAnimatedLength getX();\r
+\r
+    /**\r
+     * Corresponds to attribute y on the given 'svg' element.\r
+     */\r
+    SVGAnimatedLength getY();\r
+\r
+    /**\r
+     * Corresponds to attribute width on the given 'svg' element.\r
+     */\r
+    SVGAnimatedLength getWidth();\r
+\r
+    /**\r
+     * Corresponds to attribute height on the given 'svg' element.\r
+     */\r
+    SVGAnimatedLength getHeight();\r
+\r
+    /**\r
+     * Get the attribute contentScriptType on the given 'svg' element.\r
+     */\r
+    DOMString getContentScriptType();\r
+\r
+    /**\r
+     * Set the attribute contentScriptType on the given 'svg' element.\r
+     */\r
+    void setContentScriptType(const DOMString &val) throw (DOMException);\r
+\r
+\r
+    /**\r
+     * Get the attribute contentStyleType on the given 'svg' element.\r
+     */\r
+    DOMString getContentStyleType();\r
+\r
+    /**\r
+     * Set the attribute contentStyleType on the given 'svg' element.\r
+     */\r
+    void setContentStyleType(const DOMString &val) throw (DOMException);\r
+\r
+    /**\r
+     * The position and size of the viewport(implicit or explicit) that corresponds\r
+     * to this 'svg' element. When the user agent is actually rendering the content,\r
+     * then the position and size values represent the actual values when rendering.\r
+     * The position and size values are unitless values in the coordinate system of\r
+     * the parent element. If no parent element exists(i.e., 'svg' element\r
+     * represents the root of the document tree), if this SVG document is embedded as\r
+     * part of another document(e.g., via the HTML 'object' element), then the\r
+     * position and size are unitless values in the coordinate system of the parent\r
+     * document.(If the parent uses CSS or XSL layout, then unitless values\r
+     * represent pixel units for the current CSS or XSL viewport, as described in the\r
+     * CSS2 specification.) If the parent element does not have a coordinate system,\r
+     * then the user agent should provide reasonable default values for this attribute.\r
+     *      */\r
+    SVGRect getViewport();\r
+\r
+    /**\r
+     * Size of a pixel units(as defined by CSS2) along the x-axis of the viewport,\r
+     * which represents a unit somewhere in the range of 70dpi to 120dpi, and, on\r
+     * systems that support this, might actually match the characteristics of the\r
+     * target medium. On systems where it is impossible to know the size of a pixel,\r
+     * a suitable default pixel size is provided.\r
+     */\r
+    double getPixelUnitToMillimeterX();\r
+\r
+    /**\r
+     * Corresponding size of a pixel unit along the y-axis of the viewport.\r
+     */\r
+    double getPixelUnitToMillimeterY();\r
+\r
+    /**\r
+     * User interface(UI) events in DOM Level 2 indicate the screen positions at\r
+     * which the given UI event occurred. When the user agent actually knows the\r
+     * physical size of a "screen unit", this attribute will express that information;\r
+     *  otherwise, user agents will provide a suitable default value such as .28mm.\r
+     */\r
+    double getScreenPixelToMillimeterX();\r
+\r
+    /**\r
+     * Corresponding size of a screen pixel along the y-axis of the viewport.\r
+     */\r
+    double getScreenPixelToMillimeterY();\r
+\r
+\r
+    /**\r
+     * The initial view(i.e., before magnification and panning) of the current\r
+     * innermost SVG document fragment can be either the "standard" view(i.e., based\r
+     * on attributes on the 'svg' element such as fitBoxToViewport) or to a "custom"\r
+     * view(i.e., a hyperlink into a particular 'view' or other element - see\r
+     * Linking into SVG content: URI fragments and SVG views). If the initial view is\r
+     * the "standard" view, then this attribute is false. If the initial view is a\r
+     * "custom" view, then this attribute is true.\r
+     */\r
+    bool getUseCurrentView();\r
+\r
+    /**\r
+     * Set the value above\r
+     */\r
+    void setUseCurrentView(bool val) throw (DOMException);\r
+\r
+    /**\r
+     * The definition of the initial view(i.e., before magnification and panning) of\r
+     * the current innermost SVG document fragment. The meaning depends on the\r
+     * situation:\r
+     * \r
+     *    * If the initial view was a "standard" view, then:\r
+     *      o the values for viewBox, preserveAspectRatio and zoomAndPan within\r
+     *        currentView will match the values for the corresponding DOM attributes that\r
+     *        are on SVGSVGElement directly\r
+     *      o the values for transform and viewTarget within currentView will be null\r
+     *    * If the initial view was a link into a 'view' element, then:\r
+     *      o the values for viewBox, preserveAspectRatio and zoomAndPan within\r
+     *        currentView will correspond to the corresponding attributes for the given\r
+     *        'view' element\r
+     *      o the values for transform and viewTarget within currentView will be null\r
+     *    * If the initial view was a link into another element(i.e., other than a\r
+     *      'view'), then:\r
+     *      o the values for viewBox, preserveAspectRatio and zoomAndPan within\r
+     *        currentView will match the values for the corresponding DOM attributes that\r
+     *        are on SVGSVGElement directly for the closest ancestor 'svg' element\r
+     *      o the values for transform within currentView will be null\r
+     *      o the viewTarget within currentView will represent the target of the link\r
+     *    * If the initial view was a link into the SVG document fragment using an SVG\r
+     *      view specification fragment identifier(i.e., #svgView(...)), then:\r
+     *      o the values for viewBox, preserveAspectRatio, zoomAndPan, transform and\r
+     *        viewTarget within currentView will correspond to the values from the SVG view\r
+     *        specification fragment identifier\r
+     * \r
+     */\r
+    SVGViewSpec getCurrentView();\r
+\r
+\r
+    /**\r
+     * This attribute indicates the current scale factor relative to the initial view\r
+     * to take into account user magnification and panning operations, as described\r
+     * under Magnification and panning. DOM attributes currentScale and\r
+     * currentTranslate are equivalent to the 2x3 matrix [a b c d e f] =\r
+     * [currentScale 0 0 currentScale currentTranslate.x currentTranslate.y]. If\r
+     * "magnification" is enabled(i.e., zoomAndPan="magnify"), then the effect is as\r
+     * if an extra transformation were placed at the outermost level on the SVG\r
+     * document fragment(i.e., outside the outermost 'svg' element).\r
+     */\r
+    double getCurrentScale();\r
+\r
+    /**\r
+     *  Set the value above.\r
+     */\r
+    void setCurrentScale(double val) throw (DOMException);\r
+\r
+    /**\r
+     * The corresponding translation factor that takes into account\r
+     *      user "magnification".\r
+     */\r
+    SVGPoint getCurrentTranslate();\r
+\r
+    /**\r
+     * Takes a time-out value which indicates that redraw shall not occur until:(a)\r
+     * the corresponding unsuspendRedraw(suspend_handle_id) call has been made,(b)\r
+     * an unsuspendRedrawAll() call has been made, or(c) its timer has timed out. In\r
+     * environments that do not support interactivity(e.g., print media), then\r
+     * redraw shall not be suspended. suspend_handle_id =\r
+     * suspendRedraw(max_wait_milliseconds) and unsuspendRedraw(suspend_handle_id)\r
+     * must be packaged as balanced pairs. When you want to suspend redraw actions as\r
+     * a collection of SVG DOM changes occur, then precede the changes to the SVG DOM\r
+     * with a method call similar to suspend_handle_id =\r
+     * suspendRedraw(max_wait_milliseconds) and follow the changes with a method call\r
+     * similar to unsuspendRedraw(suspend_handle_id). Note that multiple\r
+     * suspendRedraw calls can be used at once and that each such method call is\r
+     * treated independently of the other suspendRedraw method calls.\r
+     */\r
+    unsigned long suspendRedraw(unsigned long max_wait_milliseconds);\r
+\r
+    /**\r
+     * Cancels a specified suspendRedraw() by providing a unique suspend_handle_id.\r
+     */\r
+    void unsuspendRedraw(unsigned long suspend_handle_id) throw (DOMException);\r
+\r
+    /**\r
+     * Cancels all currently active suspendRedraw() method calls. This method is most\r
+     * useful at the very end of a set of SVG DOM calls to ensure that all pending\r
+     * suspendRedraw() method calls have been cancelled.\r
+     */\r
+    void unsuspendRedrawAll();\r
+\r
+    /**\r
+     * In rendering environments supporting interactivity, forces the user agent to\r
+     * immediately redraw all regions of the viewport that require updating.\r
+     */\r
+    void forceRedraw();\r
+\r
+    /**\r
+     * Suspends(i.e., pauses) all currently running animations that are defined\r
+     * within the SVG document fragment corresponding to this 'svg' element, causing\r
+     * the animation clock corresponding to this document fragment to stand still\r
+     * until it is unpaused.\r
+     */\r
+    void pauseAnimations();\r
+\r
+    /**\r
+     * Unsuspends(i.e., unpauses) currently running animations that are defined\r
+     * within the SVG document fragment, causing the animation clock to continue from\r
+     * the time at which it was suspended.\r
+     */\r
+    void unpauseAnimations();\r
+\r
+    /**\r
+     * Returns true if this SVG document fragment is in a paused state.\r
+     */\r
+    bool animationsPaused();\r
+\r
+    /**\r
+     * Returns the current time in seconds relative to the start time for\r
+     *      the current SVG document fragment.\r
+     */\r
+    double getCurrentTime();\r
+\r
+    /**\r
+     * Adjusts the clock for this SVG document fragment, establishing\r
+     *      a new current time.\r
+     */\r
+    void setCurrentTime(double seconds);\r
+\r
+    /**\r
+     * Returns the list of graphics elements whose rendered content intersects the\r
+     * supplied rectangle, honoring the 'pointer-events' property value on each\r
+     * candidate graphics element.\r
+     */\r
+    NodeList getIntersectionList(const SVGRect &rect,\r
+                                 const SVGElementPtr referenceElement);\r
+\r
+    /**\r
+     * Returns the list of graphics elements whose rendered content is entirely\r
+     * contained within the supplied rectangle, honoring the 'pointer-events'\r
+     * property value on each candidate graphics element.\r
+     */\r
+    NodeList getEnclosureList(const SVGRect &rect,\r
+                              const SVGElementPtr referenceElement);\r
+\r
+    /**\r
+     * Returns true if the rendered content of the given element intersects the\r
+     * supplied rectangle, honoring the 'pointer-events' property value on each\r
+     * candidate graphics element.\r
+     */\r
+    bool checkIntersection(const SVGElementPtr element, const SVGRect &rect);\r
+\r
+    /**\r
+     * Returns true if the rendered content of the given element is entirely\r
+     * contained within the supplied rectangle, honoring the 'pointer-events'\r
+     * property value on each candidate graphics element.\r
+     */\r
+    bool checkEnclosure(const SVGElementPtr element, const SVGRect &rect);\r
+\r
+    /**\r
+     * Unselects any selected objects, including any selections of text\r
+     *      strings and type-in bars.\r
+     */\r
+    void deselectAll();\r
+\r
+    /**\r
+     * Creates an SVGNumber object outside of any document trees. The object\r
+     *      is initialized to a value of zero.\r
+     */\r
+    SVGNumber createSVGNumber();\r
+\r
+    /**\r
+     * Creates an SVGLength object outside of any document trees. The object\r
+     *      is initialized to the value of 0 user units.\r
+     */\r
+    SVGLength createSVGLength();\r
+\r
+    /**\r
+     * Creates an SVGAngle object outside of any document trees. The object\r
+     *      is initialized to the value 0 degrees(unitless).\r
+     */\r
+    SVGAngle createSVGAngle();\r
+\r
+    /**\r
+     * Creates an SVGPoint object outside of any document trees. The object\r
+     * is initialized to the point(0,0) in the user coordinate system.\r
+     */\r
+    SVGPoint createSVGPoint();\r
+\r
+    /**\r
+     * Creates an SVGMatrix object outside of any document trees. The object\r
+     *      is initialized to the identity matrix.\r
+     */\r
+    SVGMatrix createSVGMatrix();\r
+\r
+    /**\r
+     * Creates an SVGRect object outside of any document trees. The object\r
+     *      is initialized such that all values are set to 0 user units.\r
+     */\r
+    SVGRect createSVGRect();\r
+\r
+    /**\r
+     * Creates an SVGTransform object outside of any document trees.\r
+     * The object is initialized to an identity matrix transform\r
+     *     (SVG_TRANSFORM_MATRIX).\r
+     */\r
+    SVGTransform createSVGTransform();\r
+\r
+    /**\r
+     * Creates an SVGTransform object outside of any document trees.\r
+     * The object is initialized to the given matrix transform\r
+     *     (i.e., SVG_TRANSFORM_MATRIX).\r
+     */\r
+    SVGTransform createSVGTransformFromMatrix(const SVGMatrix &matrix);\r
+\r
+    /**\r
+     * Searches this SVG document fragment(i.e., the search is restricted to a\r
+     * subset of the document tree) for an Element whose id is given by elementId. If\r
+     * an Element is found, that Element is returned. If no such element exists,\r
+     * returns null. Behavior is not defined if more than one element has this id.\r
+     */\r
+    ElementPtr getElementById(const DOMString& elementId);\r
+\r
+\r
+    //####################################################################\r
+    //# SVGTextElement\r
+    //####################################################################\r
+\r
+\r
+    //####################################################################\r
+    //# SVGTextContentElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     * lengthAdjust Types\r
+     */\r
+    typedef enum\r
+        {\r
+        LENGTHADJUST_UNKNOWN          = 0,\r
+        LENGTHADJUST_SPACING          = 1,\r
+        LENGTHADJUST_SPACINGANDGLYPHS = 2\r
+        } LengthAdjustType;\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute textLength on the given element.\r
+     */\r
+    SVGAnimatedLength getTextLength();\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute lengthAdjust on the given element. The value must be\r
+     * one of the length adjust constants specified above.\r
+     */\r
+    SVGAnimatedEnumeration getLengthAdjust();\r
+\r
+\r
+    /**\r
+     * Returns the total number of characters to be rendered within the current\r
+     * element. Includes characters which are included via a 'tref' reference.\r
+     */\r
+    long getNumberOfChars();\r
+\r
+    /**\r
+     * The total sum of all of the advance values from rendering all of the\r
+     * characters within this element, including the advance value on the glyphs\r
+     *(horizontal or vertical), the effect of properties 'kerning', 'letter-spacing'\r
+     * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan'\r
+     * elements. For non-rendering environments, the user agent shall make reasonable\r
+     * assumptions about glyph metrics.\r
+     */\r
+    double getComputedTextLength();\r
+\r
+    /**\r
+     * The total sum of all of the advance values from rendering the specified\r
+     * substring of the characters, including the advance value on the glyphs\r
+     *(horizontal or vertical), the effect of properties 'kerning', 'letter-spacing'\r
+     * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan'\r
+     * elements. For non-rendering environments, the user agent shall make reasonable\r
+     * assumptions about glyph metrics.\r
+     */\r
+    double getSubStringLength(unsigned long charnum, unsigned long nchars)\r
+                                     throw (DOMException);\r
+\r
+    /**\r
+     * Returns the current text position before rendering the character in the user\r
+     * coordinate system for rendering the glyph(s) that correspond to the specified\r
+     * character. The current text position has already taken into account the\r
+     * effects of any inter-character adjustments due to properties 'kerning',\r
+     * 'letter-spacing' and 'word-spacing' and adjustments due to attributes x, y, dx\r
+     * and dy. If multiple consecutive characters are rendered inseparably(e.g., as\r
+     * a single glyph or a sequence of glyphs), then each of the inseparable\r
+     * characters will return the start position for the first glyph.\r
+     */\r
+    SVGPoint getStartPositionOfChar(unsigned long charnum) throw (DOMException);\r
+\r
+    /**\r
+     * Returns the current text position after rendering the character in the user\r
+     * coordinate system for rendering the glyph(s) that correspond to the specified\r
+     * character. This current text position does not take into account the effects\r
+     * of any inter-character adjustments to prepare for the next character, such as\r
+     * properties 'kerning', 'letter-spacing' and 'word-spacing' and adjustments due\r
+     * to attributes x, y, dx and dy. If multiple consecutive characters are rendered\r
+     * inseparably(e.g., as a single glyph or a sequence of glyphs), then each of\r
+     * the inseparable characters will return the end position for the last glyph.\r
+     */\r
+    SVGPoint getEndPositionOfChar(unsigned long charnum) throw (DOMException);\r
+\r
+    /**\r
+     * Returns a tightest rectangle which defines the minimum and maximum X and Y\r
+     * values in the user coordinate system for rendering the glyph(s) that\r
+     * correspond to the specified character. The calculations assume that all glyphs\r
+     * occupy the full standard glyph cell for the font. If multiple consecutive\r
+     * characters are rendered inseparably(e.g., as a single glyph or a sequence of\r
+     * glyphs), then each of the inseparable characters will return the same extent.\r
+     */\r
+    SVGRect getExtentOfChar(unsigned long charnum) throw (DOMException);\r
+\r
+    /**\r
+     * Returns the rotation value relative to the current user coordinate system used\r
+     * to render the glyph(s) corresponding to the specified character. If multiple\r
+     * glyph(s) are used to render the given character and the glyphs each have\r
+     * different rotations(e.g., due to text-on-a-path), the user agent shall return\r
+     * an average value(e.g., the rotation angle at the midpoint along the path for\r
+     * all glyphs used to render this character). The rotation value represents the\r
+     * rotation that is supplemental to any rotation due to properties\r
+     * 'glyph-orientation-horizontal' and 'glyph-orientation-vertical'; thus, any\r
+     * glyph rotations due to these properties are not included into the returned\r
+     * rotation value. If multiple consecutive characters are rendered inseparably\r
+     *(e.g., as a single glyph or a sequence of glyphs), then each of the\r
+     * inseparable characters will return the same rotation value.\r
+     */\r
+    double getRotationOfChar(unsigned long charnum) throw (DOMException);\r
+\r
+    /**\r
+     * Returns the index of the character whose corresponding glyph cell bounding box\r
+     * contains the specified point. The calculations assume that all glyphs occupy\r
+     * the full standard glyph cell for the font. If no such character exists, a\r
+     * value of -1 is returned. If multiple such characters exist, the character\r
+     * within the element whose glyphs were rendered last(i.e., take into account\r
+     * any reordering such as for bidirectional text) is used. If multiple\r
+     * consecutive characters are rendered inseparably(e.g., as a single glyph or a\r
+     * sequence of glyphs), then the user agent shall allocate an equal percentage of\r
+     * the text advance amount to each of the contributing characters in determining\r
+     * which of the characters is chosen.\r
+     */\r
+    long getCharNumAtPosition(const SVGPoint &point);\r
+\r
+    /**\r
+     * Causes the specified substring to be selected just as if the user\r
+     *      selected the substring interactively.\r
+     */\r
+    void selectSubString(unsigned long charnum, unsigned long nchars)\r
+                                  throw (DOMException);\r
+\r
+\r
+\r
+\r
+\r
+    //####################################################################\r
+    //# SVGTextPathElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     * textPath Method Types\r
+     */\r
+    typedef enum\r
+        {\r
+        TEXTPATH_METHODTYPE_UNKNOWN   = 0,\r
+        TEXTPATH_METHODTYPE_ALIGN     = 1,\r
+        TEXTPATH_METHODTYPE_STRETCH   = 2\r
+        } TextPathMethodType;\r
+\r
+    /**\r
+     * textPath Spacing Types\r
+     */\r
+    typedef enum\r
+        {\r
+        TEXTPATH_SPACINGTYPE_UNKNOWN  = 0,\r
+        TEXTPATH_SPACINGTYPE_AUTO     = 1,\r
+        TEXTPATH_SPACINGTYPE_EXACT    = 2\r
+        } TextPathSpacingType;\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute startOffset on the given 'textPath' element.\r
+     */\r
+    SVGAnimatedLength getStartOffset();\r
+\r
+    /**\r
+     * Corresponds to attribute method on the given 'textPath' element. The value\r
+     * must be one of the method type constants specified above.\r
+     */\r
+    SVGAnimatedEnumeration getMethod();\r
+\r
+    /**\r
+     * Corresponds to attribute spacing on the given 'textPath' element.\r
+     *  The value must be one of the spacing type constants specified above.\r
+     */\r
+    SVGAnimatedEnumeration getSpacing();\r
+\r
+\r
+    //####################################################################\r
+    //# SVGTextPositioningElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute x on the given element.\r
+     */\r
+    SVGAnimatedLength getX();\r
+\r
+    /**\r
+     * Corresponds to attribute y on the given element.\r
+     */\r
+    SVGAnimatedLength getY();\r
+\r
+    /**\r
+     * Corresponds to attribute dx on the given element.\r
+     */\r
+    SVGAnimatedLength getDx();\r
+\r
+    /**\r
+     * Corresponds to attribute dy on the given element.\r
+     */\r
+    SVGAnimatedLength getDy();\r
+\r
+\r
+    /**\r
+     * Corresponds to attribute rotate on the given element.\r
+     */\r
+    SVGAnimatedNumberList getRotate();\r
+\r
+\r
+    //####################################################################\r
+    //# SVGTitleElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGTRefElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGTSpanElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGSwitchElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGUseElement\r
+    //####################################################################\r
+\r
+    /**\r
+     * Corresponds to attribute x on the given 'use' element.\r
+     */\r
+    SVGAnimatedLength getX();\r
+\r
+    /**\r
+     * Corresponds to attribute y on the given 'use' element.\r
+     */\r
+    SVGAnimatedLength getY();\r
+\r
+    /**\r
+     * Corresponds to attribute width on the given 'use' element.\r
+     */\r
+    SVGAnimatedLength getWidth();\r
+\r
+    /**\r
+     * Corresponds to attribute height on the given 'use' element.\r
+     */\r
+    SVGAnimatedLength getHeight();\r
+\r
+    /**\r
+     * The root of the "instance tree". See description of SVGElementInstance for\r
+     * a discussion on the instance tree.\r
+     *      */\r
+    SVGElementInstance getInstanceRoot();\r
+\r
+    /**\r
+     * If the 'href' attribute is being animated, contains the current animated root\r
+     * of the "instance tree". If the 'href' attribute is not currently being\r
+     * animated, contains the same value as 'instanceRoot'. The root of the "instance\r
+     * tree". See description of SVGElementInstance for a discussion on the instance\r
+     * tree.\r
+     */\r
+    SVGElementInstance getAnimatedInstanceRoot();\r
+\r
+    //####################################################################\r
+    //# SVGVKernElement\r
+    //####################################################################\r
+\r
+    //####################################################################\r
+    //# SVGViewElement\r
+    //####################################################################\r
+\r
+\r
+    /**\r
+     *\r
+     */\r
+    SVGStringList getViewTarget();\r
+\r
+\r
+\r
+\r
+    //##################\r
+    //# Non-API methods\r
+    //##################\r
+\r
+\r
+    /**\r
+     *\r
+     */\r
+    ~SVGElement() {}\r
+\r
+\r
+};\r
+\r
+\r
+\r
+/*#########################################################################\r
+## SVGDocument\r
+#########################################################################*/\r
+\r
+/**\r
+ * When an 'svg' element is embedded inline as a component of a document from\r
+ * another namespace, such as when an 'svg' element is embedded inline within an\r
+ * XHTML document [XHTML], then an SVGDocument object will not exist; instead,\r
+ * the root object in the document object hierarchy will be a Document object of\r
+ * a different type, such as an HTMLDocument object.\r
+ *\r
+ * However, an SVGDocument object will indeed exist when the root element of the\r
+ * XML document hierarchy is an 'svg' element, such as when viewing a stand-alone\r
+ * SVG file(i.e., a file with MIME type "image/svg+xml"). In this case, the\r
+ * SVGDocument object will be the root object of the document object model\r
+ * hierarchy.\r
+ *\r
+ * In the case where an SVG document is embedded by reference, such as when an\r
+ * XHTML document has an 'object' element whose href attribute references an SVG\r
+ * document(i.e., a document whose MIME type is "image/svg+xml" and whose root\r
+ * element is thus an 'svg' element), there will exist two distinct DOM\r
+ * hierarchies. The first DOM hierarchy will be for the referencing document\r
+ *(e.g., an XHTML document). The second DOM hierarchy will be for the referenced\r
+ * SVG document. In this second DOM hierarchy, the root object of the document\r
+ * object model hierarchy is an SVGDocument object.\r
+ */\r
+class SVGDocument : public Document,\r
+                    public events::DocumentEvent\r
+{\r
+public:\r
+\r
+\r
+    /**\r
+     * The title of a document as specified by the title sub-element of the 'svg'\r
+     * root element(i.e., <svg><title>Here is the title</title>...</svg>)\r
+     */\r
+    DOMString getTitle();\r
+\r
+    /**\r
+     * Returns the URI of the page that linked to this page. The value is an empty\r
+     * string if the user navigated to the page directly(not through a link, but,\r
+     * for example, via a bookmark).\r
+     */\r
+    DOMString getReferrer();\r
+\r
+    /**\r
+     * The domain name of the server that served the document, or a null string if\r
+     * the server cannot be identified by a domain name.\r
+     */\r
+    DOMString getDomain();\r
+\r
+    /**\r
+     * The complete URI of the document.\r
+     */\r
+    DOMString getURL();\r
+\r
+    /**\r
+     * The root 'svg'  element in the document hierarchy.\r
+     */\r
+    SVGElementPtr getRootElement();\r
+\r
+\r
+    //##################\r
+    //# Non-API methods\r
+    //##################\r
+\r
+    /**\r
+     *\r
+     */\r
+    ~SVGDocument() {}\r
+\r
+};\r
+\r
+\r
+\r
+/*#########################################################################\r
+## GetSVGDocument\r
+#########################################################################*/\r
+\r
+/**\r
+ * In the case where an SVG document is embedded by reference, such as when an\r
+ * XHTML document has an 'object' element whose href(or equivalent) attribute\r
+ * references an SVG document(i.e., a document whose MIME type is\r
+ * "image/svg+xml" and whose root element is thus an 'svg' element), the SVG user\r
+ * agent is required to implement the GetSVGDocument interface for the element\r
+ * which references the SVG document(e.g., the HTML 'object' or comparable\r
+ * referencing elements).\r
+ */\r
+class GetSVGDocument\r
+{\r
+public:\r
+\r
+    /**\r
+     * Returns the SVGDocument  object for the referenced SVG document.\r
+     */\r
+    SVGDocumentPtr getSVGDocument()\r
+                    throw (DOMException);\r
+\r
+    //##################\r
+    //# Non-API methods\r
+    //##################\r
+\r
+    /**\r
+     *\r
+     */\r
+    ~GetSVGDocument() {}\r
+\r
+};\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+}  //namespace svg\r
+}  //namespace dom\r
+}  //namespace w3c\r
+}  //namespace org\r
+\r
+#endif // __SVG_H__\r
+/*#########################################################################\r
+## E N D    O F    F I L E\r
+#########################################################################*/\r
+\r