Code

Rearrange to enable code that does not directly rely on lcms.
[inkscape.git] / src / dom / svg2.h
index 4f9b78ecb56172a7cb7af4c6b36aeceab30bd0f5..b1a42e8aaf5a0d03d5e6c91cbd3c092e0adc8d47 100644 (file)
-#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
-//########################################################################\r
-//########################################################################\r
-//#   I N T E R F A C E S\r
-//########################################################################\r
-//########################################################################\r
-//########################################################################\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGMatrix\r
-#########################################################################*/\r
-\r
-/**\r
- *  In SVG, a Matrix is defined like this:\r
- *\r
- * | a  c  e |\r
- * | b  d  f |\r
- * | 0  0  1 |\r
- *\r
- */\r
-class SVGMatrix\r
-{\r
-public:\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getA()\r
-        { return a; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setA(double val) throw (DOMException)\r
-        { a = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getB()\r
-        { return b; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setB(double val) throw (DOMException)\r
-        { b = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getC()\r
-        { return c; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setC(double val) throw (DOMException)\r
-        { c = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getD()\r
-        { return d; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setD(double val) throw (DOMException)\r
-        { d = val; }\r
-    /**\r
-     *\r
-     */\r
-    virtual double getE()\r
-        { return e; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setE(double val) throw (DOMException)\r
-        { e = val; }\r
-    /**\r
-     *\r
-     */\r
-    virtual double getF()\r
-        { return f; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setF(double val) throw (DOMException)\r
-        { f = val; }\r
-\r
-\r
-    /**\r
-     * Return the result of postmultiplying this matrix with another.\r
-     */\r
-    virtual SVGMatrix multiply(const SVGMatrix &other)\r
-        {\r
-        SVGMatrix result;\r
-        result.a = a * other.a  +  c * other.b;\r
-        result.b = b * other.a  +  d * other.b;\r
-        result.c = a * other.c  +  c * other.d;\r
-        result.d = b * other.c  +  d * other.d;\r
-        result.e = a * other.e  +  c * other.f  +  e;\r
-        result.f = b * other.e  +  d * other.f  +  f;\r
-        return result;\r
-        }\r
-\r
-    /**\r
-     *  Calculate the inverse of this matrix\r
-     *\r
-     */\r
-    virtual SVGMatrix inverse(  ) throw( SVGException )\r
-        {\r
-        /*###########################################\r
-        The determinant of a 3x3 matrix E\r
-           (let's use our own notation for a bit)\r
-\r
-            A  B  C\r
-            D  E  F\r
-            G  H  I\r
-        is\r
-            AEI - AFH - BDI + BFG + CDH - CEG\r
-\r
-        Since in our affine transforms, G and H==0 and I==1,\r
-        this reduces to:\r
-            AE - BD\r
-        In SVG's naming scheme, that is:  a * d - c * b .  SIMPLE!\r
-\r
-        In a similar method of attack, SVG's adjunct matrix is:\r
-\r
-           d  -c   cf-ed\r
-          -b   a   eb-af\r
-           0   0   ad-cb\r
-\r
-        To get the inverse matrix, we divide the adjunct matrix by\r
-        the determinant.  Notice that (ad-cb)/(ad-cb)==1.  Very cool.\r
-        So what we end up with is this:\r
-\r
-           a =  d/(ad-cb)  c = -c/(ad-cb)   e = (cf-ed)/(ad-cb)\r
-           b = -b/(ad-cb)  d =  a/(ad-cb)   f = (eb-af)/(ad-cb)\r
-\r
-        (Since this would be in all SVG-DOM implementations,\r
-         somebody needed to document this!  ^^ )\r
-        #############################################*/\r
-\r
-        SVGMatrix result;\r
-        double determinant = a * d  -  c * b;\r
-        if (determinant < 1.0e-18)//invertible?\r
-            {\r
-            result.identity();//cop out\r
-            return result;\r
-            }\r
-\r
-        double idet = 1.0 / determinant;\r
-        result.a =   d * idet;\r
-        result.b =  -b * idet;\r
-        result.c =  -c * idet;\r
-        result.d =   a * idet;\r
-        result.e =  (c*f - e*d) * idet;\r
-        result.f =  (e*b - a*f) * idet;\r
-        return result;\r
-        }\r
-\r
-    /**\r
-     * Equivalent to multiplying by:\r
-     *  | 1  0  x |\r
-     *  | 0  1  y |\r
-     *  | 0  0  1 |\r
-     *\r
-     */\r
-    virtual SVGMatrix translate(double x, double y )\r
-        {\r
-        SVGMatrix result;\r
-        result.a = a;\r
-        result.b = b;\r
-        result.c = c;\r
-        result.d = d;\r
-        result.e = a * x  +  c * y  +  e;\r
-        result.f = b * x  +  d * y  +  f;\r
-        return result;\r
-        }\r
-\r
-    /**\r
-     * Equivalent to multiplying by:\r
-     *  | scale  0      0 |\r
-     *  | 0      scale  0 |\r
-     *  | 0      0      1 |\r
-     *\r
-     */\r
-    virtual SVGMatrix scale(double scale)\r
-        {\r
-        SVGMatrix result;\r
-        result.a = a * scale;\r
-        result.b = b * scale;\r
-        result.c = c * scale;\r
-        result.d = d * scale;\r
-        result.e = e;\r
-        result.f = f;\r
-        return result;\r
-        }\r
-\r
-    /**\r
-     * Equivalent to multiplying by:\r
-     *  | scaleX  0       0 |\r
-     *  | 0       scaleY  0 |\r
-     *  | 0       0       1 |\r
-     *\r
-     */\r
-    virtual SVGMatrix scaleNonUniform(double scaleX,\r
-                                      double scaleY )\r
-        {\r
-        SVGMatrix result;\r
-        result.a = a * scaleX;\r
-        result.b = b * scaleX;\r
-        result.c = c * scaleY;\r
-        result.d = d * scaleY;\r
-        result.e = e;\r
-        result.f = f;\r
-        return result;\r
-        }\r
-\r
-    /**\r
-     * Equivalent to multiplying by:\r
-     *  | cos(a) -sin(a)   0 |\r
-     *  | sin(a)  cos(a)   0 |\r
-     *  | 0       0        1 |\r
-     *\r
-     */\r
-    virtual SVGMatrix rotate (double angle)\r
-        {\r
-        double sina  = sin(angle);\r
-        double msina = -sina;\r
-        double cosa  = cos(angle);\r
-        SVGMatrix result;\r
-        result.a = a * cosa   +  c * sina;\r
-        result.b = b * cosa   +  d + sina;\r
-        result.c = a * msina  +  c * cosa;\r
-        result.d = b * msina  +  d * cosa;\r
-        result.e = e;\r
-        result.f = f;\r
-        return result;\r
-        }\r
-\r
-    /**\r
-     * Equivalent to multiplying by:\r
-     *  | cos(a) -sin(a)   0 |\r
-     *  | sin(a)  cos(a)   0 |\r
-     *  | 0       0        1 |\r
-     *  In this case, angle 'a' is computed as the artangent\r
-     *  of the slope y/x .  It is negative if the slope is negative.\r
-     */\r
-    virtual SVGMatrix rotateFromVector(double x, double y)\r
-                                      throw( SVGException )\r
-        {\r
-        double angle = atan(y / x);\r
-        if (y < 0.0)\r
-            angle = -angle;\r
-        SVGMatrix result;\r
-        double sina  = sin(angle);\r
-        double msina = -sina;\r
-        double cosa  = cos(angle);\r
-        result.a = a * cosa   +  c * sina;\r
-        result.b = b * cosa   +  d + sina;\r
-        result.c = a * msina  +  c * cosa;\r
-        result.d = b * msina  +  d * cosa;\r
-        result.e = e;\r
-        result.f = f;\r
-        return result;\r
-        }\r
-\r
-    /**\r
-     * Equivalent to multiplying by:\r
-     *  | -1   0   0 |\r
-     *  | 0    1   0 |\r
-     *  | 0    0   1 |\r
-     *\r
-     */\r
-    virtual SVGMatrix flipX(  )\r
-        {\r
-        SVGMatrix result;\r
-        result.a = -a;\r
-        result.b = -b;\r
-        result.c =  c;\r
-        result.d =  d;\r
-        result.e =  e;\r
-        result.f =  f;\r
-        return result;\r
-        }\r
-\r
-    /**\r
-     * Equivalent to multiplying by:\r
-     *  | 1   0   0 |\r
-     *  | 0  -1   0 |\r
-     *  | 0   0   1 |\r
-     *\r
-     */\r
-    virtual SVGMatrix flipY( )\r
-        {\r
-        SVGMatrix result;\r
-        result.a =  a;\r
-        result.b =  b;\r
-        result.c = -c;\r
-        result.d = -d;\r
-        result.e =  e;\r
-        result.f =  f;\r
-        return result;\r
-        }\r
-\r
-    /**\r
-     *  | 1   tan(a)  0 |\r
-     *  | 0   1       0 |\r
-     *  | 0   0       1 |\r
-     *\r
-     */\r
-    virtual SVGMatrix skewX(double angle)\r
-        {\r
-        double tana = tan(angle);\r
-        SVGMatrix result;\r
-        result.a =  a;\r
-        result.b =  b;\r
-        result.c =  a * tana + c;\r
-        result.d =  b * tana + d;\r
-        result.e =  e;\r
-        result.f =  f;\r
-        return result;\r
-        }\r
-\r
-    /**\r
-     * Equivalent to multiplying by:\r
-     *  | 1       0   0 |\r
-     *  | tan(a)  1   0 |\r
-     *  | 0       0   1 |\r
-     *\r
-     */\r
-    virtual SVGMatrix skewY(double angle)\r
-        {\r
-        double tana = tan(angle);\r
-        SVGMatrix result;\r
-        result.a =  a + c * tana;\r
-        result.b =  b + d * tana;\r
-        result.c =  c;\r
-        result.d =  d;\r
-        result.e =  e;\r
-        result.f =  f;\r
-        return result;\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGMatrix()\r
-        {\r
-        identity();\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGMatrix(double aArg, double bArg, double cArg,\r
-              double dArg, double eArg, double fArg )\r
-        {\r
-        a = aArg; b = bArg; c = cArg;\r
-        d = dArg; e = eArg; f = fArg;\r
-        }\r
-\r
-    /**\r
-     * Copy constructor\r
-     */\r
-    SVGMatrix(const SVGMatrix &other)\r
-        {\r
-        a = other.a;\r
-        b = other.b;\r
-        c = other.c;\r
-        d = other.d;\r
-        e = other.e;\r
-        f = other.f;\r
-        }\r
-\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGMatrix() {}\r
-\r
-protected:\r
-\r
-friend class SVGTransform;\r
-\r
-    /*\r
-     * Set to the identify matrix\r
-     */\r
-   void identity()\r
-       {\r
-       a = 1.0;\r
-       b = 0.0;\r
-       c = 0.0;\r
-       d = 1.0;\r
-       e = 0.0;\r
-       f = 0.0;\r
-       }\r
-\r
-    double a, b, c, d, e, f;\r
-\r
-};\r
-\r
-\r
-/*#########################################################################\r
-## SVGTransform\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGTransform\r
-{\r
-public:\r
-\r
-    /**\r
-     * Transform Types\r
-     */\r
-    typedef enum\r
-        {\r
-        SVG_TRANSFORM_UNKNOWN   = 0,\r
-        SVG_TRANSFORM_MATRIX    = 1,\r
-        SVG_TRANSFORM_TRANSLATE = 2,\r
-        SVG_TRANSFORM_SCALE     = 3,\r
-        SVG_TRANSFORM_ROTATE    = 4,\r
-        SVG_TRANSFORM_SKEWX     = 5,\r
-        SVG_TRANSFORM_SKEWY     = 6,\r
-        } TransformType;\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual unsigned short getType()\r
-        { return type; }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGMatrix getMatrix()\r
-        {\r
-        return matrix;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getAngle()\r
-        {\r
-        return angle;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setMatrix(const SVGMatrix &matrixArg)\r
-        {\r
-        type = SVG_TRANSFORM_MATRIX;\r
-        matrix = matrixArg;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setTranslate (double tx, double ty )\r
-        {\r
-        type = SVG_TRANSFORM_TRANSLATE;\r
-        matrix.setA(1.0);\r
-        matrix.setB(0.0);\r
-        matrix.setC(0.0);\r
-        matrix.setD(1.0);\r
-        matrix.setE(tx);\r
-        matrix.setF(ty);\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setScale (double sx, double sy )\r
-        {\r
-        type = SVG_TRANSFORM_SCALE;\r
-        matrix.setA(sx);\r
-        matrix.setB(0.0);\r
-        matrix.setC(0.0);\r
-        matrix.setD(sy);\r
-        matrix.setE(0.0);\r
-        matrix.setF(0.0);\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setRotate (double angleArg, double cx, double cy)\r
-        {\r
-        angle = angleArg;\r
-        setTranslate(cx, cy);\r
-        type = SVG_TRANSFORM_ROTATE;\r
-        matrix.rotate(angle);\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setSkewX (double angleArg)\r
-        {\r
-        angle = angleArg;\r
-        type = SVG_TRANSFORM_SKEWX;\r
-        matrix.identity();\r
-        matrix.skewX(angle);\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setSkewY (double angleArg)\r
-        {\r
-        angle = angleArg;\r
-        type = SVG_TRANSFORM_SKEWY;\r
-        matrix.identity();\r
-        matrix.skewY(angle);\r
-        }\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGTransform()\r
-        {\r
-        type = SVG_TRANSFORM_UNKNOWN;\r
-        angle = 0.0;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGTransform(const SVGTransform &other)\r
-        {\r
-        type   = other.type;\r
-        angle  = other.angle;\r
-        matrix = other.matrix;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGTransform()\r
-        {}\r
-\r
-protected:\r
-\r
-    int type;\r
-    double angle;\r
-\r
-    SVGMatrix matrix;\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGTransformList\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGTransformList\r
-{\r
-public:\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual unsigned long getNumberOfItems()\r
-        { return items.size(); }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void clear( ) throw( DOMException )\r
-        { items.clear(); }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGTransform initialize (const SVGTransform &newItem)\r
-                         throw( DOMException, SVGException )\r
-        {\r
-        items.clear();\r
-        items.push_back(newItem);\r
-        return newItem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGTransform getItem (unsigned long index )\r
-                    throw( DOMException )\r
-        {\r
-        if (index>=items.size())\r
-            {\r
-            SVGTransform transform;\r
-            return transform;\r
-            }\r
-        return items[index];\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGTransform insertItemBefore (const SVGTransform &newItem,\r
-                                           unsigned long index )\r
-                                      throw( DOMException, SVGException )\r
-        {\r
-        if (index > items.size())\r
-            items.push_back(newItem);\r
-        else\r
-            {\r
-            std::vector<SVGTransform>::iterator iter = items.begin() + index;\r
-            items.insert(iter, newItem);\r
-            }\r
-        return newItem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGTransform replaceItem (const SVGTransform &newItem,\r
-                                       unsigned long index )\r
-                                throw( DOMException, SVGException )\r
-        {\r
-        if (index>=items.size())\r
-            {\r
-            SVGTransform transform;\r
-            return transform;\r
-            }\r
-        else\r
-            {\r
-            std::vector<SVGTransform>::iterator iter = items.begin() + index;\r
-            *iter = newItem;\r
-            }\r
-        return newItem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGTransform removeItem (unsigned long index )\r
-                                     throw( DOMException )\r
-        {\r
-        if (index>=items.size())\r
-            {\r
-            SVGTransform transform;\r
-            return transform;\r
-            }\r
-        std::vector<SVGTransform>::iterator iter = items.begin() + index;\r
-        SVGTransform oldItem = *iter;\r
-        items.erase(iter);\r
-        return oldItem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGTransform appendItem (const SVGTransform &newItem)\r
-                                  throw( DOMException, SVGException )\r
-        {\r
-        items.push_back(newItem);\r
-        return newItem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGTransform createSVGTransformFromMatrix(const SVGMatrix &matrix)\r
-        {\r
-        SVGTransform transform;\r
-        transform.setMatrix(matrix);\r
-        return transform;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGTransform consolidate()\r
-        {\r
-        SVGMatrix matrix;\r
-        for (unsigned int i=0 ; i<items.size() ; i++)\r
-            matrix = matrix.multiply(items[i].getMatrix());\r
-        SVGTransform transform;\r
-        transform.setMatrix(matrix);\r
-        items.clear();\r
-        items.push_back(transform);\r
-        return transform;\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGTransformList()\r
-        {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGTransformList(const SVGTransformList &other)\r
-        {\r
-        items = other.items;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGTransformList() {}\r
-\r
-protected:\r
-\r
-    std::vector<SVGTransform> items;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGAnimatedTransformList\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGAnimatedTransformList\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGTransformList getBaseVal()\r
-        { return baseVal; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGTransformList getAnimVal()\r
-        { return animVal; }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedTransformList()\r
-        {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedTransformList(const SVGAnimatedTransformList &other)\r
-        {\r
-        baseVal = other.baseVal;\r
-        animVal = other.animVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGAnimatedTransformList() {}\r
-\r
-protected:\r
-\r
-    SVGTransformList baseVal;\r
-    SVGTransformList animVal;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGAnimatedBoolean\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGAnimatedBoolean\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual bool getBaseVal()\r
-        {\r
-        return baseVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setBaseVal(bool val) throw (DOMException)\r
-        {\r
-        baseVal = val;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual bool getAnimVal()\r
-        {\r
-        return animVal;\r
-        }\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedBoolean()\r
-        {\r
-        baseVal = animVal = false;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedBoolean(const SVGAnimatedBoolean &other)\r
-        {\r
-        baseVal = other.baseVal;\r
-        animVal = other.animVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGAnimatedBoolean() {}\r
-\r
-protected:\r
-\r
-    bool baseVal, animVal;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGAnimatedString\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGAnimatedString\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual DOMString getBaseVal()\r
-        {\r
-        return baseVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setBaseVal(const DOMString &val)\r
-                            throw (DOMException)\r
-        {\r
-        baseVal = val;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual DOMString getAnimVal()\r
-        {\r
-        return animVal;\r
-        }\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedString()\r
-        {\r
-        baseVal = "";\r
-        animVal = "";\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedString(const SVGAnimatedString &other)\r
-        {\r
-        baseVal = other.baseVal;\r
-        animVal = other.animVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGAnimatedString() {}\r
-\r
-protected:\r
-\r
-    DOMString baseVal, animVal;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGStringList\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGStringList\r
-{\r
-public:\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual unsigned long getNumberOfItems()\r
-        {\r
-        return items.size();\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void clear () throw( DOMException )\r
-       {\r
-       items.clear();\r
-       }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual DOMString initialize ( const DOMString& newItem )\r
-                    throw( DOMException, SVGException )\r
-        {\r
-        items.clear();\r
-        items.push_back(newItem);\r
-        return newItem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual DOMString getItem ( unsigned long index )\r
-                    throw( DOMException )\r
-        {\r
-        if (index >= items.size())\r
-            return "";\r
-        return items[index];\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual DOMString insertItemBefore ( const DOMString& newItem,\r
-                                 unsigned long index )\r
-                               throw( DOMException, SVGException )\r
-        {\r
-        if (index>=items.size())\r
-            {\r
-            items.push_back(newItem);\r
-            }\r
-        else\r
-            {\r
-            std::vector<DOMString>::iterator iter = items.begin() + index;\r
-            items.insert(iter, newItem);\r
-            }\r
-        return newItem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual DOMString replaceItem ( const DOMString& newItem,\r
-                                    unsigned long index )\r
-                                throw( DOMException, SVGException )\r
-        {\r
-        if (index>=items.size())\r
-            return "";\r
-        std::vector<DOMString>::iterator iter = items.begin() + index;\r
-        *iter = newItem;\r
-        return newItem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual DOMString removeItem ( unsigned long index )\r
-                    throw( DOMException )\r
-        {\r
-        if (index>=items.size())\r
-            return "";\r
-        std::vector<DOMString>::iterator iter = items.begin() + index;\r
-        DOMString oldstr = *iter;\r
-        items.erase(iter);\r
-        return oldstr;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual DOMString appendItem ( const DOMString& newItem )\r
-                    throw( DOMException, SVGException )\r
-        {\r
-        items.push_back(newItem);\r
-        return newItem;\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGStringList() {}\r
-\r
-    /**\r
-     *\r
-     */\r
-   SVGStringList(const SVGStringList &other)\r
-       {\r
-       items = other.items;\r
-       }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGStringList() {}\r
-\r
-protected:\r
-\r
-    std::vector<DOMString>items;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGAnimatedEnumeration\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGAnimatedEnumeration\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual unsigned short getBaseVal()\r
-        {\r
-        return baseVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setBaseVal(unsigned short val)\r
-                                     throw (DOMException)\r
-        {\r
-        baseVal = val;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual unsigned short getAnimVal()\r
-        {\r
-        return animVal;\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedEnumeration()\r
-        {\r
-        baseVal = animVal = 0;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedEnumeration(const SVGAnimatedEnumeration &other)\r
-        {\r
-        baseVal = other.baseVal;\r
-        animVal = other.animVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGAnimatedEnumeration() {}\r
-\r
-protected:\r
-\r
-    int baseVal, animVal;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGAnimatedInteger\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGAnimatedInteger\r
-{\r
-public:\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual long getBaseVal()\r
-        {\r
-        return baseVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setBaseVal(long val) throw (DOMException)\r
-        {\r
-        baseVal = val;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual long getAnimVal()\r
-        {\r
-        return animVal;\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedInteger()\r
-        { baseVal = animVal = 0L;}\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedInteger(long value)\r
-        {\r
-        baseVal = value;\r
-        animVal = 0L;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedInteger(long baseValArg, long animValArg)\r
-        {\r
-        baseVal = baseValArg;\r
-        animVal = animValArg;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedInteger(const SVGAnimatedInteger &other)\r
-        {\r
-        baseVal = other.baseVal;\r
-        animVal = other.animVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGAnimatedInteger() {}\r
-\r
-protected:\r
-\r
-    long baseVal, animVal;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGNumber\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGNumber\r
-{\r
-public:\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getValue()\r
-        {\r
-        return value;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setValue(double val) throw (DOMException)\r
-        {\r
-        value = val;\r
-        }\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGNumber()\r
-        {\r
-        value = 0.0;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGNumber(const SVGNumber &other)\r
-        {\r
-        value = other.value;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGNumber() {}\r
-\r
-protected:\r
-\r
-    double value;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGAnimatedNumber\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGAnimatedNumber\r
-{\r
-public:\r
-\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getBaseVal()\r
-        {\r
-        return baseVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setBaseVal(double val) throw (DOMException)\r
-        {\r
-        baseVal = val;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getAnimVal()\r
-        {\r
-        return animVal;\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedNumber()\r
-        {\r
-        baseVal = animVal = 0.0;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedNumber(double val)\r
-        {\r
-        baseVal = val;\r
-        animVal = 0.0;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedNumber(double baseValArg, double animValArg)\r
-        {\r
-        baseVal = baseValArg;\r
-        animVal = animValArg;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedNumber(const SVGAnimatedNumber &other)\r
-        {\r
-        baseVal = other.baseVal;\r
-        animVal = other.animVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGAnimatedNumber() {}\r
-\r
-protected:\r
-\r
-    double baseVal, animVal;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGNumberList\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGNumberList\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual unsigned long getNumberOfItems()\r
-        {\r
-        return items.size();\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void clear() throw( DOMException )\r
-        {\r
-        items.clear();\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGNumber initialize (const SVGNumber &newItem)\r
-                    throw( DOMException, SVGException )\r
-        {\r
-        items.clear();\r
-        items.push_back(newItem);\r
-        return newItem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGNumber getItem ( unsigned long index )\r
-                                  throw( DOMException )\r
-        {\r
-        if (index>=items.size())\r
-            {\r
-            SVGNumber num;\r
-            return num;\r
-            }\r
-        return items[index];\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGNumber insertItemBefore ( const SVGNumber &newItem,\r
-                                         unsigned long index )\r
-                                         throw( DOMException, SVGException )\r
-        {\r
-        if (index>=items.size())\r
-            {\r
-            items.push_back(newItem);\r
-            }\r
-        else\r
-            {\r
-            std::vector<SVGNumber>::iterator iter = items.begin() + index;\r
-            items.insert(iter, newItem);\r
-            }\r
-        return newItem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGNumber replaceItem ( const SVGNumber &newItem,\r
-                                    unsigned long index )\r
-                                    throw( DOMException, SVGException )\r
-        {\r
-        if (index>=items.size())\r
-            {\r
-            SVGNumber num;\r
-            return num;\r
-            }\r
-        std::vector<SVGNumber>::iterator iter = items.begin() + index;\r
-        *iter = newItem;\r
-        return newItem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGNumber removeItem ( unsigned long index )\r
-                                  throw( DOMException )\r
-        {\r
-        if (index>=items.size())\r
-            {\r
-            SVGNumber num;\r
-            return num;\r
-            }\r
-        std::vector<SVGNumber>::iterator iter = items.begin() + index;\r
-        SVGNumber oldval = *iter;\r
-        items.erase(iter);\r
-        return oldval;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGNumber appendItem ( const SVGNumber &newItem )\r
-                                   throw( DOMException, SVGException )\r
-        {\r
-        items.push_back(newItem);\r
-        return newItem;\r
-        }\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGNumberList() {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGNumberList(const SVGNumberList &other)\r
-        {\r
-        items = other.items;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGNumberList() {}\r
-\r
-protected:\r
-\r
-    std::vector<SVGNumber>items;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGAnimatedNumberList\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGAnimatedNumberList\r
-{\r
-public:\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGNumberList &getBaseVal()\r
-        {\r
-        return baseVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGNumberList &getAnimVal()\r
-        {\r
-        return animVal;\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedNumberList() {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedNumberList(const SVGAnimatedNumberList &other)\r
-        {\r
-        baseVal = other.baseVal;\r
-        animVal = other.animVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGAnimatedNumberList() {}\r
-\r
-protected:\r
-\r
-    SVGNumberList baseVal;\r
-    SVGNumberList animVal;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGLength\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGLength\r
-{\r
-public:\r
-\r
-    /**\r
-     * Length Unit Types\r
-     */\r
-    typedef enum\r
-        {\r
-        SVG_LENGTHTYPE_UNKNOWN    = 0,\r
-        SVG_LENGTHTYPE_NUMBER     = 1,\r
-        SVG_LENGTHTYPE_PERCENTAGE = 2,\r
-        SVG_LENGTHTYPE_EMS        = 3,\r
-        SVG_LENGTHTYPE_EXS        = 4,\r
-        SVG_LENGTHTYPE_PX         = 5,\r
-        SVG_LENGTHTYPE_CM         = 6,\r
-        SVG_LENGTHTYPE_MM         = 7,\r
-        SVG_LENGTHTYPE_IN         = 8,\r
-        SVG_LENGTHTYPE_PT         = 9,\r
-        SVG_LENGTHTYPE_PC         = 10\r
-        } LengthUnitType;\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual unsigned short getUnitType( )\r
-        {\r
-        return unitType;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getValue( )\r
-        {\r
-        return value;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setValue( double val )  throw (DOMException)\r
-        {\r
-        value = val;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getValueInSpecifiedUnits( )\r
-        {\r
-        double result = 0.0;\r
-        //fill this in\r
-        return result;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setValueInSpecifiedUnits( double /*val*/ )\r
-                                           throw (DOMException)\r
-        {\r
-        //fill this in\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual DOMString getValueAsString( )\r
-        {\r
-        DOMString ret;\r
-        char buf[32];\r
-        snprintf(buf, 31, "%f", value);\r
-        ret.append(buf);\r
-        return ret;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setValueAsString( const DOMString& /*val*/ )\r
-                                   throw (DOMException)\r
-        {\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void newValueSpecifiedUnits ( unsigned short /*unitType*/, double /*val*/ )\r
-        {\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void convertToSpecifiedUnits ( unsigned short /*unitType*/ )\r
-        {\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGLength()\r
-        {\r
-        unitType = SVG_LENGTHTYPE_UNKNOWN;\r
-        value    = 0.0;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGLength(const SVGLength &other)\r
-        {\r
-        unitType  = other.unitType;\r
-        value     = other.value;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGLength() {}\r
-\r
-protected:\r
-\r
-    int unitType;\r
-\r
-    double value;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGAnimatedLength\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGAnimatedLength\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGLength &getBaseVal()\r
-        {\r
-        return baseVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGLength &getAnimVal()\r
-        {\r
-        return animVal;\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedLength() {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedLength(const SVGAnimatedLength &other)\r
-        {\r
-        baseVal = other.baseVal;\r
-        animVal = other.animVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGAnimatedLength() {}\r
-\r
-protected:\r
-\r
-    SVGLength baseVal, animVal;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGLengthList\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGLengthList\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual unsigned long getNumberOfItems()\r
-        {\r
-        return items.size();\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void clear (  ) throw( DOMException )\r
-        {\r
-        items.clear();\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGLength initialize (const SVGLength &newItem )\r
-                    throw( DOMException, SVGException )\r
-        {\r
-        items.clear();\r
-        items.push_back(newItem);\r
-        return newItem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGLength getItem (unsigned long index)\r
-                    throw( DOMException )\r
-        {\r
-        if (index>=items.size())\r
-            {\r
-            SVGLength ret;\r
-            return ret;\r
-            }\r
-        return items[index];\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGLength insertItemBefore (const SVGLength &newItem,\r
-                                         unsigned long index )\r
-                                   throw( DOMException, SVGException )\r
-        {\r
-        if (index>=items.size())\r
-            {\r
-            items.push_back(newItem);\r
-            }\r
-        else\r
-            {\r
-            std::vector<SVGLength>::iterator iter = items.begin() + index;\r
-            items.insert(iter, newItem);\r
-            }\r
-        return newItem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGLength replaceItem (const SVGLength &newItem,\r
-                                    unsigned long index )\r
-                               throw( DOMException, SVGException )\r
-        {\r
-        if (index>=items.size())\r
-            {\r
-            SVGLength ret;\r
-            return ret;\r
-            }\r
-        std::vector<SVGLength>::iterator iter = items.begin() + index;\r
-        *iter = newItem;\r
-        return newItem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGLength removeItem (unsigned long index )\r
-                    throw( DOMException )\r
-        {\r
-        if (index>=items.size())\r
-            {\r
-            SVGLength ret;\r
-            return ret;\r
-            }\r
-        std::vector<SVGLength>::iterator iter = items.begin() + index;\r
-        SVGLength oldval = *iter;\r
-        items.erase(iter);\r
-        return oldval;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGLength appendItem (const SVGLength &newItem )\r
-                    throw( DOMException, SVGException )\r
-        {\r
-        items.push_back(newItem);\r
-        return newItem;\r
-        }\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGLengthList() {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGLengthList(const SVGLengthList &other)\r
-        {\r
-        items = other.items;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGLengthList() {}\r
-\r
-protected:\r
-\r
-    std::vector<SVGLength>items;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGAnimatedLengthList\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGAnimatedLengthList\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGLengthList &getBaseVal()\r
-        {\r
-        return baseVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGLengthList &getAnimVal()\r
-        {\r
-        return animVal;\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedLengthList() {}\r
-\r
-    /**\r
-     *\r
-     */\r
-   SVGAnimatedLengthList(const SVGAnimatedLengthList &other)\r
-        {\r
-        baseVal = other.baseVal;\r
-        animVal = other.animVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGAnimatedLengthList() {}\r
-\r
-protected:\r
-\r
-    SVGLengthList baseVal, animVal;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGAngle\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGAngle\r
-{\r
-public:\r
-\r
-    /**\r
-     *  Angle Unit Types\r
-     */\r
-    typedef enum\r
-        {\r
-        SVG_ANGLETYPE_UNKNOWN     = 0,\r
-        SVG_ANGLETYPE_UNSPECIFIED = 1,\r
-        SVG_ANGLETYPE_DEG         = 2,\r
-        SVG_ANGLETYPE_RAD         = 3,\r
-        SVG_ANGLETYPE_GRAD        = 4\r
-        } AngleUnitType;\r
-\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual unsigned short getUnitType()\r
-        {\r
-        return unitType;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getValue()\r
-        {\r
-        return value;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setValue(double val) throw (DOMException)\r
-        {\r
-        value = val;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getValueInSpecifiedUnits()\r
-        {\r
-        double result = 0.0;\r
-        //convert here\r
-        return result;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setValueInSpecifiedUnits(double /*val*/)\r
-                                     throw (DOMException)\r
-        {\r
-        //do conversion\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual DOMString getValueAsString()\r
-        {\r
-        DOMString result;\r
-        char buf[32];\r
-        snprintf(buf, 31, "%f", value);\r
-        result.append(buf);\r
-        return result;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setValueAsString(const DOMString &/*val*/)\r
-                                  throw (DOMException)\r
-        {\r
-        //convert here\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void newValueSpecifiedUnits (unsigned short /*unitType*/,\r
-                                         double /*valueInSpecifiedUnits*/ )\r
-        {\r
-        //convert here\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void convertToSpecifiedUnits (unsigned short /*unitType*/ )\r
-        {\r
-        //convert here\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAngle()\r
-        {\r
-        unitType = SVG_ANGLETYPE_UNKNOWN;\r
-        value    = 0.0;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAngle(const SVGAngle &other)\r
-        {\r
-        unitType = other.unitType;\r
-        value    = other.value;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGAngle() {}\r
-\r
-protected:\r
-\r
-    int unitType;\r
-\r
-    double value;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGAnimatedAngle\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGAnimatedAngle\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGAngle getBaseVal()\r
-        {\r
-        return baseVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGAngle getAnimVal()\r
-        {\r
-        return animVal;\r
-        }\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedAngle() {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedAngle(const SVGAngle &angle)\r
-        { baseVal = angle; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedAngle(const SVGAnimatedAngle &other)\r
-        {\r
-        baseVal = other.baseVal;\r
-        animVal = other.animVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGAnimatedAngle() {}\r
-\r
-protected:\r
-\r
-    SVGAngle baseVal, animVal;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGICCColor\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGICCColor\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual DOMString getColorProfile()\r
-        {\r
-        return colorProfile;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setColorProfile(const DOMString &val) throw (DOMException)\r
-        {\r
-        colorProfile = val;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGNumberList &getColors()\r
-        {\r
-        return colors;\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGICCColor() {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGICCColor(const SVGICCColor &other)\r
-        {\r
-        colorProfile = other.colorProfile;\r
-        colors       = other.colors;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGICCColor() {}\r
-\r
-protected:\r
-\r
-    DOMString colorProfile;\r
-\r
-    SVGNumberList colors;\r
-\r
-};\r
-\r
-\r
-/*#########################################################################\r
-## SVGColor\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGColor : virtual public css::CSSValue\r
-{\r
-public:\r
-\r
-\r
-    /**\r
-     * Color Types\r
-     */\r
-    typedef enum\r
-        {\r
-        SVG_COLORTYPE_UNKNOWN           = 0,\r
-        SVG_COLORTYPE_RGBCOLOR          = 1,\r
-        SVG_COLORTYPE_RGBCOLOR_ICCCOLOR = 2,\r
-        SVG_COLORTYPE_CURRENTCOLOR      = 3\r
-        } ColorType;\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual unsigned short getColorType()\r
-        {\r
-        return colorType;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual css::RGBColor getRgbColor()\r
-        {\r
-        css::RGBColor col;\r
-        return col;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGICCColor getIccColor()\r
-        {\r
-        SVGICCColor col;\r
-        return col;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setRGBColor (const DOMString& /*rgbColor*/ )\r
-                              throw( SVGException )\r
-        {\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setRGBColorICCColor (const DOMString& /*rgbColor*/,\r
-                                      const DOMString& /*iccColor*/ )\r
-                                      throw( SVGException )\r
-        {\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setColor (unsigned short /*colorType*/,\r
-                           const DOMString& /*rgbColor*/,\r
-                           const DOMString& /*iccColor*/ )\r
-                           throw( SVGException )\r
-        {\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGColor()\r
-        {\r
-        colorType = SVG_COLORTYPE_UNKNOWN;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGColor(const SVGColor &other) : css::CSSValue(other)\r
-        {\r
-        colorType = other.colorType;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGColor() {}\r
-\r
-protected:\r
-\r
-    int colorType;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGRect\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGRect\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX()\r
-        {\r
-        return x;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX(double val) throw (DOMException)\r
-        {\r
-        x = val;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY()\r
-        {\r
-        return y;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY(double val) throw (DOMException)\r
-        {\r
-        y = val;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getWidth()\r
-        {\r
-        return width;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setWidth(double val) throw (DOMException)\r
-        {\r
-        width = val;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getHeight()\r
-        {\r
-        return height;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setHeight(double val) throw (DOMException)\r
-        {\r
-        height = val;\r
-        }\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGRect()\r
-        {\r
-        x = y = width = height = 0.0;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGRect(const SVGRect &other)\r
-        {\r
-        x = other.x;\r
-        y = other.y;\r
-        width = other.width;\r
-        height = other.height;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGRect() {}\r
-\r
-protected:\r
-\r
-    double x, y, width, height;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGAnimatedRect\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGAnimatedRect\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGRect &getBaseVal()\r
-        {\r
-        return baseVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGRect &getAnimVal()\r
-        {\r
-        return animVal;\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedRect()\r
-        {\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedRect(const SVGAnimatedRect &other)\r
-        {\r
-        baseVal = other.baseVal;\r
-        animVal = other.animVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGAnimatedRect() {}\r
-\r
-protected:\r
-\r
-    SVGRect baseVal, animVal;\r
-\r
-};\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPoint\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPoint\r
-{\r
-public:\r
-\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX()\r
-        { return x; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX(double val) throw (DOMException)\r
-        { x = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY()\r
-        { return y; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY(double val) throw (DOMException)\r
-        { y = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPoint matrixTransform(const SVGMatrix &/*matrix*/)\r
-        {\r
-        SVGPoint point;\r
-        return point;\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPoint()\r
-        { x = y = 0; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPoint(const SVGPoint &other)\r
-        {\r
-        x = other.x;\r
-        y = other.y;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPoint() {}\r
-\r
-protected:\r
-\r
-    double x, y;\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPointList\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPointList\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual unsigned long getNumberOfItems()\r
-        { return items.size(); }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void clear() throw( DOMException )\r
-        { items.clear(); }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPoint initialize(const SVGPoint &newItem)\r
-                             throw( DOMException, SVGException )\r
-        {\r
-        items.clear();\r
-        items.push_back(newItem);\r
-        return newItem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPoint getItem(unsigned long index )\r
-                             throw( DOMException )\r
-        {\r
-        if (index >= items.size())\r
-            {\r
-            SVGPoint point;\r
-            return point;\r
-            }\r
-        return items[index];\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPoint insertItemBefore(const SVGPoint &newItem,\r
-                                      unsigned long index )\r
-                                      throw( DOMException, SVGException )\r
-        {\r
-        if (index >= items.size())\r
-            items.push_back(newItem);\r
-        else\r
-            {\r
-            std::vector<SVGPoint>::iterator iter = items.begin() + index;\r
-            items.insert(iter, newItem);\r
-            }\r
-        return newItem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPoint replaceItem(const SVGPoint &newItem,\r
-                                  unsigned long index )\r
-                                  throw( DOMException, SVGException )\r
-        {\r
-        if (index >= items.size())\r
-            {\r
-            SVGPoint point;\r
-            return point;\r
-            }\r
-        std::vector<SVGPoint>::iterator iter = items.begin() + index;\r
-        *iter = newItem;\r
-        return newItem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPoint removeItem(unsigned long index )\r
-                                  throw( DOMException )\r
-        {\r
-        if (index >= items.size())\r
-            {\r
-            SVGPoint point;\r
-            return point;\r
-            }\r
-        std::vector<SVGPoint>::iterator iter = items.begin() + index;\r
-        SVGPoint oldItem = *iter;\r
-        items.erase(iter);\r
-        return oldItem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPoint appendItem(const SVGPoint &newItem)\r
-                              throw( DOMException, SVGException )\r
-        {\r
-        items.push_back(newItem);\r
-        return newItem;\r
-        }\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPointList() {}\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPointList(const SVGPointList &other)\r
-        {\r
-        items = other.items;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPointList() {}\r
-\r
-protected:\r
-\r
-    std::vector<SVGPoint> items;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGUnitTypes\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGUnitTypes\r
-{\r
-public:\r
-\r
-    /**\r
-     * Unit Types\r
-     */\r
-    typedef enum\r
-        {\r
-        SVG_UNIT_TYPE_UNKNOWN           = 0,\r
-        SVG_UNIT_TYPE_USERSPACEONUSE    = 1,\r
-        SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2\r
-        } UnitType;\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGUnitTypes() {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGUnitTypes() {}\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGStylable\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGStylable\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGAnimatedString getClassName()\r
-        {\r
-        return className;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual css::CSSStyleDeclaration getStyle()\r
-        {\r
-        return style;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual css::CSSValue getPresentationAttribute (const DOMString& /*name*/ )\r
-        {\r
-        css::CSSValue val;\r
-        //perform a lookup\r
-        return val;\r
-        }\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGStylable() {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGStylable(const SVGStylable &other)\r
-        {\r
-        className = other.className;\r
-        style     = other.style;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGStylable() {}\r
-\r
-protected:\r
-\r
-    SVGAnimatedString className;\r
-    css::CSSStyleDeclaration style;\r
-\r
-};\r
-\r
-\r
-/*#########################################################################\r
-## SVGLocatable\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGLocatable\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGElementPtr getNearestViewportElement()\r
-        {\r
-        SVGElementPtr result;\r
-        return result;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGElementPtr getFarthestViewportElement()\r
-        {\r
-        SVGElementPtr result;\r
-        return result;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGRect getBBox (  )\r
-        {\r
-        return bbox;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGMatrix getCTM (  )\r
-        {\r
-        return ctm;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGMatrix getScreenCTM (  )\r
-        {\r
-        return screenCtm;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGMatrix getTransformToElement (const SVGElement &/*element*/)\r
-                    throw( SVGException )\r
-        {\r
-        SVGMatrix result;\r
-        //do calculations\r
-        return result;\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGLocatable() {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGLocatable(const SVGLocatable &/*other*/)\r
-        {\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGLocatable() {}\r
-\r
-protected:\r
-\r
-    SVGRect bbox;\r
-    SVGMatrix ctm;\r
-    SVGMatrix screenCtm;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGTransformable\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGTransformable : public SVGLocatable\r
-{\r
-public:\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGAnimatedTransformList &getTransform()\r
-        {\r
-        return transforms;\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGTransformable() {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGTransformable(const SVGTransformable &other) : SVGLocatable(other)\r
-        {\r
-        transforms = other.transforms;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGTransformable() {}\r
-\r
-protected:\r
-\r
-    SVGAnimatedTransformList transforms;\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGTests\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGTests\r
-{\r
-public:\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGStringList &getRequiredFeatures()\r
-        {\r
-        return requiredFeatures;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGStringList &getRequiredExtensions()\r
-        {\r
-        return requiredExtensions;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGStringList &getSystemLanguage()\r
-        {\r
-        return systemLanguage;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual bool hasExtension (const DOMString& /*extension*/ )\r
-        {\r
-        return false;\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGTests() {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGTests(const SVGTests &other)\r
-        {\r
-        requiredFeatures   = other.requiredFeatures;\r
-        requiredExtensions = other.requiredExtensions;\r
-        systemLanguage     = other.systemLanguage;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGTests() {}\r
-\r
-protected:\r
-\r
-    SVGStringList requiredFeatures;\r
-    SVGStringList requiredExtensions;\r
-    SVGStringList systemLanguage;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGLangSpace\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGLangSpace\r
-{\r
-public:\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual DOMString getXmllang()\r
-        {\r
-        return xmlLang;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setXmllang(const DOMString &val)\r
-                                     throw (DOMException)\r
-        {\r
-        xmlLang = val;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual DOMString getXmlspace()\r
-        {\r
-        return xmlSpace;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setXmlspace(const DOMString &val)\r
-                                     throw (DOMException)\r
-        {\r
-        xmlSpace = val;\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGLangSpace() {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGLangSpace(const SVGLangSpace &other)\r
-        {\r
-        xmlLang  = other.xmlLang;\r
-        xmlSpace = other.xmlSpace;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGLangSpace() {}\r
-\r
-protected:\r
-\r
-    DOMString xmlLang;\r
-    DOMString xmlSpace;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGExternalResourcesRequired\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGExternalResourcesRequired\r
-{\r
-public:\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGAnimatedBoolean getExternalResourcesRequired()\r
-        { return required; }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGExternalResourcesRequired()\r
-        {  }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGExternalResourcesRequired(const SVGExternalResourcesRequired &other)\r
-        {\r
-        required = other.required;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGExternalResourcesRequired() {}\r
-\r
-protected:\r
-\r
-    SVGAnimatedBoolean required;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPreserveAspectRatio\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPreserveAspectRatio\r
-{\r
-public:\r
-\r
-\r
-    /**\r
-     * Alignment Types\r
-     */\r
-    typedef enum\r
-        {\r
-        SVG_PRESERVEASPECTRATIO_UNKNOWN  = 0,\r
-        SVG_PRESERVEASPECTRATIO_NONE     = 1,\r
-        SVG_PRESERVEASPECTRATIO_XMINYMIN = 2,\r
-        SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3,\r
-        SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4,\r
-        SVG_PRESERVEASPECTRATIO_XMINYMID = 5,\r
-        SVG_PRESERVEASPECTRATIO_XMIDYMID = 6,\r
-        SVG_PRESERVEASPECTRATIO_XMAXYMID = 7,\r
-        SVG_PRESERVEASPECTRATIO_XMINYMAX = 8,\r
-        SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9,\r
-        SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10\r
-        } AlignmentType;\r
-\r
-\r
-    /**\r
-     * Meet-or-slice Types\r
-     */\r
-    typedef enum\r
-        {\r
-        SVG_MEETORSLICE_UNKNOWN  = 0,\r
-        SVG_MEETORSLICE_MEET     = 1,\r
-        SVG_MEETORSLICE_SLICE    = 2\r
-        } MeetOrSliceType;\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual unsigned short getAlign()\r
-        { return align; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setAlign(unsigned short val) throw (DOMException)\r
-        { align = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual unsigned short getMeetOrSlice()\r
-        { return meetOrSlice; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setMeetOrSlice(unsigned short val) throw (DOMException)\r
-        { meetOrSlice = val; }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPreserveAspectRatio()\r
-        {\r
-        align       = SVG_PRESERVEASPECTRATIO_UNKNOWN;\r
-        meetOrSlice = SVG_MEETORSLICE_UNKNOWN;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPreserveAspectRatio(const SVGPreserveAspectRatio &other)\r
-        {\r
-        align       = other.align;\r
-        meetOrSlice = other.meetOrSlice;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPreserveAspectRatio() {}\r
-\r
-protected:\r
-\r
-    unsigned short align;\r
-    unsigned short meetOrSlice;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGAnimatedPreserveAspectRatio\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGAnimatedPreserveAspectRatio\r
-{\r
-public:\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPreserveAspectRatio getBaseVal()\r
-        { return baseVal; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPreserveAspectRatio getAnimVal()\r
-        { return animVal; }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedPreserveAspectRatio() {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedPreserveAspectRatio(const SVGAnimatedPreserveAspectRatio &other)\r
-        {\r
-        baseVal = other.baseVal;\r
-        baseVal = other.animVal;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGAnimatedPreserveAspectRatio() {}\r
-\r
-protected:\r
-\r
-    SVGPreserveAspectRatio baseVal;\r
-    SVGPreserveAspectRatio animVal;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGFitToViewBox\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGFitToViewBox\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGAnimatedRect getViewBox()\r
-        { return viewBox; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGAnimatedPreserveAspectRatio getPreserveAspectRatio()\r
-        { return preserveAspectRatio; }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGFitToViewBox()\r
-        {}\r
-\r
-    /**\r
-     *\r
-     */\r
-\r
-    SVGFitToViewBox(const SVGFitToViewBox &other)\r
-        {\r
-        viewBox = other.viewBox;\r
-        preserveAspectRatio = other.preserveAspectRatio;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGFitToViewBox() {}\r
-\r
-protected:\r
-\r
-    SVGAnimatedRect viewBox;\r
-\r
-    SVGAnimatedPreserveAspectRatio preserveAspectRatio;\r
-\r
-};\r
-\r
-\r
-/*#########################################################################\r
-## SVGZoomAndPan\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGZoomAndPan\r
-{\r
-public:\r
-\r
-\r
-    /**\r
-     * Zoom and Pan Types\r
-     */\r
-    typedef enum\r
-        {\r
-        SVG_ZOOMANDPAN_UNKNOWN = 0,\r
-        SVG_ZOOMANDPAN_DISABLE = 1,\r
-        SVG_ZOOMANDPAN_MAGNIFY = 2\r
-        } ZoomAndPanType;\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual unsigned short getZoomAndPan()\r
-        { return zoomAndPan; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setZoomAndPan(unsigned short val) throw (DOMException)\r
-        { zoomAndPan = val; }\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGZoomAndPan()\r
-        { zoomAndPan = SVG_ZOOMANDPAN_UNKNOWN; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGZoomAndPan(const SVGZoomAndPan &other)\r
-        { zoomAndPan = other.zoomAndPan; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGZoomAndPan() {}\r
-\r
-protected:\r
-\r
-    unsigned short zoomAndPan;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGViewSpec\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGViewSpec : public SVGZoomAndPan,\r
-                    public SVGFitToViewBox\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGTransformList getTransform()\r
-        { return transform; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGElementPtr getViewTarget()\r
-        { return viewTarget; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual DOMString getViewBoxString()\r
-        {\r
-        DOMString ret;\r
-        return ret;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual DOMString getPreserveAspectRatioString()\r
-        {\r
-        DOMString ret;\r
-        return ret;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual DOMString getTransformString()\r
-        {\r
-        DOMString ret;\r
-        return ret;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual DOMString getViewTargetString()\r
-        {\r
-        DOMString ret;\r
-        return ret;\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGViewSpec()\r
-        {\r
-        viewTarget = NULL;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGViewSpec(const SVGViewSpec &other) : SVGZoomAndPan(other), SVGFitToViewBox(other)\r
-        {\r
-        viewTarget = other.viewTarget;\r
-        transform  = other.transform;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGViewSpec() {}\r
-\r
-protected:\r
-\r
-    SVGElementPtr viewTarget;\r
-    SVGTransformList transform;\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGURIReference\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGURIReference\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGAnimatedString getHref()\r
-        { return href; }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGURIReference() {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGURIReference(const SVGURIReference &other)\r
-        {\r
-        href = other.href;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGURIReference() {}\r
-\r
-protected:\r
-\r
-    SVGAnimatedString href;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGCSSRule\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGCSSRule : public css::CSSRule\r
-{\r
-public:\r
-\r
-\r
-    /**\r
-     * Additional CSS RuleType to support ICC color specifications\r
-     */\r
-    typedef enum\r
-        {\r
-        COLOR_PROFILE_RULE = 7\r
-        } ColorProfileRuleType;\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGCSSRule()\r
-        { type = COLOR_PROFILE_RULE; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGCSSRule(const SVGCSSRule &other) : css::CSSRule(other)\r
-        { type = COLOR_PROFILE_RULE; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGCSSRule() {}\r
-\r
-};\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGRenderingIntent\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGRenderingIntent\r
-{\r
-public:\r
-\r
-    /**\r
-     * Rendering Intent Types\r
-     */\r
-    typedef enum\r
-        {\r
-        RENDERING_INTENT_UNKNOWN               = 0,\r
-        RENDERING_INTENT_AUTO                  = 1,\r
-        RENDERING_INTENT_PERCEPTUAL            = 2,\r
-        RENDERING_INTENT_RELATIVE_COLORIMETRIC = 3,\r
-        RENDERING_INTENT_SATURATION            = 4,\r
-        RENDERING_INTENT_ABSOLUTE_COLORIMETRIC = 5\r
-        } RenderingIntentType;\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGRenderingIntent()\r
-        {\r
-        renderingIntentType = RENDERING_INTENT_UNKNOWN;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGRenderingIntent(const SVGRenderingIntent &other)\r
-        {\r
-        renderingIntentType = other.renderingIntentType;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGRenderingIntent() {}\r
-\r
-protected:\r
-\r
-    unsigned short renderingIntentType;\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-###########################################################################\r
-## P A T H    S E G M E N T S\r
-###########################################################################\r
-#########################################################################*/\r
-\r
-static char const *const pathSegLetters[] =\r
-{\r
-    "@", // PATHSEG_UNKNOWN,\r
-    "z", // PATHSEG_CLOSEPATH\r
-    "M", // PATHSEG_MOVETO_ABS\r
-    "m", // PATHSEG_MOVETO_REL,\r
-    "L", // PATHSEG_LINETO_ABS\r
-    "l", // PATHSEG_LINETO_REL\r
-    "C", // PATHSEG_CURVETO_CUBIC_ABS\r
-    "c", // PATHSEG_CURVETO_CUBIC_REL\r
-    "Q", // PATHSEG_CURVETO_QUADRATIC_ABS,\r
-    "q", // PATHSEG_CURVETO_QUADRATIC_REL\r
-    "A", // PATHSEG_ARC_ABS\r
-    "a", // PATHSEG_ARC_REL,\r
-    "H", // PATHSEG_LINETO_HORIZONTAL_ABS,\r
-    "h", // PATHSEG_LINETO_HORIZONTAL_REL\r
-    "V", // PATHSEG_LINETO_VERTICAL_ABS\r
-    "v", // PATHSEG_LINETO_VERTICAL_REL\r
-    "S", // PATHSEG_CURVETO_CUBIC_SMOOTH_ABS\r
-    "s", // PATHSEG_CURVETO_CUBIC_SMOOTH_REL\r
-    "T", // PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS\r
-    "t"  // PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL\r
-};\r
-\r
-/*#########################################################################\r
-## SVGPathSeg\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPathSeg\r
-{\r
-public:\r
-\r
-\r
-\r
-    /**\r
-     *  Path Segment Types\r
-     */\r
-    typedef enum\r
-        {\r
-        PATHSEG_UNKNOWN                      = 0,\r
-        PATHSEG_CLOSEPATH                    = 1,\r
-        PATHSEG_MOVETO_ABS                   = 2,\r
-        PATHSEG_MOVETO_REL                   = 3,\r
-        PATHSEG_LINETO_ABS                   = 4,\r
-        PATHSEG_LINETO_REL                   = 5,\r
-        PATHSEG_CURVETO_CUBIC_ABS            = 6,\r
-        PATHSEG_CURVETO_CUBIC_REL            = 7,\r
-        PATHSEG_CURVETO_QUADRATIC_ABS        = 8,\r
-        PATHSEG_CURVETO_QUADRATIC_REL        = 9,\r
-        PATHSEG_ARC_ABS                      = 10,\r
-        PATHSEG_ARC_REL                      = 11,\r
-        PATHSEG_LINETO_HORIZONTAL_ABS        = 12,\r
-        PATHSEG_LINETO_HORIZONTAL_REL        = 13,\r
-        PATHSEG_LINETO_VERTICAL_ABS          = 14,\r
-        PATHSEG_LINETO_VERTICAL_REL          = 15,\r
-        PATHSEG_CURVETO_CUBIC_SMOOTH_ABS     = 16,\r
-        PATHSEG_CURVETO_CUBIC_SMOOTH_REL     = 17,\r
-        PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18,\r
-        PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19\r
-        } PathSegmentType;\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual unsigned short getPathSegType()\r
-        { return type; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual DOMString getPathSegTypeAsLetter()\r
-        {\r
-        int typ = type;\r
-        if (typ<0 || typ>PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL)\r
-            typ = PATHSEG_UNKNOWN;\r
-        char const *ch = pathSegLetters[typ];\r
-        DOMString letter = ch;\r
-        return letter;\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSeg()\r
-        { type = PATHSEG_UNKNOWN; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSeg(const SVGPathSeg &other)\r
-        {\r
-        type = other.type;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPathSeg() {}\r
-\r
-protected:\r
-\r
-    int type;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPathSegClosePath\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPathSegClosePath : public SVGPathSeg\r
-{\r
-public:\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegClosePath()\r
-        {\r
-        type = PATHSEG_CLOSEPATH;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegClosePath(const SVGPathSegClosePath &other) : SVGPathSeg(other)\r
-        {\r
-        type = PATHSEG_CLOSEPATH;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPathSegClosePath() {}\r
-\r
-};\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPathSegMovetoAbs\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPathSegMovetoAbs : public SVGPathSeg\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX()\r
-        { return x; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX(double val) throw (DOMException)\r
-        { x = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY()\r
-        { return y; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY(double val) throw (DOMException)\r
-        { y = val; }\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegMovetoAbs()\r
-        {\r
-        type = PATHSEG_MOVETO_ABS;\r
-        x = y = 0.0;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegMovetoAbs(double xArg, double yArg)\r
-        {\r
-        type = PATHSEG_MOVETO_ABS;\r
-        x = xArg; y = yArg;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegMovetoAbs(const SVGPathSegMovetoAbs &other) : SVGPathSeg(other)\r
-        {\r
-        type = PATHSEG_MOVETO_ABS;\r
-        x = other.x; y = other.y;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPathSegMovetoAbs() {}\r
-\r
-protected:\r
-\r
-    double x,y;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPathSegMovetoRel\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPathSegMovetoRel : public SVGPathSeg\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX()\r
-        { return x; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX(double val) throw (DOMException)\r
-        { x = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY()\r
-        { return y; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY(double val) throw (DOMException)\r
-        { y = val; }\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegMovetoRel()\r
-        {\r
-        type = PATHSEG_MOVETO_REL;\r
-        x = y = 0.0;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegMovetoRel(double xArg, double yArg)\r
-        {\r
-        type = PATHSEG_MOVETO_REL;\r
-        x = xArg; y = yArg;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegMovetoRel(const SVGPathSegMovetoRel &other) : SVGPathSeg(other)\r
-        {\r
-        type = PATHSEG_MOVETO_REL;\r
-        x = other.x; y = other.y;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPathSegMovetoRel() {}\r
-\r
-protected:\r
-\r
-    double x,y;\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPathSegLinetoAbs\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPathSegLinetoAbs : public SVGPathSeg\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX()\r
-        { return x; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX(double val) throw (DOMException)\r
-        { x = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY()\r
-        { return y; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY(double val) throw (DOMException)\r
-        { y = val; }\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegLinetoAbs()\r
-        {\r
-        type = PATHSEG_LINETO_ABS;\r
-        x = y = 0.0;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegLinetoAbs(double xArg, double yArg)\r
-        {\r
-        type = PATHSEG_LINETO_ABS;\r
-        x = xArg; y = yArg;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegLinetoAbs(const SVGPathSegLinetoAbs &other) : SVGPathSeg(other)\r
-        {\r
-        type = PATHSEG_LINETO_ABS;\r
-        x = other.x; y = other.y;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPathSegLinetoAbs() {}\r
-\r
-protected:\r
-\r
-    double x,y;\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPathSegLinetoRel\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPathSegLinetoRel : public SVGPathSeg\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX()\r
-        { return x; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX(double val) throw (DOMException)\r
-        { x = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY()\r
-        { return y; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY(double val) throw (DOMException)\r
-        { y = val; }\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegLinetoRel()\r
-        {\r
-        type = PATHSEG_LINETO_REL;\r
-        x = y = 0.0;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegLinetoRel(double xArg, double yArg)\r
-        {\r
-        type = PATHSEG_LINETO_REL;\r
-        x = xArg; y = yArg;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegLinetoRel(const SVGPathSegLinetoRel &other) : SVGPathSeg(other)\r
-        {\r
-        type = PATHSEG_LINETO_REL;\r
-        x = other.x; y = other.y;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPathSegLinetoRel() {}\r
-\r
-protected:\r
-\r
-    double x,y;\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPathSegCurvetoCubicAbs\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPathSegCurvetoCubicAbs : public SVGPathSeg\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX()\r
-        { return x; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX(double val) throw (DOMException)\r
-        { x = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY()\r
-        { return y; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY(double val) throw (DOMException)\r
-        { y = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX1()\r
-        { return x1; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX1(double val) throw (DOMException)\r
-        { x1 = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY1()\r
-        { return y1; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY1(double val) throw (DOMException)\r
-        { y1 = val; }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX2()\r
-        { return x2; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX2(double val) throw (DOMException)\r
-        { x2 = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY2()\r
-        { return y2; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY2(double val) throw (DOMException)\r
-        { y2 = val; }\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoCubicAbs()\r
-        {\r
-        type = PATHSEG_CURVETO_CUBIC_ABS;\r
-        x = y = x1 = y1 = x2 = y2 = 0.0;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoCubicAbs(double xArg,  double yArg,\r
-                              double x1Arg, double y1Arg,\r
-                              double x2Arg, double y2Arg)\r
-        {\r
-        type = PATHSEG_CURVETO_CUBIC_ABS;\r
-        x  = xArg;   y  = yArg;\r
-        x1 = x1Arg;  y1 = y1Arg;\r
-        x2 = x2Arg;  y2 = y2Arg;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoCubicAbs(const SVGPathSegCurvetoCubicAbs &other)\r
-                     : SVGPathSeg(other)\r
-        {\r
-        type = PATHSEG_CURVETO_CUBIC_ABS;\r
-        x  = other.x;  y  = other.y;\r
-        x1 = other.x1; y1 = other.y1;\r
-        x2 = other.x2; y2 = other.y2;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPathSegCurvetoCubicAbs() {}\r
-\r
-protected:\r
-\r
-    double x, y, x1, y1, x2, y2;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPathSegCurvetoCubicRel\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPathSegCurvetoCubicRel : public SVGPathSeg\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX()\r
-        { return x; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX(double val) throw (DOMException)\r
-        { x = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY()\r
-        { return y; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY(double val) throw (DOMException)\r
-        { y = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX1()\r
-        { return x1; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX1(double val) throw (DOMException)\r
-        { x1 = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY1()\r
-        { return y1; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY1(double val) throw (DOMException)\r
-        { y1 = val; }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX2()\r
-        { return x2; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX2(double val) throw (DOMException)\r
-        { x2 = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY2()\r
-        { return y2; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY2(double val) throw (DOMException)\r
-        { y2 = val; }\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoCubicRel()\r
-        {\r
-        type = PATHSEG_CURVETO_CUBIC_REL;\r
-        x = y = x1 = y1 = x2 = y2 = 0.0;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoCubicRel(double xArg,  double yArg,\r
-                              double x1Arg, double y1Arg,\r
-                              double x2Arg, double y2Arg)\r
-        {\r
-        type = PATHSEG_CURVETO_CUBIC_REL;\r
-        x  = xArg;   y  = yArg;\r
-        x1 = x1Arg;  y1 = y1Arg;\r
-        x2 = x2Arg;  y2 = y2Arg;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoCubicRel(const SVGPathSegCurvetoCubicRel &other)\r
-                     : SVGPathSeg(other)\r
-        {\r
-        type = PATHSEG_CURVETO_CUBIC_REL;\r
-        x  = other.x;  y  = other.y;\r
-        x1 = other.x1; y1 = other.y1;\r
-        x2 = other.x2; y2 = other.y2;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPathSegCurvetoCubicRel() {}\r
-\r
-protected:\r
-\r
-    double x, y, x1, y1, x2, y2;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPathSegCurvetoQuadraticAbs\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPathSegCurvetoQuadraticAbs : public SVGPathSeg\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX()\r
-        { return x; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX(double val) throw (DOMException)\r
-        { x = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY()\r
-        { return y; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY(double val) throw (DOMException)\r
-        { y = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX1()\r
-        { return x1; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX1(double val) throw (DOMException)\r
-        { x1 = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY1()\r
-        { return y1; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY1(double val) throw (DOMException)\r
-        { y1 = val; }\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoQuadraticAbs()\r
-        {\r
-        type = PATHSEG_CURVETO_QUADRATIC_ABS;\r
-        x = y = x1 = y1 = 0.0;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoQuadraticAbs(double xArg,  double yArg,\r
-                              double x1Arg, double y1Arg)\r
-        {\r
-        type = PATHSEG_CURVETO_QUADRATIC_ABS;\r
-        x  = xArg;   y  = yArg;\r
-        x1 = x1Arg;  y1 = y1Arg;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoQuadraticAbs(const SVGPathSegCurvetoQuadraticAbs &other)\r
-                     : SVGPathSeg(other)\r
-        {\r
-        type = PATHSEG_CURVETO_QUADRATIC_ABS;\r
-        x  = other.x;  y  = other.y;\r
-        x1 = other.x1; y1 = other.y1;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPathSegCurvetoQuadraticAbs() {}\r
-\r
-protected:\r
-\r
-    double x, y, x1, y1;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPathSegCurvetoQuadraticRel\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPathSegCurvetoQuadraticRel : public SVGPathSeg\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX()\r
-        { return x; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX(double val) throw (DOMException)\r
-        { x = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY()\r
-        { return y; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY(double val) throw (DOMException)\r
-        { y = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX1()\r
-        { return x1; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX1(double val) throw (DOMException)\r
-        { x1 = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY1()\r
-        { return y1; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY1(double val) throw (DOMException)\r
-        { y1 = val; }\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoQuadraticRel()\r
-        {\r
-        type = PATHSEG_CURVETO_QUADRATIC_REL;\r
-        x = y = x1 = y1 = 0.0;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoQuadraticRel(double xArg,  double yArg,\r
-                                  double x1Arg, double y1Arg)\r
-        {\r
-        type = PATHSEG_CURVETO_QUADRATIC_REL;\r
-        x  = xArg;   y  = yArg;\r
-        x1 = x1Arg;  y1 = y1Arg;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoQuadraticRel(const SVGPathSegCurvetoQuadraticRel &other)\r
-                     : SVGPathSeg(other)\r
-        {\r
-        type = PATHSEG_CURVETO_QUADRATIC_REL;\r
-        x  = other.x;  y  = other.y;\r
-        x1 = other.x1; y1 = other.y1;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPathSegCurvetoQuadraticRel() {}\r
-\r
-protected:\r
-\r
-    double x, y, x1, y1;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPathSegArcAbs\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPathSegArcAbs : public SVGPathSeg\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX()\r
-        { return x; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX(double val) throw (DOMException)\r
-        { x = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY()\r
-        { return y; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY(double val) throw (DOMException)\r
-        { y = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getR1()\r
-        { return r1; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setR1(double val) throw (DOMException)\r
-        { r1 = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getR2()\r
-        { return r2; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setR2(double val) throw (DOMException)\r
-        { r2 = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getAngle()\r
-        { return angle; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setAngle(double val) throw (DOMException)\r
-        { angle = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual bool getLargeArcFlag()\r
-        { return largeArcFlag; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setLargeArcFlag(bool val) throw (DOMException)\r
-        { largeArcFlag = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual bool getSweepFlag()\r
-        { return sweepFlag; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setSweepFlag(bool val) throw (DOMException)\r
-        { sweepFlag = val; }\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegArcAbs()\r
-        {\r
-        type = PATHSEG_ARC_ABS;\r
-        x = y = r1 = r2 = angle = 0.0;\r
-        largeArcFlag = sweepFlag = false;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegArcAbs(double xArg,  double yArg,\r
-                     double r1Arg, double r2Arg,\r
-                     double angleArg,\r
-                     bool largeArcFlagArg,\r
-                     bool sweepFlagArg )\r
-\r
-        {\r
-        type = PATHSEG_ARC_ABS;\r
-        x  = xArg;   y  = yArg;\r
-        r1 = r1Arg;  r2 = r2Arg;\r
-        angle        = angleArg;\r
-        largeArcFlag = largeArcFlagArg;\r
-        sweepFlag    = sweepFlagArg;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegArcAbs(const SVGPathSegArcAbs &other)\r
-                     : SVGPathSeg(other)\r
-        {\r
-        type = PATHSEG_ARC_ABS;\r
-        x  = other.x;  y  = other.y;\r
-        r1 = other.r1; r2 = other.r2;\r
-        angle        = other.angle;\r
-        largeArcFlag = other.largeArcFlag;\r
-        sweepFlag    = other.sweepFlag;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPathSegArcAbs() {}\r
-\r
-protected:\r
-\r
-    double x, y, r1, r2, angle;\r
-    bool largeArcFlag;\r
-    bool sweepFlag;\r
-\r
-};\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPathSegArcRel\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPathSegArcRel : public SVGPathSeg\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX()\r
-        { return x; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX(double val) throw (DOMException)\r
-        { x = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY()\r
-        { return y; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY(double val) throw (DOMException)\r
-        { y = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getR1()\r
-        { return r1; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setR1(double val) throw (DOMException)\r
-        { r1 = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getR2()\r
-        { return r2; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setR2(double val) throw (DOMException)\r
-        { r2 = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getAngle()\r
-        { return angle; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setAngle(double val) throw (DOMException)\r
-        { angle = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual bool getLargeArcFlag()\r
-        { return largeArcFlag; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setLargeArcFlag(bool val) throw (DOMException)\r
-        { largeArcFlag = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual bool getSweepFlag()\r
-        { return sweepFlag; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setSweepFlag(bool val) throw (DOMException)\r
-        { sweepFlag = val; }\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegArcRel()\r
-        {\r
-        type = PATHSEG_ARC_REL;\r
-        x = y = r1 = r2 = angle = 0.0;\r
-        largeArcFlag = sweepFlag = false;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegArcRel(double xArg, double yArg,\r
-                     double r1Arg, double r2Arg,\r
-                     double angleArg,\r
-                     bool largeArcFlagArg,\r
-                     bool sweepFlagArg )\r
-\r
-        {\r
-        type = PATHSEG_ARC_REL;\r
-        x  = xArg;   y  = yArg;\r
-        r1 = r1Arg;  r2 = r2Arg;\r
-        angle        = angleArg;\r
-        largeArcFlag = largeArcFlagArg;\r
-        sweepFlag    = sweepFlagArg;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegArcRel(const SVGPathSegArcRel &other)\r
-                     : SVGPathSeg(other)\r
-        {\r
-        type = PATHSEG_ARC_REL;\r
-        x  = other.x;  y  = other.y;\r
-        r1 = other.r1; r2 = other.r2;\r
-        angle        = other.angle;\r
-        largeArcFlag = other.largeArcFlag;\r
-        sweepFlag    = other.sweepFlag;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPathSegArcRel() {}\r
-\r
-protected:\r
-\r
-    double x, y, r1, r2, angle;\r
-    bool largeArcFlag;\r
-    bool sweepFlag;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPathSegLinetoHorizontalAbs\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPathSegLinetoHorizontalAbs : public SVGPathSeg\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX()\r
-        { return x; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX(double val) throw (DOMException)\r
-        { x = val; }\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegLinetoHorizontalAbs()\r
-        {\r
-        type = PATHSEG_LINETO_HORIZONTAL_ABS;\r
-        x = 0.0;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegLinetoHorizontalAbs(double xArg)\r
-        {\r
-        type = PATHSEG_LINETO_HORIZONTAL_ABS;\r
-        x = xArg;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegLinetoHorizontalAbs(const SVGPathSegLinetoHorizontalAbs &other)\r
-                     : SVGPathSeg(other)\r
-        {\r
-        type = PATHSEG_LINETO_HORIZONTAL_ABS;\r
-        x = other.x;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPathSegLinetoHorizontalAbs() {}\r
-\r
-protected:\r
-\r
-    double x;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPathSegLinetoHorizontalRel\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPathSegLinetoHorizontalRel : public SVGPathSeg\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX()\r
-        { return x; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX(double val) throw (DOMException)\r
-        { x = val; }\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegLinetoHorizontalRel()\r
-        {\r
-        type = PATHSEG_LINETO_HORIZONTAL_REL;\r
-        x = 0.0;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegLinetoHorizontalRel(double xArg)\r
-        {\r
-        type = PATHSEG_LINETO_HORIZONTAL_REL;\r
-        x = xArg;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegLinetoHorizontalRel(const SVGPathSegLinetoHorizontalRel &other)\r
-                     : SVGPathSeg(other)\r
-        {\r
-        type = PATHSEG_LINETO_HORIZONTAL_REL;\r
-        x = other.x;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPathSegLinetoHorizontalRel() {}\r
-\r
-protected:\r
-\r
-    double x;\r
-\r
-};\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPathSegLinetoVerticalAbs\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPathSegLinetoVerticalAbs : public SVGPathSeg\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY()\r
-        { return y; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY(double val) throw (DOMException)\r
-        { y = val; }\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegLinetoVerticalAbs()\r
-        {\r
-        type = PATHSEG_LINETO_VERTICAL_ABS;\r
-        y = 0.0;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegLinetoVerticalAbs(double yArg)\r
-        {\r
-        type = PATHSEG_LINETO_VERTICAL_ABS;\r
-        y = yArg;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegLinetoVerticalAbs(const SVGPathSegLinetoVerticalAbs &other)\r
-                     : SVGPathSeg(other)\r
-        {\r
-        type = PATHSEG_LINETO_VERTICAL_ABS;\r
-        y = other.y;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPathSegLinetoVerticalAbs() {}\r
-\r
-protected:\r
-\r
-    double y;\r
-\r
-};\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPathSegLinetoVerticalRel\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPathSegLinetoVerticalRel : public SVGPathSeg\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY()\r
-        { return y; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY(double val) throw (DOMException)\r
-        { y = val; }\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegLinetoVerticalRel()\r
-        {\r
-        type = PATHSEG_LINETO_VERTICAL_REL;\r
-        y = 0.0;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegLinetoVerticalRel(double yArg)\r
-        {\r
-        type = PATHSEG_LINETO_VERTICAL_REL;\r
-        y = yArg;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegLinetoVerticalRel(const SVGPathSegLinetoVerticalRel &other)\r
-                     : SVGPathSeg(other)\r
-        {\r
-        type = PATHSEG_LINETO_VERTICAL_REL;\r
-        y = other.y;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPathSegLinetoVerticalRel() {}\r
-\r
-protected:\r
-\r
-    double y;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPathSegCurvetoCubicSmoothAbs\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPathSegCurvetoCubicSmoothAbs : public SVGPathSeg\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX()\r
-        { return x; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX(double val) throw (DOMException)\r
-        { x = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY()\r
-        { return y; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY(double val) throw (DOMException)\r
-        { y = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX2()\r
-        { return x2; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX2(double val) throw (DOMException)\r
-        { x2 = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY2()\r
-        { return y2; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY2(double val) throw (DOMException)\r
-        { y2 = val; }\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoCubicSmoothAbs()\r
-        {\r
-        type = PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;\r
-        x = y = x2 = y2 = 0.0;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoCubicSmoothAbs(double xArg,   double yArg,\r
-                                    double x2Arg, double y2Arg)\r
-        {\r
-        type = PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;\r
-        x  = xArg;    y  = yArg;\r
-        x2 = x2Arg;   y2 = y2Arg;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoCubicSmoothAbs(const SVGPathSegCurvetoCubicSmoothAbs &other)\r
-                     : SVGPathSeg(other)\r
-        {\r
-        type = PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;\r
-        x  = other.x;  y  = other.y;\r
-        x2 = other.x2; y2 = other.y2;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPathSegCurvetoCubicSmoothAbs() {}\r
-\r
-protected:\r
-\r
-    double x, y, x2, y2;\r
-\r
-};\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPathSegCurvetoCubicSmoothRel\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPathSegCurvetoCubicSmoothRel : public SVGPathSeg\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX()\r
-        { return x; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX(double val) throw (DOMException)\r
-        { x = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY()\r
-        { return y; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY(double val) throw (DOMException)\r
-        { y = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX2()\r
-        { return x2; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX2(double val) throw (DOMException)\r
-        { x2 = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY2()\r
-        { return y2; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY2(double val) throw (DOMException)\r
-        { y2 = val; }\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoCubicSmoothRel()\r
-        {\r
-        type = PATHSEG_CURVETO_CUBIC_SMOOTH_REL;\r
-        x = y = x2 = y2 = 0.0;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoCubicSmoothRel(double xArg,   double yArg,\r
-                                    double x2Arg, double y2Arg)\r
-        {\r
-        type = PATHSEG_CURVETO_CUBIC_SMOOTH_REL;\r
-        x  = xArg;    y  = yArg;\r
-        x2 = x2Arg;   y2 = y2Arg;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoCubicSmoothRel(const SVGPathSegCurvetoCubicSmoothRel &other)\r
-                     : SVGPathSeg(other)\r
-        {\r
-        type = PATHSEG_CURVETO_CUBIC_SMOOTH_REL;\r
-        x  = other.x;  y  = other.y;\r
-        x2 = other.x2; y2 = other.y2;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPathSegCurvetoCubicSmoothRel() {}\r
-\r
-protected:\r
-\r
-    double x, y, x2, y2;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPathSegCurvetoQuadraticSmoothAbs\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPathSegCurvetoQuadraticSmoothAbs : public SVGPathSeg\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX()\r
-        { return x; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX(double val) throw (DOMException)\r
-        { x = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY()\r
-        { return y; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY(double val) throw (DOMException)\r
-        { y = val; }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoQuadraticSmoothAbs()\r
-        {\r
-        type = PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;\r
-        x = y = 0.0;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoQuadraticSmoothAbs(double xArg, double yArg)\r
-        {\r
-        type = PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;\r
-        x = xArg;     y = yArg;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoQuadraticSmoothAbs(const SVGPathSegCurvetoQuadraticSmoothAbs &other)\r
-                     : SVGPathSeg(other)\r
-        {\r
-        type = PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;\r
-        x = y = 0.0;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPathSegCurvetoQuadraticSmoothAbs() {}\r
-\r
-protected:\r
-\r
-    double x, y;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPathSegCurvetoQuadraticSmoothRel\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPathSegCurvetoQuadraticSmoothRel : public SVGPathSeg\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getX()\r
-        { return x; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setX(double val) throw (DOMException)\r
-        { x = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getY()\r
-        { return y; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setY(double val) throw (DOMException)\r
-        { y = val; }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoQuadraticSmoothRel()\r
-        {\r
-        type = PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;\r
-        x = y = 0.0;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoQuadraticSmoothRel(double xArg, double yArg)\r
-        {\r
-        type = PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;\r
-        x = xArg;     y = yArg;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegCurvetoQuadraticSmoothRel(const SVGPathSegCurvetoQuadraticSmoothRel &other)\r
-                     : SVGPathSeg(other)\r
-        {\r
-        type = PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;\r
-        x = y = 0.0;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPathSegCurvetoQuadraticSmoothRel() {}\r
-\r
-protected:\r
-\r
-    double x, y;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPathSegList\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPathSegList\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual unsigned long getNumberOfItems()\r
-        { return items.size(); }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void clear () throw( DOMException )\r
-        { items.clear(); }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPathSeg initialize (const SVGPathSeg &newItem)\r
-                    throw( DOMException, SVGException )\r
-        {\r
-        items.clear();\r
-        items.push_back(newItem);\r
-        return newItem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPathSeg getItem (unsigned long index)\r
-                    throw( DOMException )\r
-        {\r
-        if (index >= items.size())\r
-            {\r
-            SVGPathSeg seg;\r
-            return seg;\r
-            }\r
-        return items[index];\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPathSeg insertItemBefore(const SVGPathSeg &newItem,\r
-                                        unsigned long index )\r
-                          throw( DOMException, SVGException )\r
-        {\r
-        if (index >= items.size())\r
-            items.push_back(newItem);\r
-        else\r
-            {\r
-            std::vector<SVGPathSeg>::iterator iter = items.begin() + index;\r
-            items.insert(iter, newItem);\r
-            }\r
-        return newItem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPathSeg replaceItem(const SVGPathSeg &newItem,\r
-                                   unsigned long index )\r
-                              throw( DOMException, SVGException )\r
-        {\r
-        if (index >= items.size())\r
-            {\r
-            SVGPathSeg seg;\r
-            return seg;\r
-            }\r
-        std::vector<SVGPathSeg>::iterator iter = items.begin() + index;\r
-        *iter = newItem;\r
-        return newItem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPathSeg removeItem (unsigned long index)\r
-                                  throw (DOMException)\r
-        {\r
-        if (index >= items.size())\r
-            {\r
-            SVGPathSeg seg;\r
-            return seg;\r
-            }\r
-        std::vector<SVGPathSeg>::iterator iter = items.begin() + index;\r
-        SVGPathSeg olditem = *iter;\r
-        items.erase(iter);\r
-        return olditem;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPathSeg appendItem (const SVGPathSeg &newItem)\r
-                    throw( DOMException, SVGException )\r
-        {\r
-        items.push_back(newItem);\r
-        return newItem;\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegList() {}\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPathSegList(const SVGPathSegList &other)\r
-        {\r
-        items = other.items;\r
-        }\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPathSegList() {}\r
-\r
-protected:\r
-\r
-    std::vector<SVGPathSeg> items;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGAnimatedPathData\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGAnimatedPathData\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPathSegList getPathSegList()\r
-        {\r
-        SVGPathSegList list;\r
-        return list;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPathSegList getNormalizedPathSegList()\r
-        {\r
-        SVGPathSegList list;\r
-        return list;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPathSegList getAnimatedPathSegList()\r
-        {\r
-        SVGPathSegList list;\r
-        return list;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPathSegList getAnimatedNormalizedPathSegList()\r
-        {\r
-        SVGPathSegList list;\r
-        return list;\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-   SVGAnimatedPathData()\r
-        {}\r
-\r
-    /**\r
-     *\r
-     */\r
-   SVGAnimatedPathData(const SVGAnimatedPathData &/*other*/)\r
-        {\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGAnimatedPathData() {}\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGAnimatedPoints\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGAnimatedPoints\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPointList getPoints()\r
-        { return points; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPointList getAnimatedPoints()\r
-        { return animatedPoints; }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedPoints() {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGAnimatedPoints(const SVGAnimatedPoints &other)\r
-        {\r
-        points         = other.points;\r
-        animatedPoints = other.animatedPoints;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGAnimatedPoints() {}\r
-\r
-protected:\r
-\r
-    SVGPointList points;\r
-    SVGPointList animatedPoints;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGPaint\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGPaint : public SVGColor\r
-{\r
-public:\r
-\r
-\r
-    /**\r
-     * Paint Types\r
-     */\r
-    typedef enum\r
-        {\r
-        SVG_PAINTTYPE_UNKNOWN               = 0,\r
-        SVG_PAINTTYPE_RGBCOLOR              = 1,\r
-        SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR     = 2,\r
-        SVG_PAINTTYPE_NONE                  = 101,\r
-        SVG_PAINTTYPE_CURRENTCOLOR          = 102,\r
-        SVG_PAINTTYPE_URI_NONE              = 103,\r
-        SVG_PAINTTYPE_URI_CURRENTCOLOR      = 104,\r
-        SVG_PAINTTYPE_URI_RGBCOLOR          = 105,\r
-        SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR = 106,\r
-        SVG_PAINTTYPE_URI                   = 107\r
-        } PaintType;\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual unsigned short getPaintType()\r
-        { return paintType; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual DOMString getUri()\r
-        { return uri; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setUri (const DOMString& uriArg )\r
-        { uri = uriArg; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setPaint (unsigned short paintTypeArg,\r
-                           const DOMString& uriArg,\r
-                           const DOMString& /*rgbColor*/,\r
-                           const DOMString& /*iccColor*/ )\r
-                           throw( SVGException )\r
-        {\r
-        paintType = paintTypeArg;\r
-        uri       = uriArg;\r
-        //do something with rgbColor\r
-        //do something with iccColor;\r
-        }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPaint()\r
-        {\r
-        uri       = "";\r
-        paintType = SVG_PAINTTYPE_UNKNOWN;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGPaint(const SVGPaint &other) : css::CSSValue(other), SVGColor(other)\r
-        {\r
-        uri       = "";\r
-        paintType = SVG_PAINTTYPE_UNKNOWN;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGPaint() {}\r
-\r
-protected:\r
-\r
-    unsigned int paintType;\r
-    DOMString uri;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGColorProfileRule\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGColorProfileRule : public SVGCSSRule,\r
-                            public SVGRenderingIntent\r
-{\r
-\r
-public:\r
-   /**\r
-     *\r
-     */\r
-    virtual DOMString getSrc()\r
-        { return src; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setSrc(const DOMString &val) throw (DOMException)\r
-        { src = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual DOMString getName()\r
-        { return name; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setName(const DOMString &val) throw (DOMException)\r
-        { name = val; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual unsigned short getRenderingIntent()\r
-        { return renderingIntent; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual void setRenderingIntent(unsigned short val) throw (DOMException)\r
-        { renderingIntent = val; }\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGColorProfileRule() {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGColorProfileRule(const SVGColorProfileRule &other)\r
-               : SVGCSSRule(other), SVGRenderingIntent(other)\r
-        {\r
-        renderingIntent = other.renderingIntent;\r
-        src             = other.src;\r
-        name            = other.name;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGColorProfileRule() {}\r
-\r
-protected:\r
-\r
-    unsigned short renderingIntent;\r
-    DOMString src;\r
-    DOMString name;\r
-\r
-};\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGFilterPrimitiveStandardAttributes\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGFilterPrimitiveStandardAttributes : public SVGStylable\r
-{\r
-public:\r
-\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGAnimatedLength getX()\r
-        { return x; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGAnimatedLength getY()\r
-        { return y; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGAnimatedLength getWidth()\r
-        { return width; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGAnimatedLength getHeight()\r
-        { return height; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGAnimatedString getResult()\r
-        { return result; }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGFilterPrimitiveStandardAttributes()\r
-        {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGFilterPrimitiveStandardAttributes(const SVGFilterPrimitiveStandardAttributes &other)\r
-                                 : SVGStylable(other)\r
-        {\r
-        x      = other.x;\r
-        y      = other.y;\r
-        width  = other.width;\r
-        height = other.height;\r
-        result = other.result;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGFilterPrimitiveStandardAttributes() {}\r
-\r
-protected:\r
-\r
-    SVGAnimatedLength x;\r
-    SVGAnimatedLength y;\r
-    SVGAnimatedLength width;\r
-    SVGAnimatedLength height;\r
-    SVGAnimatedString result;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGEvent\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGEvent : events::Event\r
-{\r
-public:\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGEvent() {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGEvent(const SVGEvent &other) : events::Event(other)\r
-        {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGEvent() {}\r
-\r
-};\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGZoomEvent\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGZoomEvent : events::UIEvent\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGRect getZoomRectScreen()\r
-        { return zoomRectScreen; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getPreviousScale()\r
-        { return previousScale; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGPoint getPreviousTranslate()\r
-        { return previousTranslate; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual double getNewScale()\r
-        { return newScale; }\r
-\r
-   /**\r
-     *\r
-     */\r
-    virtual SVGPoint getNewTranslate()\r
-        { return newTranslate; }\r
-\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGZoomEvent()\r
-        {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGZoomEvent(const SVGZoomEvent &other) : events::Event(other),\r
-                                              events::UIEvent(other)\r
-        {\r
-        zoomRectScreen    = other.zoomRectScreen;\r
-        previousScale     = other.previousScale;\r
-        previousTranslate = other.previousTranslate;\r
-        newScale          = other.newScale;\r
-        newTranslate      = other.newTranslate;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGZoomEvent() {}\r
-\r
-protected:\r
-\r
-    SVGRect  zoomRectScreen;\r
-    double   previousScale;\r
-    SVGPoint previousTranslate;\r
-    double   newScale;\r
-    SVGPoint newTranslate;\r
-\r
-};\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGElementInstance\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGElementInstance : public events::EventTarget\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGElementPtr getCorrespondingElement()\r
-        { return correspondingElement; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGUseElementPtr getCorrespondingUseElement()\r
-        { return correspondingUseElement; }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGElementInstance getParentNode()\r
-        {\r
-        SVGElementInstance ret;\r
-        return ret;\r
-        }\r
-\r
-    /**\r
-     *  Since we are using stack types and this is a circular definition,\r
-     *  we will instead implement this as a global function below:\r
-     *   SVGElementInstanceList getChildNodes(const SVGElementInstance instance);\r
-     */\r
-    //virtual SVGElementInstanceList getChildNodes();\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGElementInstance getFirstChild()\r
-        {\r
-        SVGElementInstance ret;\r
-        return ret;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGElementInstance getLastChild()\r
-        {\r
-        SVGElementInstance ret;\r
-        return ret;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGElementInstance getPreviousSibling()\r
-        {\r
-        SVGElementInstance ret;\r
-        return ret;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGElementInstance getNextSibling()\r
-        {\r
-        SVGElementInstance ret;\r
-        return ret;\r
-        }\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGElementInstance() {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGElementInstance(const SVGElementInstance &other)\r
-                        : events::EventTarget(other)\r
-        {\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGElementInstance() {}\r
-\r
-protected:\r
-\r
-    SVGElementPtr      correspondingElement;\r
-    SVGUseElementPtr   correspondingUseElement;\r
-\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*#########################################################################\r
-## SVGElementInstanceList\r
-#########################################################################*/\r
-\r
-/**\r
- *\r
- */\r
-class SVGElementInstanceList\r
-{\r
-public:\r
-\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual unsigned long getLength()\r
-        { return items.size(); }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual SVGElementInstance item (unsigned long index )\r
-        {\r
-        if (index >= items.size())\r
-            {\r
-            SVGElementInstance ret;\r
-            return ret;\r
-            }\r
-        return items[index];\r
-        }\r
-\r
-    /**\r
-     *  This static method replaces the circular definition of:\r
-     *        SVGElementInstanceList SVGElementInstance::getChildNodes()\r
-     *\r
-     */\r
-    static SVGElementInstanceList getChildNodes(const SVGElementInstance &/*instance*/)\r
-        {\r
-        SVGElementInstanceList list;\r
-        return list;\r
-        }\r
-\r
-\r
-    //##################\r
-    //# Non-API methods\r
-    //##################\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGElementInstanceList() {}\r
-\r
-    /**\r
-     *\r
-     */\r
-    SVGElementInstanceList(const SVGElementInstanceList &other)\r
-        {\r
-        items = other.items;\r
-        }\r
-\r
-    /**\r
-     *\r
-     */\r
-    virtual ~SVGElementInstanceList() {}\r
-\r
-protected:\r
-\r
-    std::vector<SVGElementInstance> items;\r
-\r
-\r
-};\r
-\r
-\r
-/**\r
- * This is a helper class that will hold several types of data.  It will\r
- * be used in those situations where methods are common to different \r
- * interfaces, except for the data type.\r
- */   \r
-class SVGValue\r
-{\r
-public:\r
-\r
-    typedef enum\r
-        {\r
-        SVG_DOUBLE,\r
-        SVG_INT,\r
-        SVG_STRING\r
-           }SVGValueType;\r
-\r
-    SVGValue(long v)\r
-        {\r
-        init();\r
-        ival = d;\r
-        type = SVG_INT;\r
-           }\r
-       \r
-    SVGValue(double v)\r
-        {\r
-        init();\r
-        dval = v;\r
-        type = SVG_DOUBLE;\r
-           }\r
-       \r
-    SVGValue(const DOMString &v)\r
-        {\r
-        init();\r
-        sval = v;\r
-        type = SVG_STRING;\r
-           }\r
-       \r
-    SVGValue(const SVGValue &other)\r
-        {\r
-        assign(other);\r
-           }\r
-       \r
-    SVGValue &operator=(const SVGValue &other)\r
-        {\r
-        assign(other);\r
-        return *this;\r
-           }\r
-       \r
-    SVGValue &operator=(long v)\r
-        {\r
-        init();\r
-        ival = v;\r
-        type = SVG_INT;\r
-        return *this;\r
-           }\r
-       \r
-    SVGValue &operator=(double v)\r
-        {\r
-        init();\r
-        ival = v;\r
-        type = SVG_DOUBLE;\r
-        return *this;\r
-           }\r
-       \r
-    SVGValue &operator=(const DOMString &v)\r
-        {\r
-        init();\r
-        sval = v;\r
-        type = SVG_STRING;\r
-        return *this;\r
-           }\r
-       \r
-       ~SVGValue()\r
-           {}\r
-           \r
-       long intValue()\r
-           { return ival; }\r
-\r
-       double doubleValue()\r
-           { return ival; }\r
-\r
-       DOMString &stringValue()\r
-           { return sval; }\r
-\r
-\r
-private:\r
-\r
-    void init()\r
-        {\r
-        type = SVG_DOUBLE;\r
-        ival = 0;\r
-               dval = 0.0;    \r
-               sval = "";\r
-           }\r
-       \r
-    void assign(const SVGValue &other)\r
-        {\r
-        type = other.type;\r
-        ival = other.ival;\r
-               dval = other.dval;\r
-               sval = other.sval;\r
-           }\r
-       \r
-       int       type;\r
-       double    dval;\r
-       long      ival;\r
-       DOMString sval;\r
-\r
-};\r
-\r
-\r
-\r
-//########################################################################\r
-//########################################################################\r
-//########################################################################\r
-//#   D O M\r
-//########################################################################\r
-//########################################################################\r
-//########################################################################\r
-\r
-\r
-\r
-\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
-## SVGValue\r
-#########################################################################*/\r
-\r
-\r
-/**\r
- * A helper class to provide a common API across several data types\r
- */\r
-class SVGValue\r
-{\r
-public:\r
-\r
-    /**\r
-     * Constructors\r
-     */\r
-    SVGValue()\r
-        { init(); }\r
-\r
-    SVGValue(const SVGValue &other)\r
-        { assign(other); }\r
-\r
-    SVGValue(double val)\r
-        { init(); type = SVG_DOUBLE; dval = val; }\r
-\r
-    SVGValue(long val)\r
-        { init(); type = SVG_INT; ival = val; }\r
-\r
-    SVGValue(const DOMString &val)\r
-        { init(); type = SVG_STRING; sval = val; }\r
-\r
-    int getType()\r
-        { return type; }\r
-\r
-    /**\r
-     * Assignment\r
-     */\r
-    SVGValue &operator=(const SVGValue &val)\r
-        { assign(val); return *this; }\r
-\r
-    SVGValue &operator=(double val)\r
-        { init(); type = SVG_DOUBLE; dval = val; return *this; }\r
-\r
-    SVGValue &operator=(long val)\r
-        { init(); type = SVG_INT; ival = val; return *this; }\r
-\r
-    SVGValue &operator=(const DOMString &val)\r
-        { init(); type = SVG_STRING; sval = val; return *this; }\r
-\r
-    /**\r
-     * Getters\r
-     */\r
-    double doubleValue()\r
-        { return dval; }\r
-        \r
-    long intValue()\r
-        { return ival; }\r
-        \r
-    DOMString &stringValue()\r
-        { return sval; }\r
-\r
-private:\r
-\r
-    void init()\r
-        {\r
-        type = SVG_DOUBLE;\r
-        dval = 0.0;\r
-        ival = 0;\r
-        sval.clear();\r
-        }\r
-\r
-    void assign(const SVGValue &other)\r
-        {\r
-        type = other.type;\r
-        dval = other.dval;\r
-        ival = other.ival;\r
-        sval = other.sval;\r
-        }\r
-\r
-    int       type;\r
-    double    dval;\r
-    long      ival;\r
-    DOMString sval;\r
-\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
+#ifndef __SVG_H__
+#define __SVG_H__
+
+/**
+ * Phoebe DOM Implementation.
+ *
+ * This is a C++ approximation of the W3C DOM model, which follows
+ * fairly closely the specifications in the various .idl files, copies of
+ * which are provided for reference.  Most important is this one:
+ *
+ * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html
+ *
+ * Authors:
+ *   Bob Jamison
+ *
+ * Copyright(C) 2005-2008 Bob Jamison
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2.1 of the License, or(at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ * =======================================================================
+ * NOTES
+ *
+ * This API follows:
+ * http://www.w3.org/TR/SVG11/svgdom.html
+ *
+ * This file defines the main SVG-DOM Node types.  Other non-Node types are
+ * defined in svgtypes.h.
+ *    
+ */
+
+
+// For access to DOM2 core
+#include "dom/dom.h"
+
+// For access to DOM2 events
+#include "dom/events.h"
+
+// For access to those parts from DOM2 CSS OM used by SVG DOM.
+#include "dom/css.h"
+
+// For access to those parts from DOM2 Views OM used by SVG DOM.
+#include "dom/views.h"
+
+// For access to the SMIL OM used by SVG DOM.
+#include "dom/smil.h"
+
+
+#include <math.h>
+
+#define SVG_NAMESPACE "http://www.w3.org/2000/svg"
+
+
+namespace org
+{
+namespace w3c
+{
+namespace dom
+{
+namespace svg
+{
+
+
+//local definitions
+typedef dom::DOMString DOMString;
+typedef dom::DOMException DOMException;
+typedef dom::Element Element;
+typedef dom::ElementPtr ElementPtr;
+typedef dom::Document Document;
+typedef dom::DocumentPtr DocumentPtr;
+typedef dom::NodeList NodeList;
+
+
+
+
+class SVGElement;
+typedef Ptr<SVGElement> SVGElementPtr;
+class SVGUseElement;
+typedef Ptr<SVGUseElement> SVGUseElementPtr;
+class SVGDocument;
+typedef Ptr<SVGDocument> SVGDocumentPtr;
+
+/*#########################################################################
+## SVGException
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGException
+{
+public:
+
+    /**
+     * SVGExceptionCode
+     */
+    typedef enum
+        {
+        SVG_WRONG_TYPE_ERR           = 0,
+        SVG_INVALID_VALUE_ERR        = 1,
+        SVG_MATRIX_NOT_INVERTABLE    = 2
+        } SVGExceptionCode;
+
+    unsigned short   code;
+};
+
+
+
+
+
+
+
+//########################################################################
+//########################################################################
+//#   V A L U E S
+//########################################################################
+//########################################################################
+
+
+
+
+
+/*#########################################################################
+## SVGAngle
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGAngle
+{
+public:
+
+    /**
+     *  Angle Unit Types
+     */
+    typedef enum
+        {
+        SVG_ANGLETYPE_UNKNOWN     = 0,
+        SVG_ANGLETYPE_UNSPECIFIED = 1,
+        SVG_ANGLETYPE_DEG         = 2,
+        SVG_ANGLETYPE_RAD         = 3,
+        SVG_ANGLETYPE_GRAD        = 4
+        } AngleUnitType;
+
+    /**
+     *
+     */
+    unsigned short getUnitType();
+
+    /**
+     *
+     */
+    double getValue();
+
+    /**
+     *
+     */
+    void setValue(double val) throw(DOMException);
+
+    /**
+     *
+     */
+    double getValueInSpecifiedUnits();
+
+    /**
+     *
+     */
+    void setValueInSpecifiedUnits(double /*val*/)
+                                     throw(DOMException);
+
+    /**
+     *
+     */
+    DOMString getValueAsString();
+
+    /**
+     *
+     */
+    void setValueAsString(const DOMString &/*val*/)
+                                  throw(DOMException);
+
+    /**
+     *
+     */
+    void newValueSpecifiedUnits(unsigned short /*unitType*/,
+                                double /*valueInSpecifiedUnits*/);
+
+    /**
+     *
+     */
+    void convertToSpecifiedUnits(unsigned short /*unitType*/);
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGAngle();
+
+    /**
+     *
+     */
+    SVGAngle(const SVGAngle &other);
+
+    /**
+     *
+     */
+    ~SVGAngle();
+
+protected:
+
+    int unitType;
+
+    double value;
+
+};
+
+
+/*#########################################################################
+## SVGLength
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGLength
+{
+public:
+
+    /**
+     * Length Unit Types
+     */
+    typedef enum
+        {
+        SVG_LENGTHTYPE_UNKNOWN    = 0,
+        SVG_LENGTHTYPE_NUMBER     = 1,
+        SVG_LENGTHTYPE_PERCENTAGE = 2,
+        SVG_LENGTHTYPE_EMS        = 3,
+        SVG_LENGTHTYPE_EXS        = 4,
+        SVG_LENGTHTYPE_PX         = 5,
+        SVG_LENGTHTYPE_CM         = 6,
+        SVG_LENGTHTYPE_MM         = 7,
+        SVG_LENGTHTYPE_IN         = 8,
+        SVG_LENGTHTYPE_PT         = 9,
+        SVG_LENGTHTYPE_PC         = 10
+        } LengthUnitType;
+
+    /**
+     *
+     */
+    unsigned short getUnitType();
+
+    /**
+     *
+     */
+    double getValue();
+
+    /**
+     *
+     */
+    void setValue(double val)  throw(DOMException);
+
+    /**
+     *
+     */
+    double getValueInSpecifiedUnits();
+
+    /**
+     *
+     */
+    void setValueInSpecifiedUnits(double /*val*/) throw(DOMException);
+
+    /**
+     *
+     */
+    DOMString getValueAsString();
+
+    /**
+     *
+     */
+    void setValueAsString(const DOMString& /*val*/) throw(DOMException);
+
+    /**
+     *
+     */
+    void newValueSpecifiedUnits(unsigned short /*unitType*/, double /*val*/);
+
+    /**
+     *
+     */
+    void convertToSpecifiedUnits(unsigned short /*unitType*/);
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGLength();
+
+    /**
+     *
+     */
+    SVGLength(const SVGLength &other);
+
+    /**
+     *
+     */
+    ~SVGLength();
+
+protected:
+
+    int unitType;
+
+    double value;
+
+};
+
+/*#########################################################################
+## SVGMatrix
+#########################################################################*/
+
+/**
+ *  In SVG, a Matrix is defined like this:
+ *
+ * | a  c  e |
+ * | b  d  f |
+ * | 0  0  1 |
+ *
+ */
+class SVGMatrix
+{
+public:
+
+
+    /**
+     *
+     */
+    double getA();
+
+    /**
+     *
+     */
+    void setA(double val) throw(DOMException);
+
+    /**
+     *
+     */
+    double getB();
+
+    /**
+     *
+     */
+    void setB(double val) throw(DOMException);
+
+    /**
+     *
+     */
+    double getC();
+
+    /**
+     *
+     */
+    void setC(double val) throw(DOMException);
+
+    /**
+     *
+     */
+    double getD();
+
+    /**
+     *
+     */
+    void setD(double val) throw(DOMException);
+
+    /**
+     *
+     */
+    double getE();
+
+    /**
+     *
+     */
+    void setE(double val) throw(DOMException);
+
+    /**
+     *
+     */
+    double getF();
+
+    /**
+     *
+     */
+    void setF(double val) throw(DOMException);
+
+
+    /**
+     * Return the result of postmultiplying this matrix with another.
+     */
+    SVGMatrix multiply(const SVGMatrix &other);
+
+    /**
+     *  Calculate the inverse of this matrix
+     *
+     *
+     *   The determinant of a 3x3 matrix E
+     *     (let's use our own notation for a bit)
+     *
+     *       A  B  C
+     *       D  E  F
+     *       G  H  I
+     *   is
+     *       AEI - AFH - BDI + BFG + CDH - CEG
+     *
+     *   Since in our affine transforms, G and H==0 and I==1,
+     *   this reduces to:
+     *       AE - BD
+     *   In SVG's naming scheme, that is:  a * d - c * b .  SIMPLE!
+     *
+     *   In a similar method of attack, SVG's adjunct matrix is:
+     *
+     *      d  -c   cf-ed
+     *     -b   a   eb-af
+     *      0   0   ad-cb
+     *
+     *   To get the inverse matrix, we divide the adjunct matrix by
+     *   the determinant.  Notice that(ad-cb)/(ad-cb)==1.  Very cool.
+     *   So what we end up with is this:
+     *
+     *      a =  d/(ad-cb)  c = -c/(ad-cb)   e =(cf-ed)/(ad-cb)
+     *      b = -b/(ad-cb)  d =  a/(ad-cb)   f =(eb-af)/(ad-cb)
+     *
+     *  (Since this would be in all SVG-DOM implementations,
+     *    somebody needed to document this!  ^^)
+     *
+     */
+    SVGMatrix inverse() throw(SVGException);
+
+    /**
+     * Equivalent to multiplying by:
+     *  | 1  0  x |
+     *  | 0  1  y |
+     *  | 0  0  1 |
+     *
+     */
+    SVGMatrix translate(double x, double y);
+
+    /**
+     * Equivalent to multiplying by:
+     *  | scale  0      0 |
+     *  | 0      scale  0 |
+     *  | 0      0      1 |
+     *
+     */
+    SVGMatrix scale(double scale);
+
+    /**
+     * Equivalent to multiplying by:
+     *  | scaleX  0       0 |
+     *  | 0       scaleY  0 |
+     *  | 0       0       1 |
+     *
+     */
+    SVGMatrix scaleNonUniform(double scaleX, double scaleY);
+
+    /**
+     * Equivalent to multiplying by:
+     *  | cos(a) -sin(a)   0 |
+     *  | sin(a)  cos(a)   0 |
+     *  | 0       0        1 |
+     *
+     */
+    SVGMatrix rotate(double angle);
+
+    /**
+     * Equivalent to multiplying by:
+     *  | cos(a) -sin(a)   0 |
+     *  | sin(a)  cos(a)   0 |
+     *  | 0       0        1 |
+     *  In this case, angle 'a' is computed as the artangent
+     *  of the slope y/x .  It is negative if the slope is negative.
+     */
+    SVGMatrix rotateFromVector(double x, double y) throw(SVGException);
+
+    /**
+     * Equivalent to multiplying by:
+     *  | -1   0   0 |
+     *  | 0    1   0 |
+     *  | 0    0   1 |
+     *
+     */
+    SVGMatrix flipX();
+
+    /**
+     * Equivalent to multiplying by:
+     *  | 1   0   0 |
+     *  | 0  -1   0 |
+     *  | 0   0   1 |
+     *
+     */
+    SVGMatrix flipY();
+
+    /**
+     *  | 1   tan(a)  0 |
+     *  | 0   1       0 |
+     *  | 0   0       1 |
+     *
+     */
+    SVGMatrix skewX(double angle);
+
+    /**
+     * Equivalent to multiplying by:
+     *  | 1       0   0 |
+     *  | tan(a)  1   0 |
+     *  | 0       0   1 |
+     *
+     */
+    SVGMatrix skewY(double angle);
+
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGMatrix();
+
+    /**
+     *
+     */
+    SVGMatrix(double aArg, double bArg, double cArg,
+              double dArg, double eArg, double fArg);
+
+    /**
+     * Copy constructor
+     */
+    SVGMatrix(const SVGMatrix &other);
+
+    /**
+     *
+     */
+    ~SVGMatrix() {}
+
+protected:
+
+friend class SVGTransform;
+
+    /*
+     * Set to the identify matrix
+     */
+    void identity();
+
+    double a, b, c, d, e, f;
+
+};
+
+
+/*#########################################################################
+## SVGNumber
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGNumber
+{
+public:
+
+    /**
+     *
+     */
+    double getValue();
+
+    /**
+     *
+     */
+    void setValue(double val) throw(DOMException);
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGNumber();
+
+    /**
+     *
+     */
+    SVGNumber(const SVGNumber &other);
+
+    /**
+     *
+     */
+    ~SVGNumber();
+
+protected:
+
+    double value;
+
+};
+
+/*#########################################################################
+## SVGPoint
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGPoint
+{
+public:
+
+    /**
+     *
+     */
+    double getX();
+
+    /**
+     *
+     */
+    void setX(double val) throw(DOMException);
+
+    /**
+     *
+     */
+    double getY();
+
+    /**
+     *
+     */
+    void setY(double val) throw(DOMException);
+
+    /**
+     *
+     */
+    SVGPoint matrixTransform(const SVGMatrix &/*matrix*/);
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGPoint();
+
+    /**
+     *
+     */
+    SVGPoint(const SVGPoint &other);
+
+    /**
+     *
+     */
+    ~SVGPoint();
+
+protected:
+
+    double x, y;
+};
+
+
+/*#########################################################################
+## SVGPathSeg
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGPathSeg
+{
+public:
+
+    /**
+     *  Path Segment Types
+     */
+    typedef enum
+        {
+        PATHSEG_UNKNOWN                      = 0,
+        PATHSEG_CLOSEPATH                    = 1,
+        PATHSEG_MOVETO_ABS                   = 2,
+        PATHSEG_MOVETO_REL                   = 3,
+        PATHSEG_LINETO_ABS                   = 4,
+        PATHSEG_LINETO_REL                   = 5,
+        PATHSEG_CURVETO_CUBIC_ABS            = 6,
+        PATHSEG_CURVETO_CUBIC_REL            = 7,
+        PATHSEG_CURVETO_QUADRATIC_ABS        = 8,
+        PATHSEG_CURVETO_QUADRATIC_REL        = 9,
+        PATHSEG_ARC_ABS                      = 10,
+        PATHSEG_ARC_REL                      = 11,
+        PATHSEG_LINETO_HORIZONTAL_ABS        = 12,
+        PATHSEG_LINETO_HORIZONTAL_REL        = 13,
+        PATHSEG_LINETO_VERTICAL_ABS          = 14,
+        PATHSEG_LINETO_VERTICAL_REL          = 15,
+        PATHSEG_CURVETO_CUBIC_SMOOTH_ABS     = 16,
+        PATHSEG_CURVETO_CUBIC_SMOOTH_REL     = 17,
+        PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18,
+        PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19
+        } PathSegmentType;
+
+    /**
+     *
+     */
+    unsigned short getPathSegType();
+
+    /**
+     *
+     */
+    DOMString getPathSegTypeAsLetter();
+
+    /**
+     * From the various subclasses
+     */
+
+    /**
+     *
+     */
+    double getX();
+
+    /**
+     *
+     */
+    void setX(double val) throw(DOMException);
+
+    /**
+     *
+     */
+    double getX1();
+
+    /**
+     *
+     */
+    void setX1(double val) throw(DOMException);
+
+    /**
+     *
+     */
+    double getX2();
+
+    /**
+     *
+     */
+    void setX2(double val) throw(DOMException);
+
+    /**
+     *
+     */
+    double getY();
+
+    /**
+     *
+     */
+    void setY(double val) throw(DOMException);
+
+    /**
+     *
+     */
+    double getY1();
+
+    /**
+     *
+     */
+    void setY1(double val) throw(DOMException);
+
+    /**
+     *
+     */
+    double getY2();
+
+    /**
+     *
+     */
+    void setY2(double val) throw(DOMException);
+
+    /**
+     *
+     */
+    double getR1();
+
+    /**
+     *
+     */
+    void setR1(double val) throw(DOMException);
+
+    /**
+     *
+     */
+    double getR2();
+
+    /**
+     *
+     */
+    void setR2(double val) throw(DOMException);
+
+    /**
+     *
+     */
+    double getAngle();
+
+    /**
+     *
+     */
+    void setAngle(double val) throw(DOMException);
+
+    /**
+     *
+     */
+    bool getLargeArcFlag();
+
+    /**
+     *
+     */
+    void setLargeArcFlag(bool val) throw(DOMException);
+
+    /**
+     *
+     */
+    bool getSweepFlag();
+
+    /**
+     *
+     */
+    void setSweepFlag(bool val) throw(DOMException);
+
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGPathSeg();
+
+    /**
+     *
+     */
+    SVGPathSeg(int typeArg);
+
+    /**
+     *
+     */
+    SVGPathSeg(const SVGPathSeg &other);
+
+    /**
+     *
+     */
+    SVGPathSeg &operator=(const SVGPathSeg &other);
+
+    /**
+     *
+     */
+    ~SVGPathSeg();
+
+protected:
+
+    void init();
+    
+    void assign(const SVGPathSeg &other);
+
+    int type;
+    double x, y, x1, y1, x2, y2;
+    double r1, r2;
+    double angle;
+    bool largeArcFlag;
+    bool sweepFlag;
+};
+
+
+/*#########################################################################
+## SVGPreserveAspectRatio
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGPreserveAspectRatio
+{
+public:
+
+
+    /**
+     * Alignment Types
+     */
+    typedef enum
+        {
+        SVG_PRESERVEASPECTRATIO_UNKNOWN  = 0,
+        SVG_PRESERVEASPECTRATIO_NONE     = 1,
+        SVG_PRESERVEASPECTRATIO_XMINYMIN = 2,
+        SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3,
+        SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4,
+        SVG_PRESERVEASPECTRATIO_XMINYMID = 5,
+        SVG_PRESERVEASPECTRATIO_XMIDYMID = 6,
+        SVG_PRESERVEASPECTRATIO_XMAXYMID = 7,
+        SVG_PRESERVEASPECTRATIO_XMINYMAX = 8,
+        SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9,
+        SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10
+        } AlignmentType;
+
+
+    /**
+     * Meet-or-slice Types
+     */
+    typedef enum
+        {
+        SVG_MEETORSLICE_UNKNOWN  = 0,
+        SVG_MEETORSLICE_MEET     = 1,
+        SVG_MEETORSLICE_SLICE    = 2
+        } MeetOrSliceType;
+
+
+    /**
+     *
+     */
+    unsigned short getAlign();
+
+    /**
+     *
+     */
+    void setAlign(unsigned short val) throw(DOMException);
+
+    /**
+     *
+     */
+    unsigned short getMeetOrSlice();
+
+    /**
+     *
+     */
+    void setMeetOrSlice(unsigned short val) throw(DOMException);
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGPreserveAspectRatio();
+
+    /**
+     *
+     */
+    SVGPreserveAspectRatio(const SVGPreserveAspectRatio &other);
+
+    /**
+     *
+     */
+    ~SVGPreserveAspectRatio();
+
+protected:
+
+    unsigned short align;
+    unsigned short meetOrSlice;
+
+};
+
+
+
+/*#########################################################################
+## SVGRect
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGRect
+{
+public:
+
+    /**
+     *
+     */
+    double getX();
+
+    /**
+     *
+     */
+    void setX(double val) throw(DOMException);
+
+    /**
+     *
+     */
+    double getY();
+
+    /**
+     *
+     */
+    void setY(double val) throw(DOMException);
+
+    /**
+     *
+     */
+    double getWidth();
+
+    /**
+     *
+     */
+    void setWidth(double val) throw(DOMException);
+
+    /**
+     *
+     */
+    double getHeight();
+
+    /**
+     *
+     */
+    void setHeight(double val) throw(DOMException);
+
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGRect();
+
+    /**
+     *
+     */
+    SVGRect(const SVGRect &other);
+
+    /**
+     *
+     */
+    ~SVGRect();
+
+protected:
+
+    double x, y, width, height;
+
+};
+
+/*#########################################################################
+## SVGTransform
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGTransform
+{
+public:
+
+    /**
+     * Transform Types
+     */
+    typedef enum
+        {
+        SVG_TRANSFORM_UNKNOWN   = 0,
+        SVG_TRANSFORM_MATRIX    = 1,
+        SVG_TRANSFORM_TRANSLATE = 2,
+        SVG_TRANSFORM_SCALE     = 3,
+        SVG_TRANSFORM_ROTATE    = 4,
+        SVG_TRANSFORM_SKEWX     = 5,
+        SVG_TRANSFORM_SKEWY     = 6,
+        } TransformType;
+
+    /**
+     *
+     */
+    unsigned short getType();
+
+
+    /**
+     *
+     */
+    SVGMatrix getMatrix();
+
+    /**
+     *
+     */
+    double getAngle();
+
+    /**
+     *
+     */
+    void setMatrix(const SVGMatrix &matrixArg);
+
+    /**
+     *
+     */
+    void setTranslate(double tx, double ty);
+
+    /**
+     *
+     */
+    void setScale(double sx, double sy);
+
+    /**
+     *
+     */
+    void setRotate(double angleArg, double cx, double cy);
+
+    /**
+     *
+     */
+    void setSkewX(double angleArg);
+
+    /**
+     *
+     */
+    void setSkewY(double angleArg);
+
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGTransform();
+
+    /**
+     *
+     */
+    SVGTransform(const SVGTransform &other);
+
+    /**
+     *
+     */
+    ~SVGTransform();
+
+protected:
+
+    int type;
+    double angle;
+
+    SVGMatrix matrix;
+};
+
+
+
+
+/*#########################################################################
+## SVGUnitTypes
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGUnitTypes
+{
+public:
+
+    /**
+     * Unit Types
+     */
+    typedef enum
+        {
+        SVG_UNIT_TYPE_UNKNOWN           = 0,
+        SVG_UNIT_TYPE_USERSPACEONUSE    = 1,
+        SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2
+        } UnitType;
+
+
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGUnitTypes();
+
+    /**
+     *
+     */
+    ~SVGUnitTypes();
+
+};
+
+
+
+
+/*#########################################################################
+## SVGValue
+#########################################################################*/
+
+/**
+ * This is a helper class that will hold several types of data.  It will
+ * be used in those situations where methods are common to different 
+ * interfaces, except for the data type.  This class holds the following:
+ * SVGAngle
+ * SVGBoolean
+ * SVGEnumeration
+ * SVGInteger
+ * SVGLength
+ * SVGNumber
+ * SVGPreserveAspectRatio
+ * SVGRect
+ * SVGString
+ */   
+class SVGValue
+{
+public:
+
+    /**
+     *
+     */
+    typedef enum
+        {
+        SVG_ANGLE,
+        SVG_BOOLEAN,
+        SVG_ENUMERATION,
+        SVG_INTEGER,
+        SVG_LENGTH,
+        SVG_NUMBER,
+        SVG_PRESERVE_ASPECT_RATIO,
+        SVG_RECT,
+        SVG_STRING,
+        } SVGValueType;
+
+    /**
+     * Constructor
+     */
+    SVGValue();
+    
+    /**
+     * Copy constructor
+     */
+    SVGValue(const SVGValue &other);
+    
+    /**
+     * Assignment
+     */
+    SVGValue &operator=(const SVGValue &other);
+    
+    /**
+     *
+     */
+    ~SVGValue();
+        
+    //###########################
+    //  TYPES
+    //###########################
+
+    /**
+     *  Angle
+     */
+    SVGValue(const SVGAngle &v);
+    
+    SVGAngle angleValue();
+    
+    /**
+     * Boolean
+     */
+    SVGValue(bool v);
+    
+    bool booleanValue();
+    
+    
+    /**
+     * Enumeration
+     */
+    SVGValue(short v);
+    
+    short enumerationValue();
+
+    /**
+     * Integer
+     */
+    SVGValue(long v);
+    
+    long integerValue();
+    
+    /**
+     * Length
+     */
+    SVGValue(const SVGLength &v);
+    
+    SVGLength lengthValue();
+    
+    /**
+     * Number
+     */
+    SVGValue(double v);
+    
+    double numberValue();
+
+    /**
+     * PathSegment
+     */
+    SVGValue(const SVGPathSeg &v);
+    
+    SVGPathSeg pathDataValue();
+    
+    
+    /**
+     * Points
+     */
+    SVGValue(const SVGPoint &v);
+    
+    SVGPoint pointValue();
+    
+    
+    /**
+     * PreserveAspectRatio
+     */
+    SVGValue(const SVGPreserveAspectRatio &v);
+    
+    SVGPreserveAspectRatio preserveAspectRatioValue();
+    
+    /**
+     * Rect
+     */
+    SVGValue(const SVGRect &v);
+    
+    SVGRect rectValue();
+    
+    /**
+     * String
+     */
+    SVGValue(const DOMString &v);
+    
+    DOMString stringValue();
+    
+    /**
+     * TransformList
+     */
+    SVGValue(const SVGTransform &v);
+    
+    SVGTransform transformValue();
+    
+    
+private:
+
+    void init();
+    
+    void assign(const SVGValue &other);
+    
+    short                  type;
+    SVGAngle               angleval;       // SVGAngle
+    bool                   bval;           // SVGBoolean
+    short                  eval;           // SVGEnumeration
+    long                   ival;           // SVGInteger
+    SVGLength              lengthval;      // SVGLength
+    double                 dval;           // SVGNumber
+    SVGPathSeg             segval;         // SVGPathSeg
+    SVGPoint               pointval;       // SVGPoint
+    SVGPreserveAspectRatio parval;         // SVGPreserveAspectRatio
+    SVGRect                rval;           // SVGRect
+    DOMString              sval;           // SVGString
+    SVGTransform           transformval;   // SVGTransform
+
+};
+
+
+/*#########################################################################
+## SVGValueList
+#########################################################################*/
+
+/**
+ * THis is used to generify a bit the several different types of lists:
+ *
+ * SVGLengthList      -> SVGValueList<SVGLength>
+ * SVGValueList      -> SVGValueList<SVGNumber>
+ * SVGPathData        -> SVGValueList<SVGPathSeg>
+ * SVGPoints          -> SVGValueList<SVGPoint>
+ * SVGTransformList   -> SVGValueList<SVGTransform>
+ */
+class SVGValueList
+{
+public:
+
+    /**
+     *
+     */
+    typedef enum
+        {
+        SVG_LIST_LENGTH,
+        SVG_LIST_NUMBER,
+        SVG_LIST_PATHSEG,
+        SVG_LIST_POINT,
+        SVG_LIST_TRANSFORM
+        } SVGValueListTypes;
+
+    /**
+     *
+     */
+    unsigned long getNumberOfItems();
+
+
+    /**
+     *
+     */
+    void clear() throw(DOMException);
+
+    /**
+     *
+     */
+    SVGValue getItem(unsigned long index) throw(DOMException);
+
+    /**
+     *
+     */
+    SVGValue insertItemBefore(const SVGValue &newItem,
+                                   unsigned long index)
+                                   throw(DOMException, SVGException);
+
+    /**
+     *
+     */
+    SVGValue replaceItem(const SVGValue &newItem,
+                              unsigned long index)
+                              throw(DOMException, SVGException);
+
+    /**
+     *
+     */
+    SVGValue removeItem(unsigned long index) throw(DOMException);
+
+    /**
+     *
+     */
+    SVGValue appendItem(const SVGValue &newItem)
+                             throw(DOMException, SVGException);
+
+    /**
+     * Matrix
+     */
+    SVGValue initialize(const SVGValue &newItem)
+                         throw(DOMException, SVGException);
+
+    /**
+     * Matrix
+     */
+    SVGValue createSVGTransformFromMatrix(const SVGValue &matrix);
+
+    /**
+     * Matrix
+     */
+    SVGValue consolidate();
+
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGValueList();
+
+    /**
+     *
+     */
+    SVGValueList(const SVGValueList &other);
+
+    /**
+     *
+     */
+    ~SVGValueList();
+
+protected:
+
+    std::vector<SVGValue> items;
+
+};
+
+
+
+
+
+/*#########################################################################
+## SVGAnimatedValue
+#########################################################################*/
+
+/**
+ * This class is used to merge all of the "Animated" values, with only
+ * a different type, into a single API.  This class subsumes the following:
+ * SVGAnimatedValue
+ * SVGAnimatedValue
+ * SVGAnimatedValue
+ * SVGAnimatedValue
+ * SVGAnimatedValue
+ * SVGAnimatedValue
+ * SVGAnimatedPathData
+ * SVGAnimatedPoints
+ * SVGAnimatedPreserveAspectRatio
+ * SVGAnimatedValue
+ * SVGAnimatedValue
+ */
+class SVGAnimatedValue
+{
+public:
+
+    /**
+     *
+     */
+    SVGValue &getBaseVal();
+
+    /**
+     *
+     */
+    void setBaseVal(const SVGValue &val) throw (DOMException);
+
+    /**
+     *
+     */
+    SVGValue &getAnimVal();
+
+    /**
+     *
+     */
+    SVGAnimatedValue();
+    
+    /**
+     *
+     */
+    SVGAnimatedValue(const SVGValue &baseValue);
+
+    /**
+     *
+     */
+    SVGAnimatedValue(const SVGValue &baseValue, const SVGValue &animValue);
+
+    /**
+     *
+     */
+    SVGAnimatedValue(const SVGAnimatedValue &other);
+
+    /**
+     *
+     */
+    SVGAnimatedValue &operator=(const SVGAnimatedValue &other);
+
+    /**
+     *
+     */
+    SVGAnimatedValue &operator=(const SVGValue &baseVal);
+
+    /**
+     *
+     */
+    ~SVGAnimatedValue();
+    
+private:
+
+    void init();
+    
+    void assign(const SVGAnimatedValue &other);
+    
+    SVGValue baseVal;
+    
+    SVGValue animVal;
+
+};
+
+
+/*#########################################################################
+## SVGAnimatedValueList
+#########################################################################*/
+
+/**
+ * This class is used to merge all of the "Animated" values, with only
+ * a different type, into a single API.  This class subsumes the following:
+ * SVGAnimatedValueList
+ * SVGAnimatedValueList
+ * SVGAnimatedTransformList
+ */
+class SVGAnimatedValueList
+{
+public:
+
+    /**
+     *
+     */
+    SVGValueList &getBaseVal();
+
+    /**
+     *
+     */
+    void setBaseVal(const SVGValueList &val) throw (DOMException);
+
+    /**
+     *
+     */
+    SVGValueList &getAnimVal();
+
+    /**
+     *
+     */
+    SVGAnimatedValueList();
+    
+    /**
+     *
+     */
+    SVGAnimatedValueList(const SVGValueList &baseValue);
+
+    /**
+     *
+     */
+    SVGAnimatedValueList(const SVGValueList &baseValue, const SVGValueList &animValue);
+
+    /**
+     *
+     */
+    SVGAnimatedValueList(const SVGAnimatedValueList &other);
+
+    /**
+     *
+     */
+    SVGAnimatedValueList &operator=(const SVGAnimatedValueList &other);
+
+    /**
+     *
+     */
+    SVGAnimatedValueList &operator=(const SVGValueList &baseVal);
+
+    /**
+     *
+     */
+    ~SVGAnimatedValueList();
+    
+private:
+
+    void init();
+    
+    void assign(const SVGAnimatedValueList &other);
+    
+    SVGValueList baseVal;
+    
+    SVGValueList animVal;
+
+};
+
+
+
+/*#########################################################################
+## SVGICCColor
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGICCColor
+{
+public:
+
+    /**
+     *
+     */
+    DOMString getColorProfile();
+
+    /**
+     *
+     */
+    void setColorProfile(const DOMString &val) throw(DOMException);
+
+    /**
+     *
+     */
+    SVGValueList &getColors();
+
+
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGICCColor();
+
+    /**
+     *
+     */
+    SVGICCColor(const SVGICCColor &other);
+
+    /**
+     *
+     */
+    ~SVGICCColor();
+
+protected:
+
+    DOMString colorProfile;
+
+    SVGValueList colors;
+
+};
+
+
+
+/*#########################################################################
+## SVGColor
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGColor : public css::CSSValue
+{
+public:
+
+
+    /**
+     * Color Types
+     */
+    typedef enum
+        {
+        SVG_COLORTYPE_UNKNOWN           = 0,
+        SVG_COLORTYPE_RGBCOLOR          = 1,
+        SVG_COLORTYPE_RGBCOLOR_ICCCOLOR = 2,
+        SVG_COLORTYPE_CURRENTCOLOR      = 3
+        } ColorType;
+
+
+    /**
+     *
+     */
+    unsigned short getColorType();
+
+    /**
+     *
+     */
+    css::RGBColor getRgbColor();
+
+    /**
+     *
+     */
+    SVGICCColor getIccColor();
+
+
+    /**
+     *
+     */
+    void setRGBColor(const DOMString& /*rgbColor*/)
+                              throw(SVGException);
+
+    /**
+     *
+     */
+    void setRGBColorICCColor(const DOMString& /*rgbColor*/,
+                                      const DOMString& /*iccColor*/)
+                                      throw(SVGException);
+
+    /**
+     *
+     */
+    void setColor(unsigned short /*colorType*/,
+                           const DOMString& /*rgbColor*/,
+                           const DOMString& /*iccColor*/)
+                           throw(SVGException);
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGColor();
+
+    /**
+     *
+     */
+    SVGColor(const SVGColor &other);
+
+    /**
+     *
+     */
+    ~SVGColor();
+
+protected:
+
+    int colorType;
+
+};
+
+
+
+/*#########################################################################
+## SVGPaint
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGPaint : public SVGColor
+{
+public:
+
+    /**
+     * Paint Types
+     */
+    typedef enum
+        {
+        SVG_PAINTTYPE_UNKNOWN               = 0,
+        SVG_PAINTTYPE_RGBCOLOR              = 1,
+        SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR     = 2,
+        SVG_PAINTTYPE_NONE                  = 101,
+        SVG_PAINTTYPE_CURRENTCOLOR          = 102,
+        SVG_PAINTTYPE_URI_NONE              = 103,
+        SVG_PAINTTYPE_URI_CURRENTCOLOR      = 104,
+        SVG_PAINTTYPE_URI_RGBCOLOR          = 105,
+        SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR = 106,
+        SVG_PAINTTYPE_URI                   = 107
+        } PaintType;
+
+
+    /**
+     *
+     */
+    unsigned short getPaintType();
+
+    /**
+     *
+     */
+    DOMString getUri();
+
+    /**
+     *
+     */
+    void setUri(const DOMString& uriArg);
+
+    /**
+     *
+     */
+    void setPaint(unsigned short paintTypeArg,
+                           const DOMString& uriArg,
+                           const DOMString& /*rgbColor*/,
+                           const DOMString& /*iccColor*/)
+                           throw(SVGException);
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGPaint();
+
+    /**
+     *
+     */
+    SVGPaint(const SVGPaint &other);
+
+    /**
+     *
+     */
+    ~SVGPaint();
+
+protected:
+
+    unsigned int paintType;
+    DOMString uri;
+
+};
+
+
+
+
+//########################################################################
+//########################################################################
+//#   I N T E R F A C E S
+//########################################################################
+//########################################################################
+
+
+
+
+
+
+
+/*#########################################################################
+## SVGStylable
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGStylable
+{
+public:
+
+    /**
+     *
+     */
+    SVGAnimatedValue getClassName();
+
+    /**
+     *
+     */
+    css::CSSStyleDeclaration getStyle();
+
+
+    /**
+     *
+     */
+    css::CSSValue getPresentationAttribute(const DOMString& /*name*/);
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGStylable();
+
+    /**
+     *
+     */
+    SVGStylable(const SVGStylable &other);
+
+    /**
+     *
+     */
+    ~SVGStylable();
+
+protected:
+
+    SVGAnimatedValue className;
+    css::CSSStyleDeclaration style;
+
+};
+
+
+
+
+
+/*#########################################################################
+## SVGLocatable
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGLocatable
+{
+public:
+
+    /**
+     *
+     */
+    SVGElementPtr getNearestViewportElement();
+
+    /**
+     *
+     */
+    SVGElementPtr getFarthestViewportElement();
+
+    /**
+     *
+     */
+    SVGRect getBBox();
+
+    /**
+     *
+     */
+    SVGMatrix getCTM();
+
+    /**
+     *
+     */
+    SVGMatrix getScreenCTM();
+
+    /**
+     *
+     */
+    SVGMatrix getTransformToElement(const SVGElement &/*element*/)
+                    throw(SVGException);
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGLocatable();
+
+    /**
+     *
+     */
+    SVGLocatable(const SVGLocatable &/*other*/);
+
+    /**
+     *
+     */
+    ~SVGLocatable();
+
+protected:
+
+    SVGRect bbox;
+    SVGMatrix ctm;
+    SVGMatrix screenCtm;
+
+};
+
+
+/*#########################################################################
+## SVGTransformable
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGTransformable : public SVGLocatable
+{
+public:
+
+
+    /**
+     *
+     */
+    SVGAnimatedValueList &getTransform();
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGTransformable();
+
+    /**
+     *
+     */
+    SVGTransformable(const SVGTransformable &other);
+
+    /**
+     *
+     */
+    ~SVGTransformable();
+
+protected:
+
+    SVGAnimatedValueList transforms;
+};
+
+
+
+/*#########################################################################
+## SVGTests
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGTests
+{
+public:
+
+    /**
+     *
+     */
+    SVGValueList &getRequiredFeatures();
+
+    /**
+     *
+     */
+    SVGValueList &getRequiredExtensions();
+
+    /**
+     *
+     */
+    SVGValueList &getSystemLanguage();
+
+    /**
+     *
+     */
+    bool hasExtension(const DOMString& /*extension*/);
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGTests();
+
+    /**
+     *
+     */
+    SVGTests(const SVGTests &other);
+
+    /**
+     *
+     */
+    ~SVGTests();
+
+protected:
+
+    SVGValueList requiredFeatures;
+    SVGValueList requiredExtensions;
+    SVGValueList systemLanguage;
+
+};
+
+
+
+
+
+
+/*#########################################################################
+## SVGLangSpace
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGLangSpace
+{
+public:
+
+
+    /**
+     *
+     */
+    DOMString getXmlLang();
+
+    /**
+     *
+     */
+    void setXmlLang(const DOMString &val) throw(DOMException);
+
+    /**
+     *
+     */
+    DOMString getXmlSpace();
+
+    /**
+     *
+     */
+    void setXmlSpace(const DOMString &val) throw(DOMException);
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGLangSpace();
+
+    /**
+     *
+     */
+    SVGLangSpace(const SVGLangSpace &other);
+
+    /**
+     *
+     */
+    ~SVGLangSpace();
+
+protected:
+
+    DOMString xmlLang;
+    DOMString xmlSpace;
+
+};
+
+
+
+/*#########################################################################
+## SVGExternalResourcesRequired
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGExternalResourcesRequired
+{
+public:
+
+    /**
+     * boolean
+     */
+    SVGAnimatedValue getExternalResourcesRequired();
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGExternalResourcesRequired();
+
+    /**
+     *
+     */
+    SVGExternalResourcesRequired(const SVGExternalResourcesRequired &other);
+
+    /**
+     *
+     */
+    ~SVGExternalResourcesRequired();
+
+protected:
+
+    SVGAnimatedValue required; //boolean
+
+};
+
+
+
+
+
+
+
+
+
+/*#########################################################################
+## SVGFitToViewBox
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGFitToViewBox
+{
+public:
+
+    /**
+     * rect
+     */
+    SVGAnimatedValue getViewBox();
+
+    /**
+     * preserveAspectRatio
+     */
+    SVGAnimatedValue getPreserveAspectRatio();
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGFitToViewBox();
+
+    /**
+     *
+     */
+    SVGFitToViewBox(const SVGFitToViewBox &other);
+
+    /**
+     *
+     */
+    ~SVGFitToViewBox();
+
+protected:
+
+    SVGAnimatedValue viewBox; //rect
+    SVGAnimatedValue preserveAspectRatio;
+
+};
+
+
+/*#########################################################################
+## SVGZoomAndPan
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGZoomAndPan
+{
+public:
+
+    /**
+     * Zoom and Pan Types
+     */
+    typedef enum
+        {
+        SVG_ZOOMANDPAN_UNKNOWN = 0,
+        SVG_ZOOMANDPAN_DISABLE = 1,
+        SVG_ZOOMANDPAN_MAGNIFY = 2
+        } ZoomAndPanType;
+
+    /**
+     *
+     */
+    unsigned short getZoomAndPan();
+
+    /**
+     *
+     */
+    void setZoomAndPan(unsigned short val) throw(DOMException);
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGZoomAndPan();
+
+    /**
+     *
+     */
+    SVGZoomAndPan(const SVGZoomAndPan &other);
+
+    /**
+     *
+     */
+    ~SVGZoomAndPan();
+
+protected:
+
+    unsigned short zoomAndPan;
+
+};
+
+
+
+
+
+
+/*#########################################################################
+## SVGViewSpec
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGViewSpec : public SVGZoomAndPan,
+                    public SVGFitToViewBox
+{
+public:
+
+    /**
+     *
+     */
+    SVGValueList getTransform();
+
+    /**
+     *
+     */
+    SVGElementPtr getViewTarget();
+
+    /**
+     *
+     */
+    DOMString getViewBoxString();
+
+    /**
+     *
+     */
+    DOMString getPreserveAspectRatioString();
+
+    /**
+     *
+     */
+    DOMString getTransformString();
+
+    /**
+     *
+     */
+    DOMString getViewTargetString();
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGViewSpec();
+
+    /**
+     *
+     */
+    SVGViewSpec(const SVGViewSpec &other);
+
+    /**
+     *
+     */
+    ~SVGViewSpec();
+
+protected:
+
+    SVGElementPtr viewTarget;
+    SVGValueList transform;
+};
+
+
+/*#########################################################################
+## SVGURIReference
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGURIReference
+{
+public:
+
+    /**
+     * string
+     */
+    SVGAnimatedValue getHref();
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGURIReference();
+
+    /**
+     *
+     */
+    SVGURIReference(const SVGURIReference &other);
+
+    /**
+     *
+     */
+    ~SVGURIReference();
+
+protected:
+
+    SVGAnimatedValue href;
+
+};
+
+
+
+
+
+
+/*#########################################################################
+## SVGCSSRule
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGCSSRule : public css::CSSRule
+{
+public:
+
+
+    /**
+     * Additional CSS RuleType to support ICC color specifications
+     */
+    typedef enum
+        {
+        COLOR_PROFILE_RULE = 7
+        } ColorProfileRuleType;
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGCSSRule();
+
+    /**
+     *
+     */
+    SVGCSSRule(const SVGCSSRule &other);
+
+    /**
+     *
+     */
+    ~SVGCSSRule();
+
+};
+
+
+
+/*#########################################################################
+## SVGRenderingIntent
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGRenderingIntent
+{
+public:
+
+    /**
+     * Rendering Intent Types
+     */
+    typedef enum
+        {
+        RENDERING_INTENT_UNKNOWN               = 0,
+        RENDERING_INTENT_AUTO                  = 1,
+        RENDERING_INTENT_PERCEPTUAL            = 2,
+        RENDERING_INTENT_RELATIVE_COLORIMETRIC = 3,
+        RENDERING_INTENT_SATURATION            = 4,
+        RENDERING_INTENT_ABSOLUTE_COLORIMETRIC = 5
+        } RenderingIntentType;
+
+
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGRenderingIntent();
+
+    /**
+     *
+     */
+    SVGRenderingIntent(const SVGRenderingIntent &other);
+
+    /**
+     *
+     */
+    ~SVGRenderingIntent();
+
+protected:
+
+    unsigned short renderingIntentType;
+};
+
+
+
+
+
+
+
+
+
+/*#########################################################################
+## SVGColorProfileRule
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGColorProfileRule : public SVGCSSRule,
+                            public SVGRenderingIntent
+{
+
+public:
+
+   /**
+     *
+     */
+    DOMString getSrc();
+
+    /**
+     *
+     */
+    void setSrc(const DOMString &val) throw(DOMException);
+
+    /**
+     *
+     */
+    DOMString getName();
+
+    /**
+     *
+     */
+    void setName(const DOMString &val) throw(DOMException);
+
+    /**
+     *
+     */
+    unsigned short getRenderingIntent();
+
+    /**
+     *
+     */
+    void setRenderingIntent(unsigned short val) throw(DOMException);
+
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGColorProfileRule();
+
+    /**
+     *
+     */
+    SVGColorProfileRule(const SVGColorProfileRule &other);
+
+    /**
+     *
+     */
+    ~SVGColorProfileRule();
+
+protected:
+
+    unsigned short renderingIntent;
+    DOMString src;
+    DOMString name;
+
+};
+
+
+
+/*#########################################################################
+## SVGFilterPrimitiveStandardAttributes
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGFilterPrimitiveStandardAttributes : public SVGStylable
+{
+public:
+
+    /**
+     * length
+     */
+    SVGAnimatedValue getX();
+
+    /**
+     * length
+     */
+    SVGAnimatedValue getY();
+
+    /**
+     * length
+     */
+    SVGAnimatedValue getWidth();
+
+    /**
+     * length
+     */
+    SVGAnimatedValue getHeight();
+
+    /**
+     * string
+     */
+    SVGAnimatedValue getResult();
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGFilterPrimitiveStandardAttributes();
+
+    /**
+     *
+     */
+    SVGFilterPrimitiveStandardAttributes(
+                const SVGFilterPrimitiveStandardAttributes &other);
+
+    /**
+     *
+     */
+    ~SVGFilterPrimitiveStandardAttributes();
+
+protected:
+
+    SVGAnimatedValue x;
+    SVGAnimatedValue y;
+    SVGAnimatedValue width;
+    SVGAnimatedValue height;
+    SVGAnimatedValue result;
+
+};
+
+
+/*#########################################################################
+## SVGEvent
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGEvent : events::Event
+{
+public:
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGEvent();
+
+    /**
+     *
+     */
+    SVGEvent(const SVGEvent &other);
+
+    /**
+     *
+     */
+    ~SVGEvent();
+
+};
+
+
+
+
+/*#########################################################################
+## SVGZoomEvent
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGZoomEvent : events::UIEvent
+{
+public:
+
+    /**
+     *
+     */
+    SVGRect getZoomRectScreen();
+
+    /**
+     *
+     */
+    double getPreviousScale();
+
+    /**
+     *
+     */
+    SVGPoint getPreviousTranslate();
+
+    /**
+     *
+     */
+    double getNewScale();
+
+   /**
+     *
+     */
+    SVGPoint getNewTranslate();
+
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGZoomEvent();
+
+    /**
+     *
+     */
+    SVGZoomEvent(const SVGZoomEvent &other);
+
+    /**
+     *
+     */
+    ~SVGZoomEvent();
+
+protected:
+
+    SVGRect  zoomRectScreen;
+    double   previousScale;
+    SVGPoint previousTranslate;
+    double   newScale;
+    SVGPoint newTranslate;
+
+};
+
+
+
+/*#########################################################################
+## SVGElementInstance
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGElementInstance : public events::EventTarget
+{
+public:
+
+    /**
+     *
+     */
+    SVGElementPtr getCorrespondingElement();
+
+    /**
+     *
+     */
+    SVGUseElementPtr getCorrespondingUseElement();
+
+    /**
+     *
+     */
+    SVGElementInstance getParentNode();
+
+    /**
+     *  Since we are using stack types and this is a circular definition,
+     *  we will instead implement this as a global function below:
+     *   SVGElementInstanceList getChildNodes(const SVGElementInstance instance);
+     */
+    //SVGElementInstanceList getChildNodes();
+
+    /**
+     *
+     */
+    SVGElementInstance getFirstChild();
+
+    /**
+     *
+     */
+    SVGElementInstance getLastChild();
+
+    /**
+     *
+     */
+    SVGElementInstance getPreviousSibling();
+
+    /**
+     *
+     */
+    SVGElementInstance getNextSibling();
+
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGElementInstance();
+
+    /**
+     *
+     */
+    SVGElementInstance(const SVGElementInstance &other);
+
+    /**
+     *
+     */
+    ~SVGElementInstance();
+
+protected:
+
+    SVGElementPtr      correspondingElement;
+    SVGUseElementPtr   correspondingUseElement;
+
+};
+
+
+
+
+
+
+/*#########################################################################
+## SVGElementInstanceList
+#########################################################################*/
+
+/**
+ *
+ */
+class SVGElementInstanceList
+{
+public:
+
+    /**
+     *
+     */
+    unsigned long getLength();
+
+    /**
+     *
+     */
+    SVGElementInstance item(unsigned long index);
+
+    /**
+     *  This static method replaces the circular definition of:
+     *        SVGElementInstanceList SVGElementInstance::getChildNodes()
+     *
+     */
+    static SVGElementInstanceList getChildNodes(const SVGElementInstance &/*instance*/);
+
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    SVGElementInstanceList();
+
+    /**
+     *
+     */
+    SVGElementInstanceList(const SVGElementInstanceList &other);
+
+    /**
+     *
+     */
+    ~SVGElementInstanceList();
+
+protected:
+
+    std::vector<SVGElementInstance> items;
+
+
+};
+
+
+
+
+
+
+
+
+//########################################################################
+//########################################################################
+//########################################################################
+//#   D O M
+//########################################################################
+//########################################################################
+//########################################################################
+
+
+
+
+
+/*#########################################################################
+## Types
+#########################################################################*/
+
+/**
+ * Bitmasks for has_an interface for SVGElement
+ */ 
+#define SVG_ANGLE                          0x00000001
+#define SVG_ANIMATED_ANGLE                 0x00000002
+#define SVG_ANIMATED_BOOLEAN               0x00000004
+#define SVG_ANIMATED_ENUMERATION           0x00000008
+#define SVG_ANIMATED_INTEGER               0x00000010
+#define SVG_ANIMATED_LENGTH                0x00000020
+#define SVG_ANIMATED_LENGTH_LIST           0x00000040
+#define SVG_ANIMATED_NUMBER                0x00000080
+#define SVG_ANIMATED_NUMBER_LIST           0x00000100
+#define SVG_ANIMATED_RECT                  0x00000200
+#define SVG_ANIMATED_STRING                0x00000400
+#define SVG_COLOR                          0x00000800
+#define SVG_CSS_RULE                       0x00001000
+#define SVG_EXTERNAL_RESOURCES_REQUIRED    0x00002000
+#define SVG_FIT_TO_VIEWBOX                 0x00004000
+#define SVG_ICCCOLOR                       0x00008000
+#define SVG_LANG_SPACE                     0x00010000
+#define SVG_LENGTH                         0x00020000
+#define SVG_LENGTH_LIST                    0x00040000
+#define SVG_LOCATABLE                      0x00080000
+#define SVG_NUMBER                         0x00100000
+#define SVG_NUMBER_LIST                    0x00200000
+#define SVG_RECT                           0x00400000
+#define SVG_RENDERING_INTENT               0x00800000
+#define SVG_STRING_LIST                    0x01000000
+#define SVG_STYLABLE                       0x02000000
+#define SVG_TESTS                          0x04000000
+#define SVG_TRANSFORMABLE                  0x08000000
+#define SVG_UNIT_TYPES                     0x10000000
+#define SVG_URI_REFERENCE                  0x20000000
+#define SVG_VIEW_SPEC                      0x40000000
+#define SVG_ZOOM_AND_PAN                   0x80000000
+
+/**
+ * How many above?  Quite handy
+ */ 
+#define SVG_NR_INTERFACES                  32
+
+
+/**
+ * Enumerations for SVGElement types
+ */ 
+typedef enum
+{
+    SVG_A_ELEMENT = 0,
+    SVG_ALTGLYPH_ELEMENT,
+    SVG_ALTGLYPHDEF_ELEMENT,
+    SVG_ALTGLYPHITEM_ELEMENT,
+    SVG_ANIMATE_ELEMENT,
+    SVG_ANIMATECOLOR_ELEMENT,
+    SVG_ANIMATEMOTION_ELEMENT,
+    SVG_ANIMATETRANSFORM_ELEMENT,
+    SVG_CIRCLE_ELEMENT,
+    SVG_CLIPPATH_ELEMENT,
+    SVG_COLOR_PROFILE_ELEMENT,
+    SVG_CURSOR_ELEMENT,
+    SVG_DEFINITION_SRC_ELEMENT,
+    SVG_DEFS_ELEMENT,
+    SVG_DESC_ELEMENT,
+    SVG_ELLIPSE_ELEMENT,
+    SVG_FEBLEND_ELEMENT,
+    SVG_FECOLORMATRIX_ELEMENT,
+    SVG_FECOMPONENTTRANSFER_ELEMENT,
+    SVG_FECOMPOSITE_ELEMENT,
+    SVG_FECONVOLVEMATRIX_ELEMENT,
+    SVG_FEDIFFUSELIGHTING_ELEMENT,
+    SVG_FEDISPLACEMENTMAP_ELEMENT,
+    SVG_FEDISTANTLIGHT_ELEMENT,
+    SVG_FEFLOOD_ELEMENT,
+    SVG_FEFUNCA_ELEMENT,
+    SVG_FEFUNCB_ELEMENT,
+    SVG_FEFUNCG_ELEMENT,
+    SVG_FEFUNCR_ELEMENT,
+    SVG_FEGAUSSIANBLUR_ELEMENT,
+    SVG_FEIMAGE_ELEMENT,
+    SVG_FEMERGE_ELEMENT,
+    SVG_FEMERGENODE_ELEMENT,
+    SVG_FEMORPHOLOGY_ELEMENT,
+    SVG_FEOFFSET_ELEMENT,
+    SVG_FEPOINTLIGHT_ELEMENT,
+    SVG_FESPECULARLIGHTING_ELEMENT,
+    SVG_FESPOTLIGHT_ELEMENT,
+    SVG_FETILE_ELEMENT,
+    SVG_FETURBULENCE_ELEMENT,
+    SVG_FILTER_ELEMENT,
+    SVG_FONT_ELEMENT,
+    SVG_FONT_FACE_ELEMENT,
+    SVG_FONT_FACE_FORMAT_ELEMENT,
+    SVG_FONT_FACE_NAME_ELEMENT,
+    SVG_FONT_FACE_SRC_ELEMENT,
+    SVG_FONT_FACE_URI_ELEMENT,
+    SVG_FOREIGNOBJECT_ELEMENT,
+    SVG_G_ELEMENT,
+    SVG_GLYPH_ELEMENT,
+    SVG_GLYPHREF_ELEMENT,
+    SVG_HKERN_ELEMENT,
+    SVG_IMAGE_ELEMENT,
+    SVG_LINE_ELEMENT,
+    SVG_LINEARGRADIENT_ELEMENT,
+    SVG_MARKER_ELEMENT,
+    SVG_MASK_ELEMENT,
+    SVG_METADATA_ELEMENT,
+    SVG_MISSING_GLYPH_ELEMENT,
+    SVG_MPATH_ELEMENT,
+    SVG_PATH_ELEMENT,
+    SVG_PATTERN_ELEMENT,
+    SVG_POLYGON_ELEMENT,
+    SVG_POLYLINE_ELEMENT,
+    SVG_RADIALGRADIENT_ELEMENT,
+    SVG_RECT_ELEMENT,
+    SVG_SCRIPT_ELEMENT,
+    SVG_SET_ELEMENT,
+    SVG_STOP_ELEMENT,
+    SVG_STYLE_ELEMENT,
+    SVG_SVG_ELEMENT,
+    SVG_SWITCH_ELEMENT,
+    SVG_SYMBOL_ELEMENT,
+    SVG_TEXT_ELEMENT,
+    SVG_TEXTPATH_ELEMENT,
+    SVG_TITLE_ELEMENT,
+    SVG_TREF_ELEMENT,
+    SVG_TSPAN_ELEMENT,
+    SVG_USE_ELEMENT,
+    SVG_VIEW_ELEMENT,
+    SVG_VKERN_ELEMENT,
+    SVG_MAX_ELEMENT
+} SVGElementType;
+
+
+
+
+/**
+ * Look up the SVG Element type enum for a given string
+ * Return -1 if not found
+ */
+int svgElementStrToEnum(const char *str);
+
+
+/**
+ * Return the string corresponding to a given SVG element type enum
+ * Return "unknown" if not found
+ */
+const char *svgElementEnumToStr(int type);
+
+
+
+
+/*#########################################################################
+## SVGElement
+#########################################################################*/
+
+/**
+ * All of the SVG DOM interfaces that correspond directly to elements in the SVG
+ * language(e.g., the SVGPathElement interface corresponds directly to the
+ * 'path' element in the language) are derivative from base class SVGElement.
+ */
+class SVGElement : public Element
+{
+public:
+
+    //####################################################################
+    //# BASE METHODS FOR SVGElement
+    //####################################################################
+
+    /**
+     * Get the value of the id attribute on the given element.
+     */
+    DOMString getId();
+
+    /**
+     * Set the value of the id attribute on the given element.
+     */
+    void setId(const DOMString &val) throw(DOMException);
+
+    /**
+     * Corresponds to attribute xml:base on the given element.
+     */
+    DOMString getXmlBase();
+
+    /**
+     * Corresponds to attribute xml:base on the given element.
+     */
+    void setXmlBase(const DOMString &val) throw(DOMException);
+
+    /**
+     * The nearest ancestor 'svg' element. Null if the given element is the
+     *      outermost 'svg' element.
+     */
+    SVGElementPtr getOwnerSVGElement();
+
+    /**
+     * The element which established the current viewport. Often, the nearest
+     * ancestor 'svg' element. Null if the given element is the outermost 'svg'
+     * element.
+     */
+    SVGElementPtr getViewportElement();
+
+
+
+    //####################################################################
+    //####################################################################
+    //# E L E M E N T S
+    //####################################################################
+    //####################################################################
+
+    //####################################################################
+    //# SVGAElement
+    //####################################################################
+
+
+    /**
+     *
+     */
+    SVGAnimatedValue getTarget();
+
+
+
+    //####################################################################
+    //# SVGAltGlyphElement
+    //####################################################################
+
+
+    /**
+     * Get the attribute glyphRef on the given element.
+     */
+    DOMString getGlyphRef();
+
+    /**
+     * Set the attribute glyphRef on the given element.
+     */
+    void setGlyphRef(const DOMString &val) throw(DOMException);
+
+    /**
+     * Get the attribute format on the given element.
+     */
+    DOMString getFormat();
+
+    /**
+     * Set the attribute format on the given element.
+     */
+    void setFormat(const DOMString &val) throw(DOMException);
+
+
+    //####################################################################
+    //# SVGAltGlyphDefElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGAltGlyphItemElement
+    //####################################################################
+
+
+    //####################################################################
+    //# SVGAnimateElement
+    //####################################################################
+
+
+    //####################################################################
+    //# SVGAnimateColorElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGAnimateMotionElement
+    //####################################################################
+
+
+    //####################################################################
+    //# SVGAnimateTransformElement
+    //####################################################################
+
+
+    //####################################################################
+    //# SVGAnimationElement
+    //####################################################################
+
+
+    /**
+     *
+     */
+    SVGElementPtr getTargetElement();
+
+    /**
+     *
+     */
+    double getStartTime();
+
+    /**
+     *
+     */
+    double getCurrentTime();
+
+    /**
+     *
+     */
+    double getSimpleDuration() throw(DOMException);
+
+
+
+    //####################################################################
+    //# SVGCircleElement
+    //####################################################################
+
+    /**
+     * Corresponds to attribute cx on the given 'circle' element.
+     */
+    SVGAnimatedValue getCx();
+
+    /**
+     * Corresponds to attribute cy on the given 'circle' element.
+     */
+    SVGAnimatedValue getCy();
+
+    /**
+     * Corresponds to attribute r on the given 'circle' element.
+     */
+    SVGAnimatedValue getR();
+
+    //####################################################################
+    //# SVGClipPathElement
+    //####################################################################
+
+
+    /**
+     * Corresponds to attribute clipPathUnits on the given 'clipPath' element.
+     *      Takes one of the constants defined in SVGUnitTypes.
+     */
+    SVGAnimatedValue getClipPathUnits();
+
+
+
+    //####################################################################
+    //# SVGColorProfileElement
+    //####################################################################
+
+
+    /**
+     * Get the attribute local on the given element.
+     */
+    DOMString getLocal();
+
+    /**
+     * Set the attribute local on the given element.
+     */
+    void setLocal(const DOMString &val) throw(DOMException);
+
+    /**
+     * Get the attribute name on the given element.
+     */
+    DOMString getName();
+
+    /**
+     * Set the attribute name on the given element.
+     */
+    void setName(const DOMString &val) throw(DOMException);
+
+    /**
+     * Set the attribute rendering-intent on the given element.
+     * The type of rendering intent, identified by one of the
+     *      SVGRenderingIntent constants.
+     */
+    unsigned short getRenderingIntent();
+
+    /**
+     * Get the attribute rendering-intent on the given element.
+     */
+    void setRenderingIntent(unsigned short val) throw(DOMException);
+
+
+    //####################################################################
+    //# SVGComponentTransferFunctionElement
+    //####################################################################
+
+
+    /**
+     * Component Transfer Types
+     */
+    typedef enum
+        {
+        SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN  = 0,
+        SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1,
+        SVG_FECOMPONENTTRANSFER_TYPE_TABLE    = 2,
+        SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3,
+        SVG_FECOMPONENTTRANSFER_TYPE_LINEAR   = 4,
+        SVG_FECOMPONENTTRANSFER_TYPE_GAMMA    = 5
+        } ComponentTransferType;
+
+
+    /**
+     * Corresponds to attribute type on the given element. Takes one\
+     *      of the Component Transfer Types.
+     *  -- also in SVGCSSRule
+     */
+    // SVGAnimatedValue getType();
+
+    /**
+     * Corresponds to attribute tableValues on the given element.
+     */
+    SVGAnimatedValueList getTableValues();
+
+    /**
+     * Corresponds to attribute slope on the given element.
+     */
+    SVGAnimatedValue getSlope();
+
+    /**
+     * Corresponds to attribute intercept on the given element.
+     */
+    SVGAnimatedValue getIntercept();
+
+    /**
+     * Corresponds to attribute amplitude on the given element.
+     */
+    SVGAnimatedValue getAmplitude();
+
+    /**
+     * Corresponds to attribute exponent on the given element.
+     */
+    SVGAnimatedValue getExponent();
+
+    /**
+     * Corresponds to attribute offset on the given element.
+     */
+    SVGAnimatedValue getOffset();
+
+    //####################################################################
+    //# SVGCursorElement
+    //####################################################################
+
+    /**
+     * -- also in SVGRect
+     */
+    // SVGAnimatedValue getX();
+
+    /**
+     * -- also in SVGRect
+     */
+    // SVGAnimatedValue getY();
+
+
+    //####################################################################
+    //# SVGDefinitionSrcElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGDefsElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGDescElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGEllipseElement
+    //####################################################################
+
+    /**
+     * Corresponds to attribute cx on the given 'ellipse' element.
+     * -- also in Circle
+     */
+    // SVGAnimatedValue getCx();
+
+    /**
+     * Corresponds to attribute cy on the given 'ellipse' element.
+     * -- also in Circle
+     */
+    // SVGAnimatedValue getCy();
+
+    /**
+     * Corresponds to attribute rx on the given 'ellipse' element.
+     */
+    SVGAnimatedValue getRx();
+
+    /**
+     * Corresponds to attribute ry on the given 'ellipse' element.
+     */
+    SVGAnimatedValue getRy();
+
+
+    //####################################################################
+    //# SVGFEBlendElement
+    //####################################################################
+
+    /**
+     * Blend Mode Types
+     */
+    typedef enum
+        {
+        SVG_FEBLEND_MODE_UNKNOWN  = 0,
+        SVG_FEBLEND_MODE_NORMAL   = 1,
+        SVG_FEBLEND_MODE_MULTIPLY = 2,
+        SVG_FEBLEND_MODE_SCREEN   = 3,
+        SVG_FEBLEND_MODE_DARKEN   = 4,
+        SVG_FEBLEND_MODE_LIGHTEN  = 5
+        } BlendModeType;
+
+    /**
+     * Corresponds to attribute in on the given 'feBlend' element.
+     */
+    SVGAnimatedValue getIn1();
+
+    /**
+     * Corresponds to attribute in2 on the given 'feBlend' element.
+     */
+    SVGAnimatedValue getIn2();
+
+    /**
+     * Corresponds to attribute mode on the given 'feBlend' element.
+     *      Takes one of the Blend Mode Types.
+     */
+    SVGAnimatedValue getMode();
+
+
+    //####################################################################
+    //# SVGFEColorMatrixElement
+    //####################################################################
+
+    /**
+     * Color Matrix Types
+     */
+    typedef enum
+        {
+        SVG_FECOLORMATRIX_TYPE_UNKNOWN          = 0,
+        SVG_FECOLORMATRIX_TYPE_MATRIX           = 1,
+        SVG_FECOLORMATRIX_TYPE_SATURATE         = 2,
+        SVG_FECOLORMATRIX_TYPE_HUEROTATE        = 3,
+        SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4
+        } ColorMatrixType;
+
+
+    /**
+     * Corresponds to attribute in on the given 'feColorMatrix' element.
+     * - also in feBlend
+     */
+    // SVGAnimatedValue getIn1();
+
+    /**
+     * Corresponds to attribute type on the given 'feColorMatrix' element.
+     *      Takes one of the Color Matrix Types.
+     * -- also in CSSRule
+     */
+    // SVGAnimatedValue getType();
+
+    /**
+     * Corresponds to attribute values on the given 'feColorMatrix' element.
+     * Provides access to the contents of the values attribute.
+     */
+    SVGAnimatedValueList getValues();
+
+
+    //####################################################################
+    //# SVGFEComponentTransferElement
+    //####################################################################
+
+
+    /**
+     * Corresponds to attribute in on the given 'feComponentTransfer'  element.
+     * -- also in feBlend
+     */
+    // SVGAnimatedValue getIn1();
+
+    //####################################################################
+    //# SVGFECompositeElement
+    //####################################################################
+
+    /**
+     *  Composite Operators
+     */
+    typedef enum
+        {
+        SVG_FECOMPOSITE_OPERATOR_UNKNOWN    = 0,
+        SVG_FECOMPOSITE_OPERATOR_OVER       = 1,
+        SVG_FECOMPOSITE_OPERATOR_IN         = 2,
+        SVG_FECOMPOSITE_OPERATOR_OUT        = 3,
+        SVG_FECOMPOSITE_OPERATOR_ATOP       = 4,
+        SVG_FECOMPOSITE_OPERATOR_XOR        = 5,
+        SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6
+        } CompositeOperatorType;
+
+    /**
+     * Corresponds to attribute in on the given 'feComposite' element.
+     * -- also in feBlend
+     */
+    // SVGAnimatedValue getIn1();
+
+    /**
+     * Corresponds to attribute in2 on the given 'feComposite' element.
+     * -- also in feBlend
+     */
+    // SVGAnimatedValue getIn2();
+
+    /**
+     * Corresponds to attribute operator on the given 'feComposite' element.
+     *      Takes one of the Composite Operators.
+     */
+    SVGAnimatedValue getOperator();
+
+    /**
+     * Corresponds to attribute k1 on the given 'feComposite' element.
+     */
+    SVGAnimatedValue getK1();
+
+    /**
+     * Corresponds to attribute k2 on the given 'feComposite' element.
+     */
+    SVGAnimatedValue getK2();
+
+    /**
+     * Corresponds to attribute k3 on the given 'feComposite' element.
+     */
+    SVGAnimatedValue getK3();
+
+    /**
+     * Corresponds to attribute k4 on the given 'feComposite' element.
+     */
+    SVGAnimatedValue getK4();
+
+
+    //####################################################################
+    //# SVGFEConvolveMatrixElement
+    //####################################################################
+
+
+    /**
+     * Edge Mode Values
+     */
+    typedef enum
+        {
+        SVG_EDGEMODE_UNKNOWN   = 0,
+        SVG_EDGEMODE_DUPLICATE = 1,
+        SVG_EDGEMODE_WRAP      = 2,
+        SVG_EDGEMODE_NONE      = 3
+        } EdgeModeType;
+
+
+    /**
+     * Corresponds to attribute order on the given 'feConvolveMatrix'  element.
+     */
+    SVGAnimatedValue getOrderX();
+
+    /**
+     * Corresponds to attribute order on the given 'feConvolveMatrix'  element.
+     */
+    SVGAnimatedValue getOrderY();
+
+    /**
+     * Corresponds to attribute kernelMatrix on the given element.
+     */
+    SVGAnimatedValueList getKernelMatrix();
+
+    /**
+     * Corresponds to attribute divisor on the given 'feConvolveMatrix' element.
+     */
+    SVGAnimatedValue getDivisor();
+
+    /**
+     * Corresponds to attribute bias on the given 'feConvolveMatrix'  element.
+     */
+    SVGAnimatedValue getBias();
+
+    /**
+     * Corresponds to attribute targetX on the given 'feConvolveMatrix'  element.
+     */
+    SVGAnimatedValue getTargetX();
+
+    /**
+     * Corresponds to attribute targetY on the given 'feConvolveMatrix'  element.
+     */
+    SVGAnimatedValue getTargetY();
+
+    /**
+     * Corresponds to attribute edgeMode on the given 'feConvolveMatrix'
+     *      element. Takes one of the Edge Mode Types.
+     */
+    SVGAnimatedValue getEdgeMode();
+
+    /**
+     * Corresponds to attribute kernelUnitLength on the
+     *      given 'feConvolveMatrix'  element.
+     */
+    SVGAnimatedValue getKernelUnitLengthX();
+
+    /**
+     * Corresponds to attribute kernelUnitLength on the given
+     *      'feConvolveMatrix'  element.
+     */
+    SVGAnimatedValue getKernelUnitLengthY();
+
+    /**
+     * Corresponds to attribute preserveAlpha on the
+     *      given 'feConvolveMatrix'  element.
+     */
+    SVGAnimatedValue getPreserveAlpha();
+
+
+
+    //####################################################################
+    //# SVGFEDiffuseLightingElement
+    //####################################################################
+
+
+    /**
+     * Corresponds to attribute in on the given 'feDiffuseLighting'  element.
+     * -- also in feBlend
+     */
+    // SVGAnimatedValue getIn1();
+
+    /**
+     * Corresponds to attribute surfaceScale on the given
+     *      'feDiffuseLighting'  element.
+     */
+    SVGAnimatedValue getSurfaceScale();
+
+    /**
+     * Corresponds to attribute diffuseConstant on the given
+     *      'feDiffuseLighting'  element.
+     */
+    SVGAnimatedValue getDiffuseConstant();
+
+    /**
+     * Corresponds to attribute kernelUnitLength on the given
+     *      'feDiffuseLighting'  element.
+     */
+    // SVGAnimatedValue getKernelUnitLengthX();
+
+    /**
+     * Corresponds to attribute kernelUnitLength on the given
+     *      'feDiffuseLighting'  element.
+     */
+    // SVGAnimatedValue getKernelUnitLengthY();
+
+
+
+
+    //####################################################################
+    //# SVGFEDisplacementMapElement
+    //####################################################################
+
+
+    /**
+     *  Channel Selectors
+     */
+    typedef enum
+        {
+        SVG_CHANNEL_UNKNOWN = 0,
+        SVG_CHANNEL_R       = 1,
+        SVG_CHANNEL_G       = 2,
+        SVG_CHANNEL_B       = 3,
+        SVG_CHANNEL_A       = 4
+        } ChannelSelector;
+
+    /**
+     *
+     * -- also in feBlend
+     */
+    // SVGAnimatedValue getIn1();
+
+    /**
+     *
+     * -- also in feBlend
+     */
+    // SVGAnimatedValue getIn2();
+
+
+    /**
+     *
+     */
+    SVGAnimatedValue getScale();
+
+    /**
+     *
+     */
+    SVGAnimatedValue getXChannelSelector();
+
+    /**
+     *
+     */
+    SVGAnimatedValue getYChannelSelector();
+
+    //####################################################################
+    //# SVGFEDistantLightElement
+    //####################################################################
+
+
+    /**
+     * Corresponds to attribute azimuth on the given 'feDistantLight'  element.
+     */
+    SVGAnimatedValue getAzimuth();
+
+
+    /**
+     * Corresponds to attribute elevation on the given 'feDistantLight'
+     *    element
+     */
+    SVGAnimatedValue getElevation();
+
+
+    //####################################################################
+    //# SVGFEFloodElement
+    //####################################################################
+
+
+    /**
+     *
+     * -- also in feBlend
+     */
+    // SVGAnimatedValue getIn1();
+
+
+    //####################################################################
+    //# SVGFEFuncAElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGFEFuncBElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGFEFuncGElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGFEFuncRElement
+    //####################################################################
+
+
+    //####################################################################
+    //# SVGFEGaussianBlurElement
+    //####################################################################
+
+
+    /**
+     *
+     * -- also in feBlend
+     */
+    // SVGAnimatedValue getIn1();
+
+
+    /**
+     *
+     */
+    SVGAnimatedValue getStdDeviationX();
+
+    /**
+     *
+     */
+    SVGAnimatedValue getStdDeviationY();
+
+
+    /**
+     *
+     */
+    void setStdDeviation(double stdDeviationX, double stdDeviationY);
+
+
+    //####################################################################
+    //# SVGFEImageElement
+    //####################################################################
+
+
+    //####################################################################
+    //# SVGFEMergeElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGFEMergeNodeElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGFEMorphologyElement
+    //####################################################################
+
+
+
+    /**
+     *  Morphology Operators
+     */
+    typedef enum
+        {
+        SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0,
+        SVG_MORPHOLOGY_OPERATOR_ERODE   = 1,
+        SVG_MORPHOLOGY_OPERATOR_DILATE  = 2
+        } MorphologyOperatorType;
+
+
+    /**
+     *
+     * -- also in feBlend
+     */
+    // SVGAnimatedValue getIn1();
+
+
+    /**
+     *
+     */
+    // SVGAnimatedValue getOperator();
+
+    /**
+     *
+     */
+    SVGAnimatedValue getRadiusX();
+
+    /**
+     *
+     */
+    SVGAnimatedValue getRadiusY();
+
+    //####################################################################
+    //# SVGFEOffsetElement
+    //####################################################################
+
+    /**
+     *
+     * -- also in feBlend
+     */
+    // SVGAnimatedValue getIn1();
+
+    /**
+     *
+     */
+    SVGAnimatedValue getDx();
+
+    /**
+     *
+     */
+    SVGAnimatedValue getDy();
+
+
+    //####################################################################
+    //# SVGFEPointLightElement
+    //####################################################################
+
+    /**
+     * Corresponds to attribute x on the given 'fePointLight' element.
+     */
+    SVGAnimatedValue getX();
+
+    /**
+     * Corresponds to attribute y on the given 'fePointLight' element.
+     */
+    SVGAnimatedValue getY();
+
+    /**
+     * Corresponds to attribute z on the given 'fePointLight' element.
+     */
+    SVGAnimatedValue getZ();
+
+    //####################################################################
+    //# SVGFESpecularLightingElement
+    //####################################################################
+
+
+    /**
+     *
+     * -- also in feBlend
+     */
+    // SVGAnimatedValue getIn1();
+
+    /**
+     *
+     */
+    // SVGAnimatedValue getSurfaceScale();
+
+    /**
+     *
+     */
+    SVGAnimatedValue getSpecularConstant();
+
+    /**
+     *
+     */
+    SVGAnimatedValue getSpecularExponent();
+
+
+    //####################################################################
+    //# SVGFESpotLightElement
+    //####################################################################
+
+    /**
+     * Corresponds to attribute x on the given 'feSpotLight' element.
+     */
+    // SVGAnimatedValue getX();
+
+    /**
+     * Corresponds to attribute y on the given 'feSpotLight' element.
+     */
+    // SVGAnimatedValue getY();
+
+    /**
+     * Corresponds to attribute z on the given 'feSpotLight' element.
+     */
+    // SVGAnimatedValue getZ();
+
+    /**
+     * Corresponds to attribute pointsAtX on the given 'feSpotLight' element.
+     */
+    SVGAnimatedValue getPointsAtX();
+
+    /**
+     * Corresponds to attribute pointsAtY on the given 'feSpotLight' element.
+     */
+    SVGAnimatedValue getPointsAtY();
+
+    /**
+     * Corresponds to attribute pointsAtZ on the given 'feSpotLight' element.
+     */
+    SVGAnimatedValue getPointsAtZ();
+
+    /**
+     * Corresponds to attribute specularExponent on the
+     *      given 'feSpotLight'  element.
+     */
+    // SVGAnimatedValue getSpecularExponent();
+
+    /**
+     * Corresponds to attribute limitingConeAngle on the
+     *      given 'feSpotLight'  element.
+     */
+    SVGAnimatedValue getLimitingConeAngle();
+
+
+    //####################################################################
+    //# SVGFETileElement
+    //####################################################################
+
+
+    /**
+     *
+     * -- also in feBlend
+     */
+    // SVGAnimatedValue getIn1();
+
+
+    //####################################################################
+    //# SVGFETurbulenceElement
+    //####################################################################
+
+
+    /**
+     *  Turbulence Types
+     */
+    typedef enum
+        {
+        SVG_TURBULENCE_TYPE_UNKNOWN      = 0,
+        SVG_TURBULENCE_TYPE_FRACTALNOISE = 1,
+        SVG_TURBULENCE_TYPE_TURBULENCE   = 2
+        } TurbulenceType;
+
+    /**
+     *  Stitch Options
+     */
+    typedef enum
+        {
+        SVG_STITCHTYPE_UNKNOWN  = 0,
+        SVG_STITCHTYPE_STITCH   = 1,
+        SVG_STITCHTYPE_NOSTITCH = 2
+        } StitchOption;
+
+
+
+    /**
+     *
+     */
+    SVGAnimatedValue getBaseFrequencyX();
+
+    /**
+     *
+     */
+    SVGAnimatedValue getBaseFrequencyY();
+
+    /**
+     *
+     */
+    SVGAnimatedValue getNumOctaves();
+
+    /**
+     *
+     */
+    SVGAnimatedValue getSeed();
+
+    /**
+     *
+     */
+    SVGAnimatedValue getStitchTiles();
+
+    /**
+     *
+     */
+    SVGAnimatedValue getType();
+
+
+
+    //####################################################################
+    //# SVGFilterElement
+    //####################################################################
+
+
+    /**
+     * Corresponds to attribute filterUnits on the given 'filter' element. Takes one
+     * of the constants defined in SVGUnitTypes.
+     */
+    SVGAnimatedValue getFilterUnits();
+
+    /**
+     * Corresponds to attribute primitiveUnits on the given 'filter' element. Takes
+     * one of the constants defined in SVGUnitTypes.
+     */
+    SVGAnimatedValue getPrimitiveUnits();
+
+    /**
+     *
+     */
+    // SVGAnimatedValue getX();
+
+    /**
+     * Corresponds to attribute x on the given 'filter' element.
+     */
+    // SVGAnimatedValue getY();
+
+    /**
+     * Corresponds to attribute y on the given 'filter' element.
+     */
+    // SVGAnimatedValue getWidth();
+
+    /**
+     * Corresponds to attribute height on the given 'filter' element.
+     */
+    // SVGAnimatedValue getHeight();
+
+
+    /**
+     * Corresponds to attribute filterRes on the given 'filter' element.
+     *      Contains the X component of attribute filterRes.
+     */
+    SVGAnimatedValue getFilterResX();
+
+    /**
+     * Corresponds to attribute filterRes on the given 'filter' element.
+     * Contains the Y component(possibly computed automatically)
+     *      of attribute filterRes.
+     */
+    SVGAnimatedValue getFilterResY();
+
+    /**
+     * Sets the values for attribute filterRes.
+     */
+    void setFilterRes(unsigned long filterResX, unsigned long filterResY);
+
+
+    //####################################################################
+    //# SVGFontElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGFontFaceElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGFontFaceFormatElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGFontFaceNameElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGFontFaceSrcElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGFontFaceUriElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGForeignObjectElement
+    //####################################################################
+
+    /**
+     *
+     */
+    // SVGAnimatedValue getX();
+
+    /**
+     *
+     */
+    // SVGAnimatedValue getY();
+
+    /**
+     *
+     */
+    // SVGAnimatedValue getWidth();
+
+    /**
+     *
+     */
+    // SVGAnimatedValue getHeight();
+
+
+
+    //####################################################################
+    //# SVGGlyphRefElement
+    //####################################################################
+
+
+    /**
+     * Get the attribute glyphRef on the given element.
+     */
+    // DOMString getGlyphRef();
+
+    /**
+     * Set the attribute glyphRef on the given element.
+     */
+    // void setGlyphRef(const DOMString &val) throw(DOMException);
+
+    /**
+     * Get the attribute format on the given element.
+     */
+    // DOMString getFormat();
+
+    /**
+     * Set the attribute format on the given element.
+     */
+    // void setFormat(const DOMString &val) throw(DOMException);
+
+    /**
+     * Get the attribute x on the given element.
+     */
+    // double getX();
+
+    /**
+     * Set the attribute x on the given element.
+     */
+    // void setX(double val) throw(DOMException);
+
+    /**
+     * Get the attribute y on the given element.
+     */
+    // double getY();
+
+    /**
+     * Set the attribute y on the given element.
+     */
+    // void setY(double val) throw(DOMException);
+
+    /**
+     * Get the attribute dx on the given element.
+     */
+    // double getDx();
+
+    /**
+     * Set the attribute dx on the given element.
+     */
+    // void setDx(double val) throw(DOMException);
+
+    /**
+     * Get the attribute dy on the given element.
+     */
+    // double getDy();
+
+    /**
+     * Set the attribute dy on the given element.
+     */
+    // void setDy(double val) throw(DOMException);
+
+
+    //####################################################################
+    //# SVGGradientElement
+    //####################################################################
+
+
+    /**
+     * Spread Method Types
+     */
+    typedef enum
+        {
+        SVG_SPREADMETHOD_UNKNOWN = 0,
+        SVG_SPREADMETHOD_PAD     = 1,
+        SVG_SPREADMETHOD_REFLECT = 2,
+        SVG_SPREADMETHOD_REPEAT  = 3
+        } SpreadMethodType;
+
+
+    /**
+     * Corresponds to attribute gradientUnits on the given element.
+     *      Takes one of the constants defined in SVGUnitTypes.
+     */
+    SVGAnimatedValue &getGradientUnits();
+
+    /**
+     * Corresponds to attribute gradientTransform on the given element.
+     */
+    SVGAnimatedValueList &getGradientTransform();
+
+    /**
+     * Corresponds to attribute spreadMethod on the given element.
+     *      One of the Spread Method Types.
+     */
+    SVGAnimatedValue &getSpreadMethod();
+
+
+
+    //####################################################################
+    //# SVGHKernElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGImageElement
+    //####################################################################
+
+    /**
+     * Corresponds to attribute x on the given 'image' element.
+     */
+    // SVGAnimatedValue getX();
+
+    /**
+     * Corresponds to attribute y on the given 'image' element.
+     */
+    // SVGAnimatedValue getY();
+
+    /**
+     * Corresponds to attribute width on the given 'image' element.
+     */
+    // SVGAnimatedValue getWidth();
+
+    /**
+     * Corresponds to attribute height on the given 'image' element.
+     */
+    // SVGAnimatedValue getHeight();
+
+
+    /**
+     * Corresponds to attribute preserveAspectRatio on the given element.
+     */
+    // SVGAnimatedPreserveAspectRatio getPreserveAspectRatio();
+
+    //####################################################################
+    //# SVGLinearGradientElement
+    //####################################################################
+
+    /**
+     * Corresponds to attribute x1 on the given 'linearGradient'  element.
+     */
+    // SVGAnimatedValue getX1();
+
+    /**
+     * Corresponds to attribute y1 on the given 'linearGradient'  element.
+     */
+    // SVGAnimatedValue getY1();
+
+    /**
+     * Corresponds to attribute x2 on the given 'linearGradient'  element.
+     */
+    // SVGAnimatedValue getX2();
+
+    /**
+     * Corresponds to attribute y2 on the given 'linearGradient'  element.
+     */
+    // SVGAnimatedValue getY2();
+
+
+
+    //####################################################################
+    //# SVGLineElement
+    //####################################################################
+
+    /**
+     * Corresponds to attribute x1 on the given 'line' element.
+     */
+    // SVGAnimatedValue getX1();
+
+    /**
+     * Corresponds to attribute y1 on the given 'line' element.
+     */
+    // SVGAnimatedValue getY1();
+
+    /**
+     * Corresponds to attribute x2 on the given 'line' element.
+     */
+    // SVGAnimatedValue getX2();
+
+    /**
+     * Corresponds to attribute y2 on the given 'line' element.
+     */
+    // SVGAnimatedValue getY2();
+
+
+    //####################################################################
+    //# SVGMarkerElement
+    //####################################################################
+
+
+    /**
+     * Marker Unit Types
+     */
+    typedef enum
+        {
+        SVG_MARKERUNITS_UNKNOWN        = 0,
+        SVG_MARKERUNITS_USERSPACEONUSE = 1,
+        SVG_MARKERUNITS_STROKEWIDTH    = 2
+        } MarkerUnitType;
+
+    /**
+     * Marker Orientation Types
+     */
+    typedef enum
+        {
+        SVG_MARKER_ORIENT_UNKNOWN      = 0,
+        SVG_MARKER_ORIENT_AUTO         = 1,
+        SVG_MARKER_ORIENT_ANGLE        = 2
+        } MarkerOrientationType;
+
+
+    /**
+     * Corresponds to attribute refX on the given 'marker' element.
+     */
+    SVGAnimatedValue getRefX();
+
+    /**
+     * Corresponds to attribute refY on the given 'marker' element.
+     */
+    SVGAnimatedValue getRefY();
+
+    /**
+     * Corresponds to attribute markerUnits on the given 'marker' element.
+     *      One of the Marker Units Types defined above.
+     */
+    SVGAnimatedValue getMarkerUnits();
+
+    /**
+     * Corresponds to attribute markerWidth on the given 'marker' element.
+     */
+    SVGAnimatedValue getMarkerWidth();
+
+    /**
+     * Corresponds to attribute markerHeight on the given 'marker' element.
+     */
+    SVGAnimatedValue getMarkerHeight();
+
+    /**
+     * Corresponds to attribute orient on the given 'marker' element.
+     *      One of the Marker Orientation Types defined above.
+     */
+    SVGAnimatedValue getOrientType();
+
+    /**
+     * Corresponds to attribute orient on the given 'marker' element.
+     * If markerUnits is SVG_MARKER_ORIENT_ANGLE, the angle value for
+     * attribute orient; otherwise, it will be set to zero.
+     */
+    SVGAnimatedValue getOrientAngle();
+
+
+    /**
+     * Sets the value of attribute orient to 'auto'.
+     */
+    void setOrientToAuto();
+
+    /**
+     * Sets the value of attribute orient to the given angle.
+     */
+    void setOrientToAngle(const SVGAngle &angle);
+
+
+    //####################################################################
+    //# SVGMaskElement
+    //####################################################################
+
+
+    /**
+     * Corresponds to attribute maskUnits on the given 'mask' element. Takes one of
+     * the constants defined in SVGUnitTypes.
+     */
+    SVGAnimatedValue getMaskUnits();
+
+    /**
+     * Corresponds to attribute maskContentUnits on the given 'mask' element. Takes
+     * one of the constants defined in SVGUnitTypes.
+     */
+    SVGAnimatedValue getMaskContentUnits();
+
+    /**
+     * Corresponds to attribute x on the given 'mask' element.
+     */
+    // SVGAnimatedValue getX();
+
+    /**
+     * Corresponds to attribute y on the given 'mask' element.
+     */
+    // SVGAnimatedValue getY();
+
+    /**
+     * Corresponds to attribute width on the given 'mask' element.
+     */
+    // SVGAnimatedValue getWidth();
+
+    /**
+     * Corresponds to attribute height on the given 'mask' element.
+     */
+    // SVGAnimatedValue getHeight();
+
+    //####################################################################
+    //# SVGMetadataElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGMissingGlyphElement
+    //####################################################################
+
+
+    //####################################################################
+    //# SVGMPathElement
+    //####################################################################
+
+    /**
+     * Corresponds to attribute pathLength on the given 'path' element.
+     */
+    SVGAnimatedValue getPathLength();
+
+    /**
+     * Returns the user agent's computed value for the total length of the path using
+     * the user agent's distance-along-a-path algorithm, as a distance in the current
+     * user coordinate system.
+     */
+    double getTotalLength();
+
+    /**
+     * Returns the(x,y) coordinate in user space which is distance units along the
+     * path, utilizing the user agent's distance-along-a-path algorithm.
+     */
+    SVGPoint getPointAtLength(double distance);
+
+    /**
+     * Returns the index into pathSegList which is distance units along the path,
+     * utilizing the user agent's distance-along-a-path algorithm.
+     */
+    unsigned long getPathSegAtLength(double distance);
+
+    /**
+     * Returns a stand-alone, parentless SVGPathSegClosePath object.
+     */
+    SVGPathSeg createSVGPathSegClosePath();
+
+    /**
+     * Returns a stand-alone, parentless SVGPathSegMovetoAbs object.
+     */
+    SVGPathSeg createSVGPathSegMovetoAbs(double x, double y);
+
+    /**
+     * Returns a stand-alone, parentless SVGPathSegMovetoRel object.
+     */
+    SVGPathSeg createSVGPathSegMovetoRel(double x, double y);
+
+    /**
+     * Returns a stand-alone, parentless SVGPathSegLinetoAbs object.
+     */
+    SVGPathSeg createSVGPathSegLinetoAbs(double x, double y);
+
+    /**
+     * Returns a stand-alone, parentless SVGPathSegLinetoRel object.
+     */
+    SVGPathSeg createSVGPathSegLinetoRel(double x, double y);
+
+    /**
+     * Returns a stand-alone, parentless SVGPathSegCurvetoCubicAbs object.
+     */
+    SVGPathSeg createSVGPathSegCurvetoCubicAbs(double x, double y,
+                        double x1, double y1, double x2, double y2);
+
+    /**
+     * Returns a stand-alone, parentless SVGPathSegCurvetoCubicRel object.
+     */
+    SVGPathSeg createSVGPathSegCurvetoCubicRel(double x, double y,
+                        double x1, double y1, double x2, double y2);
+
+    /**
+     * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticAbs object.
+     */
+    SVGPathSeg createSVGPathSegCurvetoQuadraticAbs(double x, double y,
+                         double x1, double y1);
+
+    /**
+     * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticRel object.
+     */
+    SVGPathSeg createSVGPathSegCurvetoQuadraticRel(double x, double y,
+                         double x1, double y1);
+
+    /**
+     * Returns a stand-alone, parentless SVGPathSegArcAbs object.
+     */
+    SVGPathSeg createSVGPathSegArcAbs(double x, double y,
+                         double r1, double r2, double angle,
+                         bool largeArcFlag, bool sweepFlag);
+
+    /**
+     * Returns a stand-alone, parentless SVGPathSegArcRel object.
+     */
+    SVGPathSeg createSVGPathSegArcRel(double x, double y, double r1,
+                         double r2, double angle, bool largeArcFlag,
+                         bool sweepFlag);
+
+    /**
+     * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalAbs object.
+     */
+    SVGPathSeg createSVGPathSegLinetoHorizontalAbs(double x);
+
+    /**
+     * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalRel object.
+     */
+    SVGPathSeg createSVGPathSegLinetoHorizontalRel(double x);
+
+    /**
+     * Returns a stand-alone, parentless SVGPathSegLinetoVerticalAbs object.
+     */
+    SVGPathSeg createSVGPathSegLinetoVerticalAbs(double y);
+
+    /**
+     * Returns a stand-alone, parentless SVGPathSegLinetoVerticalRel object.
+     */
+    SVGPathSeg createSVGPathSegLinetoVerticalRel(double y);
+
+    /**
+     * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothAbs object.
+     */
+    SVGPathSeg createSVGPathSegCurvetoCubicSmoothAbs(double x, double y,
+                                             double x2, double y2);
+
+    /**
+     * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothRel object.
+     */
+    SVGPathSeg createSVGPathSegCurvetoCubicSmoothRel(double x, double y,
+                                                      double x2, double y2);
+
+    /**
+     * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothAbs
+     *      object.
+     */
+    SVGPathSeg createSVGPathSegCurvetoQuadraticSmoothAbs(double x, double y);
+
+    /**
+     * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothRel
+     *      object.
+     */
+    SVGPathSeg createSVGPathSegCurvetoQuadraticSmoothRel(double x, double y);
+
+    //####################################################################
+    //# SVGPathElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGPatternElement
+    //####################################################################
+
+    /**
+     * Corresponds to attribute patternUnits on the given 'pattern' element.
+     * Takes one of the constants defined in SVGUnitTypes.
+     */
+    SVGAnimatedValue getPatternUnits();
+
+    /**
+     * Corresponds to attribute patternContentUnits on the given 'pattern'
+     *      element. Takes one of the constants defined in SVGUnitTypes.
+     */
+    SVGAnimatedValue getPatternContentUnits();
+
+    /**
+     * Corresponds to attribute patternTransform on the given 'pattern' element.
+     */
+    SVGAnimatedValueList &getPatternTransform();
+
+    /**
+     * Corresponds to attribute x on the given 'pattern' element.
+     */
+    // SVGAnimatedValue getX();
+
+    /**
+     *
+     */
+    // SVGAnimatedValue getY();
+
+    /**
+     * Corresponds to attribute width on the given 'pattern' element.
+     */
+    // SVGAnimatedValue getWidth();
+
+    /**
+     * Corresponds to attribute height on the given 'pattern' element.
+     */
+    // SVGAnimatedValue getHeight();
+
+
+    //####################################################################
+    //# SVGPolyLineElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGPolygonElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGRadialGradientElement
+    //####################################################################
+
+
+    /**
+     * Corresponds to attribute cx on the given 'radialGradient'  element.
+     */
+    // SVGAnimatedValue getCx();
+
+
+    /**
+     * Corresponds to attribute cy on the given 'radialGradient'  element.
+     */
+    // SVGAnimatedValue getCy();
+
+
+    /**
+     * Corresponds to attribute r on the given 'radialGradient'  element.
+     */
+    // SVGAnimatedValue getR();
+
+
+    /**
+     * Corresponds to attribute fx on the given 'radialGradient'  element.
+     */
+    SVGAnimatedValue getFx();
+
+
+    /**
+     * Corresponds to attribute fy on the given 'radialGradient'  element.
+     */
+    SVGAnimatedValue getFy();
+
+
+    //####################################################################
+    //# SVGRectElement
+    //####################################################################
+
+    /**
+     * Corresponds to attribute x on the given 'rect' element.
+     */
+    // SVGAnimatedValue getX();
+
+    /**
+     * Corresponds to attribute y on the given 'rect' element.
+     */
+    // SVGAnimatedValue getY();
+
+    /**
+     * Corresponds to attribute width on the given 'rect' element.
+     */
+    // SVGAnimatedValue getWidth();
+
+    /**
+     * Corresponds to attribute height on the given 'rect' element.
+     */
+    // SVGAnimatedValue getHeight();
+
+
+    /**
+     * Corresponds to attribute rx on the given 'rect' element.
+     */
+    // SVGAnimatedValue getRx();
+
+    /**
+     * Corresponds to attribute ry on the given 'rect' element.
+     */
+    // SVGAnimatedValue getRy();
+
+
+    //####################################################################
+    //# SVGScriptElement
+    //####################################################################
+
+    /**
+     *
+     */
+    // DOMString getType();
+
+    /**
+     *
+     */
+    // void setType(const DOMString &val) throw(DOMException);
+
+    //####################################################################
+    //# SVGSetElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGStopElement
+    //####################################################################
+
+
+    /**
+     * Corresponds to attribute offset on the given 'stop' element.
+     */
+    // SVGAnimatedValue getOffset();
+
+
+    //####################################################################
+    //# SVGStyleElement
+    //####################################################################
+
+    /**
+     * Get the attribute xml:space on the given element.
+     */
+    DOMString getXmlspace();
+
+    /**
+     * Set the attribute xml:space on the given element.
+     */
+    void setXmlspace(const DOMString &val) throw(DOMException);
+
+    /**
+     * Get the attribute type on the given 'style' element.
+     */
+    // DOMString getType();
+
+    /**
+     * Set the attribute type on the given 'style' element.
+     */
+    // void setType(const DOMString &val) throw(DOMException);
+
+    /**
+     * Get the attribute media on the given 'style' element.
+     */
+    DOMString getMedia();
+
+    /**
+     * Set the attribute media on the given 'style' element.
+     */
+    void setMedia(const DOMString &val) throw(DOMException);
+
+    /**
+     * Get the attribute title on the given 'style' element.
+     */
+    DOMString getTitle();
+
+    /**
+     * Set the attribute title on the given 'style' element.
+     */
+    void setTitle(const DOMString &val) throw(DOMException);
+
+    //####################################################################
+    //# SVGSymbolElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGSVGElement
+    //####################################################################
+
+    /**
+     * Corresponds to attribute x on the given 'svg' element.
+     */
+    // SVGAnimatedValue getX();
+
+    /**
+     * Corresponds to attribute y on the given 'svg' element.
+     */
+    // SVGAnimatedValue getY();
+
+    /**
+     * Corresponds to attribute width on the given 'svg' element.
+     */
+    // SVGAnimatedValue getWidth();
+
+    /**
+     * Corresponds to attribute height on the given 'svg' element.
+     */
+    // SVGAnimatedValue getHeight();
+
+    /**
+     * Get the attribute contentScriptType on the given 'svg' element.
+     */
+    DOMString getContentScriptType();
+
+    /**
+     * Set the attribute contentScriptType on the given 'svg' element.
+     */
+    void setContentScriptType(const DOMString &val) throw(DOMException);
+
+
+    /**
+     * Get the attribute contentStyleType on the given 'svg' element.
+     */
+    DOMString getContentStyleType();
+
+    /**
+     * Set the attribute contentStyleType on the given 'svg' element.
+     */
+    void setContentStyleType(const DOMString &val) throw(DOMException);
+
+    /**
+     * The position and size of the viewport(implicit or explicit) that corresponds
+     * to this 'svg' element. When the user agent is actually rendering the content,
+     * then the position and size values represent the actual values when rendering.
+     * The position and size values are unitless values in the coordinate system of
+     * the parent element. If no parent element exists(i.e., 'svg' element
+     * represents the root of the document tree), if this SVG document is embedded as
+     * part of another document(e.g., via the HTML 'object' element), then the
+     * position and size are unitless values in the coordinate system of the parent
+     * document.(If the parent uses CSS or XSL layout, then unitless values
+     * represent pixel units for the current CSS or XSL viewport, as described in the
+     * CSS2 specification.) If the parent element does not have a coordinate system,
+     * then the user agent should provide reasonable default values for this attribute.
+     *      */
+    SVGRect getViewport();
+
+    /**
+     * Size of a pixel units(as defined by CSS2) along the x-axis of the viewport,
+     * which represents a unit somewhere in the range of 70dpi to 120dpi, and, on
+     * systems that support this, might actually match the characteristics of the
+     * target medium. On systems where it is impossible to know the size of a pixel,
+     * a suitable default pixel size is provided.
+     */
+    double getPixelUnitToMillimeterX();
+
+    /**
+     * Corresponding size of a pixel unit along the y-axis of the viewport.
+     */
+    double getPixelUnitToMillimeterY();
+
+    /**
+     * User interface(UI) events in DOM Level 2 indicate the screen positions at
+     * which the given UI event occurred. When the user agent actually knows the
+     * physical size of a "screen unit", this attribute will express that information;
+     *  otherwise, user agents will provide a suitable default value such as .28mm.
+     */
+    double getScreenPixelToMillimeterX();
+
+    /**
+     * Corresponding size of a screen pixel along the y-axis of the viewport.
+     */
+    double getScreenPixelToMillimeterY();
+
+
+    /**
+     * The initial view(i.e., before magnification and panning) of the current
+     * innermost SVG document fragment can be either the "standard" view(i.e., based
+     * on attributes on the 'svg' element such as fitBoxToViewport) or to a "custom"
+     * view(i.e., a hyperlink into a particular 'view' or other element - see
+     * Linking into SVG content: URI fragments and SVG views). If the initial view is
+     * the "standard" view, then this attribute is false. If the initial view is a
+     * "custom" view, then this attribute is true.
+     */
+    bool getUseCurrentView();
+
+    /**
+     * Set the value above
+     */
+    void setUseCurrentView(bool val) throw(DOMException);
+
+    /**
+     * The definition of the initial view(i.e., before magnification and panning) of
+     * the current innermost SVG document fragment. The meaning depends on the
+     * situation:
+     * 
+     *    * If the initial view was a "standard" view, then:
+     *      o the values for viewBox, preserveAspectRatio and zoomAndPan within
+     *        currentView will match the values for the corresponding DOM attributes that
+     *        are on SVGSVGElement directly
+     *      o the values for transform and viewTarget within currentView will be null
+     *    * If the initial view was a link into a 'view' element, then:
+     *      o the values for viewBox, preserveAspectRatio and zoomAndPan within
+     *        currentView will correspond to the corresponding attributes for the given
+     *        'view' element
+     *      o the values for transform and viewTarget within currentView will be null
+     *    * If the initial view was a link into another element(i.e., other than a
+     *      'view'), then:
+     *      o the values for viewBox, preserveAspectRatio and zoomAndPan within
+     *        currentView will match the values for the corresponding DOM attributes that
+     *        are on SVGSVGElement directly for the closest ancestor 'svg' element
+     *      o the values for transform within currentView will be null
+     *      o the viewTarget within currentView will represent the target of the link
+     *    * If the initial view was a link into the SVG document fragment using an SVG
+     *      view specification fragment identifier(i.e., #svgView(...)), then:
+     *      o the values for viewBox, preserveAspectRatio, zoomAndPan, transform and
+     *        viewTarget within currentView will correspond to the values from the SVG view
+     *        specification fragment identifier
+     * 
+     */
+    SVGViewSpec getCurrentView();
+
+
+    /**
+     * This attribute indicates the current scale factor relative to the initial view
+     * to take into account user magnification and panning operations, as described
+     * under Magnification and panning. DOM attributes currentScale and
+     * currentTranslate are equivalent to the 2x3 matrix [a b c d e f] =
+     * [currentScale 0 0 currentScale currentTranslate.x currentTranslate.y]. If
+     * "magnification" is enabled(i.e., zoomAndPan="magnify"), then the effect is as
+     * if an extra transformation were placed at the outermost level on the SVG
+     * document fragment(i.e., outside the outermost 'svg' element).
+     */
+    double getCurrentScale();
+
+    /**
+     *  Set the value above.
+     */
+    void setCurrentScale(double val) throw(DOMException);
+
+    /**
+     * The corresponding translation factor that takes into account
+     *      user "magnification".
+     */
+    SVGPoint getCurrentTranslate();
+
+    /**
+     * Takes a time-out value which indicates that redraw shall not occur until:(a)
+     * the corresponding unsuspendRedraw(suspend_handle_id) call has been made,(b)
+     * an unsuspendRedrawAll() call has been made, or(c) its timer has timed out. In
+     * environments that do not support interactivity(e.g., print media), then
+     * redraw shall not be suspended. suspend_handle_id =
+     * suspendRedraw(max_wait_milliseconds) and unsuspendRedraw(suspend_handle_id)
+     * must be packaged as balanced pairs. When you want to suspend redraw actions as
+     * a collection of SVG DOM changes occur, then precede the changes to the SVG DOM
+     * with a method call similar to suspend_handle_id =
+     * suspendRedraw(max_wait_milliseconds) and follow the changes with a method call
+     * similar to unsuspendRedraw(suspend_handle_id). Note that multiple
+     * suspendRedraw calls can be used at once and that each such method call is
+     * treated independently of the other suspendRedraw method calls.
+     */
+    unsigned long suspendRedraw(unsigned long max_wait_milliseconds);
+
+    /**
+     * Cancels a specified suspendRedraw() by providing a unique suspend_handle_id.
+     */
+    void unsuspendRedraw(unsigned long suspend_handle_id) throw(DOMException);
+
+    /**
+     * Cancels all currently active suspendRedraw() method calls. This method is most
+     * useful at the very end of a set of SVG DOM calls to ensure that all pending
+     * suspendRedraw() method calls have been cancelled.
+     */
+    void unsuspendRedrawAll();
+
+    /**
+     * In rendering environments supporting interactivity, forces the user agent to
+     * immediately redraw all regions of the viewport that require updating.
+     */
+    void forceRedraw();
+
+    /**
+     * Suspends(i.e., pauses) all currently running animations that are defined
+     * within the SVG document fragment corresponding to this 'svg' element, causing
+     * the animation clock corresponding to this document fragment to stand still
+     * until it is unpaused.
+     */
+    void pauseAnimations();
+
+    /**
+     * Unsuspends(i.e., unpauses) currently running animations that are defined
+     * within the SVG document fragment, causing the animation clock to continue from
+     * the time at which it was suspended.
+     */
+    void unpauseAnimations();
+
+    /**
+     * Returns true if this SVG document fragment is in a paused state.
+     */
+    bool animationsPaused();
+
+    /**
+     * Returns the current time in seconds relative to the start time for
+     *      the current SVG document fragment.
+     */
+    // double getCurrentTime();
+
+    /**
+     * Adjusts the clock for this SVG document fragment, establishing
+     *      a new current time.
+     */
+    void setCurrentTime(double seconds);
+
+    /**
+     * Returns the list of graphics elements whose rendered content intersects the
+     * supplied rectangle, honoring the 'pointer-events' property value on each
+     * candidate graphics element.
+     */
+    NodeList getIntersectionList(const SVGRect &rect,
+                                 const SVGElementPtr referenceElement);
+
+    /**
+     * Returns the list of graphics elements whose rendered content is entirely
+     * contained within the supplied rectangle, honoring the 'pointer-events'
+     * property value on each candidate graphics element.
+     */
+    NodeList getEnclosureList(const SVGRect &rect,
+                              const SVGElementPtr referenceElement);
+
+    /**
+     * Returns true if the rendered content of the given element intersects the
+     * supplied rectangle, honoring the 'pointer-events' property value on each
+     * candidate graphics element.
+     */
+    bool checkIntersection(const SVGElementPtr element, const SVGRect &rect);
+
+    /**
+     * Returns true if the rendered content of the given element is entirely
+     * contained within the supplied rectangle, honoring the 'pointer-events'
+     * property value on each candidate graphics element.
+     */
+    bool checkEnclosure(const SVGElementPtr element, const SVGRect &rect);
+
+    /**
+     * Unselects any selected objects, including any selections of text
+     *      strings and type-in bars.
+     */
+    void deselectAll();
+
+    /**
+     * Creates an SVGNumber object outside of any document trees. The object
+     *      is initialized to a value of zero.
+     */
+    SVGNumber createSVGNumber();
+
+    /**
+     * Creates an SVGLength object outside of any document trees. The object
+     *      is initialized to the value of 0 user units.
+     */
+    SVGLength createSVGLength();
+
+    /**
+     * Creates an SVGAngle object outside of any document trees. The object
+     *      is initialized to the value 0 degrees(unitless).
+     */
+    SVGAngle createSVGAngle();
+
+    /**
+     * Creates an SVGPoint object outside of any document trees. The object
+     * is initialized to the point(0,0) in the user coordinate system.
+     */
+    SVGPoint createSVGPoint();
+
+    /**
+     * Creates an SVGMatrix object outside of any document trees. The object
+     *      is initialized to the identity matrix.
+     */
+    SVGMatrix createSVGMatrix();
+
+    /**
+     * Creates an SVGRect object outside of any document trees. The object
+     *      is initialized such that all values are set to 0 user units.
+     */
+    SVGRect createSVGRect();
+
+    /**
+     * Creates an SVGTransform object outside of any document trees.
+     * The object is initialized to an identity matrix transform
+     *    (SVG_TRANSFORM_MATRIX).
+     */
+    SVGTransform createSVGTransform();
+
+    /**
+     * Creates an SVGTransform object outside of any document trees.
+     * The object is initialized to the given matrix transform
+     *    (i.e., SVG_TRANSFORM_MATRIX).
+     */
+    SVGTransform createSVGTransformFromMatrix(const SVGMatrix &matrix);
+
+    /**
+     * Searches this SVG document fragment(i.e., the search is restricted to a
+     * subset of the document tree) for an Element whose id is given by elementId. If
+     * an Element is found, that Element is returned. If no such element exists,
+     * returns null. Behavior is not defined if more than one element has this id.
+     */
+    ElementPtr getElementById(const DOMString& elementId);
+
+
+    //####################################################################
+    //# SVGTextElement
+    //####################################################################
+
+
+    //####################################################################
+    //# SVGTextContentElement
+    //####################################################################
+
+
+    /**
+     * lengthAdjust Types
+     */
+    typedef enum
+        {
+        LENGTHADJUST_UNKNOWN          = 0,
+        LENGTHADJUST_SPACING          = 1,
+        LENGTHADJUST_SPACINGANDGLYPHS = 2
+        } LengthAdjustType;
+
+
+    /**
+     * Corresponds to attribute textLength on the given element.
+     */
+    SVGAnimatedValue getTextLength();
+
+
+    /**
+     * Corresponds to attribute lengthAdjust on the given element. The value must be
+     * one of the length adjust constants specified above.
+     */
+    SVGAnimatedValue getLengthAdjust();
+
+
+    /**
+     * Returns the total number of characters to be rendered within the current
+     * element. Includes characters which are included via a 'tref' reference.
+     */
+    long getNumberOfChars();
+
+    /**
+     * The total sum of all of the advance values from rendering all of the
+     * characters within this element, including the advance value on the glyphs
+     *(horizontal or vertical), the effect of properties 'kerning', 'letter-spacing'
+     * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan'
+     * elements. For non-rendering environments, the user agent shall make reasonable
+     * assumptions about glyph metrics.
+     */
+    double getComputedTextLength();
+
+    /**
+     * The total sum of all of the advance values from rendering the specified
+     * substring of the characters, including the advance value on the glyphs
+     *(horizontal or vertical), the effect of properties 'kerning', 'letter-spacing'
+     * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan'
+     * elements. For non-rendering environments, the user agent shall make reasonable
+     * assumptions about glyph metrics.
+     */
+    double getSubStringLength(unsigned long charnum, unsigned long nchars)
+                                     throw(DOMException);
+
+    /**
+     * Returns the current text position before rendering the character in the user
+     * coordinate system for rendering the glyph(s) that correspond to the specified
+     * character. The current text position has already taken into account the
+     * effects of any inter-character adjustments due to properties 'kerning',
+     * 'letter-spacing' and 'word-spacing' and adjustments due to attributes x, y, dx
+     * and dy. If multiple consecutive characters are rendered inseparably(e.g., as
+     * a single glyph or a sequence of glyphs), then each of the inseparable
+     * characters will return the start position for the first glyph.
+     */
+    SVGPoint getStartPositionOfChar(unsigned long charnum) throw(DOMException);
+
+    /**
+     * Returns the current text position after rendering the character in the user
+     * coordinate system for rendering the glyph(s) that correspond to the specified
+     * character. This current text position does not take into account the effects
+     * of any inter-character adjustments to prepare for the next character, such as
+     * properties 'kerning', 'letter-spacing' and 'word-spacing' and adjustments due
+     * to attributes x, y, dx and dy. If multiple consecutive characters are rendered
+     * inseparably(e.g., as a single glyph or a sequence of glyphs), then each of
+     * the inseparable characters will return the end position for the last glyph.
+     */
+    SVGPoint getEndPositionOfChar(unsigned long charnum) throw(DOMException);
+
+    /**
+     * Returns a tightest rectangle which defines the minimum and maximum X and Y
+     * values in the user coordinate system for rendering the glyph(s) that
+     * correspond to the specified character. The calculations assume that all glyphs
+     * occupy the full standard glyph cell for the font. If multiple consecutive
+     * characters are rendered inseparably(e.g., as a single glyph or a sequence of
+     * glyphs), then each of the inseparable characters will return the same extent.
+     */
+    SVGRect getExtentOfChar(unsigned long charnum) throw(DOMException);
+
+    /**
+     * Returns the rotation value relative to the current user coordinate system used
+     * to render the glyph(s) corresponding to the specified character. If multiple
+     * glyph(s) are used to render the given character and the glyphs each have
+     * different rotations(e.g., due to text-on-a-path), the user agent shall return
+     * an average value(e.g., the rotation angle at the midpoint along the path for
+     * all glyphs used to render this character). The rotation value represents the
+     * rotation that is supplemental to any rotation due to properties
+     * 'glyph-orientation-horizontal' and 'glyph-orientation-vertical'; thus, any
+     * glyph rotations due to these properties are not included into the returned
+     * rotation value. If multiple consecutive characters are rendered inseparably
+     *(e.g., as a single glyph or a sequence of glyphs), then each of the
+     * inseparable characters will return the same rotation value.
+     */
+    double getRotationOfChar(unsigned long charnum) throw(DOMException);
+
+    /**
+     * Returns the index of the character whose corresponding glyph cell bounding box
+     * contains the specified point. The calculations assume that all glyphs occupy
+     * the full standard glyph cell for the font. If no such character exists, a
+     * value of -1 is returned. If multiple such characters exist, the character
+     * within the element whose glyphs were rendered last(i.e., take into account
+     * any reordering such as for bidirectional text) is used. If multiple
+     * consecutive characters are rendered inseparably(e.g., as a single glyph or a
+     * sequence of glyphs), then the user agent shall allocate an equal percentage of
+     * the text advance amount to each of the contributing characters in determining
+     * which of the characters is chosen.
+     */
+    long getCharNumAtPosition(const SVGPoint &point);
+
+    /**
+     * Causes the specified substring to be selected just as if the user
+     *      selected the substring interactively.
+     */
+    void selectSubString(unsigned long charnum, unsigned long nchars)
+                                  throw(DOMException);
+
+
+
+
+
+    //####################################################################
+    //# SVGTextPathElement
+    //####################################################################
+
+
+    /**
+     * textPath Method Types
+     */
+    typedef enum
+        {
+        TEXTPATH_METHODTYPE_UNKNOWN   = 0,
+        TEXTPATH_METHODTYPE_ALIGN     = 1,
+        TEXTPATH_METHODTYPE_STRETCH   = 2
+        } TextPathMethodType;
+
+    /**
+     * textPath Spacing Types
+     */
+    typedef enum
+        {
+        TEXTPATH_SPACINGTYPE_UNKNOWN  = 0,
+        TEXTPATH_SPACINGTYPE_AUTO     = 1,
+        TEXTPATH_SPACINGTYPE_EXACT    = 2
+        } TextPathSpacingType;
+
+
+    /**
+     * Corresponds to attribute startOffset on the given 'textPath' element.
+     */
+    SVGAnimatedValue getStartOffset();
+
+    /**
+     * Corresponds to attribute method on the given 'textPath' element. The value
+     * must be one of the method type constants specified above.
+     */
+    SVGAnimatedValue getMethod();
+
+    /**
+     * Corresponds to attribute spacing on the given 'textPath' element.
+     *  The value must be one of the spacing type constants specified above.
+     */
+    SVGAnimatedValue getSpacing();
+
+
+    //####################################################################
+    //# SVGTextPositioningElement
+    //####################################################################
+
+
+    /**
+     * Corresponds to attribute x on the given element.
+     */
+    // SVGAnimatedValue getX();
+
+    /**
+     * Corresponds to attribute y on the given element.
+     */
+    // SVGAnimatedValue getY();
+
+    /**
+     * Corresponds to attribute dx on the given element.
+     */
+    // SVGAnimatedValue getDx();
+
+    /**
+     * Corresponds to attribute dy on the given element.
+     */
+    // SVGAnimatedValue getDy();
+
+
+    /**
+     * Corresponds to attribute rotate on the given element.
+     */
+    SVGAnimatedValueList getRotate();
+
+
+    //####################################################################
+    //# SVGTitleElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGTRefElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGTSpanElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGSwitchElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGUseElement
+    //####################################################################
+
+    /**
+     * Corresponds to attribute x on the given 'use' element.
+     */
+    // SVGAnimatedValue getX();
+
+    /**
+     * Corresponds to attribute y on the given 'use' element.
+     */
+    // SVGAnimatedValue getY();
+
+    /**
+     * Corresponds to attribute width on the given 'use' element.
+     */
+    // SVGAnimatedValue getWidth();
+
+    /**
+     * Corresponds to attribute height on the given 'use' element.
+     */
+    // SVGAnimatedValue getHeight();
+
+    /**
+     * The root of the "instance tree". See description of SVGElementInstance for
+     * a discussion on the instance tree.
+     *      */
+    SVGElementInstance getInstanceRoot();
+
+    /**
+     * If the 'href' attribute is being animated, contains the current animated root
+     * of the "instance tree". If the 'href' attribute is not currently being
+     * animated, contains the same value as 'instanceRoot'. The root of the "instance
+     * tree". See description of SVGElementInstance for a discussion on the instance
+     * tree.
+     */
+    SVGElementInstance getAnimatedInstanceRoot();
+
+    //####################################################################
+    //# SVGVKernElement
+    //####################################################################
+
+    //####################################################################
+    //# SVGViewElement
+    //####################################################################
+
+
+    /**
+     *
+     */
+    SVGValueList getViewTarget();
+
+
+
+
+    //##################
+    //# Non-API methods
+    //##################
+
+
+    /**
+     *
+     */
+    ~SVGElement() {}
+
+
+};
+
+
+
+/*#########################################################################
+## SVGDocument
+#########################################################################*/
+
+/**
+ * When an 'svg' element is embedded inline as a component of a document from
+ * another namespace, such as when an 'svg' element is embedded inline within an
+ * XHTML document [XHTML], then an SVGDocument object will not exist; instead,
+ * the root object in the document object hierarchy will be a Document object of
+ * a different type, such as an HTMLDocument object.
+ *
+ * However, an SVGDocument object will indeed exist when the root element of the
+ * XML document hierarchy is an 'svg' element, such as when viewing a stand-alone
+ * SVG file(i.e., a file with MIME type "image/svg+xml"). In this case, the
+ * SVGDocument object will be the root object of the document object model
+ * hierarchy.
+ *
+ * In the case where an SVG document is embedded by reference, such as when an
+ * XHTML document has an 'object' element whose href attribute references an SVG
+ * document(i.e., a document whose MIME type is "image/svg+xml" and whose root
+ * element is thus an 'svg' element), there will exist two distinct DOM
+ * hierarchies. The first DOM hierarchy will be for the referencing document
+ *(e.g., an XHTML document). The second DOM hierarchy will be for the referenced
+ * SVG document. In this second DOM hierarchy, the root object of the document
+ * object model hierarchy is an SVGDocument object.
+ */
+class SVGDocument : public Document,
+                    public events::DocumentEvent
+{
+public:
+
+
+    /**
+     * The title of a document as specified by the title sub-element of the 'svg'
+     * root element(i.e., <svg><title>Here is the title</title>...</svg>)
+     */
+    DOMString getTitle();
+
+    /**
+     * Returns the URI of the page that linked to this page. The value is an empty
+     * string if the user navigated to the page directly(not through a link, but,
+     * for example, via a bookmark).
+     */
+    DOMString getReferrer();
+
+    /**
+     * The domain name of the server that served the document, or a null string if
+     * the server cannot be identified by a domain name.
+     */
+    DOMString getDomain();
+
+    /**
+     * The complete URI of the document.
+     */
+    DOMString getURL();
+
+    /**
+     * The root 'svg'  element in the document hierarchy.
+     */
+    SVGElementPtr getRootElement();
+
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    ~SVGDocument() {}
+
+};
+
+
+
+/*#########################################################################
+## GetSVGDocument
+#########################################################################*/
+
+/**
+ * In the case where an SVG document is embedded by reference, such as when an
+ * XHTML document has an 'object' element whose href(or equivalent) attribute
+ * references an SVG document(i.e., a document whose MIME type is
+ * "image/svg+xml" and whose root element is thus an 'svg' element), the SVG user
+ * agent is required to implement the GetSVGDocument interface for the element
+ * which references the SVG document(e.g., the HTML 'object' or comparable
+ * referencing elements).
+ */
+class GetSVGDocument
+{
+public:
+
+    /**
+     * Returns the SVGDocument  object for the referenced SVG document.
+     */
+    SVGDocumentPtr getSVGDocument()
+                    throw(DOMException);
+
+    //##################
+    //# Non-API methods
+    //##################
+
+    /**
+     *
+     */
+    ~GetSVGDocument() {}
+
+};
+
+
+
+
+
+
+
+}  //namespace svg
+}  //namespace dom
+}  //namespace w3c
+}  //namespace org
+
+#endif // __SVG_H__
+/*#########################################################################
+## E N D    O F    F I L E
+#########################################################################*/
+