Code

Merge interfaces and element types
[inkscape.git] / src / dom / svg2.h
1 #ifndef __SVG_H__\r
2 #define __SVG_H__\r
3 \r
4 /**\r
5  * Phoebe DOM Implementation.\r
6  *\r
7  * This is a C++ approximation of the W3C DOM model, which follows\r
8  * fairly closely the specifications in the various .idl files, copies of\r
9  * which are provided for reference.  Most important is this one:\r
10  *\r
11  * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html\r
12  *\r
13  * Authors:\r
14  *   Bob Jamison\r
15  *\r
16  * Copyright(C) 2005-2008 Bob Jamison\r
17  *\r
18  *  This library is free software; you can redistribute it and/or\r
19  *  modify it under the terms of the GNU Lesser General Public\r
20  *  License as published by the Free Software Foundation; either\r
21  *  version 2.1 of the License, or(at your option) any later version.\r
22  *\r
23  *  This library is distributed in the hope that it will be useful,\r
24  *  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
25  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
26  *  Lesser General Public License for more details.\r
27  *\r
28  *  You should have received a copy of the GNU Lesser General Public\r
29  *  License along with this library; if not, write to the Free Software\r
30  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA\r
31  *\r
32  * =======================================================================\r
33  * NOTES\r
34  *\r
35  * This API follows:\r
36  * http://www.w3.org/TR/SVG11/svgdom.html\r
37  *\r
38  * This file defines the main SVG-DOM Node types.  Other non-Node types are\r
39  * defined in svgtypes.h.\r
40  *    \r
41  */\r
42 \r
43 \r
44 // For access to DOM2 core\r
45 #include "dom/dom.h"\r
46 \r
47 // For access to DOM2 events\r
48 #include "dom/events.h"\r
49 \r
50 // For access to those parts from DOM2 CSS OM used by SVG DOM.\r
51 #include "dom/css.h"\r
52 \r
53 // For access to those parts from DOM2 Views OM used by SVG DOM.\r
54 #include "dom/views.h"\r
55 \r
56 // For access to the SMIL OM used by SVG DOM.\r
57 #include "dom/smil.h"\r
58 \r
59 \r
60 \r
61 #include "svgtypes.h"\r
62 \r
63 #include <math.h>\r
64 \r
65 #define SVG_NAMESPACE "http://www.w3.org/2000/svg"\r
66 \r
67 \r
68 namespace org\r
69 {\r
70 namespace w3c\r
71 {\r
72 namespace dom\r
73 {\r
74 namespace svg\r
75 {\r
76 \r
77 \r
78 //local definitions\r
79 typedef dom::DOMString DOMString;\r
80 typedef dom::DOMException DOMException;\r
81 typedef dom::Element Element;\r
82 typedef dom::ElementPtr ElementPtr;\r
83 typedef dom::Document Document;\r
84 typedef dom::DocumentPtr DocumentPtr;\r
85 typedef dom::NodeList NodeList;\r
86 \r
87 \r
88 \r
89 \r
90 class SVGElement;\r
91 typedef Ptr<SVGElement> SVGElementPtr;\r
92 class SVGDocument;\r
93 typedef Ptr<SVGDocument> SVGDocumentPtr;\r
94 \r
95 //########################################################################\r
96 //########################################################################\r
97 //########################################################################\r
98 //#   I N T E R F A C E S\r
99 //########################################################################\r
100 //########################################################################\r
101 //########################################################################\r
102 \r
103 \r
104 \r
105 /*#########################################################################\r
106 ## SVGMatrix\r
107 #########################################################################*/\r
108 \r
109 /**\r
110  *  In SVG, a Matrix is defined like this:\r
111  *\r
112  * | a  c  e |\r
113  * | b  d  f |\r
114  * | 0  0  1 |\r
115  *\r
116  */\r
117 class SVGMatrix\r
118 {\r
119 public:\r
120 \r
121 \r
122     /**\r
123      *\r
124      */\r
125     virtual double getA()\r
126         { return a; }\r
127 \r
128     /**\r
129      *\r
130      */\r
131     virtual void setA(double val) throw (DOMException)\r
132         { a = val; }\r
133 \r
134     /**\r
135      *\r
136      */\r
137     virtual double getB()\r
138         { return b; }\r
139 \r
140     /**\r
141      *\r
142      */\r
143     virtual void setB(double val) throw (DOMException)\r
144         { b = val; }\r
145 \r
146     /**\r
147      *\r
148      */\r
149     virtual double getC()\r
150         { return c; }\r
151 \r
152     /**\r
153      *\r
154      */\r
155     virtual void setC(double val) throw (DOMException)\r
156         { c = val; }\r
157 \r
158     /**\r
159      *\r
160      */\r
161     virtual double getD()\r
162         { return d; }\r
163 \r
164     /**\r
165      *\r
166      */\r
167     virtual void setD(double val) throw (DOMException)\r
168         { d = val; }\r
169     /**\r
170      *\r
171      */\r
172     virtual double getE()\r
173         { return e; }\r
174 \r
175     /**\r
176      *\r
177      */\r
178     virtual void setE(double val) throw (DOMException)\r
179         { e = val; }\r
180     /**\r
181      *\r
182      */\r
183     virtual double getF()\r
184         { return f; }\r
185 \r
186     /**\r
187      *\r
188      */\r
189     virtual void setF(double val) throw (DOMException)\r
190         { f = val; }\r
191 \r
192 \r
193     /**\r
194      * Return the result of postmultiplying this matrix with another.\r
195      */\r
196     virtual SVGMatrix multiply(const SVGMatrix &other)\r
197         {\r
198         SVGMatrix result;\r
199         result.a = a * other.a  +  c * other.b;\r
200         result.b = b * other.a  +  d * other.b;\r
201         result.c = a * other.c  +  c * other.d;\r
202         result.d = b * other.c  +  d * other.d;\r
203         result.e = a * other.e  +  c * other.f  +  e;\r
204         result.f = b * other.e  +  d * other.f  +  f;\r
205         return result;\r
206         }\r
207 \r
208     /**\r
209      *  Calculate the inverse of this matrix\r
210      *\r
211      */\r
212     virtual SVGMatrix inverse(  ) throw( SVGException )\r
213         {\r
214         /*###########################################\r
215         The determinant of a 3x3 matrix E\r
216            (let's use our own notation for a bit)\r
217 \r
218             A  B  C\r
219             D  E  F\r
220             G  H  I\r
221         is\r
222             AEI - AFH - BDI + BFG + CDH - CEG\r
223 \r
224         Since in our affine transforms, G and H==0 and I==1,\r
225         this reduces to:\r
226             AE - BD\r
227         In SVG's naming scheme, that is:  a * d - c * b .  SIMPLE!\r
228 \r
229         In a similar method of attack, SVG's adjunct matrix is:\r
230 \r
231            d  -c   cf-ed\r
232           -b   a   eb-af\r
233            0   0   ad-cb\r
234 \r
235         To get the inverse matrix, we divide the adjunct matrix by\r
236         the determinant.  Notice that (ad-cb)/(ad-cb)==1.  Very cool.\r
237         So what we end up with is this:\r
238 \r
239            a =  d/(ad-cb)  c = -c/(ad-cb)   e = (cf-ed)/(ad-cb)\r
240            b = -b/(ad-cb)  d =  a/(ad-cb)   f = (eb-af)/(ad-cb)\r
241 \r
242         (Since this would be in all SVG-DOM implementations,\r
243          somebody needed to document this!  ^^ )\r
244         #############################################*/\r
245 \r
246         SVGMatrix result;\r
247         double determinant = a * d  -  c * b;\r
248         if (determinant < 1.0e-18)//invertible?\r
249             {\r
250             result.identity();//cop out\r
251             return result;\r
252             }\r
253 \r
254         double idet = 1.0 / determinant;\r
255         result.a =   d * idet;\r
256         result.b =  -b * idet;\r
257         result.c =  -c * idet;\r
258         result.d =   a * idet;\r
259         result.e =  (c*f - e*d) * idet;\r
260         result.f =  (e*b - a*f) * idet;\r
261         return result;\r
262         }\r
263 \r
264     /**\r
265      * Equivalent to multiplying by:\r
266      *  | 1  0  x |\r
267      *  | 0  1  y |\r
268      *  | 0  0  1 |\r
269      *\r
270      */\r
271     virtual SVGMatrix translate(double x, double y )\r
272         {\r
273         SVGMatrix result;\r
274         result.a = a;\r
275         result.b = b;\r
276         result.c = c;\r
277         result.d = d;\r
278         result.e = a * x  +  c * y  +  e;\r
279         result.f = b * x  +  d * y  +  f;\r
280         return result;\r
281         }\r
282 \r
283     /**\r
284      * Equivalent to multiplying by:\r
285      *  | scale  0      0 |\r
286      *  | 0      scale  0 |\r
287      *  | 0      0      1 |\r
288      *\r
289      */\r
290     virtual SVGMatrix scale(double scale)\r
291         {\r
292         SVGMatrix result;\r
293         result.a = a * scale;\r
294         result.b = b * scale;\r
295         result.c = c * scale;\r
296         result.d = d * scale;\r
297         result.e = e;\r
298         result.f = f;\r
299         return result;\r
300         }\r
301 \r
302     /**\r
303      * Equivalent to multiplying by:\r
304      *  | scaleX  0       0 |\r
305      *  | 0       scaleY  0 |\r
306      *  | 0       0       1 |\r
307      *\r
308      */\r
309     virtual SVGMatrix scaleNonUniform(double scaleX,\r
310                                       double scaleY )\r
311         {\r
312         SVGMatrix result;\r
313         result.a = a * scaleX;\r
314         result.b = b * scaleX;\r
315         result.c = c * scaleY;\r
316         result.d = d * scaleY;\r
317         result.e = e;\r
318         result.f = f;\r
319         return result;\r
320         }\r
321 \r
322     /**\r
323      * Equivalent to multiplying by:\r
324      *  | cos(a) -sin(a)   0 |\r
325      *  | sin(a)  cos(a)   0 |\r
326      *  | 0       0        1 |\r
327      *\r
328      */\r
329     virtual SVGMatrix rotate (double angle)\r
330         {\r
331         double sina  = sin(angle);\r
332         double msina = -sina;\r
333         double cosa  = cos(angle);\r
334         SVGMatrix result;\r
335         result.a = a * cosa   +  c * sina;\r
336         result.b = b * cosa   +  d + sina;\r
337         result.c = a * msina  +  c * cosa;\r
338         result.d = b * msina  +  d * cosa;\r
339         result.e = e;\r
340         result.f = f;\r
341         return result;\r
342         }\r
343 \r
344     /**\r
345      * Equivalent to multiplying by:\r
346      *  | cos(a) -sin(a)   0 |\r
347      *  | sin(a)  cos(a)   0 |\r
348      *  | 0       0        1 |\r
349      *  In this case, angle 'a' is computed as the artangent\r
350      *  of the slope y/x .  It is negative if the slope is negative.\r
351      */\r
352     virtual SVGMatrix rotateFromVector(double x, double y)\r
353                                       throw( SVGException )\r
354         {\r
355         double angle = atan(y / x);\r
356         if (y < 0.0)\r
357             angle = -angle;\r
358         SVGMatrix result;\r
359         double sina  = sin(angle);\r
360         double msina = -sina;\r
361         double cosa  = cos(angle);\r
362         result.a = a * cosa   +  c * sina;\r
363         result.b = b * cosa   +  d + sina;\r
364         result.c = a * msina  +  c * cosa;\r
365         result.d = b * msina  +  d * cosa;\r
366         result.e = e;\r
367         result.f = f;\r
368         return result;\r
369         }\r
370 \r
371     /**\r
372      * Equivalent to multiplying by:\r
373      *  | -1   0   0 |\r
374      *  | 0    1   0 |\r
375      *  | 0    0   1 |\r
376      *\r
377      */\r
378     virtual SVGMatrix flipX(  )\r
379         {\r
380         SVGMatrix result;\r
381         result.a = -a;\r
382         result.b = -b;\r
383         result.c =  c;\r
384         result.d =  d;\r
385         result.e =  e;\r
386         result.f =  f;\r
387         return result;\r
388         }\r
389 \r
390     /**\r
391      * Equivalent to multiplying by:\r
392      *  | 1   0   0 |\r
393      *  | 0  -1   0 |\r
394      *  | 0   0   1 |\r
395      *\r
396      */\r
397     virtual SVGMatrix flipY( )\r
398         {\r
399         SVGMatrix result;\r
400         result.a =  a;\r
401         result.b =  b;\r
402         result.c = -c;\r
403         result.d = -d;\r
404         result.e =  e;\r
405         result.f =  f;\r
406         return result;\r
407         }\r
408 \r
409     /**\r
410      *  | 1   tan(a)  0 |\r
411      *  | 0   1       0 |\r
412      *  | 0   0       1 |\r
413      *\r
414      */\r
415     virtual SVGMatrix skewX(double angle)\r
416         {\r
417         double tana = tan(angle);\r
418         SVGMatrix result;\r
419         result.a =  a;\r
420         result.b =  b;\r
421         result.c =  a * tana + c;\r
422         result.d =  b * tana + d;\r
423         result.e =  e;\r
424         result.f =  f;\r
425         return result;\r
426         }\r
427 \r
428     /**\r
429      * Equivalent to multiplying by:\r
430      *  | 1       0   0 |\r
431      *  | tan(a)  1   0 |\r
432      *  | 0       0   1 |\r
433      *\r
434      */\r
435     virtual SVGMatrix skewY(double angle)\r
436         {\r
437         double tana = tan(angle);\r
438         SVGMatrix result;\r
439         result.a =  a + c * tana;\r
440         result.b =  b + d * tana;\r
441         result.c =  c;\r
442         result.d =  d;\r
443         result.e =  e;\r
444         result.f =  f;\r
445         return result;\r
446         }\r
447 \r
448 \r
449 \r
450     //##################\r
451     //# Non-API methods\r
452     //##################\r
453 \r
454     /**\r
455      *\r
456      */\r
457     SVGMatrix()\r
458         {\r
459         identity();\r
460         }\r
461 \r
462     /**\r
463      *\r
464      */\r
465     SVGMatrix(double aArg, double bArg, double cArg,\r
466               double dArg, double eArg, double fArg )\r
467         {\r
468         a = aArg; b = bArg; c = cArg;\r
469         d = dArg; e = eArg; f = fArg;\r
470         }\r
471 \r
472     /**\r
473      * Copy constructor\r
474      */\r
475     SVGMatrix(const SVGMatrix &other)\r
476         {\r
477         a = other.a;\r
478         b = other.b;\r
479         c = other.c;\r
480         d = other.d;\r
481         e = other.e;\r
482         f = other.f;\r
483         }\r
484 \r
485 \r
486 \r
487     /**\r
488      *\r
489      */\r
490     virtual ~SVGMatrix() {}\r
491 \r
492 protected:\r
493 \r
494 friend class SVGTransform;\r
495 \r
496     /*\r
497      * Set to the identify matrix\r
498      */\r
499    void identity()\r
500        {\r
501        a = 1.0;\r
502        b = 0.0;\r
503        c = 0.0;\r
504        d = 1.0;\r
505        e = 0.0;\r
506        f = 0.0;\r
507        }\r
508 \r
509     double a, b, c, d, e, f;\r
510 \r
511 };\r
512 \r
513 \r
514 /*#########################################################################\r
515 ## SVGTransform\r
516 #########################################################################*/\r
517 \r
518 /**\r
519  *\r
520  */\r
521 class SVGTransform\r
522 {\r
523 public:\r
524 \r
525     /**\r
526      * Transform Types\r
527      */\r
528     typedef enum\r
529         {\r
530         SVG_TRANSFORM_UNKNOWN   = 0,\r
531         SVG_TRANSFORM_MATRIX    = 1,\r
532         SVG_TRANSFORM_TRANSLATE = 2,\r
533         SVG_TRANSFORM_SCALE     = 3,\r
534         SVG_TRANSFORM_ROTATE    = 4,\r
535         SVG_TRANSFORM_SKEWX     = 5,\r
536         SVG_TRANSFORM_SKEWY     = 6,\r
537         } TransformType;\r
538 \r
539     /**\r
540      *\r
541      */\r
542     virtual unsigned short getType()\r
543         { return type; }\r
544 \r
545 \r
546     /**\r
547      *\r
548      */\r
549     virtual SVGMatrix getMatrix()\r
550         {\r
551         return matrix;\r
552         }\r
553 \r
554     /**\r
555      *\r
556      */\r
557     virtual double getAngle()\r
558         {\r
559         return angle;\r
560         }\r
561 \r
562 \r
563     /**\r
564      *\r
565      */\r
566     virtual void setMatrix(const SVGMatrix &matrixArg)\r
567         {\r
568         type = SVG_TRANSFORM_MATRIX;\r
569         matrix = matrixArg;\r
570         }\r
571 \r
572     /**\r
573      *\r
574      */\r
575     virtual void setTranslate (double tx, double ty )\r
576         {\r
577         type = SVG_TRANSFORM_TRANSLATE;\r
578         matrix.setA(1.0);\r
579         matrix.setB(0.0);\r
580         matrix.setC(0.0);\r
581         matrix.setD(1.0);\r
582         matrix.setE(tx);\r
583         matrix.setF(ty);\r
584         }\r
585 \r
586     /**\r
587      *\r
588      */\r
589     virtual void setScale (double sx, double sy )\r
590         {\r
591         type = SVG_TRANSFORM_SCALE;\r
592         matrix.setA(sx);\r
593         matrix.setB(0.0);\r
594         matrix.setC(0.0);\r
595         matrix.setD(sy);\r
596         matrix.setE(0.0);\r
597         matrix.setF(0.0);\r
598         }\r
599 \r
600     /**\r
601      *\r
602      */\r
603     virtual void setRotate (double angleArg, double cx, double cy)\r
604         {\r
605         angle = angleArg;\r
606         setTranslate(cx, cy);\r
607         type = SVG_TRANSFORM_ROTATE;\r
608         matrix.rotate(angle);\r
609         }\r
610 \r
611     /**\r
612      *\r
613      */\r
614     virtual void setSkewX (double angleArg)\r
615         {\r
616         angle = angleArg;\r
617         type = SVG_TRANSFORM_SKEWX;\r
618         matrix.identity();\r
619         matrix.skewX(angle);\r
620         }\r
621 \r
622     /**\r
623      *\r
624      */\r
625     virtual void setSkewY (double angleArg)\r
626         {\r
627         angle = angleArg;\r
628         type = SVG_TRANSFORM_SKEWY;\r
629         matrix.identity();\r
630         matrix.skewY(angle);\r
631         }\r
632 \r
633 \r
634     //##################\r
635     //# Non-API methods\r
636     //##################\r
637 \r
638     /**\r
639      *\r
640      */\r
641     SVGTransform()\r
642         {\r
643         type = SVG_TRANSFORM_UNKNOWN;\r
644         angle = 0.0;\r
645         }\r
646 \r
647     /**\r
648      *\r
649      */\r
650     SVGTransform(const SVGTransform &other)\r
651         {\r
652         type   = other.type;\r
653         angle  = other.angle;\r
654         matrix = other.matrix;\r
655         }\r
656 \r
657     /**\r
658      *\r
659      */\r
660     virtual ~SVGTransform()\r
661         {}\r
662 \r
663 protected:\r
664 \r
665     int type;\r
666     double angle;\r
667 \r
668     SVGMatrix matrix;\r
669 };\r
670 \r
671 \r
672 \r
673 \r
674 \r
675 \r
676 /*#########################################################################\r
677 ## SVGTransformList\r
678 #########################################################################*/\r
679 \r
680 /**\r
681  *\r
682  */\r
683 class SVGTransformList\r
684 {\r
685 public:\r
686 \r
687 \r
688     /**\r
689      *\r
690      */\r
691     virtual unsigned long getNumberOfItems()\r
692         { return items.size(); }\r
693 \r
694 \r
695     /**\r
696      *\r
697      */\r
698     virtual void clear( ) throw( DOMException )\r
699         { items.clear(); }\r
700 \r
701     /**\r
702      *\r
703      */\r
704     virtual SVGTransform initialize (const SVGTransform &newItem)\r
705                          throw( DOMException, SVGException )\r
706         {\r
707         items.clear();\r
708         items.push_back(newItem);\r
709         return newItem;\r
710         }\r
711 \r
712     /**\r
713      *\r
714      */\r
715     virtual SVGTransform getItem (unsigned long index )\r
716                     throw( DOMException )\r
717         {\r
718         if (index>=items.size())\r
719             {\r
720             SVGTransform transform;\r
721             return transform;\r
722             }\r
723         return items[index];\r
724         }\r
725 \r
726     /**\r
727      *\r
728      */\r
729     virtual SVGTransform insertItemBefore (const SVGTransform &newItem,\r
730                                            unsigned long index )\r
731                                       throw( DOMException, SVGException )\r
732         {\r
733         if (index > items.size())\r
734             items.push_back(newItem);\r
735         else\r
736             {\r
737             std::vector<SVGTransform>::iterator iter = items.begin() + index;\r
738             items.insert(iter, newItem);\r
739             }\r
740         return newItem;\r
741         }\r
742 \r
743     /**\r
744      *\r
745      */\r
746     virtual SVGTransform replaceItem (const SVGTransform &newItem,\r
747                                        unsigned long index )\r
748                                 throw( DOMException, SVGException )\r
749         {\r
750         if (index>=items.size())\r
751             {\r
752             SVGTransform transform;\r
753             return transform;\r
754             }\r
755         else\r
756             {\r
757             std::vector<SVGTransform>::iterator iter = items.begin() + index;\r
758             *iter = newItem;\r
759             }\r
760         return newItem;\r
761         }\r
762 \r
763     /**\r
764      *\r
765      */\r
766     virtual SVGTransform removeItem (unsigned long index )\r
767                                      throw( DOMException )\r
768         {\r
769         if (index>=items.size())\r
770             {\r
771             SVGTransform transform;\r
772             return transform;\r
773             }\r
774         std::vector<SVGTransform>::iterator iter = items.begin() + index;\r
775         SVGTransform oldItem = *iter;\r
776         items.erase(iter);\r
777         return oldItem;\r
778         }\r
779 \r
780     /**\r
781      *\r
782      */\r
783     virtual SVGTransform appendItem (const SVGTransform &newItem)\r
784                                   throw( DOMException, SVGException )\r
785         {\r
786         items.push_back(newItem);\r
787         return newItem;\r
788         }\r
789 \r
790     /**\r
791      *\r
792      */\r
793     virtual SVGTransform createSVGTransformFromMatrix(const SVGMatrix &matrix)\r
794         {\r
795         SVGTransform transform;\r
796         transform.setMatrix(matrix);\r
797         return transform;\r
798         }\r
799 \r
800     /**\r
801      *\r
802      */\r
803     virtual SVGTransform consolidate()\r
804         {\r
805         SVGMatrix matrix;\r
806         for (unsigned int i=0 ; i<items.size() ; i++)\r
807             matrix = matrix.multiply(items[i].getMatrix());\r
808         SVGTransform transform;\r
809         transform.setMatrix(matrix);\r
810         items.clear();\r
811         items.push_back(transform);\r
812         return transform;\r
813         }\r
814 \r
815 \r
816 \r
817     //##################\r
818     //# Non-API methods\r
819     //##################\r
820 \r
821     /**\r
822      *\r
823      */\r
824     SVGTransformList()\r
825         {}\r
826 \r
827     /**\r
828      *\r
829      */\r
830     SVGTransformList(const SVGTransformList &other)\r
831         {\r
832         items = other.items;\r
833         }\r
834 \r
835     /**\r
836      *\r
837      */\r
838     virtual ~SVGTransformList() {}\r
839 \r
840 protected:\r
841 \r
842     std::vector<SVGTransform> items;\r
843 \r
844 };\r
845 \r
846 \r
847 \r
848 \r
849 \r
850 \r
851 /*#########################################################################\r
852 ## SVGAnimatedTransformList\r
853 #########################################################################*/\r
854 \r
855 /**\r
856  *\r
857  */\r
858 class SVGAnimatedTransformList\r
859 {\r
860 public:\r
861 \r
862     /**\r
863      *\r
864      */\r
865     virtual SVGTransformList getBaseVal()\r
866         { return baseVal; }\r
867 \r
868     /**\r
869      *\r
870      */\r
871     virtual SVGTransformList getAnimVal()\r
872         { return animVal; }\r
873 \r
874 \r
875 \r
876     //##################\r
877     //# Non-API methods\r
878     //##################\r
879 \r
880     /**\r
881      *\r
882      */\r
883     SVGAnimatedTransformList()\r
884         {}\r
885 \r
886     /**\r
887      *\r
888      */\r
889     SVGAnimatedTransformList(const SVGAnimatedTransformList &other)\r
890         {\r
891         baseVal = other.baseVal;\r
892         animVal = other.animVal;\r
893         }\r
894 \r
895     /**\r
896      *\r
897      */\r
898     virtual ~SVGAnimatedTransformList() {}\r
899 \r
900 protected:\r
901 \r
902     SVGTransformList baseVal;\r
903     SVGTransformList animVal;\r
904 \r
905 };\r
906 \r
907 \r
908 \r
909 \r
910 /*#########################################################################\r
911 ## SVGAnimatedBoolean\r
912 #########################################################################*/\r
913 \r
914 /**\r
915  *\r
916  */\r
917 class SVGAnimatedBoolean\r
918 {\r
919 public:\r
920 \r
921     /**\r
922      *\r
923      */\r
924     virtual bool getBaseVal()\r
925         {\r
926         return baseVal;\r
927         }\r
928 \r
929     /**\r
930      *\r
931      */\r
932     virtual void setBaseVal(bool val) throw (DOMException)\r
933         {\r
934         baseVal = val;\r
935         }\r
936 \r
937     /**\r
938      *\r
939      */\r
940     virtual bool getAnimVal()\r
941         {\r
942         return animVal;\r
943         }\r
944 \r
945 \r
946     //##################\r
947     //# Non-API methods\r
948     //##################\r
949 \r
950     /**\r
951      *\r
952      */\r
953     SVGAnimatedBoolean()\r
954         {\r
955         baseVal = animVal = false;\r
956         }\r
957 \r
958     /**\r
959      *\r
960      */\r
961     SVGAnimatedBoolean(const SVGAnimatedBoolean &other)\r
962         {\r
963         baseVal = other.baseVal;\r
964         animVal = other.animVal;\r
965         }\r
966 \r
967     /**\r
968      *\r
969      */\r
970     virtual ~SVGAnimatedBoolean() {}\r
971 \r
972 protected:\r
973 \r
974     bool baseVal, animVal;\r
975 \r
976 };\r
977 \r
978 \r
979 \r
980 \r
981 /*#########################################################################\r
982 ## SVGAnimatedString\r
983 #########################################################################*/\r
984 \r
985 /**\r
986  *\r
987  */\r
988 class SVGAnimatedString\r
989 {\r
990 public:\r
991 \r
992     /**\r
993      *\r
994      */\r
995     virtual DOMString getBaseVal()\r
996         {\r
997         return baseVal;\r
998         }\r
999 \r
1000     /**\r
1001      *\r
1002      */\r
1003     virtual void setBaseVal(const DOMString &val)\r
1004                             throw (DOMException)\r
1005         {\r
1006         baseVal = val;\r
1007         }\r
1008 \r
1009     /**\r
1010      *\r
1011      */\r
1012     virtual DOMString getAnimVal()\r
1013         {\r
1014         return animVal;\r
1015         }\r
1016 \r
1017 \r
1018     //##################\r
1019     //# Non-API methods\r
1020     //##################\r
1021 \r
1022 \r
1023     /**\r
1024      *\r
1025      */\r
1026     SVGAnimatedString()\r
1027         {\r
1028         baseVal = "";\r
1029         animVal = "";\r
1030         }\r
1031 \r
1032     /**\r
1033      *\r
1034      */\r
1035     SVGAnimatedString(const SVGAnimatedString &other)\r
1036         {\r
1037         baseVal = other.baseVal;\r
1038         animVal = other.animVal;\r
1039         }\r
1040 \r
1041     /**\r
1042      *\r
1043      */\r
1044     virtual ~SVGAnimatedString() {}\r
1045 \r
1046 protected:\r
1047 \r
1048     DOMString baseVal, animVal;\r
1049 \r
1050 };\r
1051 \r
1052 \r
1053 \r
1054 \r
1055 \r
1056 /*#########################################################################\r
1057 ## SVGStringList\r
1058 #########################################################################*/\r
1059 \r
1060 /**\r
1061  *\r
1062  */\r
1063 class SVGStringList\r
1064 {\r
1065 public:\r
1066 \r
1067 \r
1068     /**\r
1069      *\r
1070      */\r
1071     virtual unsigned long getNumberOfItems()\r
1072         {\r
1073         return items.size();\r
1074         }\r
1075 \r
1076     /**\r
1077      *\r
1078      */\r
1079     virtual void clear () throw( DOMException )\r
1080        {\r
1081        items.clear();\r
1082        }\r
1083 \r
1084     /**\r
1085      *\r
1086      */\r
1087     virtual DOMString initialize ( const DOMString& newItem )\r
1088                     throw( DOMException, SVGException )\r
1089         {\r
1090         items.clear();\r
1091         items.push_back(newItem);\r
1092         return newItem;\r
1093         }\r
1094 \r
1095     /**\r
1096      *\r
1097      */\r
1098     virtual DOMString getItem ( unsigned long index )\r
1099                     throw( DOMException )\r
1100         {\r
1101         if (index >= items.size())\r
1102             return "";\r
1103         return items[index];\r
1104         }\r
1105 \r
1106     /**\r
1107      *\r
1108      */\r
1109     virtual DOMString insertItemBefore ( const DOMString& newItem,\r
1110                                  unsigned long index )\r
1111                                throw( DOMException, SVGException )\r
1112         {\r
1113         if (index>=items.size())\r
1114             {\r
1115             items.push_back(newItem);\r
1116             }\r
1117         else\r
1118             {\r
1119             std::vector<DOMString>::iterator iter = items.begin() + index;\r
1120             items.insert(iter, newItem);\r
1121             }\r
1122         return newItem;\r
1123         }\r
1124 \r
1125     /**\r
1126      *\r
1127      */\r
1128     virtual DOMString replaceItem ( const DOMString& newItem,\r
1129                                     unsigned long index )\r
1130                                 throw( DOMException, SVGException )\r
1131         {\r
1132         if (index>=items.size())\r
1133             return "";\r
1134         std::vector<DOMString>::iterator iter = items.begin() + index;\r
1135         *iter = newItem;\r
1136         return newItem;\r
1137         }\r
1138 \r
1139     /**\r
1140      *\r
1141      */\r
1142     virtual DOMString removeItem ( unsigned long index )\r
1143                     throw( DOMException )\r
1144         {\r
1145         if (index>=items.size())\r
1146             return "";\r
1147         std::vector<DOMString>::iterator iter = items.begin() + index;\r
1148         DOMString oldstr = *iter;\r
1149         items.erase(iter);\r
1150         return oldstr;\r
1151         }\r
1152 \r
1153     /**\r
1154      *\r
1155      */\r
1156     virtual DOMString appendItem ( const DOMString& newItem )\r
1157                     throw( DOMException, SVGException )\r
1158         {\r
1159         items.push_back(newItem);\r
1160         return newItem;\r
1161         }\r
1162 \r
1163 \r
1164 \r
1165     //##################\r
1166     //# Non-API methods\r
1167     //##################\r
1168 \r
1169     /**\r
1170      *\r
1171      */\r
1172     SVGStringList() {}\r
1173 \r
1174     /**\r
1175      *\r
1176      */\r
1177    SVGStringList(const SVGStringList &other)\r
1178        {\r
1179        items = other.items;\r
1180        }\r
1181 \r
1182     /**\r
1183      *\r
1184      */\r
1185     virtual ~SVGStringList() {}\r
1186 \r
1187 protected:\r
1188 \r
1189     std::vector<DOMString>items;\r
1190 \r
1191 };\r
1192 \r
1193 \r
1194 \r
1195 \r
1196 \r
1197 /*#########################################################################\r
1198 ## SVGAnimatedEnumeration\r
1199 #########################################################################*/\r
1200 \r
1201 /**\r
1202  *\r
1203  */\r
1204 class SVGAnimatedEnumeration\r
1205 {\r
1206 public:\r
1207 \r
1208     /**\r
1209      *\r
1210      */\r
1211     virtual unsigned short getBaseVal()\r
1212         {\r
1213         return baseVal;\r
1214         }\r
1215 \r
1216     /**\r
1217      *\r
1218      */\r
1219     virtual void setBaseVal(unsigned short val)\r
1220                                      throw (DOMException)\r
1221         {\r
1222         baseVal = val;\r
1223         }\r
1224 \r
1225     /**\r
1226      *\r
1227      */\r
1228     virtual unsigned short getAnimVal()\r
1229         {\r
1230         return animVal;\r
1231         }\r
1232 \r
1233 \r
1234 \r
1235     //##################\r
1236     //# Non-API methods\r
1237     //##################\r
1238 \r
1239 \r
1240     /**\r
1241      *\r
1242      */\r
1243     SVGAnimatedEnumeration()\r
1244         {\r
1245         baseVal = animVal = 0;\r
1246         }\r
1247 \r
1248     /**\r
1249      *\r
1250      */\r
1251     SVGAnimatedEnumeration(const SVGAnimatedEnumeration &other)\r
1252         {\r
1253         baseVal = other.baseVal;\r
1254         animVal = other.animVal;\r
1255         }\r
1256 \r
1257     /**\r
1258      *\r
1259      */\r
1260     virtual ~SVGAnimatedEnumeration() {}\r
1261 \r
1262 protected:\r
1263 \r
1264     int baseVal, animVal;\r
1265 \r
1266 };\r
1267 \r
1268 \r
1269 \r
1270 \r
1271 \r
1272 /*#########################################################################\r
1273 ## SVGAnimatedInteger\r
1274 #########################################################################*/\r
1275 \r
1276 /**\r
1277  *\r
1278  */\r
1279 class SVGAnimatedInteger\r
1280 {\r
1281 public:\r
1282 \r
1283 \r
1284     /**\r
1285      *\r
1286      */\r
1287     virtual long getBaseVal()\r
1288         {\r
1289         return baseVal;\r
1290         }\r
1291 \r
1292     /**\r
1293      *\r
1294      */\r
1295     virtual void setBaseVal(long val) throw (DOMException)\r
1296         {\r
1297         baseVal = val;\r
1298         }\r
1299 \r
1300     /**\r
1301      *\r
1302      */\r
1303     virtual long getAnimVal()\r
1304         {\r
1305         return animVal;\r
1306         }\r
1307 \r
1308 \r
1309 \r
1310     //##################\r
1311     //# Non-API methods\r
1312     //##################\r
1313 \r
1314 \r
1315     /**\r
1316      *\r
1317      */\r
1318     SVGAnimatedInteger()\r
1319         { baseVal = animVal = 0L;}\r
1320 \r
1321 \r
1322     /**\r
1323      *\r
1324      */\r
1325     SVGAnimatedInteger(long value)\r
1326         {\r
1327         baseVal = value;\r
1328         animVal = 0L;\r
1329         }\r
1330 \r
1331     /**\r
1332      *\r
1333      */\r
1334     SVGAnimatedInteger(long baseValArg, long animValArg)\r
1335         {\r
1336         baseVal = baseValArg;\r
1337         animVal = animValArg;\r
1338         }\r
1339 \r
1340 \r
1341     /**\r
1342      *\r
1343      */\r
1344     SVGAnimatedInteger(const SVGAnimatedInteger &other)\r
1345         {\r
1346         baseVal = other.baseVal;\r
1347         animVal = other.animVal;\r
1348         }\r
1349 \r
1350     /**\r
1351      *\r
1352      */\r
1353     virtual ~SVGAnimatedInteger() {}\r
1354 \r
1355 protected:\r
1356 \r
1357     long baseVal, animVal;\r
1358 \r
1359 };\r
1360 \r
1361 \r
1362 \r
1363 \r
1364 \r
1365 /*#########################################################################\r
1366 ## SVGNumber\r
1367 #########################################################################*/\r
1368 \r
1369 /**\r
1370  *\r
1371  */\r
1372 class SVGNumber\r
1373 {\r
1374 public:\r
1375 \r
1376 \r
1377     /**\r
1378      *\r
1379      */\r
1380     virtual double getValue()\r
1381         {\r
1382         return value;\r
1383         }\r
1384 \r
1385     /**\r
1386      *\r
1387      */\r
1388     virtual void setValue(double val) throw (DOMException)\r
1389         {\r
1390         value = val;\r
1391         }\r
1392 \r
1393 \r
1394     //##################\r
1395     //# Non-API methods\r
1396     //##################\r
1397 \r
1398     /**\r
1399      *\r
1400      */\r
1401     SVGNumber()\r
1402         {\r
1403         value = 0.0;\r
1404         }\r
1405 \r
1406     /**\r
1407      *\r
1408      */\r
1409     SVGNumber(const SVGNumber &other)\r
1410         {\r
1411         value = other.value;\r
1412         }\r
1413 \r
1414     /**\r
1415      *\r
1416      */\r
1417     virtual ~SVGNumber() {}\r
1418 \r
1419 protected:\r
1420 \r
1421     double value;\r
1422 \r
1423 };\r
1424 \r
1425 \r
1426 \r
1427 \r
1428 \r
1429 /*#########################################################################\r
1430 ## SVGAnimatedNumber\r
1431 #########################################################################*/\r
1432 \r
1433 /**\r
1434  *\r
1435  */\r
1436 class SVGAnimatedNumber\r
1437 {\r
1438 public:\r
1439 \r
1440 \r
1441 \r
1442     /**\r
1443      *\r
1444      */\r
1445     virtual double getBaseVal()\r
1446         {\r
1447         return baseVal;\r
1448         }\r
1449 \r
1450     /**\r
1451      *\r
1452      */\r
1453     virtual void setBaseVal(double val) throw (DOMException)\r
1454         {\r
1455         baseVal = val;\r
1456         }\r
1457 \r
1458     /**\r
1459      *\r
1460      */\r
1461     virtual double getAnimVal()\r
1462         {\r
1463         return animVal;\r
1464         }\r
1465 \r
1466 \r
1467 \r
1468     //##################\r
1469     //# Non-API methods\r
1470     //##################\r
1471 \r
1472     /**\r
1473      *\r
1474      */\r
1475     SVGAnimatedNumber()\r
1476         {\r
1477         baseVal = animVal = 0.0;\r
1478         }\r
1479 \r
1480 \r
1481     /**\r
1482      *\r
1483      */\r
1484     SVGAnimatedNumber(double val)\r
1485         {\r
1486         baseVal = val;\r
1487         animVal = 0.0;\r
1488         }\r
1489 \r
1490 \r
1491     /**\r
1492      *\r
1493      */\r
1494     SVGAnimatedNumber(double baseValArg, double animValArg)\r
1495         {\r
1496         baseVal = baseValArg;\r
1497         animVal = animValArg;\r
1498         }\r
1499 \r
1500     /**\r
1501      *\r
1502      */\r
1503     SVGAnimatedNumber(const SVGAnimatedNumber &other)\r
1504         {\r
1505         baseVal = other.baseVal;\r
1506         animVal = other.animVal;\r
1507         }\r
1508 \r
1509     /**\r
1510      *\r
1511      */\r
1512     virtual ~SVGAnimatedNumber() {}\r
1513 \r
1514 protected:\r
1515 \r
1516     double baseVal, animVal;\r
1517 \r
1518 };\r
1519 \r
1520 \r
1521 \r
1522 \r
1523 \r
1524 /*#########################################################################\r
1525 ## SVGNumberList\r
1526 #########################################################################*/\r
1527 \r
1528 /**\r
1529  *\r
1530  */\r
1531 class SVGNumberList\r
1532 {\r
1533 public:\r
1534 \r
1535     /**\r
1536      *\r
1537      */\r
1538     virtual unsigned long getNumberOfItems()\r
1539         {\r
1540         return items.size();\r
1541         }\r
1542 \r
1543 \r
1544     /**\r
1545      *\r
1546      */\r
1547     virtual void clear() throw( DOMException )\r
1548         {\r
1549         items.clear();\r
1550         }\r
1551 \r
1552     /**\r
1553      *\r
1554      */\r
1555     virtual SVGNumber initialize (const SVGNumber &newItem)\r
1556                     throw( DOMException, SVGException )\r
1557         {\r
1558         items.clear();\r
1559         items.push_back(newItem);\r
1560         return newItem;\r
1561         }\r
1562 \r
1563     /**\r
1564      *\r
1565      */\r
1566     virtual SVGNumber getItem ( unsigned long index )\r
1567                                   throw( DOMException )\r
1568         {\r
1569         if (index>=items.size())\r
1570             {\r
1571             SVGNumber num;\r
1572             return num;\r
1573             }\r
1574         return items[index];\r
1575         }\r
1576 \r
1577     /**\r
1578      *\r
1579      */\r
1580     virtual SVGNumber insertItemBefore ( const SVGNumber &newItem,\r
1581                                          unsigned long index )\r
1582                                          throw( DOMException, SVGException )\r
1583         {\r
1584         if (index>=items.size())\r
1585             {\r
1586             items.push_back(newItem);\r
1587             }\r
1588         else\r
1589             {\r
1590             std::vector<SVGNumber>::iterator iter = items.begin() + index;\r
1591             items.insert(iter, newItem);\r
1592             }\r
1593         return newItem;\r
1594         }\r
1595 \r
1596     /**\r
1597      *\r
1598      */\r
1599     virtual SVGNumber replaceItem ( const SVGNumber &newItem,\r
1600                                     unsigned long index )\r
1601                                     throw( DOMException, SVGException )\r
1602         {\r
1603         if (index>=items.size())\r
1604             {\r
1605             SVGNumber num;\r
1606             return num;\r
1607             }\r
1608         std::vector<SVGNumber>::iterator iter = items.begin() + index;\r
1609         *iter = newItem;\r
1610         return newItem;\r
1611         }\r
1612 \r
1613     /**\r
1614      *\r
1615      */\r
1616     virtual SVGNumber removeItem ( unsigned long index )\r
1617                                   throw( DOMException )\r
1618         {\r
1619         if (index>=items.size())\r
1620             {\r
1621             SVGNumber num;\r
1622             return num;\r
1623             }\r
1624         std::vector<SVGNumber>::iterator iter = items.begin() + index;\r
1625         SVGNumber oldval = *iter;\r
1626         items.erase(iter);\r
1627         return oldval;\r
1628         }\r
1629 \r
1630     /**\r
1631      *\r
1632      */\r
1633     virtual SVGNumber appendItem ( const SVGNumber &newItem )\r
1634                                    throw( DOMException, SVGException )\r
1635         {\r
1636         items.push_back(newItem);\r
1637         return newItem;\r
1638         }\r
1639 \r
1640 \r
1641     //##################\r
1642     //# Non-API methods\r
1643     //##################\r
1644 \r
1645     /**\r
1646      *\r
1647      */\r
1648     SVGNumberList() {}\r
1649 \r
1650     /**\r
1651      *\r
1652      */\r
1653     SVGNumberList(const SVGNumberList &other)\r
1654         {\r
1655         items = other.items;\r
1656         }\r
1657 \r
1658     /**\r
1659      *\r
1660      */\r
1661     virtual ~SVGNumberList() {}\r
1662 \r
1663 protected:\r
1664 \r
1665     std::vector<SVGNumber>items;\r
1666 \r
1667 };\r
1668 \r
1669 \r
1670 \r
1671 \r
1672 \r
1673 /*#########################################################################\r
1674 ## SVGAnimatedNumberList\r
1675 #########################################################################*/\r
1676 \r
1677 /**\r
1678  *\r
1679  */\r
1680 class SVGAnimatedNumberList\r
1681 {\r
1682 public:\r
1683 \r
1684 \r
1685     /**\r
1686      *\r
1687      */\r
1688     virtual SVGNumberList &getBaseVal()\r
1689         {\r
1690         return baseVal;\r
1691         }\r
1692 \r
1693     /**\r
1694      *\r
1695      */\r
1696     virtual SVGNumberList &getAnimVal()\r
1697         {\r
1698         return animVal;\r
1699         }\r
1700 \r
1701 \r
1702 \r
1703     //##################\r
1704     //# Non-API methods\r
1705     //##################\r
1706 \r
1707     /**\r
1708      *\r
1709      */\r
1710     SVGAnimatedNumberList() {}\r
1711 \r
1712     /**\r
1713      *\r
1714      */\r
1715     SVGAnimatedNumberList(const SVGAnimatedNumberList &other)\r
1716         {\r
1717         baseVal = other.baseVal;\r
1718         animVal = other.animVal;\r
1719         }\r
1720 \r
1721     /**\r
1722      *\r
1723      */\r
1724     virtual ~SVGAnimatedNumberList() {}\r
1725 \r
1726 protected:\r
1727 \r
1728     SVGNumberList baseVal;\r
1729     SVGNumberList animVal;\r
1730 \r
1731 };\r
1732 \r
1733 \r
1734 \r
1735 \r
1736 \r
1737 \r
1738 /*#########################################################################\r
1739 ## SVGLength\r
1740 #########################################################################*/\r
1741 \r
1742 /**\r
1743  *\r
1744  */\r
1745 class SVGLength\r
1746 {\r
1747 public:\r
1748 \r
1749     /**\r
1750      * Length Unit Types\r
1751      */\r
1752     typedef enum\r
1753         {\r
1754         SVG_LENGTHTYPE_UNKNOWN    = 0,\r
1755         SVG_LENGTHTYPE_NUMBER     = 1,\r
1756         SVG_LENGTHTYPE_PERCENTAGE = 2,\r
1757         SVG_LENGTHTYPE_EMS        = 3,\r
1758         SVG_LENGTHTYPE_EXS        = 4,\r
1759         SVG_LENGTHTYPE_PX         = 5,\r
1760         SVG_LENGTHTYPE_CM         = 6,\r
1761         SVG_LENGTHTYPE_MM         = 7,\r
1762         SVG_LENGTHTYPE_IN         = 8,\r
1763         SVG_LENGTHTYPE_PT         = 9,\r
1764         SVG_LENGTHTYPE_PC         = 10\r
1765         } LengthUnitType;\r
1766 \r
1767 \r
1768     /**\r
1769      *\r
1770      */\r
1771     virtual unsigned short getUnitType( )\r
1772         {\r
1773         return unitType;\r
1774         }\r
1775 \r
1776     /**\r
1777      *\r
1778      */\r
1779     virtual double getValue( )\r
1780         {\r
1781         return value;\r
1782         }\r
1783 \r
1784     /**\r
1785      *\r
1786      */\r
1787     virtual void setValue( double val )  throw (DOMException)\r
1788         {\r
1789         value = val;\r
1790         }\r
1791 \r
1792     /**\r
1793      *\r
1794      */\r
1795     virtual double getValueInSpecifiedUnits( )\r
1796         {\r
1797         double result = 0.0;\r
1798         //fill this in\r
1799         return result;\r
1800         }\r
1801 \r
1802     /**\r
1803      *\r
1804      */\r
1805     virtual void setValueInSpecifiedUnits( double /*val*/ )\r
1806                                            throw (DOMException)\r
1807         {\r
1808         //fill this in\r
1809         }\r
1810 \r
1811     /**\r
1812      *\r
1813      */\r
1814     virtual DOMString getValueAsString( )\r
1815         {\r
1816         DOMString ret;\r
1817         char buf[32];\r
1818         snprintf(buf, 31, "%f", value);\r
1819         ret.append(buf);\r
1820         return ret;\r
1821         }\r
1822 \r
1823     /**\r
1824      *\r
1825      */\r
1826     virtual void setValueAsString( const DOMString& /*val*/ )\r
1827                                    throw (DOMException)\r
1828         {\r
1829         }\r
1830 \r
1831 \r
1832     /**\r
1833      *\r
1834      */\r
1835     virtual void newValueSpecifiedUnits ( unsigned short /*unitType*/, double /*val*/ )\r
1836         {\r
1837         }\r
1838 \r
1839     /**\r
1840      *\r
1841      */\r
1842     virtual void convertToSpecifiedUnits ( unsigned short /*unitType*/ )\r
1843         {\r
1844         }\r
1845 \r
1846 \r
1847 \r
1848     //##################\r
1849     //# Non-API methods\r
1850     //##################\r
1851 \r
1852     /**\r
1853      *\r
1854      */\r
1855     SVGLength()\r
1856         {\r
1857         unitType = SVG_LENGTHTYPE_UNKNOWN;\r
1858         value    = 0.0;\r
1859         }\r
1860 \r
1861 \r
1862     /**\r
1863      *\r
1864      */\r
1865     SVGLength(const SVGLength &other)\r
1866         {\r
1867         unitType  = other.unitType;\r
1868         value     = other.value;\r
1869         }\r
1870 \r
1871     /**\r
1872      *\r
1873      */\r
1874     virtual ~SVGLength() {}\r
1875 \r
1876 protected:\r
1877 \r
1878     int unitType;\r
1879 \r
1880     double value;\r
1881 \r
1882 };\r
1883 \r
1884 \r
1885 \r
1886 \r
1887 \r
1888 \r
1889 /*#########################################################################\r
1890 ## SVGAnimatedLength\r
1891 #########################################################################*/\r
1892 \r
1893 /**\r
1894  *\r
1895  */\r
1896 class SVGAnimatedLength\r
1897 {\r
1898 public:\r
1899 \r
1900     /**\r
1901      *\r
1902      */\r
1903     virtual SVGLength &getBaseVal()\r
1904         {\r
1905         return baseVal;\r
1906         }\r
1907 \r
1908     /**\r
1909      *\r
1910      */\r
1911     virtual SVGLength &getAnimVal()\r
1912         {\r
1913         return animVal;\r
1914         }\r
1915 \r
1916 \r
1917 \r
1918     //##################\r
1919     //# Non-API methods\r
1920     //##################\r
1921 \r
1922     /**\r
1923      *\r
1924      */\r
1925     SVGAnimatedLength() {}\r
1926 \r
1927     /**\r
1928      *\r
1929      */\r
1930     SVGAnimatedLength(const SVGAnimatedLength &other)\r
1931         {\r
1932         baseVal = other.baseVal;\r
1933         animVal = other.animVal;\r
1934         }\r
1935 \r
1936     /**\r
1937      *\r
1938      */\r
1939     virtual ~SVGAnimatedLength() {}\r
1940 \r
1941 protected:\r
1942 \r
1943     SVGLength baseVal, animVal;\r
1944 \r
1945 };\r
1946 \r
1947 \r
1948 \r
1949 \r
1950 \r
1951 \r
1952 /*#########################################################################\r
1953 ## SVGLengthList\r
1954 #########################################################################*/\r
1955 \r
1956 /**\r
1957  *\r
1958  */\r
1959 class SVGLengthList\r
1960 {\r
1961 public:\r
1962 \r
1963     /**\r
1964      *\r
1965      */\r
1966     virtual unsigned long getNumberOfItems()\r
1967         {\r
1968         return items.size();\r
1969         }\r
1970 \r
1971 \r
1972     /**\r
1973      *\r
1974      */\r
1975     virtual void clear (  ) throw( DOMException )\r
1976         {\r
1977         items.clear();\r
1978         }\r
1979 \r
1980     /**\r
1981      *\r
1982      */\r
1983     virtual SVGLength initialize (const SVGLength &newItem )\r
1984                     throw( DOMException, SVGException )\r
1985         {\r
1986         items.clear();\r
1987         items.push_back(newItem);\r
1988         return newItem;\r
1989         }\r
1990 \r
1991     /**\r
1992      *\r
1993      */\r
1994     virtual SVGLength getItem (unsigned long index)\r
1995                     throw( DOMException )\r
1996         {\r
1997         if (index>=items.size())\r
1998             {\r
1999             SVGLength ret;\r
2000             return ret;\r
2001             }\r
2002         return items[index];\r
2003         }\r
2004 \r
2005     /**\r
2006      *\r
2007      */\r
2008     virtual SVGLength insertItemBefore (const SVGLength &newItem,\r
2009                                          unsigned long index )\r
2010                                    throw( DOMException, SVGException )\r
2011         {\r
2012         if (index>=items.size())\r
2013             {\r
2014             items.push_back(newItem);\r
2015             }\r
2016         else\r
2017             {\r
2018             std::vector<SVGLength>::iterator iter = items.begin() + index;\r
2019             items.insert(iter, newItem);\r
2020             }\r
2021         return newItem;\r
2022         }\r
2023 \r
2024     /**\r
2025      *\r
2026      */\r
2027     virtual SVGLength replaceItem (const SVGLength &newItem,\r
2028                                     unsigned long index )\r
2029                                throw( DOMException, SVGException )\r
2030         {\r
2031         if (index>=items.size())\r
2032             {\r
2033             SVGLength ret;\r
2034             return ret;\r
2035             }\r
2036         std::vector<SVGLength>::iterator iter = items.begin() + index;\r
2037         *iter = newItem;\r
2038         return newItem;\r
2039         }\r
2040 \r
2041     /**\r
2042      *\r
2043      */\r
2044     virtual SVGLength removeItem (unsigned long index )\r
2045                     throw( DOMException )\r
2046         {\r
2047         if (index>=items.size())\r
2048             {\r
2049             SVGLength ret;\r
2050             return ret;\r
2051             }\r
2052         std::vector<SVGLength>::iterator iter = items.begin() + index;\r
2053         SVGLength oldval = *iter;\r
2054         items.erase(iter);\r
2055         return oldval;\r
2056         }\r
2057 \r
2058     /**\r
2059      *\r
2060      */\r
2061     virtual SVGLength appendItem (const SVGLength &newItem )\r
2062                     throw( DOMException, SVGException )\r
2063         {\r
2064         items.push_back(newItem);\r
2065         return newItem;\r
2066         }\r
2067 \r
2068 \r
2069     //##################\r
2070     //# Non-API methods\r
2071     //##################\r
2072 \r
2073     /**\r
2074      *\r
2075      */\r
2076     SVGLengthList() {}\r
2077 \r
2078     /**\r
2079      *\r
2080      */\r
2081     SVGLengthList(const SVGLengthList &other)\r
2082         {\r
2083         items = other.items;\r
2084         }\r
2085 \r
2086     /**\r
2087      *\r
2088      */\r
2089     virtual ~SVGLengthList() {}\r
2090 \r
2091 protected:\r
2092 \r
2093     std::vector<SVGLength>items;\r
2094 \r
2095 };\r
2096 \r
2097 \r
2098 \r
2099 \r
2100 \r
2101 \r
2102 /*#########################################################################\r
2103 ## SVGAnimatedLengthList\r
2104 #########################################################################*/\r
2105 \r
2106 /**\r
2107  *\r
2108  */\r
2109 class SVGAnimatedLengthList\r
2110 {\r
2111 public:\r
2112 \r
2113     /**\r
2114      *\r
2115      */\r
2116     virtual SVGLengthList &getBaseVal()\r
2117         {\r
2118         return baseVal;\r
2119         }\r
2120 \r
2121     /**\r
2122      *\r
2123      */\r
2124     virtual SVGLengthList &getAnimVal()\r
2125         {\r
2126         return animVal;\r
2127         }\r
2128 \r
2129 \r
2130 \r
2131     //##################\r
2132     //# Non-API methods\r
2133     //##################\r
2134 \r
2135     /**\r
2136      *\r
2137      */\r
2138     SVGAnimatedLengthList() {}\r
2139 \r
2140     /**\r
2141      *\r
2142      */\r
2143    SVGAnimatedLengthList(const SVGAnimatedLengthList &other)\r
2144         {\r
2145         baseVal = other.baseVal;\r
2146         animVal = other.animVal;\r
2147         }\r
2148 \r
2149     /**\r
2150      *\r
2151      */\r
2152     virtual ~SVGAnimatedLengthList() {}\r
2153 \r
2154 protected:\r
2155 \r
2156     SVGLengthList baseVal, animVal;\r
2157 \r
2158 };\r
2159 \r
2160 \r
2161 \r
2162 \r
2163 \r
2164 \r
2165 /*#########################################################################\r
2166 ## SVGAngle\r
2167 #########################################################################*/\r
2168 \r
2169 /**\r
2170  *\r
2171  */\r
2172 class SVGAngle\r
2173 {\r
2174 public:\r
2175 \r
2176     /**\r
2177      *  Angle Unit Types\r
2178      */\r
2179     typedef enum\r
2180         {\r
2181         SVG_ANGLETYPE_UNKNOWN     = 0,\r
2182         SVG_ANGLETYPE_UNSPECIFIED = 1,\r
2183         SVG_ANGLETYPE_DEG         = 2,\r
2184         SVG_ANGLETYPE_RAD         = 3,\r
2185         SVG_ANGLETYPE_GRAD        = 4\r
2186         } AngleUnitType;\r
2187 \r
2188 \r
2189 \r
2190     /**\r
2191      *\r
2192      */\r
2193     virtual unsigned short getUnitType()\r
2194         {\r
2195         return unitType;\r
2196         }\r
2197 \r
2198     /**\r
2199      *\r
2200      */\r
2201     virtual double getValue()\r
2202         {\r
2203         return value;\r
2204         }\r
2205 \r
2206     /**\r
2207      *\r
2208      */\r
2209     virtual void setValue(double val) throw (DOMException)\r
2210         {\r
2211         value = val;\r
2212         }\r
2213 \r
2214     /**\r
2215      *\r
2216      */\r
2217     virtual double getValueInSpecifiedUnits()\r
2218         {\r
2219         double result = 0.0;\r
2220         //convert here\r
2221         return result;\r
2222         }\r
2223 \r
2224     /**\r
2225      *\r
2226      */\r
2227     virtual void setValueInSpecifiedUnits(double /*val*/)\r
2228                                      throw (DOMException)\r
2229         {\r
2230         //do conversion\r
2231         }\r
2232 \r
2233     /**\r
2234      *\r
2235      */\r
2236     virtual DOMString getValueAsString()\r
2237         {\r
2238         DOMString result;\r
2239         char buf[32];\r
2240         snprintf(buf, 31, "%f", value);\r
2241         result.append(buf);\r
2242         return result;\r
2243         }\r
2244 \r
2245     /**\r
2246      *\r
2247      */\r
2248     virtual void setValueAsString(const DOMString &/*val*/)\r
2249                                   throw (DOMException)\r
2250         {\r
2251         //convert here\r
2252         }\r
2253 \r
2254 \r
2255     /**\r
2256      *\r
2257      */\r
2258     virtual void newValueSpecifiedUnits (unsigned short /*unitType*/,\r
2259                                          double /*valueInSpecifiedUnits*/ )\r
2260         {\r
2261         //convert here\r
2262         }\r
2263 \r
2264     /**\r
2265      *\r
2266      */\r
2267     virtual void convertToSpecifiedUnits (unsigned short /*unitType*/ )\r
2268         {\r
2269         //convert here\r
2270         }\r
2271 \r
2272 \r
2273 \r
2274     //##################\r
2275     //# Non-API methods\r
2276     //##################\r
2277 \r
2278     /**\r
2279      *\r
2280      */\r
2281     SVGAngle()\r
2282         {\r
2283         unitType = SVG_ANGLETYPE_UNKNOWN;\r
2284         value    = 0.0;\r
2285         }\r
2286 \r
2287     /**\r
2288      *\r
2289      */\r
2290     SVGAngle(const SVGAngle &other)\r
2291         {\r
2292         unitType = other.unitType;\r
2293         value    = other.value;\r
2294         }\r
2295 \r
2296     /**\r
2297      *\r
2298      */\r
2299     virtual ~SVGAngle() {}\r
2300 \r
2301 protected:\r
2302 \r
2303     int unitType;\r
2304 \r
2305     double value;\r
2306 \r
2307 };\r
2308 \r
2309 \r
2310 \r
2311 \r
2312 \r
2313 \r
2314 /*#########################################################################\r
2315 ## SVGAnimatedAngle\r
2316 #########################################################################*/\r
2317 \r
2318 /**\r
2319  *\r
2320  */\r
2321 class SVGAnimatedAngle\r
2322 {\r
2323 public:\r
2324 \r
2325     /**\r
2326      *\r
2327      */\r
2328     virtual SVGAngle getBaseVal()\r
2329         {\r
2330         return baseVal;\r
2331         }\r
2332 \r
2333     /**\r
2334      *\r
2335      */\r
2336     virtual SVGAngle getAnimVal()\r
2337         {\r
2338         return animVal;\r
2339         }\r
2340 \r
2341     //##################\r
2342     //# Non-API methods\r
2343     //##################\r
2344 \r
2345     /**\r
2346      *\r
2347      */\r
2348     SVGAnimatedAngle() {}\r
2349 \r
2350     /**\r
2351      *\r
2352      */\r
2353     SVGAnimatedAngle(const SVGAngle &angle)\r
2354         { baseVal = angle; }\r
2355 \r
2356     /**\r
2357      *\r
2358      */\r
2359     SVGAnimatedAngle(const SVGAnimatedAngle &other)\r
2360         {\r
2361         baseVal = other.baseVal;\r
2362         animVal = other.animVal;\r
2363         }\r
2364 \r
2365     /**\r
2366      *\r
2367      */\r
2368     virtual ~SVGAnimatedAngle() {}\r
2369 \r
2370 protected:\r
2371 \r
2372     SVGAngle baseVal, animVal;\r
2373 \r
2374 };\r
2375 \r
2376 \r
2377 \r
2378 \r
2379 \r
2380 \r
2381 /*#########################################################################\r
2382 ## SVGICCColor\r
2383 #########################################################################*/\r
2384 \r
2385 /**\r
2386  *\r
2387  */\r
2388 class SVGICCColor\r
2389 {\r
2390 public:\r
2391 \r
2392     /**\r
2393      *\r
2394      */\r
2395     virtual DOMString getColorProfile()\r
2396         {\r
2397         return colorProfile;\r
2398         }\r
2399 \r
2400     /**\r
2401      *\r
2402      */\r
2403     virtual void setColorProfile(const DOMString &val) throw (DOMException)\r
2404         {\r
2405         colorProfile = val;\r
2406         }\r
2407 \r
2408     /**\r
2409      *\r
2410      */\r
2411     virtual SVGNumberList &getColors()\r
2412         {\r
2413         return colors;\r
2414         }\r
2415 \r
2416 \r
2417 \r
2418     //##################\r
2419     //# Non-API methods\r
2420     //##################\r
2421 \r
2422     /**\r
2423      *\r
2424      */\r
2425     SVGICCColor() {}\r
2426 \r
2427     /**\r
2428      *\r
2429      */\r
2430     SVGICCColor(const SVGICCColor &other)\r
2431         {\r
2432         colorProfile = other.colorProfile;\r
2433         colors       = other.colors;\r
2434         }\r
2435 \r
2436     /**\r
2437      *\r
2438      */\r
2439     virtual ~SVGICCColor() {}\r
2440 \r
2441 protected:\r
2442 \r
2443     DOMString colorProfile;\r
2444 \r
2445     SVGNumberList colors;\r
2446 \r
2447 };\r
2448 \r
2449 \r
2450 /*#########################################################################\r
2451 ## SVGColor\r
2452 #########################################################################*/\r
2453 \r
2454 /**\r
2455  *\r
2456  */\r
2457 class SVGColor : virtual public css::CSSValue\r
2458 {\r
2459 public:\r
2460 \r
2461 \r
2462     /**\r
2463      * Color Types\r
2464      */\r
2465     typedef enum\r
2466         {\r
2467         SVG_COLORTYPE_UNKNOWN           = 0,\r
2468         SVG_COLORTYPE_RGBCOLOR          = 1,\r
2469         SVG_COLORTYPE_RGBCOLOR_ICCCOLOR = 2,\r
2470         SVG_COLORTYPE_CURRENTCOLOR      = 3\r
2471         } ColorType;\r
2472 \r
2473 \r
2474     /**\r
2475      *\r
2476      */\r
2477     virtual unsigned short getColorType()\r
2478         {\r
2479         return colorType;\r
2480         }\r
2481 \r
2482     /**\r
2483      *\r
2484      */\r
2485     virtual css::RGBColor getRgbColor()\r
2486         {\r
2487         css::RGBColor col;\r
2488         return col;\r
2489         }\r
2490 \r
2491     /**\r
2492      *\r
2493      */\r
2494     virtual SVGICCColor getIccColor()\r
2495         {\r
2496         SVGICCColor col;\r
2497         return col;\r
2498         }\r
2499 \r
2500 \r
2501     /**\r
2502      *\r
2503      */\r
2504     virtual void setRGBColor (const DOMString& /*rgbColor*/ )\r
2505                               throw( SVGException )\r
2506         {\r
2507         }\r
2508 \r
2509     /**\r
2510      *\r
2511      */\r
2512     virtual void setRGBColorICCColor (const DOMString& /*rgbColor*/,\r
2513                                       const DOMString& /*iccColor*/ )\r
2514                                       throw( SVGException )\r
2515         {\r
2516         }\r
2517 \r
2518     /**\r
2519      *\r
2520      */\r
2521     virtual void setColor (unsigned short /*colorType*/,\r
2522                            const DOMString& /*rgbColor*/,\r
2523                            const DOMString& /*iccColor*/ )\r
2524                            throw( SVGException )\r
2525         {\r
2526         }\r
2527 \r
2528 \r
2529 \r
2530     //##################\r
2531     //# Non-API methods\r
2532     //##################\r
2533 \r
2534     /**\r
2535      *\r
2536      */\r
2537     SVGColor()\r
2538         {\r
2539         colorType = SVG_COLORTYPE_UNKNOWN;\r
2540         }\r
2541 \r
2542     /**\r
2543      *\r
2544      */\r
2545     SVGColor(const SVGColor &other) : css::CSSValue(other)\r
2546         {\r
2547         colorType = other.colorType;\r
2548         }\r
2549 \r
2550     /**\r
2551      *\r
2552      */\r
2553     virtual ~SVGColor() {}\r
2554 \r
2555 protected:\r
2556 \r
2557     int colorType;\r
2558 \r
2559 };\r
2560 \r
2561 \r
2562 \r
2563 \r
2564 \r
2565 \r
2566 \r
2567 \r
2568 \r
2569 \r
2570 /*#########################################################################\r
2571 ## SVGRect\r
2572 #########################################################################*/\r
2573 \r
2574 /**\r
2575  *\r
2576  */\r
2577 class SVGRect\r
2578 {\r
2579 public:\r
2580 \r
2581     /**\r
2582      *\r
2583      */\r
2584     virtual double getX()\r
2585         {\r
2586         return x;\r
2587         }\r
2588 \r
2589     /**\r
2590      *\r
2591      */\r
2592     virtual void setX(double val) throw (DOMException)\r
2593         {\r
2594         x = val;\r
2595         }\r
2596 \r
2597     /**\r
2598      *\r
2599      */\r
2600     virtual double getY()\r
2601         {\r
2602         return y;\r
2603         }\r
2604 \r
2605     /**\r
2606      *\r
2607      */\r
2608     virtual void setY(double val) throw (DOMException)\r
2609         {\r
2610         y = val;\r
2611         }\r
2612 \r
2613     /**\r
2614      *\r
2615      */\r
2616     virtual double getWidth()\r
2617         {\r
2618         return width;\r
2619         }\r
2620 \r
2621     /**\r
2622      *\r
2623      */\r
2624     virtual void setWidth(double val) throw (DOMException)\r
2625         {\r
2626         width = val;\r
2627         }\r
2628 \r
2629     /**\r
2630      *\r
2631      */\r
2632     virtual double getHeight()\r
2633         {\r
2634         return height;\r
2635         }\r
2636 \r
2637     /**\r
2638      *\r
2639      */\r
2640     virtual void setHeight(double val) throw (DOMException)\r
2641         {\r
2642         height = val;\r
2643         }\r
2644 \r
2645 \r
2646     //##################\r
2647     //# Non-API methods\r
2648     //##################\r
2649 \r
2650     /**\r
2651      *\r
2652      */\r
2653     SVGRect()\r
2654         {\r
2655         x = y = width = height = 0.0;\r
2656         }\r
2657 \r
2658     /**\r
2659      *\r
2660      */\r
2661     SVGRect(const SVGRect &other)\r
2662         {\r
2663         x = other.x;\r
2664         y = other.y;\r
2665         width = other.width;\r
2666         height = other.height;\r
2667         }\r
2668 \r
2669     /**\r
2670      *\r
2671      */\r
2672     virtual ~SVGRect() {}\r
2673 \r
2674 protected:\r
2675 \r
2676     double x, y, width, height;\r
2677 \r
2678 };\r
2679 \r
2680 \r
2681 \r
2682 \r
2683 \r
2684 \r
2685 /*#########################################################################\r
2686 ## SVGAnimatedRect\r
2687 #########################################################################*/\r
2688 \r
2689 /**\r
2690  *\r
2691  */\r
2692 class SVGAnimatedRect\r
2693 {\r
2694 public:\r
2695 \r
2696     /**\r
2697      *\r
2698      */\r
2699     virtual SVGRect &getBaseVal()\r
2700         {\r
2701         return baseVal;\r
2702         }\r
2703 \r
2704     /**\r
2705      *\r
2706      */\r
2707     virtual SVGRect &getAnimVal()\r
2708         {\r
2709         return animVal;\r
2710         }\r
2711 \r
2712 \r
2713 \r
2714     //##################\r
2715     //# Non-API methods\r
2716     //##################\r
2717 \r
2718     /**\r
2719      *\r
2720      */\r
2721     SVGAnimatedRect()\r
2722         {\r
2723         }\r
2724 \r
2725     /**\r
2726      *\r
2727      */\r
2728     SVGAnimatedRect(const SVGAnimatedRect &other)\r
2729         {\r
2730         baseVal = other.baseVal;\r
2731         animVal = other.animVal;\r
2732         }\r
2733 \r
2734     /**\r
2735      *\r
2736      */\r
2737     virtual ~SVGAnimatedRect() {}\r
2738 \r
2739 protected:\r
2740 \r
2741     SVGRect baseVal, animVal;\r
2742 \r
2743 };\r
2744 \r
2745 \r
2746 \r
2747 /*#########################################################################\r
2748 ## SVGPoint\r
2749 #########################################################################*/\r
2750 \r
2751 /**\r
2752  *\r
2753  */\r
2754 class SVGPoint\r
2755 {\r
2756 public:\r
2757 \r
2758 \r
2759 \r
2760     /**\r
2761      *\r
2762      */\r
2763     virtual double getX()\r
2764         { return x; }\r
2765 \r
2766     /**\r
2767      *\r
2768      */\r
2769     virtual void setX(double val) throw (DOMException)\r
2770         { x = val; }\r
2771 \r
2772     /**\r
2773      *\r
2774      */\r
2775     virtual double getY()\r
2776         { return y; }\r
2777 \r
2778     /**\r
2779      *\r
2780      */\r
2781     virtual void setY(double val) throw (DOMException)\r
2782         { y = val; }\r
2783 \r
2784     /**\r
2785      *\r
2786      */\r
2787     virtual SVGPoint matrixTransform(const SVGMatrix &/*matrix*/)\r
2788         {\r
2789         SVGPoint point;\r
2790         return point;\r
2791         }\r
2792 \r
2793 \r
2794 \r
2795     //##################\r
2796     //# Non-API methods\r
2797     //##################\r
2798 \r
2799     /**\r
2800      *\r
2801      */\r
2802     SVGPoint()\r
2803         { x = y = 0; }\r
2804 \r
2805     /**\r
2806      *\r
2807      */\r
2808     SVGPoint(const SVGPoint &other)\r
2809         {\r
2810         x = other.x;\r
2811         y = other.y;\r
2812         }\r
2813 \r
2814     /**\r
2815      *\r
2816      */\r
2817     virtual ~SVGPoint() {}\r
2818 \r
2819 protected:\r
2820 \r
2821     double x, y;\r
2822 };\r
2823 \r
2824 \r
2825 \r
2826 \r
2827 \r
2828 \r
2829 /*#########################################################################\r
2830 ## SVGPointList\r
2831 #########################################################################*/\r
2832 \r
2833 /**\r
2834  *\r
2835  */\r
2836 class SVGPointList\r
2837 {\r
2838 public:\r
2839 \r
2840     /**\r
2841      *\r
2842      */\r
2843     virtual unsigned long getNumberOfItems()\r
2844         { return items.size(); }\r
2845 \r
2846     /**\r
2847      *\r
2848      */\r
2849     virtual void clear() throw( DOMException )\r
2850         { items.clear(); }\r
2851 \r
2852     /**\r
2853      *\r
2854      */\r
2855     virtual SVGPoint initialize(const SVGPoint &newItem)\r
2856                              throw( DOMException, SVGException )\r
2857         {\r
2858         items.clear();\r
2859         items.push_back(newItem);\r
2860         return newItem;\r
2861         }\r
2862 \r
2863     /**\r
2864      *\r
2865      */\r
2866     virtual SVGPoint getItem(unsigned long index )\r
2867                              throw( DOMException )\r
2868         {\r
2869         if (index >= items.size())\r
2870             {\r
2871             SVGPoint point;\r
2872             return point;\r
2873             }\r
2874         return items[index];\r
2875         }\r
2876 \r
2877     /**\r
2878      *\r
2879      */\r
2880     virtual SVGPoint insertItemBefore(const SVGPoint &newItem,\r
2881                                       unsigned long index )\r
2882                                       throw( DOMException, SVGException )\r
2883         {\r
2884         if (index >= items.size())\r
2885             items.push_back(newItem);\r
2886         else\r
2887             {\r
2888             std::vector<SVGPoint>::iterator iter = items.begin() + index;\r
2889             items.insert(iter, newItem);\r
2890             }\r
2891         return newItem;\r
2892         }\r
2893 \r
2894     /**\r
2895      *\r
2896      */\r
2897     virtual SVGPoint replaceItem(const SVGPoint &newItem,\r
2898                                   unsigned long index )\r
2899                                   throw( DOMException, SVGException )\r
2900         {\r
2901         if (index >= items.size())\r
2902             {\r
2903             SVGPoint point;\r
2904             return point;\r
2905             }\r
2906         std::vector<SVGPoint>::iterator iter = items.begin() + index;\r
2907         *iter = newItem;\r
2908         return newItem;\r
2909         }\r
2910 \r
2911     /**\r
2912      *\r
2913      */\r
2914     virtual SVGPoint removeItem(unsigned long index )\r
2915                                   throw( DOMException )\r
2916         {\r
2917         if (index >= items.size())\r
2918             {\r
2919             SVGPoint point;\r
2920             return point;\r
2921             }\r
2922         std::vector<SVGPoint>::iterator iter = items.begin() + index;\r
2923         SVGPoint oldItem = *iter;\r
2924         items.erase(iter);\r
2925         return oldItem;\r
2926         }\r
2927 \r
2928     /**\r
2929      *\r
2930      */\r
2931     virtual SVGPoint appendItem(const SVGPoint &newItem)\r
2932                               throw( DOMException, SVGException )\r
2933         {\r
2934         items.push_back(newItem);\r
2935         return newItem;\r
2936         }\r
2937 \r
2938 \r
2939     //##################\r
2940     //# Non-API methods\r
2941     //##################\r
2942 \r
2943     /**\r
2944      *\r
2945      */\r
2946     SVGPointList() {}\r
2947 \r
2948 \r
2949     /**\r
2950      *\r
2951      */\r
2952     SVGPointList(const SVGPointList &other)\r
2953         {\r
2954         items = other.items;\r
2955         }\r
2956 \r
2957 \r
2958     /**\r
2959      *\r
2960      */\r
2961     virtual ~SVGPointList() {}\r
2962 \r
2963 protected:\r
2964 \r
2965     std::vector<SVGPoint> items;\r
2966 \r
2967 };\r
2968 \r
2969 \r
2970 \r
2971 \r
2972 /*#########################################################################\r
2973 ## SVGUnitTypes\r
2974 #########################################################################*/\r
2975 \r
2976 /**\r
2977  *\r
2978  */\r
2979 class SVGUnitTypes\r
2980 {\r
2981 public:\r
2982 \r
2983     /**\r
2984      * Unit Types\r
2985      */\r
2986     typedef enum\r
2987         {\r
2988         SVG_UNIT_TYPE_UNKNOWN           = 0,\r
2989         SVG_UNIT_TYPE_USERSPACEONUSE    = 1,\r
2990         SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2\r
2991         } UnitType;\r
2992 \r
2993 \r
2994 \r
2995     //##################\r
2996     //# Non-API methods\r
2997     //##################\r
2998 \r
2999     /**\r
3000      *\r
3001      */\r
3002     SVGUnitTypes() {}\r
3003 \r
3004     /**\r
3005      *\r
3006      */\r
3007     virtual ~SVGUnitTypes() {}\r
3008 \r
3009 };\r
3010 \r
3011 \r
3012 \r
3013 \r
3014 \r
3015 \r
3016 /*#########################################################################\r
3017 ## SVGStylable\r
3018 #########################################################################*/\r
3019 \r
3020 /**\r
3021  *\r
3022  */\r
3023 class SVGStylable\r
3024 {\r
3025 public:\r
3026 \r
3027     /**\r
3028      *\r
3029      */\r
3030     virtual SVGAnimatedString getClassName()\r
3031         {\r
3032         return className;\r
3033         }\r
3034 \r
3035     /**\r
3036      *\r
3037      */\r
3038     virtual css::CSSStyleDeclaration getStyle()\r
3039         {\r
3040         return style;\r
3041         }\r
3042 \r
3043 \r
3044     /**\r
3045      *\r
3046      */\r
3047     virtual css::CSSValue getPresentationAttribute (const DOMString& /*name*/ )\r
3048         {\r
3049         css::CSSValue val;\r
3050         //perform a lookup\r
3051         return val;\r
3052         }\r
3053 \r
3054 \r
3055     //##################\r
3056     //# Non-API methods\r
3057     //##################\r
3058 \r
3059     /**\r
3060      *\r
3061      */\r
3062     SVGStylable() {}\r
3063 \r
3064     /**\r
3065      *\r
3066      */\r
3067     SVGStylable(const SVGStylable &other)\r
3068         {\r
3069         className = other.className;\r
3070         style     = other.style;\r
3071         }\r
3072 \r
3073     /**\r
3074      *\r
3075      */\r
3076     virtual ~SVGStylable() {}\r
3077 \r
3078 protected:\r
3079 \r
3080     SVGAnimatedString className;\r
3081     css::CSSStyleDeclaration style;\r
3082 \r
3083 };\r
3084 \r
3085 \r
3086 /*#########################################################################\r
3087 ## SVGLocatable\r
3088 #########################################################################*/\r
3089 \r
3090 /**\r
3091  *\r
3092  */\r
3093 class SVGLocatable\r
3094 {\r
3095 public:\r
3096 \r
3097     /**\r
3098      *\r
3099      */\r
3100     virtual SVGElementPtr getNearestViewportElement()\r
3101         {\r
3102         SVGElementPtr result;\r
3103         return result;\r
3104         }\r
3105 \r
3106     /**\r
3107      *\r
3108      */\r
3109     virtual SVGElementPtr getFarthestViewportElement()\r
3110         {\r
3111         SVGElementPtr result;\r
3112         return result;\r
3113         }\r
3114 \r
3115     /**\r
3116      *\r
3117      */\r
3118     virtual SVGRect getBBox (  )\r
3119         {\r
3120         return bbox;\r
3121         }\r
3122 \r
3123     /**\r
3124      *\r
3125      */\r
3126     virtual SVGMatrix getCTM (  )\r
3127         {\r
3128         return ctm;\r
3129         }\r
3130 \r
3131     /**\r
3132      *\r
3133      */\r
3134     virtual SVGMatrix getScreenCTM (  )\r
3135         {\r
3136         return screenCtm;\r
3137         }\r
3138 \r
3139     /**\r
3140      *\r
3141      */\r
3142     virtual SVGMatrix getTransformToElement (const SVGElement &/*element*/)\r
3143                     throw( SVGException )\r
3144         {\r
3145         SVGMatrix result;\r
3146         //do calculations\r
3147         return result;\r
3148         }\r
3149 \r
3150 \r
3151 \r
3152     //##################\r
3153     //# Non-API methods\r
3154     //##################\r
3155 \r
3156     /**\r
3157      *\r
3158      */\r
3159     SVGLocatable() {}\r
3160 \r
3161     /**\r
3162      *\r
3163      */\r
3164     SVGLocatable(const SVGLocatable &/*other*/)\r
3165         {\r
3166         }\r
3167 \r
3168     /**\r
3169      *\r
3170      */\r
3171     virtual ~SVGLocatable() {}\r
3172 \r
3173 protected:\r
3174 \r
3175     SVGRect bbox;\r
3176     SVGMatrix ctm;\r
3177     SVGMatrix screenCtm;\r
3178 \r
3179 };\r
3180 \r
3181 \r
3182 \r
3183 \r
3184 \r
3185 \r
3186 /*#########################################################################\r
3187 ## SVGTransformable\r
3188 #########################################################################*/\r
3189 \r
3190 /**\r
3191  *\r
3192  */\r
3193 class SVGTransformable : public SVGLocatable\r
3194 {\r
3195 public:\r
3196 \r
3197 \r
3198     /**\r
3199      *\r
3200      */\r
3201     virtual SVGAnimatedTransformList &getTransform()\r
3202         {\r
3203         return transforms;\r
3204         }\r
3205 \r
3206 \r
3207 \r
3208     //##################\r
3209     //# Non-API methods\r
3210     //##################\r
3211 \r
3212     /**\r
3213      *\r
3214      */\r
3215     SVGTransformable() {}\r
3216 \r
3217     /**\r
3218      *\r
3219      */\r
3220     SVGTransformable(const SVGTransformable &other) : SVGLocatable(other)\r
3221         {\r
3222         transforms = other.transforms;\r
3223         }\r
3224 \r
3225     /**\r
3226      *\r
3227      */\r
3228     virtual ~SVGTransformable() {}\r
3229 \r
3230 protected:\r
3231 \r
3232     SVGAnimatedTransformList transforms;\r
3233 };\r
3234 \r
3235 \r
3236 \r
3237 \r
3238 \r
3239 \r
3240 /*#########################################################################\r
3241 ## SVGTests\r
3242 #########################################################################*/\r
3243 \r
3244 /**\r
3245  *\r
3246  */\r
3247 class SVGTests\r
3248 {\r
3249 public:\r
3250 \r
3251 \r
3252     /**\r
3253      *\r
3254      */\r
3255     virtual SVGStringList &getRequiredFeatures()\r
3256         {\r
3257         return requiredFeatures;\r
3258         }\r
3259 \r
3260     /**\r
3261      *\r
3262      */\r
3263     virtual SVGStringList &getRequiredExtensions()\r
3264         {\r
3265         return requiredExtensions;\r
3266         }\r
3267 \r
3268     /**\r
3269      *\r
3270      */\r
3271     virtual SVGStringList &getSystemLanguage()\r
3272         {\r
3273         return systemLanguage;\r
3274         }\r
3275 \r
3276 \r
3277     /**\r
3278      *\r
3279      */\r
3280     virtual bool hasExtension (const DOMString& /*extension*/ )\r
3281         {\r
3282         return false;\r
3283         }\r
3284 \r
3285 \r
3286 \r
3287     //##################\r
3288     //# Non-API methods\r
3289     //##################\r
3290 \r
3291     /**\r
3292      *\r
3293      */\r
3294     SVGTests() {}\r
3295 \r
3296     /**\r
3297      *\r
3298      */\r
3299     SVGTests(const SVGTests &other)\r
3300         {\r
3301         requiredFeatures   = other.requiredFeatures;\r
3302         requiredExtensions = other.requiredExtensions;\r
3303         systemLanguage     = other.systemLanguage;\r
3304         }\r
3305 \r
3306     /**\r
3307      *\r
3308      */\r
3309     virtual ~SVGTests() {}\r
3310 \r
3311 protected:\r
3312 \r
3313     SVGStringList requiredFeatures;\r
3314     SVGStringList requiredExtensions;\r
3315     SVGStringList systemLanguage;\r
3316 \r
3317 };\r
3318 \r
3319 \r
3320 \r
3321 \r
3322 \r
3323 \r
3324 /*#########################################################################\r
3325 ## SVGLangSpace\r
3326 #########################################################################*/\r
3327 \r
3328 /**\r
3329  *\r
3330  */\r
3331 class SVGLangSpace\r
3332 {\r
3333 public:\r
3334 \r
3335 \r
3336     /**\r
3337      *\r
3338      */\r
3339     virtual DOMString getXmllang()\r
3340         {\r
3341         return xmlLang;\r
3342         }\r
3343 \r
3344     /**\r
3345      *\r
3346      */\r
3347     virtual void setXmllang(const DOMString &val)\r
3348                                      throw (DOMException)\r
3349         {\r
3350         xmlLang = val;\r
3351         }\r
3352 \r
3353     /**\r
3354      *\r
3355      */\r
3356     virtual DOMString getXmlspace()\r
3357         {\r
3358         return xmlSpace;\r
3359         }\r
3360 \r
3361     /**\r
3362      *\r
3363      */\r
3364     virtual void setXmlspace(const DOMString &val)\r
3365                                      throw (DOMException)\r
3366         {\r
3367         xmlSpace = val;\r
3368         }\r
3369 \r
3370 \r
3371 \r
3372     //##################\r
3373     //# Non-API methods\r
3374     //##################\r
3375 \r
3376     /**\r
3377      *\r
3378      */\r
3379     SVGLangSpace() {}\r
3380 \r
3381     /**\r
3382      *\r
3383      */\r
3384     SVGLangSpace(const SVGLangSpace &other)\r
3385         {\r
3386         xmlLang  = other.xmlLang;\r
3387         xmlSpace = other.xmlSpace;\r
3388         }\r
3389 \r
3390     /**\r
3391      *\r
3392      */\r
3393     virtual ~SVGLangSpace() {}\r
3394 \r
3395 protected:\r
3396 \r
3397     DOMString xmlLang;\r
3398     DOMString xmlSpace;\r
3399 \r
3400 };\r
3401 \r
3402 \r
3403 \r
3404 \r
3405 \r
3406 \r
3407 /*#########################################################################\r
3408 ## SVGExternalResourcesRequired\r
3409 #########################################################################*/\r
3410 \r
3411 /**\r
3412  *\r
3413  */\r
3414 class SVGExternalResourcesRequired\r
3415 {\r
3416 public:\r
3417 \r
3418 \r
3419     /**\r
3420      *\r
3421      */\r
3422     virtual SVGAnimatedBoolean getExternalResourcesRequired()\r
3423         { return required; }\r
3424 \r
3425 \r
3426 \r
3427     //##################\r
3428     //# Non-API methods\r
3429     //##################\r
3430 \r
3431     /**\r
3432      *\r
3433      */\r
3434     SVGExternalResourcesRequired()\r
3435         {  }\r
3436 \r
3437 \r
3438     /**\r
3439      *\r
3440      */\r
3441     SVGExternalResourcesRequired(const SVGExternalResourcesRequired &other)\r
3442         {\r
3443         required = other.required;\r
3444         }\r
3445 \r
3446     /**\r
3447      *\r
3448      */\r
3449     virtual ~SVGExternalResourcesRequired() {}\r
3450 \r
3451 protected:\r
3452 \r
3453     SVGAnimatedBoolean required;\r
3454 \r
3455 };\r
3456 \r
3457 \r
3458 \r
3459 \r
3460 \r
3461 \r
3462 /*#########################################################################\r
3463 ## SVGPreserveAspectRatio\r
3464 #########################################################################*/\r
3465 \r
3466 /**\r
3467  *\r
3468  */\r
3469 class SVGPreserveAspectRatio\r
3470 {\r
3471 public:\r
3472 \r
3473 \r
3474     /**\r
3475      * Alignment Types\r
3476      */\r
3477     typedef enum\r
3478         {\r
3479         SVG_PRESERVEASPECTRATIO_UNKNOWN  = 0,\r
3480         SVG_PRESERVEASPECTRATIO_NONE     = 1,\r
3481         SVG_PRESERVEASPECTRATIO_XMINYMIN = 2,\r
3482         SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3,\r
3483         SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4,\r
3484         SVG_PRESERVEASPECTRATIO_XMINYMID = 5,\r
3485         SVG_PRESERVEASPECTRATIO_XMIDYMID = 6,\r
3486         SVG_PRESERVEASPECTRATIO_XMAXYMID = 7,\r
3487         SVG_PRESERVEASPECTRATIO_XMINYMAX = 8,\r
3488         SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9,\r
3489         SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10\r
3490         } AlignmentType;\r
3491 \r
3492 \r
3493     /**\r
3494      * Meet-or-slice Types\r
3495      */\r
3496     typedef enum\r
3497         {\r
3498         SVG_MEETORSLICE_UNKNOWN  = 0,\r
3499         SVG_MEETORSLICE_MEET     = 1,\r
3500         SVG_MEETORSLICE_SLICE    = 2\r
3501         } MeetOrSliceType;\r
3502 \r
3503 \r
3504     /**\r
3505      *\r
3506      */\r
3507     virtual unsigned short getAlign()\r
3508         { return align; }\r
3509 \r
3510     /**\r
3511      *\r
3512      */\r
3513     virtual void setAlign(unsigned short val) throw (DOMException)\r
3514         { align = val; }\r
3515 \r
3516     /**\r
3517      *\r
3518      */\r
3519     virtual unsigned short getMeetOrSlice()\r
3520         { return meetOrSlice; }\r
3521 \r
3522     /**\r
3523      *\r
3524      */\r
3525     virtual void setMeetOrSlice(unsigned short val) throw (DOMException)\r
3526         { meetOrSlice = val; }\r
3527 \r
3528 \r
3529 \r
3530     //##################\r
3531     //# Non-API methods\r
3532     //##################\r
3533 \r
3534     /**\r
3535      *\r
3536      */\r
3537     SVGPreserveAspectRatio()\r
3538         {\r
3539         align       = SVG_PRESERVEASPECTRATIO_UNKNOWN;\r
3540         meetOrSlice = SVG_MEETORSLICE_UNKNOWN;\r
3541         }\r
3542 \r
3543     /**\r
3544      *\r
3545      */\r
3546     SVGPreserveAspectRatio(const SVGPreserveAspectRatio &other)\r
3547         {\r
3548         align       = other.align;\r
3549         meetOrSlice = other.meetOrSlice;\r
3550         }\r
3551 \r
3552     /**\r
3553      *\r
3554      */\r
3555     virtual ~SVGPreserveAspectRatio() {}\r
3556 \r
3557 protected:\r
3558 \r
3559     unsigned short align;\r
3560     unsigned short meetOrSlice;\r
3561 \r
3562 };\r
3563 \r
3564 \r
3565 \r
3566 \r
3567 \r
3568 \r
3569 /*#########################################################################\r
3570 ## SVGAnimatedPreserveAspectRatio\r
3571 #########################################################################*/\r
3572 \r
3573 /**\r
3574  *\r
3575  */\r
3576 class SVGAnimatedPreserveAspectRatio\r
3577 {\r
3578 public:\r
3579 \r
3580 \r
3581     /**\r
3582      *\r
3583      */\r
3584     virtual SVGPreserveAspectRatio getBaseVal()\r
3585         { return baseVal; }\r
3586 \r
3587     /**\r
3588      *\r
3589      */\r
3590     virtual SVGPreserveAspectRatio getAnimVal()\r
3591         { return animVal; }\r
3592 \r
3593 \r
3594 \r
3595     //##################\r
3596     //# Non-API methods\r
3597     //##################\r
3598 \r
3599     /**\r
3600      *\r
3601      */\r
3602     SVGAnimatedPreserveAspectRatio() {}\r
3603 \r
3604     /**\r
3605      *\r
3606      */\r
3607     SVGAnimatedPreserveAspectRatio(const SVGAnimatedPreserveAspectRatio &other)\r
3608         {\r
3609         baseVal = other.baseVal;\r
3610         baseVal = other.animVal;\r
3611         }\r
3612 \r
3613     /**\r
3614      *\r
3615      */\r
3616     virtual ~SVGAnimatedPreserveAspectRatio() {}\r
3617 \r
3618 protected:\r
3619 \r
3620     SVGPreserveAspectRatio baseVal;\r
3621     SVGPreserveAspectRatio animVal;\r
3622 \r
3623 };\r
3624 \r
3625 \r
3626 \r
3627 \r
3628 /*#########################################################################\r
3629 ## SVGFitToViewBox\r
3630 #########################################################################*/\r
3631 \r
3632 /**\r
3633  *\r
3634  */\r
3635 class SVGFitToViewBox\r
3636 {\r
3637 public:\r
3638 \r
3639     /**\r
3640      *\r
3641      */\r
3642     virtual SVGAnimatedRect getViewBox()\r
3643         { return viewBox; }\r
3644 \r
3645     /**\r
3646      *\r
3647      */\r
3648     virtual SVGAnimatedPreserveAspectRatio getPreserveAspectRatio()\r
3649         { return preserveAspectRatio; }\r
3650 \r
3651 \r
3652 \r
3653     //##################\r
3654     //# Non-API methods\r
3655     //##################\r
3656 \r
3657     /**\r
3658      *\r
3659      */\r
3660     SVGFitToViewBox()\r
3661         {}\r
3662 \r
3663     /**\r
3664      *\r
3665      */\r
3666 \r
3667     SVGFitToViewBox(const SVGFitToViewBox &other)\r
3668         {\r
3669         viewBox = other.viewBox;\r
3670         preserveAspectRatio = other.preserveAspectRatio;\r
3671         }\r
3672 \r
3673     /**\r
3674      *\r
3675      */\r
3676     virtual ~SVGFitToViewBox() {}\r
3677 \r
3678 protected:\r
3679 \r
3680     SVGAnimatedRect viewBox;\r
3681 \r
3682     SVGAnimatedPreserveAspectRatio preserveAspectRatio;\r
3683 \r
3684 };\r
3685 \r
3686 \r
3687 /*#########################################################################\r
3688 ## SVGZoomAndPan\r
3689 #########################################################################*/\r
3690 \r
3691 /**\r
3692  *\r
3693  */\r
3694 class SVGZoomAndPan\r
3695 {\r
3696 public:\r
3697 \r
3698 \r
3699     /**\r
3700      * Zoom and Pan Types\r
3701      */\r
3702     typedef enum\r
3703         {\r
3704         SVG_ZOOMANDPAN_UNKNOWN = 0,\r
3705         SVG_ZOOMANDPAN_DISABLE = 1,\r
3706         SVG_ZOOMANDPAN_MAGNIFY = 2\r
3707         } ZoomAndPanType;\r
3708 \r
3709 \r
3710     /**\r
3711      *\r
3712      */\r
3713     virtual unsigned short getZoomAndPan()\r
3714         { return zoomAndPan; }\r
3715 \r
3716     /**\r
3717      *\r
3718      */\r
3719     virtual void setZoomAndPan(unsigned short val) throw (DOMException)\r
3720         { zoomAndPan = val; }\r
3721 \r
3722 \r
3723     //##################\r
3724     //# Non-API methods\r
3725     //##################\r
3726 \r
3727     /**\r
3728      *\r
3729      */\r
3730     SVGZoomAndPan()\r
3731         { zoomAndPan = SVG_ZOOMANDPAN_UNKNOWN; }\r
3732 \r
3733     /**\r
3734      *\r
3735      */\r
3736     SVGZoomAndPan(const SVGZoomAndPan &other)\r
3737         { zoomAndPan = other.zoomAndPan; }\r
3738 \r
3739     /**\r
3740      *\r
3741      */\r
3742     virtual ~SVGZoomAndPan() {}\r
3743 \r
3744 protected:\r
3745 \r
3746     unsigned short zoomAndPan;\r
3747 \r
3748 };\r
3749 \r
3750 \r
3751 \r
3752 \r
3753 \r
3754 \r
3755 /*#########################################################################\r
3756 ## SVGViewSpec\r
3757 #########################################################################*/\r
3758 \r
3759 /**\r
3760  *\r
3761  */\r
3762 class SVGViewSpec : public SVGZoomAndPan,\r
3763                     public SVGFitToViewBox\r
3764 {\r
3765 public:\r
3766 \r
3767     /**\r
3768      *\r
3769      */\r
3770     virtual SVGTransformList getTransform()\r
3771         { return transform; }\r
3772 \r
3773     /**\r
3774      *\r
3775      */\r
3776     virtual SVGElementPtr getViewTarget()\r
3777         { return viewTarget; }\r
3778 \r
3779     /**\r
3780      *\r
3781      */\r
3782     virtual DOMString getViewBoxString()\r
3783         {\r
3784         DOMString ret;\r
3785         return ret;\r
3786         }\r
3787 \r
3788     /**\r
3789      *\r
3790      */\r
3791     virtual DOMString getPreserveAspectRatioString()\r
3792         {\r
3793         DOMString ret;\r
3794         return ret;\r
3795         }\r
3796 \r
3797     /**\r
3798      *\r
3799      */\r
3800     virtual DOMString getTransformString()\r
3801         {\r
3802         DOMString ret;\r
3803         return ret;\r
3804         }\r
3805 \r
3806     /**\r
3807      *\r
3808      */\r
3809     virtual DOMString getViewTargetString()\r
3810         {\r
3811         DOMString ret;\r
3812         return ret;\r
3813         }\r
3814 \r
3815 \r
3816 \r
3817     //##################\r
3818     //# Non-API methods\r
3819     //##################\r
3820 \r
3821     /**\r
3822      *\r
3823      */\r
3824     SVGViewSpec()\r
3825         {\r
3826         viewTarget = NULL;\r
3827         }\r
3828 \r
3829     /**\r
3830      *\r
3831      */\r
3832     SVGViewSpec(const SVGViewSpec &other) : SVGZoomAndPan(other), SVGFitToViewBox(other)\r
3833         {\r
3834         viewTarget = other.viewTarget;\r
3835         transform  = other.transform;\r
3836         }\r
3837 \r
3838     /**\r
3839      *\r
3840      */\r
3841     virtual ~SVGViewSpec() {}\r
3842 \r
3843 protected:\r
3844 \r
3845     SVGElementPtr viewTarget;\r
3846     SVGTransformList transform;\r
3847 };\r
3848 \r
3849 \r
3850 \r
3851 \r
3852 \r
3853 \r
3854 /*#########################################################################\r
3855 ## SVGURIReference\r
3856 #########################################################################*/\r
3857 \r
3858 /**\r
3859  *\r
3860  */\r
3861 class SVGURIReference\r
3862 {\r
3863 public:\r
3864 \r
3865     /**\r
3866      *\r
3867      */\r
3868     virtual SVGAnimatedString getHref()\r
3869         { return href; }\r
3870 \r
3871 \r
3872 \r
3873     //##################\r
3874     //# Non-API methods\r
3875     //##################\r
3876 \r
3877     /**\r
3878      *\r
3879      */\r
3880     SVGURIReference() {}\r
3881 \r
3882     /**\r
3883      *\r
3884      */\r
3885     SVGURIReference(const SVGURIReference &other)\r
3886         {\r
3887         href = other.href;\r
3888         }\r
3889 \r
3890     /**\r
3891      *\r
3892      */\r
3893     virtual ~SVGURIReference() {}\r
3894 \r
3895 protected:\r
3896 \r
3897     SVGAnimatedString href;\r
3898 \r
3899 };\r
3900 \r
3901 \r
3902 \r
3903 \r
3904 \r
3905 \r
3906 /*#########################################################################\r
3907 ## SVGCSSRule\r
3908 #########################################################################*/\r
3909 \r
3910 /**\r
3911  *\r
3912  */\r
3913 class SVGCSSRule : public css::CSSRule\r
3914 {\r
3915 public:\r
3916 \r
3917 \r
3918     /**\r
3919      * Additional CSS RuleType to support ICC color specifications\r
3920      */\r
3921     typedef enum\r
3922         {\r
3923         COLOR_PROFILE_RULE = 7\r
3924         } ColorProfileRuleType;\r
3925 \r
3926     //##################\r
3927     //# Non-API methods\r
3928     //##################\r
3929 \r
3930     /**\r
3931      *\r
3932      */\r
3933     SVGCSSRule()\r
3934         { type = COLOR_PROFILE_RULE; }\r
3935 \r
3936     /**\r
3937      *\r
3938      */\r
3939     SVGCSSRule(const SVGCSSRule &other) : css::CSSRule(other)\r
3940         { type = COLOR_PROFILE_RULE; }\r
3941 \r
3942     /**\r
3943      *\r
3944      */\r
3945     virtual ~SVGCSSRule() {}\r
3946 \r
3947 };\r
3948 \r
3949 \r
3950 \r
3951 /*#########################################################################\r
3952 ## SVGRenderingIntent\r
3953 #########################################################################*/\r
3954 \r
3955 /**\r
3956  *\r
3957  */\r
3958 class SVGRenderingIntent\r
3959 {\r
3960 public:\r
3961 \r
3962     /**\r
3963      * Rendering Intent Types\r
3964      */\r
3965     typedef enum\r
3966         {\r
3967         RENDERING_INTENT_UNKNOWN               = 0,\r
3968         RENDERING_INTENT_AUTO                  = 1,\r
3969         RENDERING_INTENT_PERCEPTUAL            = 2,\r
3970         RENDERING_INTENT_RELATIVE_COLORIMETRIC = 3,\r
3971         RENDERING_INTENT_SATURATION            = 4,\r
3972         RENDERING_INTENT_ABSOLUTE_COLORIMETRIC = 5\r
3973         } RenderingIntentType;\r
3974 \r
3975 \r
3976 \r
3977     //##################\r
3978     //# Non-API methods\r
3979     //##################\r
3980 \r
3981     /**\r
3982      *\r
3983      */\r
3984     SVGRenderingIntent()\r
3985         {\r
3986         renderingIntentType = RENDERING_INTENT_UNKNOWN;\r
3987         }\r
3988 \r
3989     /**\r
3990      *\r
3991      */\r
3992     SVGRenderingIntent(const SVGRenderingIntent &other)\r
3993         {\r
3994         renderingIntentType = other.renderingIntentType;\r
3995         }\r
3996 \r
3997     /**\r
3998      *\r
3999      */\r
4000     virtual ~SVGRenderingIntent() {}\r
4001 \r
4002 protected:\r
4003 \r
4004     unsigned short renderingIntentType;\r
4005 };\r
4006 \r
4007 \r
4008 \r
4009 \r
4010 \r
4011 \r
4012 \r
4013 /*#########################################################################\r
4014 ###########################################################################\r
4015 ## P A T H    S E G M E N T S\r
4016 ###########################################################################\r
4017 #########################################################################*/\r
4018 \r
4019 static char const *const pathSegLetters[] =\r
4020 {\r
4021     "@", // PATHSEG_UNKNOWN,\r
4022     "z", // PATHSEG_CLOSEPATH\r
4023     "M", // PATHSEG_MOVETO_ABS\r
4024     "m", // PATHSEG_MOVETO_REL,\r
4025     "L", // PATHSEG_LINETO_ABS\r
4026     "l", // PATHSEG_LINETO_REL\r
4027     "C", // PATHSEG_CURVETO_CUBIC_ABS\r
4028     "c", // PATHSEG_CURVETO_CUBIC_REL\r
4029     "Q", // PATHSEG_CURVETO_QUADRATIC_ABS,\r
4030     "q", // PATHSEG_CURVETO_QUADRATIC_REL\r
4031     "A", // PATHSEG_ARC_ABS\r
4032     "a", // PATHSEG_ARC_REL,\r
4033     "H", // PATHSEG_LINETO_HORIZONTAL_ABS,\r
4034     "h", // PATHSEG_LINETO_HORIZONTAL_REL\r
4035     "V", // PATHSEG_LINETO_VERTICAL_ABS\r
4036     "v", // PATHSEG_LINETO_VERTICAL_REL\r
4037     "S", // PATHSEG_CURVETO_CUBIC_SMOOTH_ABS\r
4038     "s", // PATHSEG_CURVETO_CUBIC_SMOOTH_REL\r
4039     "T", // PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS\r
4040     "t"  // PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL\r
4041 };\r
4042 \r
4043 /*#########################################################################\r
4044 ## SVGPathSeg\r
4045 #########################################################################*/\r
4046 \r
4047 /**\r
4048  *\r
4049  */\r
4050 class SVGPathSeg\r
4051 {\r
4052 public:\r
4053 \r
4054 \r
4055 \r
4056     /**\r
4057      *  Path Segment Types\r
4058      */\r
4059     typedef enum\r
4060         {\r
4061         PATHSEG_UNKNOWN                      = 0,\r
4062         PATHSEG_CLOSEPATH                    = 1,\r
4063         PATHSEG_MOVETO_ABS                   = 2,\r
4064         PATHSEG_MOVETO_REL                   = 3,\r
4065         PATHSEG_LINETO_ABS                   = 4,\r
4066         PATHSEG_LINETO_REL                   = 5,\r
4067         PATHSEG_CURVETO_CUBIC_ABS            = 6,\r
4068         PATHSEG_CURVETO_CUBIC_REL            = 7,\r
4069         PATHSEG_CURVETO_QUADRATIC_ABS        = 8,\r
4070         PATHSEG_CURVETO_QUADRATIC_REL        = 9,\r
4071         PATHSEG_ARC_ABS                      = 10,\r
4072         PATHSEG_ARC_REL                      = 11,\r
4073         PATHSEG_LINETO_HORIZONTAL_ABS        = 12,\r
4074         PATHSEG_LINETO_HORIZONTAL_REL        = 13,\r
4075         PATHSEG_LINETO_VERTICAL_ABS          = 14,\r
4076         PATHSEG_LINETO_VERTICAL_REL          = 15,\r
4077         PATHSEG_CURVETO_CUBIC_SMOOTH_ABS     = 16,\r
4078         PATHSEG_CURVETO_CUBIC_SMOOTH_REL     = 17,\r
4079         PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18,\r
4080         PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19\r
4081         } PathSegmentType;\r
4082 \r
4083     /**\r
4084      *\r
4085      */\r
4086     virtual unsigned short getPathSegType()\r
4087         { return type; }\r
4088 \r
4089     /**\r
4090      *\r
4091      */\r
4092     virtual DOMString getPathSegTypeAsLetter()\r
4093         {\r
4094         int typ = type;\r
4095         if (typ<0 || typ>PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL)\r
4096             typ = PATHSEG_UNKNOWN;\r
4097         char const *ch = pathSegLetters[typ];\r
4098         DOMString letter = ch;\r
4099         return letter;\r
4100         }\r
4101 \r
4102 \r
4103 \r
4104     //##################\r
4105     //# Non-API methods\r
4106     //##################\r
4107 \r
4108     /**\r
4109      *\r
4110      */\r
4111     SVGPathSeg()\r
4112         { type = PATHSEG_UNKNOWN; }\r
4113 \r
4114     /**\r
4115      *\r
4116      */\r
4117     SVGPathSeg(const SVGPathSeg &other)\r
4118         {\r
4119         type = other.type;\r
4120         }\r
4121 \r
4122     /**\r
4123      *\r
4124      */\r
4125     virtual ~SVGPathSeg() {}\r
4126 \r
4127 protected:\r
4128 \r
4129     int type;\r
4130 \r
4131 };\r
4132 \r
4133 \r
4134 \r
4135 \r
4136 \r
4137 \r
4138 /*#########################################################################\r
4139 ## SVGPathSegClosePath\r
4140 #########################################################################*/\r
4141 \r
4142 /**\r
4143  *\r
4144  */\r
4145 class SVGPathSegClosePath : public SVGPathSeg\r
4146 {\r
4147 public:\r
4148 \r
4149     //##################\r
4150     //# Non-API methods\r
4151     //##################\r
4152 \r
4153     /**\r
4154      *\r
4155      */\r
4156     SVGPathSegClosePath()\r
4157         {\r
4158         type = PATHSEG_CLOSEPATH;\r
4159         }\r
4160 \r
4161     /**\r
4162      *\r
4163      */\r
4164     SVGPathSegClosePath(const SVGPathSegClosePath &other) : SVGPathSeg(other)\r
4165         {\r
4166         type = PATHSEG_CLOSEPATH;\r
4167         }\r
4168 \r
4169     /**\r
4170      *\r
4171      */\r
4172     virtual ~SVGPathSegClosePath() {}\r
4173 \r
4174 };\r
4175 \r
4176 \r
4177 \r
4178 \r
4179 /*#########################################################################\r
4180 ## SVGPathSegMovetoAbs\r
4181 #########################################################################*/\r
4182 \r
4183 /**\r
4184  *\r
4185  */\r
4186 class SVGPathSegMovetoAbs : public SVGPathSeg\r
4187 {\r
4188 public:\r
4189 \r
4190     /**\r
4191      *\r
4192      */\r
4193     virtual double getX()\r
4194         { return x; }\r
4195 \r
4196     /**\r
4197      *\r
4198      */\r
4199     virtual void setX(double val) throw (DOMException)\r
4200         { x = val; }\r
4201 \r
4202     /**\r
4203      *\r
4204      */\r
4205     virtual double getY()\r
4206         { return y; }\r
4207 \r
4208     /**\r
4209      *\r
4210      */\r
4211     virtual void setY(double val) throw (DOMException)\r
4212         { y = val; }\r
4213 \r
4214     //##################\r
4215     //# Non-API methods\r
4216     //##################\r
4217 \r
4218     /**\r
4219      *\r
4220      */\r
4221     SVGPathSegMovetoAbs()\r
4222         {\r
4223         type = PATHSEG_MOVETO_ABS;\r
4224         x = y = 0.0;\r
4225         }\r
4226 \r
4227     /**\r
4228      *\r
4229      */\r
4230     SVGPathSegMovetoAbs(double xArg, double yArg)\r
4231         {\r
4232         type = PATHSEG_MOVETO_ABS;\r
4233         x = xArg; y = yArg;\r
4234         }\r
4235 \r
4236     /**\r
4237      *\r
4238      */\r
4239     SVGPathSegMovetoAbs(const SVGPathSegMovetoAbs &other) : SVGPathSeg(other)\r
4240         {\r
4241         type = PATHSEG_MOVETO_ABS;\r
4242         x = other.x; y = other.y;\r
4243         }\r
4244 \r
4245     /**\r
4246      *\r
4247      */\r
4248     virtual ~SVGPathSegMovetoAbs() {}\r
4249 \r
4250 protected:\r
4251 \r
4252     double x,y;\r
4253 \r
4254 };\r
4255 \r
4256 \r
4257 \r
4258 \r
4259 \r
4260 \r
4261 /*#########################################################################\r
4262 ## SVGPathSegMovetoRel\r
4263 #########################################################################*/\r
4264 \r
4265 /**\r
4266  *\r
4267  */\r
4268 class SVGPathSegMovetoRel : public SVGPathSeg\r
4269 {\r
4270 public:\r
4271 \r
4272     /**\r
4273      *\r
4274      */\r
4275     virtual double getX()\r
4276         { return x; }\r
4277 \r
4278     /**\r
4279      *\r
4280      */\r
4281     virtual void setX(double val) throw (DOMException)\r
4282         { x = val; }\r
4283 \r
4284     /**\r
4285      *\r
4286      */\r
4287     virtual double getY()\r
4288         { return y; }\r
4289 \r
4290     /**\r
4291      *\r
4292      */\r
4293     virtual void setY(double val) throw (DOMException)\r
4294         { y = val; }\r
4295 \r
4296     //##################\r
4297     //# Non-API methods\r
4298     //##################\r
4299 \r
4300     /**\r
4301      *\r
4302      */\r
4303     SVGPathSegMovetoRel()\r
4304         {\r
4305         type = PATHSEG_MOVETO_REL;\r
4306         x = y = 0.0;\r
4307         }\r
4308 \r
4309 \r
4310     /**\r
4311      *\r
4312      */\r
4313     SVGPathSegMovetoRel(double xArg, double yArg)\r
4314         {\r
4315         type = PATHSEG_MOVETO_REL;\r
4316         x = xArg; y = yArg;\r
4317         }\r
4318 \r
4319     /**\r
4320      *\r
4321      */\r
4322     SVGPathSegMovetoRel(const SVGPathSegMovetoRel &other) : SVGPathSeg(other)\r
4323         {\r
4324         type = PATHSEG_MOVETO_REL;\r
4325         x = other.x; y = other.y;\r
4326         }\r
4327 \r
4328     /**\r
4329      *\r
4330      */\r
4331     virtual ~SVGPathSegMovetoRel() {}\r
4332 \r
4333 protected:\r
4334 \r
4335     double x,y;\r
4336 };\r
4337 \r
4338 \r
4339 \r
4340 \r
4341 \r
4342 \r
4343 /*#########################################################################\r
4344 ## SVGPathSegLinetoAbs\r
4345 #########################################################################*/\r
4346 \r
4347 /**\r
4348  *\r
4349  */\r
4350 class SVGPathSegLinetoAbs : public SVGPathSeg\r
4351 {\r
4352 public:\r
4353 \r
4354     /**\r
4355      *\r
4356      */\r
4357     virtual double getX()\r
4358         { return x; }\r
4359 \r
4360     /**\r
4361      *\r
4362      */\r
4363     virtual void setX(double val) throw (DOMException)\r
4364         { x = val; }\r
4365 \r
4366     /**\r
4367      *\r
4368      */\r
4369     virtual double getY()\r
4370         { return y; }\r
4371 \r
4372     /**\r
4373      *\r
4374      */\r
4375     virtual void setY(double val) throw (DOMException)\r
4376         { y = val; }\r
4377 \r
4378     //##################\r
4379     //# Non-API methods\r
4380     //##################\r
4381 \r
4382     /**\r
4383      *\r
4384      */\r
4385     SVGPathSegLinetoAbs()\r
4386         {\r
4387         type = PATHSEG_LINETO_ABS;\r
4388         x = y = 0.0;\r
4389         }\r
4390 \r
4391 \r
4392     /**\r
4393      *\r
4394      */\r
4395     SVGPathSegLinetoAbs(double xArg, double yArg)\r
4396         {\r
4397         type = PATHSEG_LINETO_ABS;\r
4398         x = xArg; y = yArg;\r
4399         }\r
4400 \r
4401     /**\r
4402      *\r
4403      */\r
4404     SVGPathSegLinetoAbs(const SVGPathSegLinetoAbs &other) : SVGPathSeg(other)\r
4405         {\r
4406         type = PATHSEG_LINETO_ABS;\r
4407         x = other.x; y = other.y;\r
4408         }\r
4409 \r
4410     /**\r
4411      *\r
4412      */\r
4413     virtual ~SVGPathSegLinetoAbs() {}\r
4414 \r
4415 protected:\r
4416 \r
4417     double x,y;\r
4418 };\r
4419 \r
4420 \r
4421 \r
4422 \r
4423 \r
4424 \r
4425 /*#########################################################################\r
4426 ## SVGPathSegLinetoRel\r
4427 #########################################################################*/\r
4428 \r
4429 /**\r
4430  *\r
4431  */\r
4432 class SVGPathSegLinetoRel : public SVGPathSeg\r
4433 {\r
4434 public:\r
4435 \r
4436     /**\r
4437      *\r
4438      */\r
4439     virtual double getX()\r
4440         { return x; }\r
4441 \r
4442     /**\r
4443      *\r
4444      */\r
4445     virtual void setX(double val) throw (DOMException)\r
4446         { x = val; }\r
4447 \r
4448     /**\r
4449      *\r
4450      */\r
4451     virtual double getY()\r
4452         { return y; }\r
4453 \r
4454     /**\r
4455      *\r
4456      */\r
4457     virtual void setY(double val) throw (DOMException)\r
4458         { y = val; }\r
4459 \r
4460     //##################\r
4461     //# Non-API methods\r
4462     //##################\r
4463 \r
4464     /**\r
4465      *\r
4466      */\r
4467     SVGPathSegLinetoRel()\r
4468         {\r
4469         type = PATHSEG_LINETO_REL;\r
4470         x = y = 0.0;\r
4471         }\r
4472 \r
4473 \r
4474     /**\r
4475      *\r
4476      */\r
4477     SVGPathSegLinetoRel(double xArg, double yArg)\r
4478         {\r
4479         type = PATHSEG_LINETO_REL;\r
4480         x = xArg; y = yArg;\r
4481         }\r
4482 \r
4483     /**\r
4484      *\r
4485      */\r
4486     SVGPathSegLinetoRel(const SVGPathSegLinetoRel &other) : SVGPathSeg(other)\r
4487         {\r
4488         type = PATHSEG_LINETO_REL;\r
4489         x = other.x; y = other.y;\r
4490         }\r
4491 \r
4492     /**\r
4493      *\r
4494      */\r
4495     virtual ~SVGPathSegLinetoRel() {}\r
4496 \r
4497 protected:\r
4498 \r
4499     double x,y;\r
4500 };\r
4501 \r
4502 \r
4503 \r
4504 \r
4505 \r
4506 \r
4507 /*#########################################################################\r
4508 ## SVGPathSegCurvetoCubicAbs\r
4509 #########################################################################*/\r
4510 \r
4511 /**\r
4512  *\r
4513  */\r
4514 class SVGPathSegCurvetoCubicAbs : public SVGPathSeg\r
4515 {\r
4516 public:\r
4517 \r
4518     /**\r
4519      *\r
4520      */\r
4521     virtual double getX()\r
4522         { return x; }\r
4523 \r
4524     /**\r
4525      *\r
4526      */\r
4527     virtual void setX(double val) throw (DOMException)\r
4528         { x = val; }\r
4529 \r
4530     /**\r
4531      *\r
4532      */\r
4533     virtual double getY()\r
4534         { return y; }\r
4535 \r
4536     /**\r
4537      *\r
4538      */\r
4539     virtual void setY(double val) throw (DOMException)\r
4540         { y = val; }\r
4541 \r
4542     /**\r
4543      *\r
4544      */\r
4545     virtual double getX1()\r
4546         { return x1; }\r
4547 \r
4548     /**\r
4549      *\r
4550      */\r
4551     virtual void setX1(double val) throw (DOMException)\r
4552         { x1 = val; }\r
4553 \r
4554     /**\r
4555      *\r
4556      */\r
4557     virtual double getY1()\r
4558         { return y1; }\r
4559 \r
4560     /**\r
4561      *\r
4562      */\r
4563     virtual void setY1(double val) throw (DOMException)\r
4564         { y1 = val; }\r
4565 \r
4566 \r
4567     /**\r
4568      *\r
4569      */\r
4570     virtual double getX2()\r
4571         { return x2; }\r
4572 \r
4573     /**\r
4574      *\r
4575      */\r
4576     virtual void setX2(double val) throw (DOMException)\r
4577         { x2 = val; }\r
4578 \r
4579     /**\r
4580      *\r
4581      */\r
4582     virtual double getY2()\r
4583         { return y2; }\r
4584 \r
4585     /**\r
4586      *\r
4587      */\r
4588     virtual void setY2(double val) throw (DOMException)\r
4589         { y2 = val; }\r
4590 \r
4591 \r
4592     //##################\r
4593     //# Non-API methods\r
4594     //##################\r
4595 \r
4596 \r
4597     /**\r
4598      *\r
4599      */\r
4600     SVGPathSegCurvetoCubicAbs()\r
4601         {\r
4602         type = PATHSEG_CURVETO_CUBIC_ABS;\r
4603         x = y = x1 = y1 = x2 = y2 = 0.0;\r
4604         }\r
4605 \r
4606     /**\r
4607      *\r
4608      */\r
4609     SVGPathSegCurvetoCubicAbs(double xArg,  double yArg,\r
4610                               double x1Arg, double y1Arg,\r
4611                               double x2Arg, double y2Arg)\r
4612         {\r
4613         type = PATHSEG_CURVETO_CUBIC_ABS;\r
4614         x  = xArg;   y  = yArg;\r
4615         x1 = x1Arg;  y1 = y1Arg;\r
4616         x2 = x2Arg;  y2 = y2Arg;\r
4617         }\r
4618 \r
4619     /**\r
4620      *\r
4621      */\r
4622     SVGPathSegCurvetoCubicAbs(const SVGPathSegCurvetoCubicAbs &other)\r
4623                      : SVGPathSeg(other)\r
4624         {\r
4625         type = PATHSEG_CURVETO_CUBIC_ABS;\r
4626         x  = other.x;  y  = other.y;\r
4627         x1 = other.x1; y1 = other.y1;\r
4628         x2 = other.x2; y2 = other.y2;\r
4629         }\r
4630 \r
4631     /**\r
4632      *\r
4633      */\r
4634     virtual ~SVGPathSegCurvetoCubicAbs() {}\r
4635 \r
4636 protected:\r
4637 \r
4638     double x, y, x1, y1, x2, y2;\r
4639 \r
4640 };\r
4641 \r
4642 \r
4643 \r
4644 \r
4645 \r
4646 \r
4647 /*#########################################################################\r
4648 ## SVGPathSegCurvetoCubicRel\r
4649 #########################################################################*/\r
4650 \r
4651 /**\r
4652  *\r
4653  */\r
4654 class SVGPathSegCurvetoCubicRel : public SVGPathSeg\r
4655 {\r
4656 public:\r
4657 \r
4658     /**\r
4659      *\r
4660      */\r
4661     virtual double getX()\r
4662         { return x; }\r
4663 \r
4664     /**\r
4665      *\r
4666      */\r
4667     virtual void setX(double val) throw (DOMException)\r
4668         { x = val; }\r
4669 \r
4670     /**\r
4671      *\r
4672      */\r
4673     virtual double getY()\r
4674         { return y; }\r
4675 \r
4676     /**\r
4677      *\r
4678      */\r
4679     virtual void setY(double val) throw (DOMException)\r
4680         { y = val; }\r
4681 \r
4682     /**\r
4683      *\r
4684      */\r
4685     virtual double getX1()\r
4686         { return x1; }\r
4687 \r
4688     /**\r
4689      *\r
4690      */\r
4691     virtual void setX1(double val) throw (DOMException)\r
4692         { x1 = val; }\r
4693 \r
4694     /**\r
4695      *\r
4696      */\r
4697     virtual double getY1()\r
4698         { return y1; }\r
4699 \r
4700     /**\r
4701      *\r
4702      */\r
4703     virtual void setY1(double val) throw (DOMException)\r
4704         { y1 = val; }\r
4705 \r
4706 \r
4707     /**\r
4708      *\r
4709      */\r
4710     virtual double getX2()\r
4711         { return x2; }\r
4712 \r
4713     /**\r
4714      *\r
4715      */\r
4716     virtual void setX2(double val) throw (DOMException)\r
4717         { x2 = val; }\r
4718 \r
4719     /**\r
4720      *\r
4721      */\r
4722     virtual double getY2()\r
4723         { return y2; }\r
4724 \r
4725     /**\r
4726      *\r
4727      */\r
4728     virtual void setY2(double val) throw (DOMException)\r
4729         { y2 = val; }\r
4730 \r
4731 \r
4732     //##################\r
4733     //# Non-API methods\r
4734     //##################\r
4735 \r
4736 \r
4737     /**\r
4738      *\r
4739      */\r
4740     SVGPathSegCurvetoCubicRel()\r
4741         {\r
4742         type = PATHSEG_CURVETO_CUBIC_REL;\r
4743         x = y = x1 = y1 = x2 = y2 = 0.0;\r
4744         }\r
4745 \r
4746 \r
4747     /**\r
4748      *\r
4749      */\r
4750     SVGPathSegCurvetoCubicRel(double xArg,  double yArg,\r
4751                               double x1Arg, double y1Arg,\r
4752                               double x2Arg, double y2Arg)\r
4753         {\r
4754         type = PATHSEG_CURVETO_CUBIC_REL;\r
4755         x  = xArg;   y  = yArg;\r
4756         x1 = x1Arg;  y1 = y1Arg;\r
4757         x2 = x2Arg;  y2 = y2Arg;\r
4758         }\r
4759 \r
4760     /**\r
4761      *\r
4762      */\r
4763     SVGPathSegCurvetoCubicRel(const SVGPathSegCurvetoCubicRel &other)\r
4764                      : SVGPathSeg(other)\r
4765         {\r
4766         type = PATHSEG_CURVETO_CUBIC_REL;\r
4767         x  = other.x;  y  = other.y;\r
4768         x1 = other.x1; y1 = other.y1;\r
4769         x2 = other.x2; y2 = other.y2;\r
4770         }\r
4771 \r
4772     /**\r
4773      *\r
4774      */\r
4775     virtual ~SVGPathSegCurvetoCubicRel() {}\r
4776 \r
4777 protected:\r
4778 \r
4779     double x, y, x1, y1, x2, y2;\r
4780 \r
4781 };\r
4782 \r
4783 \r
4784 \r
4785 \r
4786 \r
4787 \r
4788 /*#########################################################################\r
4789 ## SVGPathSegCurvetoQuadraticAbs\r
4790 #########################################################################*/\r
4791 \r
4792 /**\r
4793  *\r
4794  */\r
4795 class SVGPathSegCurvetoQuadraticAbs : public SVGPathSeg\r
4796 {\r
4797 public:\r
4798 \r
4799     /**\r
4800      *\r
4801      */\r
4802     virtual double getX()\r
4803         { return x; }\r
4804 \r
4805     /**\r
4806      *\r
4807      */\r
4808     virtual void setX(double val) throw (DOMException)\r
4809         { x = val; }\r
4810 \r
4811     /**\r
4812      *\r
4813      */\r
4814     virtual double getY()\r
4815         { return y; }\r
4816 \r
4817     /**\r
4818      *\r
4819      */\r
4820     virtual void setY(double val) throw (DOMException)\r
4821         { y = val; }\r
4822 \r
4823     /**\r
4824      *\r
4825      */\r
4826     virtual double getX1()\r
4827         { return x1; }\r
4828 \r
4829     /**\r
4830      *\r
4831      */\r
4832     virtual void setX1(double val) throw (DOMException)\r
4833         { x1 = val; }\r
4834 \r
4835     /**\r
4836      *\r
4837      */\r
4838     virtual double getY1()\r
4839         { return y1; }\r
4840 \r
4841     /**\r
4842      *\r
4843      */\r
4844     virtual void setY1(double val) throw (DOMException)\r
4845         { y1 = val; }\r
4846 \r
4847 \r
4848     //##################\r
4849     //# Non-API methods\r
4850     //##################\r
4851 \r
4852 \r
4853     /**\r
4854      *\r
4855      */\r
4856     SVGPathSegCurvetoQuadraticAbs()\r
4857         {\r
4858         type = PATHSEG_CURVETO_QUADRATIC_ABS;\r
4859         x = y = x1 = y1 = 0.0;\r
4860         }\r
4861 \r
4862     /**\r
4863      *\r
4864      */\r
4865     SVGPathSegCurvetoQuadraticAbs(double xArg,  double yArg,\r
4866                               double x1Arg, double y1Arg)\r
4867         {\r
4868         type = PATHSEG_CURVETO_QUADRATIC_ABS;\r
4869         x  = xArg;   y  = yArg;\r
4870         x1 = x1Arg;  y1 = y1Arg;\r
4871         }\r
4872 \r
4873     /**\r
4874      *\r
4875      */\r
4876     SVGPathSegCurvetoQuadraticAbs(const SVGPathSegCurvetoQuadraticAbs &other)\r
4877                      : SVGPathSeg(other)\r
4878         {\r
4879         type = PATHSEG_CURVETO_QUADRATIC_ABS;\r
4880         x  = other.x;  y  = other.y;\r
4881         x1 = other.x1; y1 = other.y1;\r
4882         }\r
4883 \r
4884     /**\r
4885      *\r
4886      */\r
4887     virtual ~SVGPathSegCurvetoQuadraticAbs() {}\r
4888 \r
4889 protected:\r
4890 \r
4891     double x, y, x1, y1;\r
4892 \r
4893 };\r
4894 \r
4895 \r
4896 \r
4897 \r
4898 \r
4899 \r
4900 /*#########################################################################\r
4901 ## SVGPathSegCurvetoQuadraticRel\r
4902 #########################################################################*/\r
4903 \r
4904 /**\r
4905  *\r
4906  */\r
4907 class SVGPathSegCurvetoQuadraticRel : public SVGPathSeg\r
4908 {\r
4909 public:\r
4910 \r
4911     /**\r
4912      *\r
4913      */\r
4914     virtual double getX()\r
4915         { return x; }\r
4916 \r
4917     /**\r
4918      *\r
4919      */\r
4920     virtual void setX(double val) throw (DOMException)\r
4921         { x = val; }\r
4922 \r
4923     /**\r
4924      *\r
4925      */\r
4926     virtual double getY()\r
4927         { return y; }\r
4928 \r
4929     /**\r
4930      *\r
4931      */\r
4932     virtual void setY(double val) throw (DOMException)\r
4933         { y = val; }\r
4934 \r
4935     /**\r
4936      *\r
4937      */\r
4938     virtual double getX1()\r
4939         { return x1; }\r
4940 \r
4941     /**\r
4942      *\r
4943      */\r
4944     virtual void setX1(double val) throw (DOMException)\r
4945         { x1 = val; }\r
4946 \r
4947     /**\r
4948      *\r
4949      */\r
4950     virtual double getY1()\r
4951         { return y1; }\r
4952 \r
4953     /**\r
4954      *\r
4955      */\r
4956     virtual void setY1(double val) throw (DOMException)\r
4957         { y1 = val; }\r
4958 \r
4959 \r
4960     //##################\r
4961     //# Non-API methods\r
4962     //##################\r
4963 \r
4964 \r
4965     /**\r
4966      *\r
4967      */\r
4968     SVGPathSegCurvetoQuadraticRel()\r
4969         {\r
4970         type = PATHSEG_CURVETO_QUADRATIC_REL;\r
4971         x = y = x1 = y1 = 0.0;\r
4972         }\r
4973 \r
4974 \r
4975     /**\r
4976      *\r
4977      */\r
4978     SVGPathSegCurvetoQuadraticRel(double xArg,  double yArg,\r
4979                                   double x1Arg, double y1Arg)\r
4980         {\r
4981         type = PATHSEG_CURVETO_QUADRATIC_REL;\r
4982         x  = xArg;   y  = yArg;\r
4983         x1 = x1Arg;  y1 = y1Arg;\r
4984         }\r
4985 \r
4986     /**\r
4987      *\r
4988      */\r
4989     SVGPathSegCurvetoQuadraticRel(const SVGPathSegCurvetoQuadraticRel &other)\r
4990                      : SVGPathSeg(other)\r
4991         {\r
4992         type = PATHSEG_CURVETO_QUADRATIC_REL;\r
4993         x  = other.x;  y  = other.y;\r
4994         x1 = other.x1; y1 = other.y1;\r
4995         }\r
4996 \r
4997     /**\r
4998      *\r
4999      */\r
5000     virtual ~SVGPathSegCurvetoQuadraticRel() {}\r
5001 \r
5002 protected:\r
5003 \r
5004     double x, y, x1, y1;\r
5005 \r
5006 };\r
5007 \r
5008 \r
5009 \r
5010 \r
5011 \r
5012 \r
5013 /*#########################################################################\r
5014 ## SVGPathSegArcAbs\r
5015 #########################################################################*/\r
5016 \r
5017 /**\r
5018  *\r
5019  */\r
5020 class SVGPathSegArcAbs : public SVGPathSeg\r
5021 {\r
5022 public:\r
5023 \r
5024     /**\r
5025      *\r
5026      */\r
5027     virtual double getX()\r
5028         { return x; }\r
5029 \r
5030     /**\r
5031      *\r
5032      */\r
5033     virtual void setX(double val) throw (DOMException)\r
5034         { x = val; }\r
5035 \r
5036     /**\r
5037      *\r
5038      */\r
5039     virtual double getY()\r
5040         { return y; }\r
5041 \r
5042     /**\r
5043      *\r
5044      */\r
5045     virtual void setY(double val) throw (DOMException)\r
5046         { y = val; }\r
5047 \r
5048     /**\r
5049      *\r
5050      */\r
5051     virtual double getR1()\r
5052         { return r1; }\r
5053 \r
5054     /**\r
5055      *\r
5056      */\r
5057     virtual void setR1(double val) throw (DOMException)\r
5058         { r1 = val; }\r
5059 \r
5060     /**\r
5061      *\r
5062      */\r
5063     virtual double getR2()\r
5064         { return r2; }\r
5065 \r
5066     /**\r
5067      *\r
5068      */\r
5069     virtual void setR2(double val) throw (DOMException)\r
5070         { r2 = val; }\r
5071 \r
5072     /**\r
5073      *\r
5074      */\r
5075     virtual double getAngle()\r
5076         { return angle; }\r
5077 \r
5078     /**\r
5079      *\r
5080      */\r
5081     virtual void setAngle(double val) throw (DOMException)\r
5082         { angle = val; }\r
5083 \r
5084     /**\r
5085      *\r
5086      */\r
5087     virtual bool getLargeArcFlag()\r
5088         { return largeArcFlag; }\r
5089 \r
5090     /**\r
5091      *\r
5092      */\r
5093     virtual void setLargeArcFlag(bool val) throw (DOMException)\r
5094         { largeArcFlag = val; }\r
5095 \r
5096     /**\r
5097      *\r
5098      */\r
5099     virtual bool getSweepFlag()\r
5100         { return sweepFlag; }\r
5101 \r
5102     /**\r
5103      *\r
5104      */\r
5105     virtual void setSweepFlag(bool val) throw (DOMException)\r
5106         { sweepFlag = val; }\r
5107 \r
5108     //##################\r
5109     //# Non-API methods\r
5110     //##################\r
5111 \r
5112 \r
5113     /**\r
5114      *\r
5115      */\r
5116     SVGPathSegArcAbs()\r
5117         {\r
5118         type = PATHSEG_ARC_ABS;\r
5119         x = y = r1 = r2 = angle = 0.0;\r
5120         largeArcFlag = sweepFlag = false;\r
5121         }\r
5122 \r
5123     /**\r
5124      *\r
5125      */\r
5126     SVGPathSegArcAbs(double xArg,  double yArg,\r
5127                      double r1Arg, double r2Arg,\r
5128                      double angleArg,\r
5129                      bool largeArcFlagArg,\r
5130                      bool sweepFlagArg )\r
5131 \r
5132         {\r
5133         type = PATHSEG_ARC_ABS;\r
5134         x  = xArg;   y  = yArg;\r
5135         r1 = r1Arg;  r2 = r2Arg;\r
5136         angle        = angleArg;\r
5137         largeArcFlag = largeArcFlagArg;\r
5138         sweepFlag    = sweepFlagArg;\r
5139         }\r
5140 \r
5141     /**\r
5142      *\r
5143      */\r
5144     SVGPathSegArcAbs(const SVGPathSegArcAbs &other)\r
5145                      : SVGPathSeg(other)\r
5146         {\r
5147         type = PATHSEG_ARC_ABS;\r
5148         x  = other.x;  y  = other.y;\r
5149         r1 = other.r1; r2 = other.r2;\r
5150         angle        = other.angle;\r
5151         largeArcFlag = other.largeArcFlag;\r
5152         sweepFlag    = other.sweepFlag;\r
5153         }\r
5154 \r
5155     /**\r
5156      *\r
5157      */\r
5158     virtual ~SVGPathSegArcAbs() {}\r
5159 \r
5160 protected:\r
5161 \r
5162     double x, y, r1, r2, angle;\r
5163     bool largeArcFlag;\r
5164     bool sweepFlag;\r
5165 \r
5166 };\r
5167 \r
5168 \r
5169 \r
5170 /*#########################################################################\r
5171 ## SVGPathSegArcRel\r
5172 #########################################################################*/\r
5173 \r
5174 /**\r
5175  *\r
5176  */\r
5177 class SVGPathSegArcRel : public SVGPathSeg\r
5178 {\r
5179 public:\r
5180 \r
5181     /**\r
5182      *\r
5183      */\r
5184     virtual double getX()\r
5185         { return x; }\r
5186 \r
5187     /**\r
5188      *\r
5189      */\r
5190     virtual void setX(double val) throw (DOMException)\r
5191         { x = val; }\r
5192 \r
5193     /**\r
5194      *\r
5195      */\r
5196     virtual double getY()\r
5197         { return y; }\r
5198 \r
5199     /**\r
5200      *\r
5201      */\r
5202     virtual void setY(double val) throw (DOMException)\r
5203         { y = val; }\r
5204 \r
5205     /**\r
5206      *\r
5207      */\r
5208     virtual double getR1()\r
5209         { return r1; }\r
5210 \r
5211     /**\r
5212      *\r
5213      */\r
5214     virtual void setR1(double val) throw (DOMException)\r
5215         { r1 = val; }\r
5216 \r
5217     /**\r
5218      *\r
5219      */\r
5220     virtual double getR2()\r
5221         { return r2; }\r
5222 \r
5223     /**\r
5224      *\r
5225      */\r
5226     virtual void setR2(double val) throw (DOMException)\r
5227         { r2 = val; }\r
5228 \r
5229     /**\r
5230      *\r
5231      */\r
5232     virtual double getAngle()\r
5233         { return angle; }\r
5234 \r
5235     /**\r
5236      *\r
5237      */\r
5238     virtual void setAngle(double val) throw (DOMException)\r
5239         { angle = val; }\r
5240 \r
5241     /**\r
5242      *\r
5243      */\r
5244     virtual bool getLargeArcFlag()\r
5245         { return largeArcFlag; }\r
5246 \r
5247     /**\r
5248      *\r
5249      */\r
5250     virtual void setLargeArcFlag(bool val) throw (DOMException)\r
5251         { largeArcFlag = val; }\r
5252 \r
5253     /**\r
5254      *\r
5255      */\r
5256     virtual bool getSweepFlag()\r
5257         { return sweepFlag; }\r
5258 \r
5259     /**\r
5260      *\r
5261      */\r
5262     virtual void setSweepFlag(bool val) throw (DOMException)\r
5263         { sweepFlag = val; }\r
5264 \r
5265     //##################\r
5266     //# Non-API methods\r
5267     //##################\r
5268 \r
5269 \r
5270     /**\r
5271      *\r
5272      */\r
5273     SVGPathSegArcRel()\r
5274         {\r
5275         type = PATHSEG_ARC_REL;\r
5276         x = y = r1 = r2 = angle = 0.0;\r
5277         largeArcFlag = sweepFlag = false;\r
5278         }\r
5279 \r
5280 \r
5281     /**\r
5282      *\r
5283      */\r
5284     SVGPathSegArcRel(double xArg, double yArg,\r
5285                      double r1Arg, double r2Arg,\r
5286                      double angleArg,\r
5287                      bool largeArcFlagArg,\r
5288                      bool sweepFlagArg )\r
5289 \r
5290         {\r
5291         type = PATHSEG_ARC_REL;\r
5292         x  = xArg;   y  = yArg;\r
5293         r1 = r1Arg;  r2 = r2Arg;\r
5294         angle        = angleArg;\r
5295         largeArcFlag = largeArcFlagArg;\r
5296         sweepFlag    = sweepFlagArg;\r
5297         }\r
5298 \r
5299     /**\r
5300      *\r
5301      */\r
5302     SVGPathSegArcRel(const SVGPathSegArcRel &other)\r
5303                      : SVGPathSeg(other)\r
5304         {\r
5305         type = PATHSEG_ARC_REL;\r
5306         x  = other.x;  y  = other.y;\r
5307         r1 = other.r1; r2 = other.r2;\r
5308         angle        = other.angle;\r
5309         largeArcFlag = other.largeArcFlag;\r
5310         sweepFlag    = other.sweepFlag;\r
5311         }\r
5312 \r
5313     /**\r
5314      *\r
5315      */\r
5316     virtual ~SVGPathSegArcRel() {}\r
5317 \r
5318 protected:\r
5319 \r
5320     double x, y, r1, r2, angle;\r
5321     bool largeArcFlag;\r
5322     bool sweepFlag;\r
5323 \r
5324 };\r
5325 \r
5326 \r
5327 \r
5328 \r
5329 \r
5330 \r
5331 /*#########################################################################\r
5332 ## SVGPathSegLinetoHorizontalAbs\r
5333 #########################################################################*/\r
5334 \r
5335 /**\r
5336  *\r
5337  */\r
5338 class SVGPathSegLinetoHorizontalAbs : public SVGPathSeg\r
5339 {\r
5340 public:\r
5341 \r
5342     /**\r
5343      *\r
5344      */\r
5345     virtual double getX()\r
5346         { return x; }\r
5347 \r
5348     /**\r
5349      *\r
5350      */\r
5351     virtual void setX(double val) throw (DOMException)\r
5352         { x = val; }\r
5353 \r
5354     //##################\r
5355     //# Non-API methods\r
5356     //##################\r
5357 \r
5358     /**\r
5359      *\r
5360      */\r
5361     SVGPathSegLinetoHorizontalAbs()\r
5362         {\r
5363         type = PATHSEG_LINETO_HORIZONTAL_ABS;\r
5364         x = 0.0;\r
5365         }\r
5366 \r
5367 \r
5368     /**\r
5369      *\r
5370      */\r
5371     SVGPathSegLinetoHorizontalAbs(double xArg)\r
5372         {\r
5373         type = PATHSEG_LINETO_HORIZONTAL_ABS;\r
5374         x = xArg;\r
5375         }\r
5376 \r
5377     /**\r
5378      *\r
5379      */\r
5380     SVGPathSegLinetoHorizontalAbs(const SVGPathSegLinetoHorizontalAbs &other)\r
5381                      : SVGPathSeg(other)\r
5382         {\r
5383         type = PATHSEG_LINETO_HORIZONTAL_ABS;\r
5384         x = other.x;\r
5385         }\r
5386 \r
5387     /**\r
5388      *\r
5389      */\r
5390     virtual ~SVGPathSegLinetoHorizontalAbs() {}\r
5391 \r
5392 protected:\r
5393 \r
5394     double x;\r
5395 \r
5396 };\r
5397 \r
5398 \r
5399 \r
5400 \r
5401 \r
5402 \r
5403 /*#########################################################################\r
5404 ## SVGPathSegLinetoHorizontalRel\r
5405 #########################################################################*/\r
5406 \r
5407 /**\r
5408  *\r
5409  */\r
5410 class SVGPathSegLinetoHorizontalRel : public SVGPathSeg\r
5411 {\r
5412 public:\r
5413 \r
5414     /**\r
5415      *\r
5416      */\r
5417     virtual double getX()\r
5418         { return x; }\r
5419 \r
5420     /**\r
5421      *\r
5422      */\r
5423     virtual void setX(double val) throw (DOMException)\r
5424         { x = val; }\r
5425 \r
5426     //##################\r
5427     //# Non-API methods\r
5428     //##################\r
5429 \r
5430     /**\r
5431      *\r
5432      */\r
5433     SVGPathSegLinetoHorizontalRel()\r
5434         {\r
5435         type = PATHSEG_LINETO_HORIZONTAL_REL;\r
5436         x = 0.0;\r
5437         }\r
5438 \r
5439 \r
5440     /**\r
5441      *\r
5442      */\r
5443     SVGPathSegLinetoHorizontalRel(double xArg)\r
5444         {\r
5445         type = PATHSEG_LINETO_HORIZONTAL_REL;\r
5446         x = xArg;\r
5447         }\r
5448 \r
5449     /**\r
5450      *\r
5451      */\r
5452     SVGPathSegLinetoHorizontalRel(const SVGPathSegLinetoHorizontalRel &other)\r
5453                      : SVGPathSeg(other)\r
5454         {\r
5455         type = PATHSEG_LINETO_HORIZONTAL_REL;\r
5456         x = other.x;\r
5457         }\r
5458 \r
5459     /**\r
5460      *\r
5461      */\r
5462     virtual ~SVGPathSegLinetoHorizontalRel() {}\r
5463 \r
5464 protected:\r
5465 \r
5466     double x;\r
5467 \r
5468 };\r
5469 \r
5470 \r
5471 \r
5472 /*#########################################################################\r
5473 ## SVGPathSegLinetoVerticalAbs\r
5474 #########################################################################*/\r
5475 \r
5476 /**\r
5477  *\r
5478  */\r
5479 class SVGPathSegLinetoVerticalAbs : public SVGPathSeg\r
5480 {\r
5481 public:\r
5482 \r
5483     /**\r
5484      *\r
5485      */\r
5486     virtual double getY()\r
5487         { return y; }\r
5488 \r
5489     /**\r
5490      *\r
5491      */\r
5492     virtual void setY(double val) throw (DOMException)\r
5493         { y = val; }\r
5494 \r
5495     //##################\r
5496     //# Non-API methods\r
5497     //##################\r
5498 \r
5499     /**\r
5500      *\r
5501      */\r
5502     SVGPathSegLinetoVerticalAbs()\r
5503         {\r
5504         type = PATHSEG_LINETO_VERTICAL_ABS;\r
5505         y = 0.0;\r
5506         }\r
5507 \r
5508 \r
5509     /**\r
5510      *\r
5511      */\r
5512     SVGPathSegLinetoVerticalAbs(double yArg)\r
5513         {\r
5514         type = PATHSEG_LINETO_VERTICAL_ABS;\r
5515         y = yArg;\r
5516         }\r
5517 \r
5518     /**\r
5519      *\r
5520      */\r
5521     SVGPathSegLinetoVerticalAbs(const SVGPathSegLinetoVerticalAbs &other)\r
5522                      : SVGPathSeg(other)\r
5523         {\r
5524         type = PATHSEG_LINETO_VERTICAL_ABS;\r
5525         y = other.y;\r
5526         }\r
5527 \r
5528     /**\r
5529      *\r
5530      */\r
5531     virtual ~SVGPathSegLinetoVerticalAbs() {}\r
5532 \r
5533 protected:\r
5534 \r
5535     double y;\r
5536 \r
5537 };\r
5538 \r
5539 \r
5540 \r
5541 /*#########################################################################\r
5542 ## SVGPathSegLinetoVerticalRel\r
5543 #########################################################################*/\r
5544 \r
5545 /**\r
5546  *\r
5547  */\r
5548 class SVGPathSegLinetoVerticalRel : public SVGPathSeg\r
5549 {\r
5550 public:\r
5551 \r
5552     /**\r
5553      *\r
5554      */\r
5555     virtual double getY()\r
5556         { return y; }\r
5557 \r
5558     /**\r
5559      *\r
5560      */\r
5561     virtual void setY(double val) throw (DOMException)\r
5562         { y = val; }\r
5563 \r
5564     //##################\r
5565     //# Non-API methods\r
5566     //##################\r
5567 \r
5568     /**\r
5569      *\r
5570      */\r
5571     SVGPathSegLinetoVerticalRel()\r
5572         {\r
5573         type = PATHSEG_LINETO_VERTICAL_REL;\r
5574         y = 0.0;\r
5575         }\r
5576 \r
5577 \r
5578     /**\r
5579      *\r
5580      */\r
5581     SVGPathSegLinetoVerticalRel(double yArg)\r
5582         {\r
5583         type = PATHSEG_LINETO_VERTICAL_REL;\r
5584         y = yArg;\r
5585         }\r
5586 \r
5587     /**\r
5588      *\r
5589      */\r
5590     SVGPathSegLinetoVerticalRel(const SVGPathSegLinetoVerticalRel &other)\r
5591                      : SVGPathSeg(other)\r
5592         {\r
5593         type = PATHSEG_LINETO_VERTICAL_REL;\r
5594         y = other.y;\r
5595         }\r
5596 \r
5597     /**\r
5598      *\r
5599      */\r
5600     virtual ~SVGPathSegLinetoVerticalRel() {}\r
5601 \r
5602 protected:\r
5603 \r
5604     double y;\r
5605 \r
5606 };\r
5607 \r
5608 \r
5609 \r
5610 \r
5611 \r
5612 \r
5613 /*#########################################################################\r
5614 ## SVGPathSegCurvetoCubicSmoothAbs\r
5615 #########################################################################*/\r
5616 \r
5617 /**\r
5618  *\r
5619  */\r
5620 class SVGPathSegCurvetoCubicSmoothAbs : public SVGPathSeg\r
5621 {\r
5622 public:\r
5623 \r
5624     /**\r
5625      *\r
5626      */\r
5627     virtual double getX()\r
5628         { return x; }\r
5629 \r
5630     /**\r
5631      *\r
5632      */\r
5633     virtual void setX(double val) throw (DOMException)\r
5634         { x = val; }\r
5635 \r
5636     /**\r
5637      *\r
5638      */\r
5639     virtual double getY()\r
5640         { return y; }\r
5641 \r
5642     /**\r
5643      *\r
5644      */\r
5645     virtual void setY(double val) throw (DOMException)\r
5646         { y = val; }\r
5647 \r
5648     /**\r
5649      *\r
5650      */\r
5651     virtual double getX2()\r
5652         { return x2; }\r
5653 \r
5654     /**\r
5655      *\r
5656      */\r
5657     virtual void setX2(double val) throw (DOMException)\r
5658         { x2 = val; }\r
5659 \r
5660     /**\r
5661      *\r
5662      */\r
5663     virtual double getY2()\r
5664         { return y2; }\r
5665 \r
5666     /**\r
5667      *\r
5668      */\r
5669     virtual void setY2(double val) throw (DOMException)\r
5670         { y2 = val; }\r
5671 \r
5672 \r
5673     //##################\r
5674     //# Non-API methods\r
5675     //##################\r
5676 \r
5677     /**\r
5678      *\r
5679      */\r
5680     SVGPathSegCurvetoCubicSmoothAbs()\r
5681         {\r
5682         type = PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;\r
5683         x = y = x2 = y2 = 0.0;\r
5684         }\r
5685 \r
5686 \r
5687     /**\r
5688      *\r
5689      */\r
5690     SVGPathSegCurvetoCubicSmoothAbs(double xArg,   double yArg,\r
5691                                     double x2Arg, double y2Arg)\r
5692         {\r
5693         type = PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;\r
5694         x  = xArg;    y  = yArg;\r
5695         x2 = x2Arg;   y2 = y2Arg;\r
5696         }\r
5697 \r
5698     /**\r
5699      *\r
5700      */\r
5701     SVGPathSegCurvetoCubicSmoothAbs(const SVGPathSegCurvetoCubicSmoothAbs &other)\r
5702                      : SVGPathSeg(other)\r
5703         {\r
5704         type = PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;\r
5705         x  = other.x;  y  = other.y;\r
5706         x2 = other.x2; y2 = other.y2;\r
5707         }\r
5708 \r
5709     /**\r
5710      *\r
5711      */\r
5712     virtual ~SVGPathSegCurvetoCubicSmoothAbs() {}\r
5713 \r
5714 protected:\r
5715 \r
5716     double x, y, x2, y2;\r
5717 \r
5718 };\r
5719 \r
5720 \r
5721 \r
5722 /*#########################################################################\r
5723 ## SVGPathSegCurvetoCubicSmoothRel\r
5724 #########################################################################*/\r
5725 \r
5726 /**\r
5727  *\r
5728  */\r
5729 class SVGPathSegCurvetoCubicSmoothRel : public SVGPathSeg\r
5730 {\r
5731 public:\r
5732 \r
5733     /**\r
5734      *\r
5735      */\r
5736     virtual double getX()\r
5737         { return x; }\r
5738 \r
5739     /**\r
5740      *\r
5741      */\r
5742     virtual void setX(double val) throw (DOMException)\r
5743         { x = val; }\r
5744 \r
5745     /**\r
5746      *\r
5747      */\r
5748     virtual double getY()\r
5749         { return y; }\r
5750 \r
5751     /**\r
5752      *\r
5753      */\r
5754     virtual void setY(double val) throw (DOMException)\r
5755         { y = val; }\r
5756 \r
5757     /**\r
5758      *\r
5759      */\r
5760     virtual double getX2()\r
5761         { return x2; }\r
5762 \r
5763     /**\r
5764      *\r
5765      */\r
5766     virtual void setX2(double val) throw (DOMException)\r
5767         { x2 = val; }\r
5768 \r
5769     /**\r
5770      *\r
5771      */\r
5772     virtual double getY2()\r
5773         { return y2; }\r
5774 \r
5775     /**\r
5776      *\r
5777      */\r
5778     virtual void setY2(double val) throw (DOMException)\r
5779         { y2 = val; }\r
5780 \r
5781 \r
5782     //##################\r
5783     //# Non-API methods\r
5784     //##################\r
5785 \r
5786     /**\r
5787      *\r
5788      */\r
5789     SVGPathSegCurvetoCubicSmoothRel()\r
5790         {\r
5791         type = PATHSEG_CURVETO_CUBIC_SMOOTH_REL;\r
5792         x = y = x2 = y2 = 0.0;\r
5793         }\r
5794 \r
5795 \r
5796     /**\r
5797      *\r
5798      */\r
5799     SVGPathSegCurvetoCubicSmoothRel(double xArg,   double yArg,\r
5800                                     double x2Arg, double y2Arg)\r
5801         {\r
5802         type = PATHSEG_CURVETO_CUBIC_SMOOTH_REL;\r
5803         x  = xArg;    y  = yArg;\r
5804         x2 = x2Arg;   y2 = y2Arg;\r
5805         }\r
5806 \r
5807     /**\r
5808      *\r
5809      */\r
5810     SVGPathSegCurvetoCubicSmoothRel(const SVGPathSegCurvetoCubicSmoothRel &other)\r
5811                      : SVGPathSeg(other)\r
5812         {\r
5813         type = PATHSEG_CURVETO_CUBIC_SMOOTH_REL;\r
5814         x  = other.x;  y  = other.y;\r
5815         x2 = other.x2; y2 = other.y2;\r
5816         }\r
5817 \r
5818     /**\r
5819      *\r
5820      */\r
5821     virtual ~SVGPathSegCurvetoCubicSmoothRel() {}\r
5822 \r
5823 protected:\r
5824 \r
5825     double x, y, x2, y2;\r
5826 \r
5827 };\r
5828 \r
5829 \r
5830 \r
5831 \r
5832 \r
5833 \r
5834 /*#########################################################################\r
5835 ## SVGPathSegCurvetoQuadraticSmoothAbs\r
5836 #########################################################################*/\r
5837 \r
5838 /**\r
5839  *\r
5840  */\r
5841 class SVGPathSegCurvetoQuadraticSmoothAbs : public SVGPathSeg\r
5842 {\r
5843 public:\r
5844 \r
5845     /**\r
5846      *\r
5847      */\r
5848     virtual double getX()\r
5849         { return x; }\r
5850 \r
5851     /**\r
5852      *\r
5853      */\r
5854     virtual void setX(double val) throw (DOMException)\r
5855         { x = val; }\r
5856 \r
5857     /**\r
5858      *\r
5859      */\r
5860     virtual double getY()\r
5861         { return y; }\r
5862 \r
5863     /**\r
5864      *\r
5865      */\r
5866     virtual void setY(double val) throw (DOMException)\r
5867         { y = val; }\r
5868 \r
5869 \r
5870 \r
5871     //##################\r
5872     //# Non-API methods\r
5873     //##################\r
5874 \r
5875     /**\r
5876      *\r
5877      */\r
5878     SVGPathSegCurvetoQuadraticSmoothAbs()\r
5879         {\r
5880         type = PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;\r
5881         x = y = 0.0;\r
5882         }\r
5883 \r
5884 \r
5885     /**\r
5886      *\r
5887      */\r
5888     SVGPathSegCurvetoQuadraticSmoothAbs(double xArg, double yArg)\r
5889         {\r
5890         type = PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;\r
5891         x = xArg;     y = yArg;\r
5892         }\r
5893 \r
5894     /**\r
5895      *\r
5896      */\r
5897     SVGPathSegCurvetoQuadraticSmoothAbs(const SVGPathSegCurvetoQuadraticSmoothAbs &other)\r
5898                      : SVGPathSeg(other)\r
5899         {\r
5900         type = PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;\r
5901         x = y = 0.0;\r
5902         }\r
5903 \r
5904     /**\r
5905      *\r
5906      */\r
5907     virtual ~SVGPathSegCurvetoQuadraticSmoothAbs() {}\r
5908 \r
5909 protected:\r
5910 \r
5911     double x, y;\r
5912 \r
5913 };\r
5914 \r
5915 \r
5916 \r
5917 \r
5918 \r
5919 \r
5920 /*#########################################################################\r
5921 ## SVGPathSegCurvetoQuadraticSmoothRel\r
5922 #########################################################################*/\r
5923 \r
5924 /**\r
5925  *\r
5926  */\r
5927 class SVGPathSegCurvetoQuadraticSmoothRel : public SVGPathSeg\r
5928 {\r
5929 public:\r
5930 \r
5931     /**\r
5932      *\r
5933      */\r
5934     virtual double getX()\r
5935         { return x; }\r
5936 \r
5937     /**\r
5938      *\r
5939      */\r
5940     virtual void setX(double val) throw (DOMException)\r
5941         { x = val; }\r
5942 \r
5943     /**\r
5944      *\r
5945      */\r
5946     virtual double getY()\r
5947         { return y; }\r
5948 \r
5949     /**\r
5950      *\r
5951      */\r
5952     virtual void setY(double val) throw (DOMException)\r
5953         { y = val; }\r
5954 \r
5955 \r
5956 \r
5957     //##################\r
5958     //# Non-API methods\r
5959     //##################\r
5960 \r
5961     /**\r
5962      *\r
5963      */\r
5964     SVGPathSegCurvetoQuadraticSmoothRel()\r
5965         {\r
5966         type = PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;\r
5967         x = y = 0.0;\r
5968         }\r
5969 \r
5970 \r
5971     /**\r
5972      *\r
5973      */\r
5974     SVGPathSegCurvetoQuadraticSmoothRel(double xArg, double yArg)\r
5975         {\r
5976         type = PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;\r
5977         x = xArg;     y = yArg;\r
5978         }\r
5979 \r
5980     /**\r
5981      *\r
5982      */\r
5983     SVGPathSegCurvetoQuadraticSmoothRel(const SVGPathSegCurvetoQuadraticSmoothRel &other)\r
5984                      : SVGPathSeg(other)\r
5985         {\r
5986         type = PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;\r
5987         x = y = 0.0;\r
5988         }\r
5989 \r
5990     /**\r
5991      *\r
5992      */\r
5993     virtual ~SVGPathSegCurvetoQuadraticSmoothRel() {}\r
5994 \r
5995 protected:\r
5996 \r
5997     double x, y;\r
5998 \r
5999 };\r
6000 \r
6001 \r
6002 \r
6003 \r
6004 \r
6005 \r
6006 /*#########################################################################\r
6007 ## SVGPathSegList\r
6008 #########################################################################*/\r
6009 \r
6010 /**\r
6011  *\r
6012  */\r
6013 class SVGPathSegList\r
6014 {\r
6015 public:\r
6016 \r
6017     /**\r
6018      *\r
6019      */\r
6020     virtual unsigned long getNumberOfItems()\r
6021         { return items.size(); }\r
6022 \r
6023 \r
6024     /**\r
6025      *\r
6026      */\r
6027     virtual void clear () throw( DOMException )\r
6028         { items.clear(); }\r
6029 \r
6030     /**\r
6031      *\r
6032      */\r
6033     virtual SVGPathSeg initialize (const SVGPathSeg &newItem)\r
6034                     throw( DOMException, SVGException )\r
6035         {\r
6036         items.clear();\r
6037         items.push_back(newItem);\r
6038         return newItem;\r
6039         }\r
6040 \r
6041     /**\r
6042      *\r
6043      */\r
6044     virtual SVGPathSeg getItem (unsigned long index)\r
6045                     throw( DOMException )\r
6046         {\r
6047         if (index >= items.size())\r
6048             {\r
6049             SVGPathSeg seg;\r
6050             return seg;\r
6051             }\r
6052         return items[index];\r
6053         }\r
6054 \r
6055     /**\r
6056      *\r
6057      */\r
6058     virtual SVGPathSeg insertItemBefore(const SVGPathSeg &newItem,\r
6059                                         unsigned long index )\r
6060                           throw( DOMException, SVGException )\r
6061         {\r
6062         if (index >= items.size())\r
6063             items.push_back(newItem);\r
6064         else\r
6065             {\r
6066             std::vector<SVGPathSeg>::iterator iter = items.begin() + index;\r
6067             items.insert(iter, newItem);\r
6068             }\r
6069         return newItem;\r
6070         }\r
6071 \r
6072     /**\r
6073      *\r
6074      */\r
6075     virtual SVGPathSeg replaceItem(const SVGPathSeg &newItem,\r
6076                                    unsigned long index )\r
6077                               throw( DOMException, SVGException )\r
6078         {\r
6079         if (index >= items.size())\r
6080             {\r
6081             SVGPathSeg seg;\r
6082             return seg;\r
6083             }\r
6084         std::vector<SVGPathSeg>::iterator iter = items.begin() + index;\r
6085         *iter = newItem;\r
6086         return newItem;\r
6087         }\r
6088 \r
6089     /**\r
6090      *\r
6091      */\r
6092     virtual SVGPathSeg removeItem (unsigned long index)\r
6093                                   throw (DOMException)\r
6094         {\r
6095         if (index >= items.size())\r
6096             {\r
6097             SVGPathSeg seg;\r
6098             return seg;\r
6099             }\r
6100         std::vector<SVGPathSeg>::iterator iter = items.begin() + index;\r
6101         SVGPathSeg olditem = *iter;\r
6102         items.erase(iter);\r
6103         return olditem;\r
6104         }\r
6105 \r
6106     /**\r
6107      *\r
6108      */\r
6109     virtual SVGPathSeg appendItem (const SVGPathSeg &newItem)\r
6110                     throw( DOMException, SVGException )\r
6111         {\r
6112         items.push_back(newItem);\r
6113         return newItem;\r
6114         }\r
6115 \r
6116 \r
6117 \r
6118     //##################\r
6119     //# Non-API methods\r
6120     //##################\r
6121 \r
6122     /**\r
6123      *\r
6124      */\r
6125     SVGPathSegList() {}\r
6126 \r
6127 \r
6128     /**\r
6129      *\r
6130      */\r
6131     SVGPathSegList(const SVGPathSegList &other)\r
6132         {\r
6133         items = other.items;\r
6134         }\r
6135 \r
6136 \r
6137     /**\r
6138      *\r
6139      */\r
6140     virtual ~SVGPathSegList() {}\r
6141 \r
6142 protected:\r
6143 \r
6144     std::vector<SVGPathSeg> items;\r
6145 \r
6146 };\r
6147 \r
6148 \r
6149 \r
6150 \r
6151 \r
6152 \r
6153 /*#########################################################################\r
6154 ## SVGAnimatedPathData\r
6155 #########################################################################*/\r
6156 \r
6157 /**\r
6158  *\r
6159  */\r
6160 class SVGAnimatedPathData\r
6161 {\r
6162 public:\r
6163 \r
6164     /**\r
6165      *\r
6166      */\r
6167     virtual SVGPathSegList getPathSegList()\r
6168         {\r
6169         SVGPathSegList list;\r
6170         return list;\r
6171         }\r
6172 \r
6173     /**\r
6174      *\r
6175      */\r
6176     virtual SVGPathSegList getNormalizedPathSegList()\r
6177         {\r
6178         SVGPathSegList list;\r
6179         return list;\r
6180         }\r
6181 \r
6182     /**\r
6183      *\r
6184      */\r
6185     virtual SVGPathSegList getAnimatedPathSegList()\r
6186         {\r
6187         SVGPathSegList list;\r
6188         return list;\r
6189         }\r
6190 \r
6191     /**\r
6192      *\r
6193      */\r
6194     virtual SVGPathSegList getAnimatedNormalizedPathSegList()\r
6195         {\r
6196         SVGPathSegList list;\r
6197         return list;\r
6198         }\r
6199 \r
6200 \r
6201 \r
6202     //##################\r
6203     //# Non-API methods\r
6204     //##################\r
6205 \r
6206     /**\r
6207      *\r
6208      */\r
6209    SVGAnimatedPathData()\r
6210         {}\r
6211 \r
6212     /**\r
6213      *\r
6214      */\r
6215    SVGAnimatedPathData(const SVGAnimatedPathData &/*other*/)\r
6216         {\r
6217         }\r
6218 \r
6219     /**\r
6220      *\r
6221      */\r
6222     virtual ~SVGAnimatedPathData() {}\r
6223 \r
6224 };\r
6225 \r
6226 \r
6227 \r
6228 \r
6229 \r
6230 \r
6231 /*#########################################################################\r
6232 ## SVGAnimatedPoints\r
6233 #########################################################################*/\r
6234 \r
6235 /**\r
6236  *\r
6237  */\r
6238 class SVGAnimatedPoints\r
6239 {\r
6240 public:\r
6241 \r
6242     /**\r
6243      *\r
6244      */\r
6245     virtual SVGPointList getPoints()\r
6246         { return points; }\r
6247 \r
6248     /**\r
6249      *\r
6250      */\r
6251     virtual SVGPointList getAnimatedPoints()\r
6252         { return animatedPoints; }\r
6253 \r
6254 \r
6255 \r
6256     //##################\r
6257     //# Non-API methods\r
6258     //##################\r
6259 \r
6260     /**\r
6261      *\r
6262      */\r
6263     SVGAnimatedPoints() {}\r
6264 \r
6265     /**\r
6266      *\r
6267      */\r
6268     SVGAnimatedPoints(const SVGAnimatedPoints &other)\r
6269         {\r
6270         points         = other.points;\r
6271         animatedPoints = other.animatedPoints;\r
6272         }\r
6273 \r
6274     /**\r
6275      *\r
6276      */\r
6277     virtual ~SVGAnimatedPoints() {}\r
6278 \r
6279 protected:\r
6280 \r
6281     SVGPointList points;\r
6282     SVGPointList animatedPoints;\r
6283 \r
6284 };\r
6285 \r
6286 \r
6287 \r
6288 \r
6289 \r
6290 /*#########################################################################\r
6291 ## SVGPaint\r
6292 #########################################################################*/\r
6293 \r
6294 /**\r
6295  *\r
6296  */\r
6297 class SVGPaint : public SVGColor\r
6298 {\r
6299 public:\r
6300 \r
6301 \r
6302     /**\r
6303      * Paint Types\r
6304      */\r
6305     typedef enum\r
6306         {\r
6307         SVG_PAINTTYPE_UNKNOWN               = 0,\r
6308         SVG_PAINTTYPE_RGBCOLOR              = 1,\r
6309         SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR     = 2,\r
6310         SVG_PAINTTYPE_NONE                  = 101,\r
6311         SVG_PAINTTYPE_CURRENTCOLOR          = 102,\r
6312         SVG_PAINTTYPE_URI_NONE              = 103,\r
6313         SVG_PAINTTYPE_URI_CURRENTCOLOR      = 104,\r
6314         SVG_PAINTTYPE_URI_RGBCOLOR          = 105,\r
6315         SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR = 106,\r
6316         SVG_PAINTTYPE_URI                   = 107\r
6317         } PaintType;\r
6318 \r
6319 \r
6320     /**\r
6321      *\r
6322      */\r
6323     virtual unsigned short getPaintType()\r
6324         { return paintType; }\r
6325 \r
6326     /**\r
6327      *\r
6328      */\r
6329     virtual DOMString getUri()\r
6330         { return uri; }\r
6331 \r
6332     /**\r
6333      *\r
6334      */\r
6335     virtual void setUri (const DOMString& uriArg )\r
6336         { uri = uriArg; }\r
6337 \r
6338     /**\r
6339      *\r
6340      */\r
6341     virtual void setPaint (unsigned short paintTypeArg,\r
6342                            const DOMString& uriArg,\r
6343                            const DOMString& /*rgbColor*/,\r
6344                            const DOMString& /*iccColor*/ )\r
6345                            throw( SVGException )\r
6346         {\r
6347         paintType = paintTypeArg;\r
6348         uri       = uriArg;\r
6349         //do something with rgbColor\r
6350         //do something with iccColor;\r
6351         }\r
6352 \r
6353 \r
6354 \r
6355     //##################\r
6356     //# Non-API methods\r
6357     //##################\r
6358 \r
6359     /**\r
6360      *\r
6361      */\r
6362     SVGPaint()\r
6363         {\r
6364         uri       = "";\r
6365         paintType = SVG_PAINTTYPE_UNKNOWN;\r
6366         }\r
6367 \r
6368     /**\r
6369      *\r
6370      */\r
6371     SVGPaint(const SVGPaint &other) : css::CSSValue(other), SVGColor(other)\r
6372         {\r
6373         uri       = "";\r
6374         paintType = SVG_PAINTTYPE_UNKNOWN;\r
6375         }\r
6376 \r
6377     /**\r
6378      *\r
6379      */\r
6380     virtual ~SVGPaint() {}\r
6381 \r
6382 protected:\r
6383 \r
6384     unsigned int paintType;\r
6385     DOMString uri;\r
6386 \r
6387 };\r
6388 \r
6389 \r
6390 \r
6391 \r
6392 /*#########################################################################\r
6393 ## SVGColorProfileRule\r
6394 #########################################################################*/\r
6395 \r
6396 /**\r
6397  *\r
6398  */\r
6399 class SVGColorProfileRule : public SVGCSSRule,\r
6400                             public SVGRenderingIntent\r
6401 {\r
6402 \r
6403 public:\r
6404    /**\r
6405      *\r
6406      */\r
6407     virtual DOMString getSrc()\r
6408         { return src; }\r
6409 \r
6410     /**\r
6411      *\r
6412      */\r
6413     virtual void setSrc(const DOMString &val) throw (DOMException)\r
6414         { src = val; }\r
6415 \r
6416     /**\r
6417      *\r
6418      */\r
6419     virtual DOMString getName()\r
6420         { return name; }\r
6421 \r
6422     /**\r
6423      *\r
6424      */\r
6425     virtual void setName(const DOMString &val) throw (DOMException)\r
6426         { name = val; }\r
6427 \r
6428     /**\r
6429      *\r
6430      */\r
6431     virtual unsigned short getRenderingIntent()\r
6432         { return renderingIntent; }\r
6433 \r
6434     /**\r
6435      *\r
6436      */\r
6437     virtual void setRenderingIntent(unsigned short val) throw (DOMException)\r
6438         { renderingIntent = val; }\r
6439 \r
6440 \r
6441     //##################\r
6442     //# Non-API methods\r
6443     //##################\r
6444 \r
6445     /**\r
6446      *\r
6447      */\r
6448     SVGColorProfileRule() {}\r
6449 \r
6450     /**\r
6451      *\r
6452      */\r
6453     SVGColorProfileRule(const SVGColorProfileRule &other)\r
6454                : SVGCSSRule(other), SVGRenderingIntent(other)\r
6455         {\r
6456         renderingIntent = other.renderingIntent;\r
6457         src             = other.src;\r
6458         name            = other.name;\r
6459         }\r
6460 \r
6461     /**\r
6462      *\r
6463      */\r
6464     virtual ~SVGColorProfileRule() {}\r
6465 \r
6466 protected:\r
6467 \r
6468     unsigned short renderingIntent;\r
6469     DOMString src;\r
6470     DOMString name;\r
6471 \r
6472 };\r
6473 \r
6474 \r
6475 \r
6476 /*#########################################################################\r
6477 ## SVGFilterPrimitiveStandardAttributes\r
6478 #########################################################################*/\r
6479 \r
6480 /**\r
6481  *\r
6482  */\r
6483 class SVGFilterPrimitiveStandardAttributes : public SVGStylable\r
6484 {\r
6485 public:\r
6486 \r
6487 \r
6488 \r
6489     /**\r
6490      *\r
6491      */\r
6492     virtual SVGAnimatedLength getX()\r
6493         { return x; }\r
6494 \r
6495     /**\r
6496      *\r
6497      */\r
6498     virtual SVGAnimatedLength getY()\r
6499         { return y; }\r
6500 \r
6501     /**\r
6502      *\r
6503      */\r
6504     virtual SVGAnimatedLength getWidth()\r
6505         { return width; }\r
6506 \r
6507     /**\r
6508      *\r
6509      */\r
6510     virtual SVGAnimatedLength getHeight()\r
6511         { return height; }\r
6512 \r
6513     /**\r
6514      *\r
6515      */\r
6516     virtual SVGAnimatedString getResult()\r
6517         { return result; }\r
6518 \r
6519 \r
6520 \r
6521     //##################\r
6522     //# Non-API methods\r
6523     //##################\r
6524 \r
6525 \r
6526     /**\r
6527      *\r
6528      */\r
6529     SVGFilterPrimitiveStandardAttributes()\r
6530         {}\r
6531 \r
6532     /**\r
6533      *\r
6534      */\r
6535     SVGFilterPrimitiveStandardAttributes(const SVGFilterPrimitiveStandardAttributes &other)\r
6536                                  : SVGStylable(other)\r
6537         {\r
6538         x      = other.x;\r
6539         y      = other.y;\r
6540         width  = other.width;\r
6541         height = other.height;\r
6542         result = other.result;\r
6543         }\r
6544 \r
6545     /**\r
6546      *\r
6547      */\r
6548     virtual ~SVGFilterPrimitiveStandardAttributes() {}\r
6549 \r
6550 protected:\r
6551 \r
6552     SVGAnimatedLength x;\r
6553     SVGAnimatedLength y;\r
6554     SVGAnimatedLength width;\r
6555     SVGAnimatedLength height;\r
6556     SVGAnimatedString result;\r
6557 \r
6558 };\r
6559 \r
6560 \r
6561 \r
6562 \r
6563 \r
6564 \r
6565 \r
6566 \r
6567 \r
6568 \r
6569 \r
6570 /*#########################################################################\r
6571 ## SVGEvent\r
6572 #########################################################################*/\r
6573 \r
6574 /**\r
6575  *\r
6576  */\r
6577 class SVGEvent : events::Event\r
6578 {\r
6579 public:\r
6580 \r
6581     //##################\r
6582     //# Non-API methods\r
6583     //##################\r
6584 \r
6585     /**\r
6586      *\r
6587      */\r
6588     SVGEvent() {}\r
6589 \r
6590     /**\r
6591      *\r
6592      */\r
6593     SVGEvent(const SVGEvent &other) : events::Event(other)\r
6594         {}\r
6595 \r
6596     /**\r
6597      *\r
6598      */\r
6599     virtual ~SVGEvent() {}\r
6600 \r
6601 };\r
6602 \r
6603 \r
6604 \r
6605 \r
6606 /*#########################################################################\r
6607 ## SVGZoomEvent\r
6608 #########################################################################*/\r
6609 \r
6610 /**\r
6611  *\r
6612  */\r
6613 class SVGZoomEvent : events::UIEvent\r
6614 {\r
6615 public:\r
6616 \r
6617     /**\r
6618      *\r
6619      */\r
6620     virtual SVGRect getZoomRectScreen()\r
6621         { return zoomRectScreen; }\r
6622 \r
6623     /**\r
6624      *\r
6625      */\r
6626     virtual double getPreviousScale()\r
6627         { return previousScale; }\r
6628 \r
6629     /**\r
6630      *\r
6631      */\r
6632     virtual SVGPoint getPreviousTranslate()\r
6633         { return previousTranslate; }\r
6634 \r
6635     /**\r
6636      *\r
6637      */\r
6638     virtual double getNewScale()\r
6639         { return newScale; }\r
6640 \r
6641    /**\r
6642      *\r
6643      */\r
6644     virtual SVGPoint getNewTranslate()\r
6645         { return newTranslate; }\r
6646 \r
6647 \r
6648 \r
6649     //##################\r
6650     //# Non-API methods\r
6651     //##################\r
6652 \r
6653     /**\r
6654      *\r
6655      */\r
6656     SVGZoomEvent()\r
6657         {}\r
6658 \r
6659     /**\r
6660      *\r
6661      */\r
6662     SVGZoomEvent(const SVGZoomEvent &other) : events::Event(other),\r
6663                                               events::UIEvent(other)\r
6664         {\r
6665         zoomRectScreen    = other.zoomRectScreen;\r
6666         previousScale     = other.previousScale;\r
6667         previousTranslate = other.previousTranslate;\r
6668         newScale          = other.newScale;\r
6669         newTranslate      = other.newTranslate;\r
6670         }\r
6671 \r
6672     /**\r
6673      *\r
6674      */\r
6675     virtual ~SVGZoomEvent() {}\r
6676 \r
6677 protected:\r
6678 \r
6679     SVGRect  zoomRectScreen;\r
6680     double   previousScale;\r
6681     SVGPoint previousTranslate;\r
6682     double   newScale;\r
6683     SVGPoint newTranslate;\r
6684 \r
6685 };\r
6686 \r
6687 \r
6688 \r
6689 /*#########################################################################\r
6690 ## SVGElementInstance\r
6691 #########################################################################*/\r
6692 \r
6693 /**\r
6694  *\r
6695  */\r
6696 class SVGElementInstance : public events::EventTarget\r
6697 {\r
6698 public:\r
6699 \r
6700     /**\r
6701      *\r
6702      */\r
6703     virtual SVGElementPtr getCorrespondingElement()\r
6704         { return correspondingElement; }\r
6705 \r
6706     /**\r
6707      *\r
6708      */\r
6709     virtual SVGUseElementPtr getCorrespondingUseElement()\r
6710         { return correspondingUseElement; }\r
6711 \r
6712     /**\r
6713      *\r
6714      */\r
6715     virtual SVGElementInstance getParentNode()\r
6716         {\r
6717         SVGElementInstance ret;\r
6718         return ret;\r
6719         }\r
6720 \r
6721     /**\r
6722      *  Since we are using stack types and this is a circular definition,\r
6723      *  we will instead implement this as a global function below:\r
6724      *   SVGElementInstanceList getChildNodes(const SVGElementInstance instance);\r
6725      */\r
6726     //virtual SVGElementInstanceList getChildNodes();\r
6727 \r
6728     /**\r
6729      *\r
6730      */\r
6731     virtual SVGElementInstance getFirstChild()\r
6732         {\r
6733         SVGElementInstance ret;\r
6734         return ret;\r
6735         }\r
6736 \r
6737     /**\r
6738      *\r
6739      */\r
6740     virtual SVGElementInstance getLastChild()\r
6741         {\r
6742         SVGElementInstance ret;\r
6743         return ret;\r
6744         }\r
6745 \r
6746     /**\r
6747      *\r
6748      */\r
6749     virtual SVGElementInstance getPreviousSibling()\r
6750         {\r
6751         SVGElementInstance ret;\r
6752         return ret;\r
6753         }\r
6754 \r
6755     /**\r
6756      *\r
6757      */\r
6758     virtual SVGElementInstance getNextSibling()\r
6759         {\r
6760         SVGElementInstance ret;\r
6761         return ret;\r
6762         }\r
6763 \r
6764 \r
6765     //##################\r
6766     //# Non-API methods\r
6767     //##################\r
6768 \r
6769     /**\r
6770      *\r
6771      */\r
6772     SVGElementInstance() {}\r
6773 \r
6774     /**\r
6775      *\r
6776      */\r
6777     SVGElementInstance(const SVGElementInstance &other)\r
6778                         : events::EventTarget(other)\r
6779         {\r
6780         }\r
6781 \r
6782     /**\r
6783      *\r
6784      */\r
6785     virtual ~SVGElementInstance() {}\r
6786 \r
6787 protected:\r
6788 \r
6789     SVGElementPtr      correspondingElement;\r
6790     SVGUseElementPtr   correspondingUseElement;\r
6791 \r
6792 };\r
6793 \r
6794 \r
6795 \r
6796 \r
6797 \r
6798 \r
6799 /*#########################################################################\r
6800 ## SVGElementInstanceList\r
6801 #########################################################################*/\r
6802 \r
6803 /**\r
6804  *\r
6805  */\r
6806 class SVGElementInstanceList\r
6807 {\r
6808 public:\r
6809 \r
6810 \r
6811     /**\r
6812      *\r
6813      */\r
6814     virtual unsigned long getLength()\r
6815         { return items.size(); }\r
6816 \r
6817     /**\r
6818      *\r
6819      */\r
6820     virtual SVGElementInstance item (unsigned long index )\r
6821         {\r
6822         if (index >= items.size())\r
6823             {\r
6824             SVGElementInstance ret;\r
6825             return ret;\r
6826             }\r
6827         return items[index];\r
6828         }\r
6829 \r
6830     /**\r
6831      *  This static method replaces the circular definition of:\r
6832      *        SVGElementInstanceList SVGElementInstance::getChildNodes()\r
6833      *\r
6834      */\r
6835     static SVGElementInstanceList getChildNodes(const SVGElementInstance &/*instance*/)\r
6836         {\r
6837         SVGElementInstanceList list;\r
6838         return list;\r
6839         }\r
6840 \r
6841 \r
6842     //##################\r
6843     //# Non-API methods\r
6844     //##################\r
6845 \r
6846     /**\r
6847      *\r
6848      */\r
6849     SVGElementInstanceList() {}\r
6850 \r
6851     /**\r
6852      *\r
6853      */\r
6854     SVGElementInstanceList(const SVGElementInstanceList &other)\r
6855         {\r
6856         items = other.items;\r
6857         }\r
6858 \r
6859     /**\r
6860      *\r
6861      */\r
6862     virtual ~SVGElementInstanceList() {}\r
6863 \r
6864 protected:\r
6865 \r
6866     std::vector<SVGElementInstance> items;\r
6867 \r
6868 \r
6869 };\r
6870 \r
6871 \r
6872 /**\r
6873  * This is a helper class that will hold several types of data.  It will\r
6874  * be used in those situations where methods are common to different \r
6875  * interfaces, except for the data type.\r
6876  */   \r
6877 class SVGValue\r
6878 {\r
6879 public:\r
6880 \r
6881     typedef enum\r
6882         {\r
6883         SVG_DOUBLE,\r
6884         SVG_INT,\r
6885         SVG_STRING\r
6886             }SVGValueType;\r
6887 \r
6888     SVGValue(long v)\r
6889         {\r
6890         init();\r
6891         ival = d;\r
6892         type = SVG_INT;\r
6893             }\r
6894         \r
6895     SVGValue(double v)\r
6896         {\r
6897         init();\r
6898         dval = v;\r
6899         type = SVG_DOUBLE;\r
6900             }\r
6901         \r
6902     SVGValue(const DOMString &v)\r
6903         {\r
6904         init();\r
6905         sval = v;\r
6906         type = SVG_STRING;\r
6907             }\r
6908         \r
6909     SVGValue(const SVGValue &other)\r
6910         {\r
6911         assign(other);\r
6912             }\r
6913         \r
6914     SVGValue &operator=(const SVGValue &other)\r
6915         {\r
6916         assign(other);\r
6917         return *this;\r
6918             }\r
6919         \r
6920     SVGValue &operator=(long v)\r
6921         {\r
6922         init();\r
6923         ival = v;\r
6924         type = SVG_INT;\r
6925         return *this;\r
6926             }\r
6927         \r
6928     SVGValue &operator=(double v)\r
6929         {\r
6930         init();\r
6931         ival = v;\r
6932         type = SVG_DOUBLE;\r
6933         return *this;\r
6934             }\r
6935         \r
6936     SVGValue &operator=(const DOMString &v)\r
6937         {\r
6938         init();\r
6939         sval = v;\r
6940         type = SVG_STRING;\r
6941         return *this;\r
6942             }\r
6943         \r
6944         ~SVGValue()\r
6945             {}\r
6946             \r
6947         long intValue()\r
6948             { return ival; }\r
6949 \r
6950         double doubleValue()\r
6951             { return ival; }\r
6952 \r
6953         DOMString &stringValue()\r
6954             { return sval; }\r
6955 \r
6956 \r
6957 private:\r
6958 \r
6959     void init()\r
6960         {\r
6961         type = SVG_DOUBLE;\r
6962         ival = 0;\r
6963                 dval = 0.0;    \r
6964                 sval = "";\r
6965             }\r
6966         \r
6967     void assign(const SVGValue &other)\r
6968         {\r
6969         type = other.type;\r
6970         ival = other.ival;\r
6971                 dval = other.dval;\r
6972                 sval = other.sval;\r
6973             }\r
6974         \r
6975         int       type;\r
6976         double    dval;\r
6977         long      ival;\r
6978         DOMString sval;\r
6979 \r
6980 };\r
6981 \r
6982 \r
6983 \r
6984 //########################################################################\r
6985 //########################################################################\r
6986 //########################################################################\r
6987 //#   D O M\r
6988 //########################################################################\r
6989 //########################################################################\r
6990 //########################################################################\r
6991 \r
6992 \r
6993 \r
6994 \r
6995 \r
6996 /*#########################################################################\r
6997 ## Types\r
6998 #########################################################################*/\r
6999 \r
7000 /**\r
7001  * Bitmasks for has_an interface for SVGElement\r
7002  */ \r
7003 #define SVG_ANGLE                          0x00000001\r
7004 #define SVG_ANIMATED_ANGLE                 0x00000002\r
7005 #define SVG_ANIMATED_BOOLEAN               0x00000004\r
7006 #define SVG_ANIMATED_ENUMERATION           0x00000008\r
7007 #define SVG_ANIMATED_INTEGER               0x00000010\r
7008 #define SVG_ANIMATED_LENGTH                0x00000020\r
7009 #define SVG_ANIMATED_LENGTH_LIST           0x00000040\r
7010 #define SVG_ANIMATED_NUMBER                0x00000080\r
7011 #define SVG_ANIMATED_NUMBER_LIST           0x00000100\r
7012 #define SVG_ANIMATED_RECT                  0x00000200\r
7013 #define SVG_ANIMATED_STRING                0x00000400\r
7014 #define SVG_COLOR                          0x00000800\r
7015 #define SVG_CSS_RULE                       0x00001000\r
7016 #define SVG_EXTERNAL_RESOURCES_REQUIRED    0x00002000\r
7017 #define SVG_FIT_TO_VIEWBOX                 0x00004000\r
7018 #define SVG_ICCCOLOR                       0x00008000\r
7019 #define SVG_LANG_SPACE                     0x00010000\r
7020 #define SVG_LENGTH                         0x00020000\r
7021 #define SVG_LENGTH_LIST                    0x00040000\r
7022 #define SVG_LOCATABLE                      0x00080000\r
7023 #define SVG_NUMBER                         0x00100000\r
7024 #define SVG_NUMBER_LIST                    0x00200000\r
7025 #define SVG_RECT                           0x00400000\r
7026 #define SVG_RENDERING_INTENT               0x00800000\r
7027 #define SVG_STRING_LIST                    0x01000000\r
7028 #define SVG_STYLABLE                       0x02000000\r
7029 #define SVG_TESTS                          0x04000000\r
7030 #define SVG_TRANSFORMABLE                  0x08000000\r
7031 #define SVG_UNIT_TYPES                     0x10000000\r
7032 #define SVG_URI_REFERENCE                  0x20000000\r
7033 #define SVG_VIEW_SPEC                      0x40000000\r
7034 #define SVG_ZOOM_AND_PAN                   0x80000000\r
7035 \r
7036 /**\r
7037  * How many above?  Quite handy\r
7038  */ \r
7039 #define SVG_NR_INTERFACES                  32\r
7040 \r
7041 \r
7042 /**\r
7043  * Enumerations for SVGElement types\r
7044  */ \r
7045 typedef enum\r
7046 {\r
7047     SVG_A_ELEMENT = 0,\r
7048     SVG_ALTGLYPH_ELEMENT,\r
7049     SVG_ALTGLYPHDEF_ELEMENT,\r
7050     SVG_ALTGLYPHITEM_ELEMENT,\r
7051     SVG_ANIMATE_ELEMENT,\r
7052     SVG_ANIMATECOLOR_ELEMENT,\r
7053     SVG_ANIMATEMOTION_ELEMENT,\r
7054     SVG_ANIMATETRANSFORM_ELEMENT,\r
7055     SVG_CIRCLE_ELEMENT,\r
7056     SVG_CLIPPATH_ELEMENT,\r
7057     SVG_COLOR_PROFILE_ELEMENT,\r
7058     SVG_CURSOR_ELEMENT,\r
7059     SVG_DEFINITION_SRC_ELEMENT,\r
7060     SVG_DEFS_ELEMENT,\r
7061     SVG_DESC_ELEMENT,\r
7062     SVG_ELLIPSE_ELEMENT,\r
7063     SVG_FEBLEND_ELEMENT,\r
7064     SVG_FECOLORMATRIX_ELEMENT,\r
7065     SVG_FECOMPONENTTRANSFER_ELEMENT,\r
7066     SVG_FECOMPOSITE_ELEMENT,\r
7067     SVG_FECONVOLVEMATRIX_ELEMENT,\r
7068     SVG_FEDIFFUSELIGHTING_ELEMENT,\r
7069     SVG_FEDISPLACEMENTMAP_ELEMENT,\r
7070     SVG_FEDISTANTLIGHT_ELEMENT,\r
7071     SVG_FEFLOOD_ELEMENT,\r
7072     SVG_FEFUNCA_ELEMENT,\r
7073     SVG_FEFUNCB_ELEMENT,\r
7074     SVG_FEFUNCG_ELEMENT,\r
7075     SVG_FEFUNCR_ELEMENT,\r
7076     SVG_FEGAUSSIANBLUR_ELEMENT,\r
7077     SVG_FEIMAGE_ELEMENT,\r
7078     SVG_FEMERGE_ELEMENT,\r
7079     SVG_FEMERGENODE_ELEMENT,\r
7080     SVG_FEMORPHOLOGY_ELEMENT,\r
7081     SVG_FEOFFSET_ELEMENT,\r
7082     SVG_FEPOINTLIGHT_ELEMENT,\r
7083     SVG_FESPECULARLIGHTING_ELEMENT,\r
7084     SVG_FESPOTLIGHT_ELEMENT,\r
7085     SVG_FETILE_ELEMENT,\r
7086     SVG_FETURBULENCE_ELEMENT,\r
7087     SVG_FILTER_ELEMENT,\r
7088     SVG_FONT_ELEMENT,\r
7089     SVG_FONT_FACE_ELEMENT,\r
7090     SVG_FONT_FACE_FORMAT_ELEMENT,\r
7091     SVG_FONT_FACE_NAME_ELEMENT,\r
7092     SVG_FONT_FACE_SRC_ELEMENT,\r
7093     SVG_FONT_FACE_URI_ELEMENT,\r
7094     SVG_FOREIGNOBJECT_ELEMENT,\r
7095     SVG_G_ELEMENT,\r
7096     SVG_GLYPH_ELEMENT,\r
7097     SVG_GLYPHREF_ELEMENT,\r
7098     SVG_HKERN_ELEMENT,\r
7099     SVG_IMAGE_ELEMENT,\r
7100     SVG_LINE_ELEMENT,\r
7101     SVG_LINEARGRADIENT_ELEMENT,\r
7102     SVG_MARKER_ELEMENT,\r
7103     SVG_MASK_ELEMENT,\r
7104     SVG_METADATA_ELEMENT,\r
7105     SVG_MISSING_GLYPH_ELEMENT,\r
7106     SVG_MPATH_ELEMENT,\r
7107     SVG_PATH_ELEMENT,\r
7108     SVG_PATTERN_ELEMENT,\r
7109     SVG_POLYGON_ELEMENT,\r
7110     SVG_POLYLINE_ELEMENT,\r
7111     SVG_RADIALGRADIENT_ELEMENT,\r
7112     SVG_RECT_ELEMENT,\r
7113     SVG_SCRIPT_ELEMENT,\r
7114     SVG_SET_ELEMENT,\r
7115     SVG_STOP_ELEMENT,\r
7116     SVG_STYLE_ELEMENT,\r
7117     SVG_SVG_ELEMENT,\r
7118     SVG_SWITCH_ELEMENT,\r
7119     SVG_SYMBOL_ELEMENT,\r
7120     SVG_TEXT_ELEMENT,\r
7121     SVG_TEXTPATH_ELEMENT,\r
7122     SVG_TITLE_ELEMENT,\r
7123     SVG_TREF_ELEMENT,\r
7124     SVG_TSPAN_ELEMENT,\r
7125     SVG_USE_ELEMENT,\r
7126     SVG_VIEW_ELEMENT,\r
7127     SVG_VKERN_ELEMENT,\r
7128     SVG_MAX_ELEMENT\r
7129 } SVGElementType;\r
7130 \r
7131 \r
7132 \r
7133 \r
7134 /**\r
7135  * Look up the SVG Element type enum for a given string\r
7136  * Return -1 if not found\r
7137  */\r
7138 int svgElementStrToEnum(const char *str);\r
7139 \r
7140 \r
7141 /**\r
7142  * Return the string corresponding to a given SVG element type enum\r
7143  * Return "unknown" if not found\r
7144  */\r
7145 const char *svgElementEnumToStr(int type);\r
7146 \r
7147 \r
7148 \r
7149 /*#########################################################################\r
7150 ## SVGValue\r
7151 #########################################################################*/\r
7152 \r
7153 \r
7154 /**\r
7155  * A helper class to provide a common API across several data types\r
7156  */\r
7157 class SVGValue\r
7158 {\r
7159 public:\r
7160 \r
7161     /**\r
7162      * Constructors\r
7163      */\r
7164     SVGValue()\r
7165         { init(); }\r
7166 \r
7167     SVGValue(const SVGValue &other)\r
7168         { assign(other); }\r
7169 \r
7170     SVGValue(double val)\r
7171         { init(); type = SVG_DOUBLE; dval = val; }\r
7172 \r
7173     SVGValue(long val)\r
7174         { init(); type = SVG_INT; ival = val; }\r
7175 \r
7176     SVGValue(const DOMString &val)\r
7177         { init(); type = SVG_STRING; sval = val; }\r
7178 \r
7179     int getType()\r
7180         { return type; }\r
7181 \r
7182     /**\r
7183      * Assignment\r
7184      */\r
7185     SVGValue &operator=(const SVGValue &val)\r
7186         { assign(val); return *this; }\r
7187 \r
7188     SVGValue &operator=(double val)\r
7189         { init(); type = SVG_DOUBLE; dval = val; return *this; }\r
7190 \r
7191     SVGValue &operator=(long val)\r
7192         { init(); type = SVG_INT; ival = val; return *this; }\r
7193 \r
7194     SVGValue &operator=(const DOMString &val)\r
7195         { init(); type = SVG_STRING; sval = val; return *this; }\r
7196 \r
7197     /**\r
7198      * Getters\r
7199      */\r
7200     double doubleValue()\r
7201         { return dval; }\r
7202         \r
7203     long intValue()\r
7204         { return ival; }\r
7205         \r
7206     DOMString &stringValue()\r
7207         { return sval; }\r
7208 \r
7209 private:\r
7210 \r
7211     void init()\r
7212         {\r
7213         type = SVG_DOUBLE;\r
7214         dval = 0.0;\r
7215         ival = 0;\r
7216         sval.clear();\r
7217         }\r
7218 \r
7219     void assign(const SVGValue &other)\r
7220         {\r
7221         type = other.type;\r
7222         dval = other.dval;\r
7223         ival = other.ival;\r
7224         sval = other.sval;\r
7225         }\r
7226 \r
7227     int       type;\r
7228     double    dval;\r
7229     long      ival;\r
7230     DOMString sval;\r
7231 \r
7232 };\r
7233 \r
7234 \r
7235 /*#########################################################################\r
7236 ## SVGElement\r
7237 #########################################################################*/\r
7238 \r
7239 /**\r
7240  * All of the SVG DOM interfaces that correspond directly to elements in the SVG\r
7241  * language(e.g., the SVGPathElement interface corresponds directly to the\r
7242  * 'path' element in the language) are derivative from base class SVGElement.\r
7243  */\r
7244 class SVGElement : public Element\r
7245 {\r
7246 public:\r
7247 \r
7248     //####################################################################\r
7249     //# BASE METHODS FOR SVGElement\r
7250     //####################################################################\r
7251 \r
7252     /**\r
7253      * Get the value of the id attribute on the given element.\r
7254      */\r
7255     DOMString getId();\r
7256 \r
7257     /**\r
7258      * Set the value of the id attribute on the given element.\r
7259      */\r
7260     void setId(const DOMString &val) throw (DOMException);\r
7261 \r
7262     /**\r
7263      * Corresponds to attribute xml:base on the given element.\r
7264      */\r
7265     DOMString getXmlBase();\r
7266 \r
7267     /**\r
7268      * Corresponds to attribute xml:base on the given element.\r
7269      */\r
7270     void setXmlBase(const DOMString &val) throw (DOMException);\r
7271 \r
7272     /**\r
7273      * The nearest ancestor 'svg' element. Null if the given element is the\r
7274      *      outermost 'svg' element.\r
7275      */\r
7276     SVGElementPtr getOwnerSVGElement();\r
7277 \r
7278     /**\r
7279      * The element which established the current viewport. Often, the nearest\r
7280      * ancestor 'svg' element. Null if the given element is the outermost 'svg'\r
7281      * element.\r
7282      */\r
7283     SVGElementPtr getViewportElement();\r
7284 \r
7285 \r
7286     //####################################################################\r
7287     //####################################################################\r
7288     //# I N T E R F A C E S\r
7289     //####################################################################\r
7290     //####################################################################\r
7291 \r
7292     //####################################################################\r
7293     //# SVGAngle                    \r
7294     //####################################################################\r
7295 \r
7296     /**\r
7297      *\r
7298      */\r
7299     unsigned short getUnitType();\r
7300 \r
7301     /**\r
7302      *\r
7303      */\r
7304     double getValue();\r
7305 \r
7306     /**\r
7307      *\r
7308      */\r
7309     void setValue(double val) throw (DOMException);\r
7310 \r
7311     /**\r
7312      *\r
7313      */\r
7314     double getValueInSpecifiedUnits();\r
7315 \r
7316     /**\r
7317      *\r
7318      */\r
7319     void setValueInSpecifiedUnits(double /*val*/) throw (DOMException);\r
7320 \r
7321     /**\r
7322      *\r
7323      */\r
7324     DOMString getValueAsString();\r
7325 \r
7326     /**\r
7327      *\r
7328      */\r
7329     void setValueAsString(const DOMString &/*val*/) throw (DOMException);\r
7330 \r
7331 \r
7332     /**\r
7333      *\r
7334      */\r
7335     void newValueSpecifiedUnits(unsigned short /*unitType*/,\r
7336                                 double /*valueInSpecifiedUnits*/);\r
7337 \r
7338     /**\r
7339      *\r
7340      */\r
7341     void convertToSpecifiedUnits(unsigned short /*unitType*/);\r
7342 \r
7343     //####################################################################\r
7344     //# SVGAnimatedAngle            \r
7345     //####################################################################\r
7346 \r
7347     /**\r
7348      *\r
7349      */\r
7350     SVGAngle getBaseAngleVal();\r
7351 \r
7352     /**\r
7353      *\r
7354      */\r
7355     SVGAngle getAnimAngleVal();\r
7356 \r
7357 \r
7358     //####################################################################\r
7359     //# SVGAnimatedBoolean          \r
7360     //####################################################################\r
7361 \r
7362     /**\r
7363      *\r
7364      */\r
7365     bool getBaseBooleanVal();\r
7366 \r
7367     /**\r
7368      *\r
7369      */\r
7370     void setBaseBooleanVal(bool val) throw (DOMException);\r
7371 \r
7372     /**\r
7373      *\r
7374      */\r
7375     bool getAnimBooleanVal();\r
7376 \r
7377     //####################################################################\r
7378     //# SVGAnimatedEnumeration      \r
7379     //####################################################################\r
7380 \r
7381     /**\r
7382      *\r
7383      */\r
7384     unsigned short getBaseEnumerationVal();\r
7385 \r
7386     /**\r
7387      *\r
7388      */\r
7389     void setBaseEnumerationVal(unsigned short val) throw (DOMException);\r
7390 \r
7391     /**\r
7392      *\r
7393      */\r
7394     unsigned short getAnimEnumerationVal();\r
7395 \r
7396     //####################################################################\r
7397     //# SVGAnimatedInteger          \r
7398     //####################################################################\r
7399 \r
7400     /**\r
7401      *\r
7402      */\r
7403     long getBaseIntegerVal();\r
7404 \r
7405     /**\r
7406      *\r
7407      */\r
7408     void setBaseIntegerVal(long val) throw (DOMException);\r
7409 \r
7410     /**\r
7411      *\r
7412      */\r
7413     long getAnimIntegerVal();\r
7414 \r
7415     //####################################################################\r
7416     //# SVGAnimatedLength           \r
7417     //####################################################################\r
7418 \r
7419     /**\r
7420      *\r
7421      */\r
7422     SVGLength &getBaseLengthVal();\r
7423 \r
7424     /**\r
7425      *\r
7426      */\r
7427     SVGLength &getAnimLengthVal();\r
7428 \r
7429     //####################################################################\r
7430     //# SVGAnimatedLengthList       \r
7431     //####################################################################\r
7432 \r
7433     /**\r
7434      *\r
7435      */\r
7436     SVGLengthList &getBaseLengthListVal();\r
7437 \r
7438     /**\r
7439      *\r
7440      */\r
7441     SVGLengthList &getAnimLengthListVal();\r
7442 \r
7443     //####################################################################\r
7444     //# SVGAnimatedNumber           \r
7445     //####################################################################\r
7446 \r
7447     /**\r
7448      *\r
7449      */\r
7450     double getBaseNumberVal();\r
7451 \r
7452     /**\r
7453      *\r
7454      */\r
7455     void setBaseNumberVal(double val) throw (DOMException);\r
7456 \r
7457     /**\r
7458      *\r
7459      */\r
7460     double getAnimNumberVal();\r
7461 \r
7462     //####################################################################\r
7463     //# SVGAnimatedNumberList       \r
7464     //####################################################################\r
7465 \r
7466     /**\r
7467      *\r
7468      */\r
7469     SVGNumberList &getBaseNumberListVal();\r
7470 \r
7471     /**\r
7472      *\r
7473      */\r
7474     SVGNumberList &getAnimNumberListVal();\r
7475 \r
7476     //####################################################################\r
7477     //# SVGAnimatedRect             \r
7478     //####################################################################\r
7479 \r
7480     /**\r
7481      *\r
7482      */\r
7483     SVGRect &getBaseRectVal();\r
7484 \r
7485     /**\r
7486      *\r
7487      */\r
7488     SVGRect &getAnimRectVal();\r
7489 \r
7490     //####################################################################\r
7491     //# SVGAnimatedString           \r
7492     //####################################################################\r
7493 \r
7494     /**\r
7495      *\r
7496      */\r
7497     DOMString getBaseVal();\r
7498 \r
7499     /**\r
7500      *\r
7501      */\r
7502     void setBaseVal(const DOMString &val) throw (DOMException);\r
7503 \r
7504     /**\r
7505      *\r
7506      */\r
7507     DOMString getAnimVal();\r
7508 \r
7509     //####################################################################\r
7510     //# SVGColor                    \r
7511     //####################################################################\r
7512 \r
7513     /**\r
7514      * From CSSValue \r
7515      * A code defining the type of the value as defined above.\r
7516      */\r
7517     unsigned short getCssValueType();\r
7518 \r
7519     /**\r
7520      * From CSSValue \r
7521      * A string representation of the current value.\r
7522      */\r
7523     DOMString getCssText();\r
7524 \r
7525     /**\r
7526      * From CSSValue \r
7527      * A string representation of the current value.\r
7528      * Note that setting implies parsing.     \r
7529      */\r
7530     void setCssText(const DOMString &val) throw (dom::DOMException);\r
7531 \r
7532 \r
7533     /**\r
7534      *\r
7535      */\r
7536     unsigned short getColorType();\r
7537 \r
7538     /**\r
7539      *\r
7540      */\r
7541     css::RGBColor getRgbColor();\r
7542 \r
7543     /**\r
7544      *\r
7545      */\r
7546     SVGICCColor getIccColor();\r
7547 \r
7548 \r
7549     /**\r
7550      *\r
7551      */\r
7552     void setRGBColor(const DOMString& /*rgbColor*/) throw (SVGException);\r
7553 \r
7554     /**\r
7555      *\r
7556      */\r
7557     void setRGBColorICCColor(const DOMString& /*rgbColor*/,\r
7558                              const DOMString& /*iccColor*/)\r
7559                              throw (SVGException);\r
7560 \r
7561     /**\r
7562      *\r
7563      */\r
7564     void setColor(unsigned short /*colorType*/,\r
7565                            const DOMString& /*rgbColor*/,\r
7566                            const DOMString& /*iccColor*/)\r
7567                            throw (SVGException);\r
7568 \r
7569     //####################################################################\r
7570     //# SVGCSSRule                  \r
7571     //####################################################################\r
7572 \r
7573     /**\r
7574      * From CSSRule    \r
7575      * The type of the rule, as defined above. The expectation is that \r
7576      * binding-specific casting methods can be used to cast down from an instance of \r
7577      * the CSSRule interface to the specific derived interface implied by the type.\r
7578      */\r
7579     unsigned short getType();\r
7580 \r
7581     /**\r
7582      * From CSSRule    \r
7583      * The parsable textual representation of the rule. This reflects the current \r
7584      * state of the rule and not its initial value.\r
7585      */\r
7586     DOMString getCssText();\r
7587 \r
7588     /**\r
7589      * From CSSRule    \r
7590      * The parsable textual representation of the rule. This reflects the current \r
7591      * state of the rule and not its initial value.\r
7592      * Note that setting involves reparsing.     \r
7593      */\r
7594     void setCssText(const DOMString &val) throw (DOMException);\r
7595 \r
7596     /**\r
7597      * From CSSRule    \r
7598      * The style sheet that contains this rule.\r
7599      */\r
7600     css::CSSStyleSheet *getParentStyleSheet();\r
7601 \r
7602     /**\r
7603      * From CSSRule    \r
7604      * If this rule is contained inside another rule(e.g. a style rule inside an \r
7605      * @media block), this is the containing rule. If this rule is not nested inside \r
7606      * any other rules, this returns null.\r
7607      */\r
7608     css::CSSRule *getParentRule();\r
7609 \r
7610     //####################################################################\r
7611     //# SVGExternalResourcesRequired\r
7612     //####################################################################\r
7613 \r
7614     /**\r
7615      *\r
7616      */\r
7617     SVGAnimatedBoolean getExternalResourcesRequired();\r
7618 \r
7619     //####################################################################\r
7620     //# SVGFitToViewBox             \r
7621     //####################################################################\r
7622 \r
7623     /**\r
7624      *\r
7625      */\r
7626     SVGAnimatedRect getViewBox();\r
7627 \r
7628     /**\r
7629      *\r
7630      */\r
7631     SVGAnimatedPreserveAspectRatio getPreserveAspectRatio();\r
7632 \r
7633     //####################################################################\r
7634     //# SVGICCColor                 \r
7635     //####################################################################\r
7636 \r
7637     /**\r
7638      *\r
7639      */\r
7640     DOMString getColorProfile();\r
7641 \r
7642     /**\r
7643      *\r
7644      */\r
7645     void setColorProfile(const DOMString &val) throw (DOMException);\r
7646 \r
7647     /**\r
7648      *\r
7649      */\r
7650     SVGNumberList &getColors();\r
7651 \r
7652     //####################################################################\r
7653     //# SVGLangSpace                \r
7654     //####################################################################\r
7655 \r
7656     /**\r
7657      *\r
7658      */\r
7659     DOMString getXmllang();\r
7660 \r
7661     /**\r
7662      *\r
7663      */\r
7664     void setXmllang(const DOMString &val) throw (DOMException);\r
7665 \r
7666     /**\r
7667      *\r
7668      */\r
7669     DOMString getXmlspace();\r
7670 \r
7671     /**\r
7672      *\r
7673      */\r
7674     void setXmlspace(const DOMString &val) throw (DOMException);\r
7675 \r
7676     //####################################################################\r
7677     //# SVGLength                   \r
7678     //####################################################################\r
7679 \r
7680     /**\r
7681      *\r
7682      */\r
7683     unsigned short getUnitType();\r
7684 \r
7685     /**\r
7686      *\r
7687      */\r
7688     double getValue();\r
7689 \r
7690     /**\r
7691      *\r
7692      */\r
7693     void setValue(double val) throw (DOMException);\r
7694 \r
7695     /**\r
7696      *\r
7697      */\r
7698     double getValueInSpecifiedUnits();\r
7699 \r
7700     /**\r
7701      *\r
7702      */\r
7703     void setValueInSpecifiedUnits(double /*val*/) throw (DOMException);\r
7704 \r
7705     /**\r
7706      *\r
7707      */\r
7708     DOMString getValueAsString();\r
7709 \r
7710     /**\r
7711      *\r
7712      */\r
7713     void setValueAsString(const DOMString& /*val*/) throw (DOMException);\r
7714 \r
7715 \r
7716     /**\r
7717      *\r
7718      */\r
7719     void newValueSpecifiedUnits(unsigned short /*unitType*/, double /*val*/);\r
7720 \r
7721     /**\r
7722      *\r
7723      */\r
7724     void convertToSpecifiedUnits(unsigned short /*unitType*/);\r
7725 \r
7726     //####################################################################\r
7727     //# SVGLengthList               \r
7728     //####################################################################\r
7729 \r
7730     /**\r
7731      *\r
7732      */\r
7733     unsigned long getNumberOfItems();\r
7734 \r
7735 \r
7736     /**\r
7737      *\r
7738      */\r
7739     void clear() throw (DOMException);\r
7740 \r
7741     /**\r
7742      *\r
7743      */\r
7744     SVGLength initialize(const SVGLength &newItem)\r
7745                     throw (DOMException, SVGException);\r
7746 \r
7747     /**\r
7748      *\r
7749      */\r
7750     SVGLength getItem(unsigned long index) throw (DOMException);\r
7751 \r
7752     /**\r
7753      *\r
7754      */\r
7755     SVGLength insertItemBefore(const SVGLength &newItem, unsigned long index)\r
7756                                    throw (DOMException, SVGException);\r
7757 \r
7758     /**\r
7759      *\r
7760      */\r
7761     SVGLength replaceItem(const SVGLength &newItem, unsigned long index)\r
7762                                throw (DOMException, SVGException);\r
7763 \r
7764     /**\r
7765      *\r
7766      */\r
7767     SVGLength removeItem(unsigned long index) throw (DOMException);\r
7768 \r
7769     /**\r
7770      *\r
7771      */\r
7772     SVGLength appendItem(const SVGLength &newItem)\r
7773                     throw (DOMException, SVGException);\r
7774 \r
7775     //####################################################################\r
7776     //# SVGLocatable                \r
7777     //####################################################################\r
7778 \r
7779     /**\r
7780      *\r
7781      */\r
7782     SVGElementPtr getNearestViewportElement();\r
7783 \r
7784     /**\r
7785      *\r
7786      */\r
7787     SVGElement *getFarthestViewportElement();\r
7788 \r
7789     /**\r
7790      *\r
7791      */\r
7792     SVGRect getBBox();\r
7793 \r
7794     /**\r
7795      *\r
7796      */\r
7797     SVGMatrix getCTM();\r
7798 \r
7799     /**\r
7800      *\r
7801      */\r
7802     SVGMatrix getScreenCTM();\r
7803 \r
7804     /**\r
7805      *\r
7806      */\r
7807     SVGMatrix getTransformToElement(const SVGElement &/*element*/)\r
7808                                     throw (SVGException);\r
7809 \r
7810     //####################################################################\r
7811     //# SVGNumber                   \r
7812     //####################################################################\r
7813 \r
7814     /**\r
7815      *\r
7816      */\r
7817     double getValue();\r
7818 \r
7819     /**\r
7820      *\r
7821      */\r
7822     void setValue(double val) throw (DOMException);\r
7823 \r
7824     //####################################################################\r
7825     //# SVGNumberList               \r
7826     //####################################################################\r
7827 \r
7828     /**\r
7829      *\r
7830      */\r
7831     unsigned long getNumberOfItems();\r
7832 \r
7833 \r
7834     /**\r
7835      *\r
7836      */\r
7837     void clear() throw (DOMException);\r
7838 \r
7839     /**\r
7840      *\r
7841      */\r
7842     SVGNumber initialize(const SVGNumber &newItem)\r
7843                     throw (DOMException, SVGException);\r
7844 \r
7845     /**\r
7846      *\r
7847      */\r
7848     SVGNumber getItem(unsigned long index) throw (DOMException);\r
7849 \r
7850     /**\r
7851      *\r
7852      */\r
7853     SVGNumber insertItemBefore(const SVGNumber &newItem, unsigned long index)\r
7854                                          throw (DOMException, SVGException);\r
7855 \r
7856     /**\r
7857      *\r
7858      */\r
7859     SVGNumber replaceItem(const SVGNumber &newItem, unsigned long index)\r
7860                           throw (DOMException, SVGException);\r
7861 \r
7862     /**\r
7863      *\r
7864      */\r
7865     SVGNumber removeItem(unsigned long index) throw (DOMException);\r
7866 \r
7867     /**\r
7868      *\r
7869      */\r
7870     SVGNumber appendItem(const SVGNumber &newItem)\r
7871                                    throw (DOMException, SVGException);\r
7872 \r
7873     //####################################################################\r
7874     //# SVGRect                     \r
7875     //####################################################################\r
7876 \r
7877     /**\r
7878      *\r
7879      */\r
7880     double getX();\r
7881 \r
7882     /**\r
7883      *\r
7884      */\r
7885     void setX(double val) throw (DOMException);\r
7886 \r
7887     /**\r
7888      *\r
7889      */\r
7890     double getY();\r
7891 \r
7892     /**\r
7893      *\r
7894      */\r
7895     void setY(double val) throw (DOMException);\r
7896 \r
7897     /**\r
7898      *\r
7899      */\r
7900     double getWidth();\r
7901 \r
7902     /**\r
7903      *\r
7904      */\r
7905     void setWidth(double val) throw (DOMException);\r
7906 \r
7907     /**\r
7908      *\r
7909      */\r
7910     double getHeight();\r
7911 \r
7912     /**\r
7913      *\r
7914      */\r
7915     void setHeight(double val) throw (DOMException);\r
7916 \r
7917     //####################################################################\r
7918     //# SVGRenderingIntent          \r
7919     //####################################################################\r
7920 \r
7921     //####################################################################\r
7922     //# SVGStringList               \r
7923     //####################################################################\r
7924 \r
7925     /**\r
7926      *\r
7927      */\r
7928     unsigned long getNumberOfItems();\r
7929 \r
7930     /**\r
7931      *\r
7932      */\r
7933     void clear() throw (DOMException);\r
7934 \r
7935     /**\r
7936      *\r
7937      */\r
7938     DOMString initialize(const DOMString& newItem)\r
7939                     throw (DOMException, SVGException);\r
7940 \r
7941     /**\r
7942      *\r
7943      */\r
7944     DOMString getItem(unsigned long index) throw (DOMException);\r
7945 \r
7946     /**\r
7947      *\r
7948      */\r
7949     DOMString insertItemBefore(const DOMString& newItem, unsigned long index)\r
7950                                throw (DOMException, SVGException);\r
7951 \r
7952     /**\r
7953      *\r
7954      */\r
7955     DOMString replaceItem(const DOMString& newItem, unsigned long index)\r
7956                                 throw (DOMException, SVGException);\r
7957 \r
7958     /**\r
7959      *\r
7960      */\r
7961     DOMString removeItem(unsigned long index) throw (DOMException);\r
7962 \r
7963     /**\r
7964      *\r
7965      */\r
7966     DOMString appendItem(const DOMString& newItem)\r
7967                     throw (DOMException, SVGException);\r
7968 \r
7969     //####################################################################\r
7970     //# SVGStylable                 \r
7971     //####################################################################\r
7972 \r
7973     /**\r
7974      *\r
7975      */\r
7976     SVGAnimatedString getClassName();\r
7977 \r
7978     /**\r
7979      *\r
7980      */\r
7981     css::CSSStyleDeclaration getStyle();\r
7982 \r
7983     /**\r
7984      *\r
7985      */\r
7986     css::CSSValue getPresentationAttribute(const DOMString& /*name*/);\r
7987 \r
7988     //####################################################################\r
7989     //# SVGTests                    \r
7990     //####################################################################\r
7991 \r
7992     /**\r
7993      *\r
7994      */\r
7995     SVGStringList &getRequiredFeatures();\r
7996 \r
7997     /**\r
7998      *\r
7999      */\r
8000     SVGStringList &getRequiredExtensions();\r
8001 \r
8002     /**\r
8003      *\r
8004      */\r
8005     SVGStringList &getSystemLanguage();\r
8006 \r
8007     /**\r
8008      *\r
8009      */\r
8010     bool hasExtension(const DOMString& /*extension*/);\r
8011 \r
8012     //####################################################################\r
8013     //# SVGTransformable            \r
8014     //####################################################################\r
8015 \r
8016     /**\r
8017      *\r
8018      */\r
8019     SVGAnimatedTransformList &getTransform();\r
8020 \r
8021     //####################################################################\r
8022     //# SVGUnitTypes                \r
8023     //####################################################################\r
8024 \r
8025     //####################################################################\r
8026     //# SVGURIReference             \r
8027     //####################################################################\r
8028 \r
8029     /**\r
8030      *\r
8031      */\r
8032     SVGAnimatedString getHref();\r
8033 \r
8034     //####################################################################\r
8035     //# SVGViewSpec                 \r
8036     //####################################################################\r
8037 \r
8038     /**\r
8039      *\r
8040      */\r
8041     SVGTransformList getTransform();\r
8042 \r
8043     /**\r
8044      *\r
8045      */\r
8046     SVGElement *getViewTarget();\r
8047 \r
8048     /**\r
8049      *\r
8050      */\r
8051     DOMString getViewBoxString();\r
8052 \r
8053     /**\r
8054      *\r
8055      */\r
8056     DOMString getPreserveAspectRatioString();\r
8057 \r
8058     /**\r
8059      *\r
8060      */\r
8061     DOMString getTransformString();\r
8062 \r
8063     /**\r
8064      *\r
8065      */\r
8066     DOMString getViewTargetString();\r
8067 \r
8068     //####################################################################\r
8069     //# SVGZoomAndPan               \r
8070     //####################################################################\r
8071 \r
8072     /**\r
8073      *\r
8074      */\r
8075     unsigned short getZoomAndPan();\r
8076 \r
8077     /**\r
8078      *\r
8079      */\r
8080     void setZoomAndPan(unsigned short val) throw (DOMException);\r
8081 \r
8082     //####################################################################\r
8083     //####################################################################\r
8084     //# E L E M E N T S\r
8085     //####################################################################\r
8086     //####################################################################\r
8087 \r
8088     //####################################################################\r
8089     //# SVGAElement\r
8090     //####################################################################\r
8091 \r
8092 \r
8093     /**\r
8094      *\r
8095      */\r
8096     SVGAnimatedString getTarget();\r
8097 \r
8098 \r
8099 \r
8100     //####################################################################\r
8101     //# SVGAltGlyphElement\r
8102     //####################################################################\r
8103 \r
8104 \r
8105     /**\r
8106      * Get the attribute glyphRef on the given element.\r
8107      */\r
8108     DOMString getGlyphRef();\r
8109 \r
8110     /**\r
8111      * Set the attribute glyphRef on the given element.\r
8112      */\r
8113     void setGlyphRef(const DOMString &val) throw (DOMException);\r
8114 \r
8115     /**\r
8116      * Get the attribute format on the given element.\r
8117      */\r
8118     DOMString getFormat();\r
8119 \r
8120     /**\r
8121      * Set the attribute format on the given element.\r
8122      */\r
8123     void setFormat(const DOMString &val) throw (DOMException);\r
8124 \r
8125 \r
8126     //####################################################################\r
8127     //# SVGAltGlyphDefElement\r
8128     //####################################################################\r
8129 \r
8130     //####################################################################\r
8131     //# SVGAltGlyphItemElement\r
8132     //####################################################################\r
8133 \r
8134 \r
8135     //####################################################################\r
8136     //# SVGAnimateElement\r
8137     //####################################################################\r
8138 \r
8139 \r
8140     //####################################################################\r
8141     //# SVGAnimateColorElement\r
8142     //####################################################################\r
8143 \r
8144     //####################################################################\r
8145     //# SVGAnimateMotionElement\r
8146     //####################################################################\r
8147 \r
8148 \r
8149     //####################################################################\r
8150     //# SVGAnimateTransformElement\r
8151     //####################################################################\r
8152 \r
8153 \r
8154     //####################################################################\r
8155     //# SVGAnimationElement\r
8156     //####################################################################\r
8157 \r
8158 \r
8159     /**\r
8160      *\r
8161      */\r
8162     SVGElementPtr getTargetElement();\r
8163 \r
8164     /**\r
8165      *\r
8166      */\r
8167     double getStartTime();\r
8168 \r
8169     /**\r
8170      *\r
8171      */\r
8172     double getCurrentTime();\r
8173 \r
8174     /**\r
8175      *\r
8176      */\r
8177     double getSimpleDuration() throw (DOMException);\r
8178 \r
8179 \r
8180 \r
8181     //####################################################################\r
8182     //# SVGCircleElement\r
8183     //####################################################################\r
8184 \r
8185     /**\r
8186      * Corresponds to attribute cx on the given 'circle' element.\r
8187      */\r
8188     SVGAnimatedLength getCx();\r
8189 \r
8190     /**\r
8191      * Corresponds to attribute cy on the given 'circle' element.\r
8192      */\r
8193     SVGAnimatedLength getCy();\r
8194 \r
8195     /**\r
8196      * Corresponds to attribute r on the given 'circle' element.\r
8197      */\r
8198     SVGAnimatedLength getR();\r
8199 \r
8200     //####################################################################\r
8201     //# SVGClipPathElement\r
8202     //####################################################################\r
8203 \r
8204 \r
8205     /**\r
8206      * Corresponds to attribute clipPathUnits on the given 'clipPath' element.\r
8207      *      Takes one of the constants defined in SVGUnitTypes.\r
8208      */\r
8209     SVGAnimatedEnumeration getClipPathUnits();\r
8210 \r
8211 \r
8212 \r
8213     //####################################################################\r
8214     //# SVGColorProfileElement\r
8215     //####################################################################\r
8216 \r
8217 \r
8218     /**\r
8219      * Get the attribute local on the given element.\r
8220      */\r
8221     DOMString getLocal();\r
8222 \r
8223     /**\r
8224      * Set the attribute local on the given element.\r
8225      */\r
8226     void setLocal(const DOMString &val) throw (DOMException);\r
8227 \r
8228     /**\r
8229      * Get the attribute name on the given element.\r
8230      */\r
8231     DOMString getName();\r
8232 \r
8233     /**\r
8234      * Set the attribute name on the given element.\r
8235      */\r
8236     void setName(const DOMString &val) throw (DOMException);\r
8237 \r
8238     /**\r
8239      * Set the attribute rendering-intent on the given element.\r
8240      * The type of rendering intent, identified by one of the\r
8241      *      SVGRenderingIntent constants.\r
8242      */\r
8243     unsigned short getRenderingIntent();\r
8244 \r
8245     /**\r
8246      * Get the attribute rendering-intent on the given element.\r
8247      */\r
8248     void setRenderingIntent(unsigned short val) throw (DOMException);\r
8249 \r
8250 \r
8251     //####################################################################\r
8252     //# SVGComponentTransferFunctionElement\r
8253     //####################################################################\r
8254 \r
8255 \r
8256     /**\r
8257      * Component Transfer Types\r
8258      */\r
8259     typedef enum\r
8260         {\r
8261         SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN  = 0,\r
8262         SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1,\r
8263         SVG_FECOMPONENTTRANSFER_TYPE_TABLE    = 2,\r
8264         SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3,\r
8265         SVG_FECOMPONENTTRANSFER_TYPE_LINEAR   = 4,\r
8266         SVG_FECOMPONENTTRANSFER_TYPE_GAMMA    = 5\r
8267         } ComponentTransferType;\r
8268 \r
8269 \r
8270     /**\r
8271      * Corresponds to attribute type on the given element. Takes one\\r
8272      *      of the Component Transfer Types.\r
8273      */\r
8274     SVGAnimatedEnumeration getType();\r
8275 \r
8276     /**\r
8277      * Corresponds to attribute tableValues on the given element.\r
8278      */\r
8279     SVGAnimatedNumberList getTableValues();\r
8280 \r
8281     /**\r
8282      * Corresponds to attribute slope on the given element.\r
8283      */\r
8284     SVGAnimatedNumber getSlope();\r
8285 \r
8286     /**\r
8287      * Corresponds to attribute intercept on the given element.\r
8288      */\r
8289     SVGAnimatedNumber getIntercept();\r
8290 \r
8291     /**\r
8292      * Corresponds to attribute amplitude on the given element.\r
8293      */\r
8294     SVGAnimatedNumber getAmplitude();\r
8295 \r
8296     /**\r
8297      * Corresponds to attribute exponent on the given element.\r
8298      */\r
8299     SVGAnimatedNumber getExponent();\r
8300 \r
8301     /**\r
8302      * Corresponds to attribute offset on the given element.\r
8303      */\r
8304     SVGAnimatedNumber getOffset();\r
8305 \r
8306     //####################################################################\r
8307     //# SVGCursorElement\r
8308     //####################################################################\r
8309 \r
8310     /**\r
8311      *\r
8312      */\r
8313     SVGAnimatedLength getX();\r
8314 \r
8315     /**\r
8316      *\r
8317      */\r
8318     SVGAnimatedLength getY();\r
8319 \r
8320 \r
8321     //####################################################################\r
8322     //# SVGDefinitionSrcElement\r
8323     //####################################################################\r
8324 \r
8325     //####################################################################\r
8326     //# SVGDefsElement\r
8327     //####################################################################\r
8328 \r
8329     //####################################################################\r
8330     //# SVGDescElement\r
8331     //####################################################################\r
8332 \r
8333     //####################################################################\r
8334     //# SVGEllipseElement\r
8335     //####################################################################\r
8336 \r
8337     /**\r
8338      * Corresponds to attribute cx on the given 'ellipse' element.\r
8339      */\r
8340     SVGAnimatedLength getCx();\r
8341 \r
8342     /**\r
8343      * Corresponds to attribute cy on the given 'ellipse' element.\r
8344      */\r
8345     SVGAnimatedLength getCy();\r
8346 \r
8347     /**\r
8348      * Corresponds to attribute rx on the given 'ellipse' element.\r
8349      */\r
8350     SVGAnimatedLength getRx();\r
8351 \r
8352     /**\r
8353      * Corresponds to attribute ry on the given 'ellipse' element.\r
8354      */\r
8355     SVGAnimatedLength getRy();\r
8356 \r
8357 \r
8358     //####################################################################\r
8359     //# SVGFEBlendElement\r
8360     //####################################################################\r
8361 \r
8362     /**\r
8363      * Blend Mode Types\r
8364      */\r
8365     typedef enum\r
8366         {\r
8367         SVG_FEBLEND_MODE_UNKNOWN  = 0,\r
8368         SVG_FEBLEND_MODE_NORMAL   = 1,\r
8369         SVG_FEBLEND_MODE_MULTIPLY = 2,\r
8370         SVG_FEBLEND_MODE_SCREEN   = 3,\r
8371         SVG_FEBLEND_MODE_DARKEN   = 4,\r
8372         SVG_FEBLEND_MODE_LIGHTEN  = 5\r
8373         } BlendModeType;\r
8374 \r
8375     /**\r
8376      * Corresponds to attribute in on the given 'feBlend' element.\r
8377      */\r
8378     SVGAnimatedString getIn1();\r
8379 \r
8380     /**\r
8381      * Corresponds to attribute in2 on the given 'feBlend' element.\r
8382      */\r
8383     SVGAnimatedString getIn2();\r
8384 \r
8385     /**\r
8386      * Corresponds to attribute mode on the given 'feBlend' element.\r
8387      *      Takes one of the Blend Mode Types.\r
8388      */\r
8389     SVGAnimatedEnumeration getMode();\r
8390 \r
8391 \r
8392     //####################################################################\r
8393     //# SVGFEColorMatrixElement\r
8394     //####################################################################\r
8395 \r
8396     /**\r
8397      * Color Matrix Types\r
8398      */\r
8399     typedef enum\r
8400         {\r
8401         SVG_FECOLORMATRIX_TYPE_UNKNOWN          = 0,\r
8402         SVG_FECOLORMATRIX_TYPE_MATRIX           = 1,\r
8403         SVG_FECOLORMATRIX_TYPE_SATURATE         = 2,\r
8404         SVG_FECOLORMATRIX_TYPE_HUEROTATE        = 3,\r
8405         SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4\r
8406         } ColorMatrixType;\r
8407 \r
8408 \r
8409     /**\r
8410      * Corresponds to attribute in on the given 'feColorMatrix' element.\r
8411      */\r
8412     SVGAnimatedString getIn1();\r
8413 \r
8414     /**\r
8415      * Corresponds to attribute type on the given 'feColorMatrix' element.\r
8416      *      Takes one of the Color Matrix Types.\r
8417      */\r
8418     SVGAnimatedEnumeration getType();\r
8419 \r
8420     /**\r
8421      * Corresponds to attribute values on the given 'feColorMatrix' element.\r
8422      * Provides access to the contents of the values attribute.\r
8423      */\r
8424     SVGAnimatedNumberList getValues();\r
8425 \r
8426 \r
8427     //####################################################################\r
8428     //# SVGFEComponentTransferElement\r
8429     //####################################################################\r
8430 \r
8431 \r
8432     /**\r
8433      * Corresponds to attribute in on the given 'feComponentTransfer'  element.\r
8434      */\r
8435     SVGAnimatedString getIn1();\r
8436 \r
8437     //####################################################################\r
8438     //# SVGFECompositeElement\r
8439     //####################################################################\r
8440 \r
8441     /**\r
8442      *  Composite Operators\r
8443      */\r
8444     typedef enum\r
8445         {\r
8446         SVG_FECOMPOSITE_OPERATOR_UNKNOWN    = 0,\r
8447         SVG_FECOMPOSITE_OPERATOR_OVER       = 1,\r
8448         SVG_FECOMPOSITE_OPERATOR_IN         = 2,\r
8449         SVG_FECOMPOSITE_OPERATOR_OUT        = 3,\r
8450         SVG_FECOMPOSITE_OPERATOR_ATOP       = 4,\r
8451         SVG_FECOMPOSITE_OPERATOR_XOR        = 5,\r
8452         SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6\r
8453         } CompositeOperatorType;\r
8454 \r
8455     /**\r
8456      * Corresponds to attribute in on the given 'feComposite' element.\r
8457      */\r
8458     SVGAnimatedString getIn1();\r
8459 \r
8460     /**\r
8461      * Corresponds to attribute in2 on the given 'feComposite' element.\r
8462      */\r
8463     SVGAnimatedString getIn2();\r
8464 \r
8465     /**\r
8466      * Corresponds to attribute operator on the given 'feComposite' element.\r
8467      *      Takes one of the Composite Operators.\r
8468      */\r
8469     SVGAnimatedEnumeration getOperator();\r
8470 \r
8471     /**\r
8472      * Corresponds to attribute k1 on the given 'feComposite' element.\r
8473      */\r
8474     SVGAnimatedNumber getK1();\r
8475 \r
8476     /**\r
8477      * Corresponds to attribute k2 on the given 'feComposite' element.\r
8478      */\r
8479     SVGAnimatedNumber getK2();\r
8480 \r
8481     /**\r
8482      * Corresponds to attribute k3 on the given 'feComposite' element.\r
8483      */\r
8484     SVGAnimatedNumber getK3();\r
8485 \r
8486     /**\r
8487      * Corresponds to attribute k4 on the given 'feComposite' element.\r
8488      */\r
8489     SVGAnimatedNumber getK4();\r
8490 \r
8491 \r
8492     //####################################################################\r
8493     //# SVGFEConvolveMatrixElement\r
8494     //####################################################################\r
8495 \r
8496 \r
8497     /**\r
8498      * Edge Mode Values\r
8499      */\r
8500     typedef enum\r
8501         {\r
8502         SVG_EDGEMODE_UNKNOWN   = 0,\r
8503         SVG_EDGEMODE_DUPLICATE = 1,\r
8504         SVG_EDGEMODE_WRAP      = 2,\r
8505         SVG_EDGEMODE_NONE      = 3\r
8506         } EdgeModeType;\r
8507 \r
8508 \r
8509     /**\r
8510      * Corresponds to attribute order on the given 'feConvolveMatrix'  element.\r
8511      */\r
8512     SVGAnimatedInteger getOrderX();\r
8513 \r
8514     /**\r
8515      * Corresponds to attribute order on the given 'feConvolveMatrix'  element.\r
8516      */\r
8517     SVGAnimatedInteger getOrderY();\r
8518 \r
8519     /**\r
8520      * Corresponds to attribute kernelMatrix on the given element.\r
8521      */\r
8522     SVGAnimatedNumberList getKernelMatrix();\r
8523 \r
8524     /**\r
8525      * Corresponds to attribute divisor on the given 'feConvolveMatrix' element.\r
8526      */\r
8527     SVGAnimatedNumber getDivisor();\r
8528 \r
8529     /**\r
8530      * Corresponds to attribute bias on the given 'feConvolveMatrix'  element.\r
8531      */\r
8532     SVGAnimatedNumber getBias();\r
8533 \r
8534     /**\r
8535      * Corresponds to attribute targetX on the given 'feConvolveMatrix'  element.\r
8536      */\r
8537     SVGAnimatedInteger getTargetX();\r
8538 \r
8539     /**\r
8540      * Corresponds to attribute targetY on the given 'feConvolveMatrix'  element.\r
8541      */\r
8542     SVGAnimatedInteger getTargetY();\r
8543 \r
8544     /**\r
8545      * Corresponds to attribute edgeMode on the given 'feConvolveMatrix'\r
8546      *      element. Takes one of the Edge Mode Types.\r
8547      */\r
8548     SVGAnimatedEnumeration getEdgeMode();\r
8549 \r
8550     /**\r
8551      * Corresponds to attribute kernelUnitLength on the\r
8552      *      given 'feConvolveMatrix'  element.\r
8553      */\r
8554     SVGAnimatedLength getKernelUnitLengthX();\r
8555 \r
8556     /**\r
8557      * Corresponds to attribute kernelUnitLength on the given\r
8558      *      'feConvolveMatrix'  element.\r
8559      */\r
8560     SVGAnimatedLength getKernelUnitLengthY();\r
8561 \r
8562     /**\r
8563      * Corresponds to attribute preserveAlpha on the\r
8564      *      given 'feConvolveMatrix'  element.\r
8565      */\r
8566     SVGAnimatedBoolean getPreserveAlpha();\r
8567 \r
8568 \r
8569 \r
8570     //####################################################################\r
8571     //# SVGFEDiffuseLightingElement\r
8572     //####################################################################\r
8573 \r
8574 \r
8575     /**\r
8576      * Corresponds to attribute in on the given 'feDiffuseLighting'  element.\r
8577      */\r
8578     SVGAnimatedString getIn1();\r
8579 \r
8580     /**\r
8581      * Corresponds to attribute surfaceScale on the given\r
8582      *      'feDiffuseLighting'  element.\r
8583      */\r
8584     SVGAnimatedNumber getSurfaceScale();\r
8585 \r
8586     /**\r
8587      * Corresponds to attribute diffuseConstant on the given\r
8588      *      'feDiffuseLighting'  element.\r
8589      */\r
8590     SVGAnimatedNumber getDiffuseConstant();\r
8591 \r
8592     /**\r
8593      * Corresponds to attribute kernelUnitLength on the given\r
8594      *      'feDiffuseLighting'  element.\r
8595      */\r
8596     SVGAnimatedNumber getKernelUnitLengthX();\r
8597 \r
8598     /**\r
8599      * Corresponds to attribute kernelUnitLength on the given\r
8600      *      'feDiffuseLighting'  element.\r
8601      */\r
8602     SVGAnimatedNumber getKernelUnitLengthY();\r
8603 \r
8604 \r
8605 \r
8606 \r
8607     //####################################################################\r
8608     //# SVGFEDisplacementMapElement\r
8609     //####################################################################\r
8610 \r
8611 \r
8612     /**\r
8613      *  Channel Selectors\r
8614      */\r
8615     typedef enum\r
8616         {\r
8617         SVG_CHANNEL_UNKNOWN = 0,\r
8618         SVG_CHANNEL_R       = 1,\r
8619         SVG_CHANNEL_G       = 2,\r
8620         SVG_CHANNEL_B       = 3,\r
8621         SVG_CHANNEL_A       = 4\r
8622         } ChannelSelector;\r
8623 \r
8624     /**\r
8625      *\r
8626      */\r
8627     SVGAnimatedString getIn1();\r
8628 \r
8629     /**\r
8630      *\r
8631      */\r
8632     SVGAnimatedString getIn2();\r
8633 \r
8634 \r
8635     /**\r
8636      *\r
8637      */\r
8638     SVGAnimatedNumber getScale();\r
8639 \r
8640     /**\r
8641      *\r
8642      */\r
8643     SVGAnimatedEnumeration getXChannelSelector();\r
8644 \r
8645     /**\r
8646      *\r
8647      */\r
8648     SVGAnimatedEnumeration getYChannelSelector();\r
8649 \r
8650     //####################################################################\r
8651     //# SVGFEDistantLightElement\r
8652     //####################################################################\r
8653 \r
8654 \r
8655     /**\r
8656      * Corresponds to attribute azimuth on the given 'feDistantLight'  element.\r
8657      */\r
8658     SVGAnimatedNumber getAzimuth();\r
8659 \r
8660 \r
8661     /**\r
8662      * Corresponds to attribute elevation on the given 'feDistantLight'\r
8663      *    element\r
8664      */\r
8665     SVGAnimatedNumber getElevation();\r
8666 \r
8667 \r
8668     //####################################################################\r
8669     //# SVGFEFloodElement\r
8670     //####################################################################\r
8671 \r
8672 \r
8673     /**\r
8674      *\r
8675      */\r
8676     SVGAnimatedString getIn1();\r
8677 \r
8678 \r
8679     //####################################################################\r
8680     //# SVGFEFuncAElement\r
8681     //####################################################################\r
8682 \r
8683     //####################################################################\r
8684     //# SVGFEFuncBElement\r
8685     //####################################################################\r
8686 \r
8687     //####################################################################\r
8688     //# SVGFEFuncGElement\r
8689     //####################################################################\r
8690 \r
8691     //####################################################################\r
8692     //# SVGFEFuncRElement\r
8693     //####################################################################\r
8694 \r
8695 \r
8696     //####################################################################\r
8697     //# SVGFEGaussianBlurElement\r
8698     //####################################################################\r
8699 \r
8700 \r
8701     /**\r
8702      *\r
8703      */\r
8704     SVGAnimatedString getIn1();\r
8705 \r
8706 \r
8707     /**\r
8708      *\r
8709      */\r
8710     SVGAnimatedNumber getStdDeviationX();\r
8711 \r
8712     /**\r
8713      *\r
8714      */\r
8715     SVGAnimatedNumber getStdDeviationY();\r
8716 \r
8717 \r
8718     /**\r
8719      *\r
8720      */\r
8721     void setStdDeviation(double stdDeviationX, double stdDeviationY);\r
8722 \r
8723 \r
8724     //####################################################################\r
8725     //# SVGFEImageElement\r
8726     //####################################################################\r
8727 \r
8728 \r
8729     //####################################################################\r
8730     //# SVGFEMergeElement\r
8731     //####################################################################\r
8732 \r
8733     //####################################################################\r
8734     //# SVGFEMergeNodeElement\r
8735     //####################################################################\r
8736 \r
8737     //####################################################################\r
8738     //# SVGFEMorphologyElement\r
8739     //####################################################################\r
8740 \r
8741 \r
8742 \r
8743     /**\r
8744      *  Morphology Operators\r
8745      */\r
8746     typedef enum\r
8747         {\r
8748         SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0,\r
8749         SVG_MORPHOLOGY_OPERATOR_ERODE   = 1,\r
8750         SVG_MORPHOLOGY_OPERATOR_DILATE  = 2\r
8751         } MorphologyOperatorType;\r
8752 \r
8753 \r
8754     /**\r
8755      *\r
8756      */\r
8757     SVGAnimatedString getIn1();\r
8758 \r
8759 \r
8760     /**\r
8761      *\r
8762      */\r
8763     SVGAnimatedEnumeration getOperator();\r
8764 \r
8765     /**\r
8766      *\r
8767      */\r
8768     SVGAnimatedLength getRadiusX();\r
8769 \r
8770     /**\r
8771      *\r
8772      */\r
8773     SVGAnimatedLength getRadiusY();\r
8774 \r
8775     //####################################################################\r
8776     //# SVGFEOffsetElement\r
8777     //####################################################################\r
8778 \r
8779     /**\r
8780      *\r
8781      */\r
8782     SVGAnimatedString getIn1();\r
8783 \r
8784     /**\r
8785      *\r
8786      */\r
8787     SVGAnimatedLength getDx();\r
8788 \r
8789     /**\r
8790      *\r
8791      */\r
8792     SVGAnimatedLength getDy();\r
8793 \r
8794 \r
8795     //####################################################################\r
8796     //# SVGFEPointLightElement\r
8797     //####################################################################\r
8798 \r
8799     /**\r
8800      * Corresponds to attribute x on the given 'fePointLight' element.\r
8801      */\r
8802     SVGAnimatedNumber getX();\r
8803 \r
8804     /**\r
8805      * Corresponds to attribute y on the given 'fePointLight' element.\r
8806      */\r
8807     SVGAnimatedNumber getY();\r
8808 \r
8809     /**\r
8810      * Corresponds to attribute z on the given 'fePointLight' element.\r
8811      */\r
8812     SVGAnimatedNumber getZ();\r
8813 \r
8814     //####################################################################\r
8815     //# SVGFESpecularLightingElement\r
8816     //####################################################################\r
8817 \r
8818 \r
8819     /**\r
8820      *\r
8821      */\r
8822     SVGAnimatedString getIn1();\r
8823 \r
8824     /**\r
8825      *\r
8826      */\r
8827     SVGAnimatedNumber getSurfaceScale();\r
8828 \r
8829     /**\r
8830      *\r
8831      */\r
8832     SVGAnimatedNumber getSpecularConstant();\r
8833 \r
8834     /**\r
8835      *\r
8836      */\r
8837     SVGAnimatedNumber getSpecularExponent();\r
8838 \r
8839 \r
8840     //####################################################################\r
8841     //# SVGFESpotLightElement\r
8842     //####################################################################\r
8843 \r
8844     /**\r
8845      * Corresponds to attribute x on the given 'feSpotLight' element.\r
8846      */\r
8847     SVGAnimatedNumber getX();\r
8848 \r
8849     /**\r
8850      * Corresponds to attribute y on the given 'feSpotLight' element.\r
8851      */\r
8852     SVGAnimatedNumber getY();\r
8853 \r
8854     /**\r
8855      * Corresponds to attribute z on the given 'feSpotLight' element.\r
8856      */\r
8857     SVGAnimatedNumber getZ();\r
8858 \r
8859     /**\r
8860      * Corresponds to attribute pointsAtX on the given 'feSpotLight' element.\r
8861      */\r
8862     SVGAnimatedNumber getPointsAtX();\r
8863 \r
8864     /**\r
8865      * Corresponds to attribute pointsAtY on the given 'feSpotLight' element.\r
8866      */\r
8867     SVGAnimatedNumber getPointsAtY();\r
8868 \r
8869     /**\r
8870      * Corresponds to attribute pointsAtZ on the given 'feSpotLight' element.\r
8871      */\r
8872     SVGAnimatedNumber getPointsAtZ();\r
8873 \r
8874     /**\r
8875      * Corresponds to attribute specularExponent on the\r
8876      *      given 'feSpotLight'  element.\r
8877      */\r
8878     SVGAnimatedNumber getSpecularExponent();\r
8879 \r
8880     /**\r
8881      * Corresponds to attribute limitingConeAngle on the\r
8882      *      given 'feSpotLight'  element.\r
8883      */\r
8884     SVGAnimatedNumber getLimitingConeAngle();\r
8885 \r
8886 \r
8887     //####################################################################\r
8888     //# SVGFETileElement\r
8889     //####################################################################\r
8890 \r
8891 \r
8892     /**\r
8893      *\r
8894      */\r
8895     SVGAnimatedString getIn1();\r
8896 \r
8897 \r
8898     //####################################################################\r
8899     //# SVGFETurbulenceElement\r
8900     //####################################################################\r
8901 \r
8902 \r
8903     /**\r
8904      *  Turbulence Types\r
8905      */\r
8906     typedef enum\r
8907         {\r
8908         SVG_TURBULENCE_TYPE_UNKNOWN      = 0,\r
8909         SVG_TURBULENCE_TYPE_FRACTALNOISE = 1,\r
8910         SVG_TURBULENCE_TYPE_TURBULENCE   = 2\r
8911         } TurbulenceType;\r
8912 \r
8913     /**\r
8914      *  Stitch Options\r
8915      */\r
8916     typedef enum\r
8917         {\r
8918         SVG_STITCHTYPE_UNKNOWN  = 0,\r
8919         SVG_STITCHTYPE_STITCH   = 1,\r
8920         SVG_STITCHTYPE_NOSTITCH = 2\r
8921         } StitchOption;\r
8922 \r
8923 \r
8924 \r
8925     /**\r
8926      *\r
8927      */\r
8928     SVGAnimatedNumber getBaseFrequencyX();\r
8929 \r
8930     /**\r
8931      *\r
8932      */\r
8933     SVGAnimatedNumber getBaseFrequencyY();\r
8934 \r
8935     /**\r
8936      *\r
8937      */\r
8938     SVGAnimatedInteger getNumOctaves();\r
8939 \r
8940     /**\r
8941      *\r
8942      */\r
8943     SVGAnimatedNumber getSeed();\r
8944 \r
8945     /**\r
8946      *\r
8947      */\r
8948     SVGAnimatedEnumeration getStitchTiles();\r
8949 \r
8950     /**\r
8951      *\r
8952      */\r
8953     SVGAnimatedEnumeration getType();\r
8954 \r
8955 \r
8956 \r
8957     //####################################################################\r
8958     //# SVGFilterElement\r
8959     //####################################################################\r
8960 \r
8961 \r
8962     /**\r
8963      * Corresponds to attribute filterUnits on the given 'filter' element. Takes one\r
8964      * of the constants defined in SVGUnitTypes.\r
8965      */\r
8966     SVGAnimatedEnumeration getFilterUnits();\r
8967 \r
8968     /**\r
8969      * Corresponds to attribute primitiveUnits on the given 'filter' element. Takes\r
8970      * one of the constants defined in SVGUnitTypes.\r
8971      */\r
8972     SVGAnimatedEnumeration getPrimitiveUnits();\r
8973 \r
8974     /**\r
8975      *\r
8976      */\r
8977     SVGAnimatedLength getX();\r
8978 \r
8979     /**\r
8980      * Corresponds to attribute x on the given 'filter' element.\r
8981      */\r
8982     SVGAnimatedLength getY();\r
8983 \r
8984     /**\r
8985      * Corresponds to attribute y on the given 'filter' element.\r
8986      */\r
8987     SVGAnimatedLength getWidth();\r
8988 \r
8989     /**\r
8990      * Corresponds to attribute height on the given 'filter' element.\r
8991      */\r
8992     SVGAnimatedLength getHeight();\r
8993 \r
8994 \r
8995     /**\r
8996      * Corresponds to attribute filterRes on the given 'filter' element.\r
8997      *      Contains the X component of attribute filterRes.\r
8998      */\r
8999     SVGAnimatedInteger getFilterResX();\r
9000 \r
9001     /**\r
9002      * Corresponds to attribute filterRes on the given 'filter' element.\r
9003      * Contains the Y component(possibly computed automatically)\r
9004      *      of attribute filterRes.\r
9005      */\r
9006     SVGAnimatedInteger getFilterResY();\r
9007 \r
9008     /**\r
9009      * Sets the values for attribute filterRes.\r
9010      */\r
9011     void setFilterRes(unsigned long filterResX, unsigned long filterResY);\r
9012 \r
9013 \r
9014     //####################################################################\r
9015     //# SVGFontElement\r
9016     //####################################################################\r
9017 \r
9018     //####################################################################\r
9019     //# SVGFontFaceElement\r
9020     //####################################################################\r
9021 \r
9022     //####################################################################\r
9023     //# SVGFontFaceFormatElement\r
9024     //####################################################################\r
9025 \r
9026     //####################################################################\r
9027     //# SVGFontFaceNameElement\r
9028     //####################################################################\r
9029 \r
9030     //####################################################################\r
9031     //# SVGFontFaceSrcElement\r
9032     //####################################################################\r
9033 \r
9034     //####################################################################\r
9035     //# SVGFontFaceUriElement\r
9036     //####################################################################\r
9037 \r
9038     //####################################################################\r
9039     //# SVGForeignObjectElement\r
9040     //####################################################################\r
9041 \r
9042     /**\r
9043      *\r
9044      */\r
9045     SVGAnimatedLength getX();\r
9046 \r
9047     /**\r
9048      *\r
9049      */\r
9050     SVGAnimatedLength getY();\r
9051 \r
9052     /**\r
9053      *\r
9054      */\r
9055     SVGAnimatedLength getWidth();\r
9056 \r
9057     /**\r
9058      *\r
9059      */\r
9060     SVGAnimatedLength getHeight();\r
9061 \r
9062 \r
9063 \r
9064     //####################################################################\r
9065     //# SVGGlyphRefElement\r
9066     //####################################################################\r
9067 \r
9068 \r
9069     /**\r
9070      * Get the attribute glyphRef on the given element.\r
9071      */\r
9072     DOMString getGlyphRef();\r
9073 \r
9074     /**\r
9075      * Set the attribute glyphRef on the given element.\r
9076      */\r
9077     void setGlyphRef(const DOMString &val) throw (DOMException);\r
9078 \r
9079     /**\r
9080      * Get the attribute format on the given element.\r
9081      */\r
9082     DOMString getFormat();\r
9083 \r
9084     /**\r
9085      * Set the attribute format on the given element.\r
9086      */\r
9087     void setFormat(const DOMString &val) throw (DOMException);\r
9088 \r
9089     /**\r
9090      * Get the attribute x on the given element.\r
9091      */\r
9092     double getX();\r
9093 \r
9094     /**\r
9095      * Set the attribute x on the given element.\r
9096      */\r
9097     void setX(double val) throw (DOMException);\r
9098 \r
9099     /**\r
9100      * Get the attribute y on the given element.\r
9101      */\r
9102     double getY();\r
9103 \r
9104     /**\r
9105      * Set the attribute y on the given element.\r
9106      */\r
9107     void setY(double val) throw (DOMException);\r
9108 \r
9109     /**\r
9110      * Get the attribute dx on the given element.\r
9111      */\r
9112     double getDx();\r
9113 \r
9114     /**\r
9115      * Set the attribute dx on the given element.\r
9116      */\r
9117     void setDx(double val) throw (DOMException);\r
9118 \r
9119     /**\r
9120      * Get the attribute dy on the given element.\r
9121      */\r
9122     double getDy();\r
9123 \r
9124     /**\r
9125      * Set the attribute dy on the given element.\r
9126      */\r
9127     void setDy(double val) throw (DOMException);\r
9128 \r
9129 \r
9130     //####################################################################\r
9131     //# SVGGradientElement\r
9132     //####################################################################\r
9133 \r
9134 \r
9135     /**\r
9136      * Spread Method Types\r
9137      */\r
9138     typedef enum\r
9139         {\r
9140         SVG_SPREADMETHOD_UNKNOWN = 0,\r
9141         SVG_SPREADMETHOD_PAD     = 1,\r
9142         SVG_SPREADMETHOD_REFLECT = 2,\r
9143         SVG_SPREADMETHOD_REPEAT  = 3\r
9144         } SpreadMethodType;\r
9145 \r
9146 \r
9147     /**\r
9148      * Corresponds to attribute gradientUnits on the given element.\r
9149      *      Takes one of the constants defined in SVGUnitTypes.\r
9150      */\r
9151     SVGAnimatedEnumeration getGradientUnits();\r
9152 \r
9153     /**\r
9154      * Corresponds to attribute gradientTransform on the given element.\r
9155      */\r
9156     SVGAnimatedTransformList getGradientTransform();\r
9157 \r
9158     /**\r
9159      * Corresponds to attribute spreadMethod on the given element.\r
9160      *      One of the Spread Method Types.\r
9161      */\r
9162     SVGAnimatedEnumeration getSpreadMethod();\r
9163 \r
9164 \r
9165 \r
9166     //####################################################################\r
9167     //# SVGHKernElement\r
9168     //####################################################################\r
9169 \r
9170     //####################################################################\r
9171     //# SVGImageElement\r
9172     //####################################################################\r
9173 \r
9174     /**\r
9175      * Corresponds to attribute x on the given 'image' element.\r
9176      */\r
9177     SVGAnimatedLength getX();\r
9178 \r
9179     /**\r
9180      * Corresponds to attribute y on the given 'image' element.\r
9181      */\r
9182     SVGAnimatedLength getY();\r
9183 \r
9184     /**\r
9185      * Corresponds to attribute width on the given 'image' element.\r
9186      */\r
9187     SVGAnimatedLength getWidth();\r
9188 \r
9189     /**\r
9190      * Corresponds to attribute height on the given 'image' element.\r
9191      */\r
9192     SVGAnimatedLength getHeight();\r
9193 \r
9194 \r
9195     /**\r
9196      * Corresponds to attribute preserveAspectRatio on the given element.\r
9197      */\r
9198     SVGAnimatedPreserveAspectRatio getPreserveAspectRatio();\r
9199 \r
9200     //####################################################################\r
9201     //# SVGLinearGradientElement\r
9202     //####################################################################\r
9203 \r
9204     /**\r
9205      * Corresponds to attribute x1 on the given 'linearGradient'  element.\r
9206      */\r
9207     SVGAnimatedLength getX1();\r
9208 \r
9209     /**\r
9210      * Corresponds to attribute y1 on the given 'linearGradient'  element.\r
9211      */\r
9212     SVGAnimatedLength getY1();\r
9213 \r
9214     /**\r
9215      * Corresponds to attribute x2 on the given 'linearGradient'  element.\r
9216      */\r
9217     SVGAnimatedLength getX2();\r
9218 \r
9219     /**\r
9220      * Corresponds to attribute y2 on the given 'linearGradient'  element.\r
9221      */\r
9222     SVGAnimatedLength getY2();\r
9223 \r
9224 \r
9225 \r
9226     //####################################################################\r
9227     //# SVGLineElement\r
9228     //####################################################################\r
9229 \r
9230     /**\r
9231      * Corresponds to attribute x1 on the given 'line' element.\r
9232      */\r
9233     SVGAnimatedLength getX1();\r
9234 \r
9235     /**\r
9236      * Corresponds to attribute y1 on the given 'line' element.\r
9237      */\r
9238     SVGAnimatedLength getY1();\r
9239 \r
9240     /**\r
9241      * Corresponds to attribute x2 on the given 'line' element.\r
9242      */\r
9243     SVGAnimatedLength getX2();\r
9244 \r
9245     /**\r
9246      * Corresponds to attribute y2 on the given 'line' element.\r
9247      */\r
9248     SVGAnimatedLength getY2();\r
9249 \r
9250 \r
9251     //####################################################################\r
9252     //# SVGMarkerElement\r
9253     //####################################################################\r
9254 \r
9255 \r
9256     /**\r
9257      * Marker Unit Types\r
9258      */\r
9259     typedef enum\r
9260         {\r
9261         SVG_MARKERUNITS_UNKNOWN        = 0,\r
9262         SVG_MARKERUNITS_USERSPACEONUSE = 1,\r
9263         SVG_MARKERUNITS_STROKEWIDTH    = 2\r
9264         } MarkerUnitType;\r
9265 \r
9266     /**\r
9267      * Marker Orientation Types\r
9268      */\r
9269     typedef enum\r
9270         {\r
9271         SVG_MARKER_ORIENT_UNKNOWN      = 0,\r
9272         SVG_MARKER_ORIENT_AUTO         = 1,\r
9273         SVG_MARKER_ORIENT_ANGLE        = 2\r
9274         } MarkerOrientationType;\r
9275 \r
9276 \r
9277     /**\r
9278      * Corresponds to attribute refX on the given 'marker' element.\r
9279      */\r
9280     SVGAnimatedLength getRefX();\r
9281 \r
9282     /**\r
9283      * Corresponds to attribute refY on the given 'marker' element.\r
9284      */\r
9285     SVGAnimatedLength getRefY();\r
9286 \r
9287     /**\r
9288      * Corresponds to attribute markerUnits on the given 'marker' element.\r
9289      *      One of the Marker Units Types defined above.\r
9290      */\r
9291     SVGAnimatedEnumeration getMarkerUnits();\r
9292 \r
9293     /**\r
9294      * Corresponds to attribute markerWidth on the given 'marker' element.\r
9295      */\r
9296     SVGAnimatedLength getMarkerWidth();\r
9297 \r
9298     /**\r
9299      * Corresponds to attribute markerHeight on the given 'marker' element.\r
9300      */\r
9301     SVGAnimatedLength getMarkerHeight();\r
9302 \r
9303     /**\r
9304      * Corresponds to attribute orient on the given 'marker' element.\r
9305      *      One of the Marker Orientation Types defined above.\r
9306      */\r
9307     SVGAnimatedEnumeration getOrientType();\r
9308 \r
9309     /**\r
9310      * Corresponds to attribute orient on the given 'marker' element.\r
9311      * If markerUnits is SVG_MARKER_ORIENT_ANGLE, the angle value for\r
9312      * attribute orient; otherwise, it will be set to zero.\r
9313      */\r
9314     SVGAnimatedAngle getOrientAngle();\r
9315 \r
9316 \r
9317     /**\r
9318      * Sets the value of attribute orient to 'auto'.\r
9319      */\r
9320     void setOrientToAuto();\r
9321 \r
9322     /**\r
9323      * Sets the value of attribute orient to the given angle.\r
9324      */\r
9325     void setOrientToAngle(const SVGAngle &angle);\r
9326 \r
9327 \r
9328     //####################################################################\r
9329     //# SVGMaskElement\r
9330     //####################################################################\r
9331 \r
9332 \r
9333     /**\r
9334      * Corresponds to attribute maskUnits on the given 'mask' element. Takes one of\r
9335      * the constants defined in SVGUnitTypes.\r
9336      */\r
9337     SVGAnimatedEnumeration getMaskUnits();\r
9338 \r
9339     /**\r
9340      * Corresponds to attribute maskContentUnits on the given 'mask' element. Takes\r
9341      * one of the constants defined in SVGUnitTypes.\r
9342      */\r
9343     SVGAnimatedEnumeration getMaskContentUnits();\r
9344 \r
9345     /**\r
9346      * Corresponds to attribute x on the given 'mask' element.\r
9347      */\r
9348     SVGAnimatedLength getX();\r
9349 \r
9350     /**\r
9351      * Corresponds to attribute y on the given 'mask' element.\r
9352      */\r
9353     SVGAnimatedLength getY();\r
9354 \r
9355     /**\r
9356      * Corresponds to attribute width on the given 'mask' element.\r
9357      */\r
9358     SVGAnimatedLength getWidth();\r
9359 \r
9360     /**\r
9361      * Corresponds to attribute height on the given 'mask' element.\r
9362      */\r
9363     SVGAnimatedLength getHeight();\r
9364 \r
9365     //####################################################################\r
9366     //# SVGMetadataElement\r
9367     //####################################################################\r
9368 \r
9369     //####################################################################\r
9370     //# SVGMPathElement\r
9371     //####################################################################\r
9372 \r
9373     //####################################################################\r
9374     //# SVGPathElement\r
9375     //####################################################################\r
9376 \r
9377     //####################################################################\r
9378     //# SVGPatternElement\r
9379     //####################################################################\r
9380 \r
9381     /**\r
9382      * Corresponds to attribute patternUnits on the given 'pattern' element.\r
9383      * Takes one of the constants defined in SVGUnitTypes.\r
9384      */\r
9385     SVGAnimatedEnumeration getPatternUnits();\r
9386 \r
9387     /**\r
9388      * Corresponds to attribute patternContentUnits on the given 'pattern'\r
9389      *      element. Takes one of the constants defined in SVGUnitTypes.\r
9390      */\r
9391     SVGAnimatedEnumeration getPatternContentUnits();\r
9392 \r
9393     /**\r
9394      * Corresponds to attribute patternTransform on the given 'pattern' element.\r
9395      */\r
9396     SVGAnimatedTransformList getPatternTransform();\r
9397 \r
9398     /**\r
9399      * Corresponds to attribute x on the given 'pattern' element.\r
9400      */\r
9401     SVGAnimatedLength getX();\r
9402 \r
9403     /**\r
9404      *\r
9405      */\r
9406     SVGAnimatedLength getY();\r
9407 \r
9408     /**\r
9409      * Corresponds to attribute width on the given 'pattern' element.\r
9410      */\r
9411     SVGAnimatedLength getWidth();\r
9412 \r
9413     /**\r
9414      * Corresponds to attribute height on the given 'pattern' element.\r
9415      */\r
9416     SVGAnimatedLength getHeight();\r
9417 \r
9418 \r
9419     //####################################################################\r
9420     //# SVGPolyLineElement\r
9421     //####################################################################\r
9422 \r
9423     //####################################################################\r
9424     //# SVGPolygonElement\r
9425     //####################################################################\r
9426 \r
9427     //####################################################################\r
9428     //# SVGMissingGlyphElement\r
9429     //####################################################################\r
9430 \r
9431     /**\r
9432      * Corresponds to attribute pathLength on the given 'path' element.\r
9433      */\r
9434     SVGAnimatedNumber getPathLength();\r
9435 \r
9436     /**\r
9437      * Returns the user agent's computed value for the total length of the path using\r
9438      * the user agent's distance-along-a-path algorithm, as a distance in the current\r
9439      * user coordinate system.\r
9440      */\r
9441     double getTotalLength();\r
9442 \r
9443     /**\r
9444      * Returns the(x,y) coordinate in user space which is distance units along the\r
9445      * path, utilizing the user agent's distance-along-a-path algorithm.\r
9446      */\r
9447     SVGPoint getPointAtLength(double distance);\r
9448 \r
9449     /**\r
9450      * Returns the index into pathSegList which is distance units along the path,\r
9451      * utilizing the user agent's distance-along-a-path algorithm.\r
9452      */\r
9453     unsigned long getPathSegAtLength(double distance);\r
9454 \r
9455     /**\r
9456      * Returns a stand-alone, parentless SVGPathSegClosePath object.\r
9457      */\r
9458     SVGPathSegClosePath\r
9459               createSVGPathSegClosePath();\r
9460 \r
9461     /**\r
9462      * Returns a stand-alone, parentless SVGPathSegMovetoAbs object.\r
9463      */\r
9464     SVGPathSegMovetoAbs\r
9465               createSVGPathSegMovetoAbs(double x, double y);\r
9466 \r
9467     /**\r
9468      * Returns a stand-alone, parentless SVGPathSegMovetoRel object.\r
9469      */\r
9470     SVGPathSegMovetoRel\r
9471               createSVGPathSegMovetoRel(double x, double y);\r
9472 \r
9473     /**\r
9474      * Returns a stand-alone, parentless SVGPathSegLinetoAbs object.\r
9475      */\r
9476     SVGPathSegLinetoAbs\r
9477               createSVGPathSegLinetoAbs(double x, double y);\r
9478 \r
9479     /**\r
9480      * Returns a stand-alone, parentless SVGPathSegLinetoRel object.\r
9481      */\r
9482     SVGPathSegLinetoRel\r
9483               createSVGPathSegLinetoRel(double x, double y);\r
9484 \r
9485     /**\r
9486      * Returns a stand-alone, parentless SVGPathSegCurvetoCubicAbs object.\r
9487      */\r
9488     SVGPathSegCurvetoCubicAbs\r
9489               createSVGPathSegCurvetoCubicAbs(double x, double y,\r
9490                         double x1, double y1, double x2, double y2);\r
9491 \r
9492     /**\r
9493      * Returns a stand-alone, parentless SVGPathSegCurvetoCubicRel object.\r
9494      */\r
9495     SVGPathSegCurvetoCubicRel\r
9496               createSVGPathSegCurvetoCubicRel(double x, double y,\r
9497                         double x1, double y1, double x2, double y2);\r
9498 \r
9499     /**\r
9500      * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticAbs object.\r
9501      */\r
9502     SVGPathSegCurvetoQuadraticAbs\r
9503               createSVGPathSegCurvetoQuadraticAbs(double x, double y,\r
9504                          double x1, double y1);\r
9505 \r
9506     /**\r
9507      * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticRel object.\r
9508      */\r
9509     SVGPathSegCurvetoQuadraticRel\r
9510               createSVGPathSegCurvetoQuadraticRel(double x, double y,\r
9511                          double x1, double y1);\r
9512 \r
9513     /**\r
9514      * Returns a stand-alone, parentless SVGPathSegArcAbs object.\r
9515      */\r
9516     SVGPathSegArcAbs\r
9517               createSVGPathSegArcAbs(double x, double y,\r
9518                          double r1, double r2, double angle,\r
9519                          bool largeArcFlag, bool sweepFlag);\r
9520 \r
9521     /**\r
9522      * Returns a stand-alone, parentless SVGPathSegArcRel object.\r
9523      */\r
9524     SVGPathSegArcRel\r
9525               createSVGPathSegArcRel(double x, double y, double r1,\r
9526                          double r2, double angle, bool largeArcFlag,\r
9527                          bool sweepFlag);\r
9528 \r
9529     /**\r
9530      * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalAbs object.\r
9531      */\r
9532     SVGPathSegLinetoHorizontalAbs\r
9533               createSVGPathSegLinetoHorizontalAbs(double x);\r
9534 \r
9535     /**\r
9536      * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalRel object.\r
9537      */\r
9538     SVGPathSegLinetoHorizontalRel\r
9539               createSVGPathSegLinetoHorizontalRel(double x);\r
9540 \r
9541     /**\r
9542      * Returns a stand-alone, parentless SVGPathSegLinetoVerticalAbs object.\r
9543      */\r
9544     SVGPathSegLinetoVerticalAbs\r
9545               createSVGPathSegLinetoVerticalAbs(double y);\r
9546 \r
9547     /**\r
9548      * Returns a stand-alone, parentless SVGPathSegLinetoVerticalRel object.\r
9549      */\r
9550     SVGPathSegLinetoVerticalRel\r
9551               createSVGPathSegLinetoVerticalRel(double y);\r
9552 \r
9553     /**\r
9554      * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothAbs object.\r
9555      */\r
9556     SVGPathSegCurvetoCubicSmoothAbs\r
9557               createSVGPathSegCurvetoCubicSmoothAbs(double x, double y,\r
9558                                              double x2, double y2);\r
9559 \r
9560     /**\r
9561      * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothRel object.\r
9562      */\r
9563     SVGPathSegCurvetoCubicSmoothRel\r
9564               createSVGPathSegCurvetoCubicSmoothRel(double x, double y,\r
9565                                                       double x2, double y2);\r
9566 \r
9567     /**\r
9568      * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothAbs\r
9569      *      object.\r
9570      */\r
9571     SVGPathSegCurvetoQuadraticSmoothAbs\r
9572               createSVGPathSegCurvetoQuadraticSmoothAbs(double x, double y);\r
9573 \r
9574     /**\r
9575      * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothRel\r
9576      *      object.\r
9577      */\r
9578     SVGPathSegCurvetoQuadraticSmoothRel\r
9579               createSVGPathSegCurvetoQuadraticSmoothRel(double x, double y);\r
9580 \r
9581 \r
9582     //####################################################################\r
9583     //# SVGRadialGradientElement\r
9584     //####################################################################\r
9585 \r
9586 \r
9587     /**\r
9588      * Corresponds to attribute cx on the given 'radialGradient'  element.\r
9589      */\r
9590     SVGAnimatedLength getCx();\r
9591 \r
9592 \r
9593     /**\r
9594      * Corresponds to attribute cy on the given 'radialGradient'  element.\r
9595      */\r
9596     SVGAnimatedLength getCy();\r
9597 \r
9598 \r
9599     /**\r
9600      * Corresponds to attribute r on the given 'radialGradient'  element.\r
9601      */\r
9602     SVGAnimatedLength getR();\r
9603 \r
9604 \r
9605     /**\r
9606      * Corresponds to attribute fx on the given 'radialGradient'  element.\r
9607      */\r
9608     SVGAnimatedLength getFx();\r
9609 \r
9610 \r
9611     /**\r
9612      * Corresponds to attribute fy on the given 'radialGradient'  element.\r
9613      */\r
9614     SVGAnimatedLength getFy();\r
9615 \r
9616 \r
9617     //####################################################################\r
9618     //# SVGRectElement\r
9619     //####################################################################\r
9620 \r
9621     /**\r
9622      * Corresponds to attribute x on the given 'rect' element.\r
9623      */\r
9624     SVGAnimatedLength getX();\r
9625 \r
9626     /**\r
9627      * Corresponds to attribute y on the given 'rect' element.\r
9628      */\r
9629     SVGAnimatedLength getY();\r
9630 \r
9631     /**\r
9632      * Corresponds to attribute width on the given 'rect' element.\r
9633      */\r
9634     SVGAnimatedLength getWidth();\r
9635 \r
9636     /**\r
9637      * Corresponds to attribute height on the given 'rect' element.\r
9638      */\r
9639     SVGAnimatedLength getHeight();\r
9640 \r
9641 \r
9642     /**\r
9643      * Corresponds to attribute rx on the given 'rect' element.\r
9644      */\r
9645     SVGAnimatedLength getRx();\r
9646 \r
9647     /**\r
9648      * Corresponds to attribute ry on the given 'rect' element.\r
9649      */\r
9650     SVGAnimatedLength getRy();\r
9651 \r
9652 \r
9653     //####################################################################\r
9654     //# SVGScriptElement\r
9655     //####################################################################\r
9656 \r
9657     /**\r
9658      *\r
9659      */\r
9660     DOMString getType();\r
9661 \r
9662     /**\r
9663      *\r
9664      */\r
9665     void setType(const DOMString &val) throw (DOMException);\r
9666 \r
9667     //####################################################################\r
9668     //# SVGSetElement\r
9669     //####################################################################\r
9670 \r
9671     //####################################################################\r
9672     //# SVGStopElement\r
9673     //####################################################################\r
9674 \r
9675 \r
9676     /**\r
9677      * Corresponds to attribute offset on the given 'stop' element.\r
9678      */\r
9679     SVGAnimatedNumber getOffset();\r
9680 \r
9681 \r
9682     //####################################################################\r
9683     //# SVGStyleElement\r
9684     //####################################################################\r
9685 \r
9686     /**\r
9687      * Get the attribute xml:space on the given element.\r
9688      */\r
9689     DOMString getXmlspace();\r
9690 \r
9691     /**\r
9692      * Set the attribute xml:space on the given element.\r
9693      */\r
9694     void setXmlspace(const DOMString &val) throw (DOMException);\r
9695 \r
9696     /**\r
9697      * Get the attribute type on the given 'style' element.\r
9698      */\r
9699     DOMString getType();\r
9700 \r
9701     /**\r
9702      * Set the attribute type on the given 'style' element.\r
9703      */\r
9704     void setType(const DOMString &val) throw (DOMException);\r
9705 \r
9706     /**\r
9707      * Get the attribute media on the given 'style' element.\r
9708      */\r
9709     DOMString getMedia();\r
9710 \r
9711     /**\r
9712      * Set the attribute media on the given 'style' element.\r
9713      */\r
9714     void setMedia(const DOMString &val) throw (DOMException);\r
9715 \r
9716     /**\r
9717      * Get the attribute title on the given 'style' element.\r
9718      */\r
9719     DOMString getTitle();\r
9720 \r
9721     /**\r
9722      * Set the attribute title on the given 'style' element.\r
9723      */\r
9724     void setTitle(const DOMString &val) throw (DOMException);\r
9725 \r
9726     //####################################################################\r
9727     //# SVGSymbolElement\r
9728     //####################################################################\r
9729 \r
9730     //####################################################################\r
9731     //# SVGSVGElement\r
9732     //####################################################################\r
9733 \r
9734     /**\r
9735      * Corresponds to attribute x on the given 'svg' element.\r
9736      */\r
9737     SVGAnimatedLength getX();\r
9738 \r
9739     /**\r
9740      * Corresponds to attribute y on the given 'svg' element.\r
9741      */\r
9742     SVGAnimatedLength getY();\r
9743 \r
9744     /**\r
9745      * Corresponds to attribute width on the given 'svg' element.\r
9746      */\r
9747     SVGAnimatedLength getWidth();\r
9748 \r
9749     /**\r
9750      * Corresponds to attribute height on the given 'svg' element.\r
9751      */\r
9752     SVGAnimatedLength getHeight();\r
9753 \r
9754     /**\r
9755      * Get the attribute contentScriptType on the given 'svg' element.\r
9756      */\r
9757     DOMString getContentScriptType();\r
9758 \r
9759     /**\r
9760      * Set the attribute contentScriptType on the given 'svg' element.\r
9761      */\r
9762     void setContentScriptType(const DOMString &val) throw (DOMException);\r
9763 \r
9764 \r
9765     /**\r
9766      * Get the attribute contentStyleType on the given 'svg' element.\r
9767      */\r
9768     DOMString getContentStyleType();\r
9769 \r
9770     /**\r
9771      * Set the attribute contentStyleType on the given 'svg' element.\r
9772      */\r
9773     void setContentStyleType(const DOMString &val) throw (DOMException);\r
9774 \r
9775     /**\r
9776      * The position and size of the viewport(implicit or explicit) that corresponds\r
9777      * to this 'svg' element. When the user agent is actually rendering the content,\r
9778      * then the position and size values represent the actual values when rendering.\r
9779      * The position and size values are unitless values in the coordinate system of\r
9780      * the parent element. If no parent element exists(i.e., 'svg' element\r
9781      * represents the root of the document tree), if this SVG document is embedded as\r
9782      * part of another document(e.g., via the HTML 'object' element), then the\r
9783      * position and size are unitless values in the coordinate system of the parent\r
9784      * document.(If the parent uses CSS or XSL layout, then unitless values\r
9785      * represent pixel units for the current CSS or XSL viewport, as described in the\r
9786      * CSS2 specification.) If the parent element does not have a coordinate system,\r
9787      * then the user agent should provide reasonable default values for this attribute.\r
9788      *      */\r
9789     SVGRect getViewport();\r
9790 \r
9791     /**\r
9792      * Size of a pixel units(as defined by CSS2) along the x-axis of the viewport,\r
9793      * which represents a unit somewhere in the range of 70dpi to 120dpi, and, on\r
9794      * systems that support this, might actually match the characteristics of the\r
9795      * target medium. On systems where it is impossible to know the size of a pixel,\r
9796      * a suitable default pixel size is provided.\r
9797      */\r
9798     double getPixelUnitToMillimeterX();\r
9799 \r
9800     /**\r
9801      * Corresponding size of a pixel unit along the y-axis of the viewport.\r
9802      */\r
9803     double getPixelUnitToMillimeterY();\r
9804 \r
9805     /**\r
9806      * User interface(UI) events in DOM Level 2 indicate the screen positions at\r
9807      * which the given UI event occurred. When the user agent actually knows the\r
9808      * physical size of a "screen unit", this attribute will express that information;\r
9809      *  otherwise, user agents will provide a suitable default value such as .28mm.\r
9810      */\r
9811     double getScreenPixelToMillimeterX();\r
9812 \r
9813     /**\r
9814      * Corresponding size of a screen pixel along the y-axis of the viewport.\r
9815      */\r
9816     double getScreenPixelToMillimeterY();\r
9817 \r
9818 \r
9819     /**\r
9820      * The initial view(i.e., before magnification and panning) of the current\r
9821      * innermost SVG document fragment can be either the "standard" view(i.e., based\r
9822      * on attributes on the 'svg' element such as fitBoxToViewport) or to a "custom"\r
9823      * view(i.e., a hyperlink into a particular 'view' or other element - see\r
9824      * Linking into SVG content: URI fragments and SVG views). If the initial view is\r
9825      * the "standard" view, then this attribute is false. If the initial view is a\r
9826      * "custom" view, then this attribute is true.\r
9827      */\r
9828     bool getUseCurrentView();\r
9829 \r
9830     /**\r
9831      * Set the value above\r
9832      */\r
9833     void setUseCurrentView(bool val) throw (DOMException);\r
9834 \r
9835     /**\r
9836      * The definition of the initial view(i.e., before magnification and panning) of\r
9837      * the current innermost SVG document fragment. The meaning depends on the\r
9838      * situation:\r
9839      * \r
9840      *    * If the initial view was a "standard" view, then:\r
9841      *      o the values for viewBox, preserveAspectRatio and zoomAndPan within\r
9842      *        currentView will match the values for the corresponding DOM attributes that\r
9843      *        are on SVGSVGElement directly\r
9844      *      o the values for transform and viewTarget within currentView will be null\r
9845      *    * If the initial view was a link into a 'view' element, then:\r
9846      *      o the values for viewBox, preserveAspectRatio and zoomAndPan within\r
9847      *        currentView will correspond to the corresponding attributes for the given\r
9848      *        'view' element\r
9849      *      o the values for transform and viewTarget within currentView will be null\r
9850      *    * If the initial view was a link into another element(i.e., other than a\r
9851      *      'view'), then:\r
9852      *      o the values for viewBox, preserveAspectRatio and zoomAndPan within\r
9853      *        currentView will match the values for the corresponding DOM attributes that\r
9854      *        are on SVGSVGElement directly for the closest ancestor 'svg' element\r
9855      *      o the values for transform within currentView will be null\r
9856      *      o the viewTarget within currentView will represent the target of the link\r
9857      *    * If the initial view was a link into the SVG document fragment using an SVG\r
9858      *      view specification fragment identifier(i.e., #svgView(...)), then:\r
9859      *      o the values for viewBox, preserveAspectRatio, zoomAndPan, transform and\r
9860      *        viewTarget within currentView will correspond to the values from the SVG view\r
9861      *        specification fragment identifier\r
9862      * \r
9863      */\r
9864     SVGViewSpec getCurrentView();\r
9865 \r
9866 \r
9867     /**\r
9868      * This attribute indicates the current scale factor relative to the initial view\r
9869      * to take into account user magnification and panning operations, as described\r
9870      * under Magnification and panning. DOM attributes currentScale and\r
9871      * currentTranslate are equivalent to the 2x3 matrix [a b c d e f] =\r
9872      * [currentScale 0 0 currentScale currentTranslate.x currentTranslate.y]. If\r
9873      * "magnification" is enabled(i.e., zoomAndPan="magnify"), then the effect is as\r
9874      * if an extra transformation were placed at the outermost level on the SVG\r
9875      * document fragment(i.e., outside the outermost 'svg' element).\r
9876      */\r
9877     double getCurrentScale();\r
9878 \r
9879     /**\r
9880      *  Set the value above.\r
9881      */\r
9882     void setCurrentScale(double val) throw (DOMException);\r
9883 \r
9884     /**\r
9885      * The corresponding translation factor that takes into account\r
9886      *      user "magnification".\r
9887      */\r
9888     SVGPoint getCurrentTranslate();\r
9889 \r
9890     /**\r
9891      * Takes a time-out value which indicates that redraw shall not occur until:(a)\r
9892      * the corresponding unsuspendRedraw(suspend_handle_id) call has been made,(b)\r
9893      * an unsuspendRedrawAll() call has been made, or(c) its timer has timed out. In\r
9894      * environments that do not support interactivity(e.g., print media), then\r
9895      * redraw shall not be suspended. suspend_handle_id =\r
9896      * suspendRedraw(max_wait_milliseconds) and unsuspendRedraw(suspend_handle_id)\r
9897      * must be packaged as balanced pairs. When you want to suspend redraw actions as\r
9898      * a collection of SVG DOM changes occur, then precede the changes to the SVG DOM\r
9899      * with a method call similar to suspend_handle_id =\r
9900      * suspendRedraw(max_wait_milliseconds) and follow the changes with a method call\r
9901      * similar to unsuspendRedraw(suspend_handle_id). Note that multiple\r
9902      * suspendRedraw calls can be used at once and that each such method call is\r
9903      * treated independently of the other suspendRedraw method calls.\r
9904      */\r
9905     unsigned long suspendRedraw(unsigned long max_wait_milliseconds);\r
9906 \r
9907     /**\r
9908      * Cancels a specified suspendRedraw() by providing a unique suspend_handle_id.\r
9909      */\r
9910     void unsuspendRedraw(unsigned long suspend_handle_id) throw (DOMException);\r
9911 \r
9912     /**\r
9913      * Cancels all currently active suspendRedraw() method calls. This method is most\r
9914      * useful at the very end of a set of SVG DOM calls to ensure that all pending\r
9915      * suspendRedraw() method calls have been cancelled.\r
9916      */\r
9917     void unsuspendRedrawAll();\r
9918 \r
9919     /**\r
9920      * In rendering environments supporting interactivity, forces the user agent to\r
9921      * immediately redraw all regions of the viewport that require updating.\r
9922      */\r
9923     void forceRedraw();\r
9924 \r
9925     /**\r
9926      * Suspends(i.e., pauses) all currently running animations that are defined\r
9927      * within the SVG document fragment corresponding to this 'svg' element, causing\r
9928      * the animation clock corresponding to this document fragment to stand still\r
9929      * until it is unpaused.\r
9930      */\r
9931     void pauseAnimations();\r
9932 \r
9933     /**\r
9934      * Unsuspends(i.e., unpauses) currently running animations that are defined\r
9935      * within the SVG document fragment, causing the animation clock to continue from\r
9936      * the time at which it was suspended.\r
9937      */\r
9938     void unpauseAnimations();\r
9939 \r
9940     /**\r
9941      * Returns true if this SVG document fragment is in a paused state.\r
9942      */\r
9943     bool animationsPaused();\r
9944 \r
9945     /**\r
9946      * Returns the current time in seconds relative to the start time for\r
9947      *      the current SVG document fragment.\r
9948      */\r
9949     double getCurrentTime();\r
9950 \r
9951     /**\r
9952      * Adjusts the clock for this SVG document fragment, establishing\r
9953      *      a new current time.\r
9954      */\r
9955     void setCurrentTime(double seconds);\r
9956 \r
9957     /**\r
9958      * Returns the list of graphics elements whose rendered content intersects the\r
9959      * supplied rectangle, honoring the 'pointer-events' property value on each\r
9960      * candidate graphics element.\r
9961      */\r
9962     NodeList getIntersectionList(const SVGRect &rect,\r
9963                                  const SVGElementPtr referenceElement);\r
9964 \r
9965     /**\r
9966      * Returns the list of graphics elements whose rendered content is entirely\r
9967      * contained within the supplied rectangle, honoring the 'pointer-events'\r
9968      * property value on each candidate graphics element.\r
9969      */\r
9970     NodeList getEnclosureList(const SVGRect &rect,\r
9971                               const SVGElementPtr referenceElement);\r
9972 \r
9973     /**\r
9974      * Returns true if the rendered content of the given element intersects the\r
9975      * supplied rectangle, honoring the 'pointer-events' property value on each\r
9976      * candidate graphics element.\r
9977      */\r
9978     bool checkIntersection(const SVGElementPtr element, const SVGRect &rect);\r
9979 \r
9980     /**\r
9981      * Returns true if the rendered content of the given element is entirely\r
9982      * contained within the supplied rectangle, honoring the 'pointer-events'\r
9983      * property value on each candidate graphics element.\r
9984      */\r
9985     bool checkEnclosure(const SVGElementPtr element, const SVGRect &rect);\r
9986 \r
9987     /**\r
9988      * Unselects any selected objects, including any selections of text\r
9989      *      strings and type-in bars.\r
9990      */\r
9991     void deselectAll();\r
9992 \r
9993     /**\r
9994      * Creates an SVGNumber object outside of any document trees. The object\r
9995      *      is initialized to a value of zero.\r
9996      */\r
9997     SVGNumber createSVGNumber();\r
9998 \r
9999     /**\r
10000      * Creates an SVGLength object outside of any document trees. The object\r
10001      *      is initialized to the value of 0 user units.\r
10002      */\r
10003     SVGLength createSVGLength();\r
10005     /**\r
10006      * Creates an SVGAngle object outside of any document trees. The object\r
10007      *      is initialized to the value 0 degrees(unitless).\r
10008      */\r
10009     SVGAngle createSVGAngle();\r
10011     /**\r
10012      * Creates an SVGPoint object outside of any document trees. The object\r
10013      * is initialized to the point(0,0) in the user coordinate system.\r
10014      */\r
10015     SVGPoint createSVGPoint();\r
10017     /**\r
10018      * Creates an SVGMatrix object outside of any document trees. The object\r
10019      *      is initialized to the identity matrix.\r
10020      */\r
10021     SVGMatrix createSVGMatrix();\r
10023     /**\r
10024      * Creates an SVGRect object outside of any document trees. The object\r
10025      *      is initialized such that all values are set to 0 user units.\r
10026      */\r
10027     SVGRect createSVGRect();\r
10029     /**\r
10030      * Creates an SVGTransform object outside of any document trees.\r
10031      * The object is initialized to an identity matrix transform\r
10032      *     (SVG_TRANSFORM_MATRIX).\r
10033      */\r
10034     SVGTransform createSVGTransform();\r
10036     /**\r
10037      * Creates an SVGTransform object outside of any document trees.\r
10038      * The object is initialized to the given matrix transform\r
10039      *     (i.e., SVG_TRANSFORM_MATRIX).\r
10040      */\r
10041     SVGTransform createSVGTransformFromMatrix(const SVGMatrix &matrix);\r
10043     /**\r
10044      * Searches this SVG document fragment(i.e., the search is restricted to a\r
10045      * subset of the document tree) for an Element whose id is given by elementId. If\r
10046      * an Element is found, that Element is returned. If no such element exists,\r
10047      * returns null. Behavior is not defined if more than one element has this id.\r
10048      */\r
10049     ElementPtr getElementById(const DOMString& elementId);\r
10052     //####################################################################\r
10053     //# SVGTextElement\r
10054     //####################################################################\r
10057     //####################################################################\r
10058     //# SVGTextContentElement\r
10059     //####################################################################\r
10062     /**\r
10063      * lengthAdjust Types\r
10064      */\r
10065     typedef enum\r
10066         {\r
10067         LENGTHADJUST_UNKNOWN          = 0,\r
10068         LENGTHADJUST_SPACING          = 1,\r
10069         LENGTHADJUST_SPACINGANDGLYPHS = 2\r
10070         } LengthAdjustType;\r
10073     /**\r
10074      * Corresponds to attribute textLength on the given element.\r
10075      */\r
10076     SVGAnimatedLength getTextLength();\r
10079     /**\r
10080      * Corresponds to attribute lengthAdjust on the given element. The value must be\r
10081      * one of the length adjust constants specified above.\r
10082      */\r
10083     SVGAnimatedEnumeration getLengthAdjust();\r
10086     /**\r
10087      * Returns the total number of characters to be rendered within the current\r
10088      * element. Includes characters which are included via a 'tref' reference.\r
10089      */\r
10090     long getNumberOfChars();\r
10092     /**\r
10093      * The total sum of all of the advance values from rendering all of the\r
10094      * characters within this element, including the advance value on the glyphs\r
10095      *(horizontal or vertical), the effect of properties 'kerning', 'letter-spacing'\r
10096      * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan'\r
10097      * elements. For non-rendering environments, the user agent shall make reasonable\r
10098      * assumptions about glyph metrics.\r
10099      */\r
10100     double getComputedTextLength();\r
10102     /**\r
10103      * The total sum of all of the advance values from rendering the specified\r
10104      * substring of the characters, including the advance value on the glyphs\r
10105      *(horizontal or vertical), the effect of properties 'kerning', 'letter-spacing'\r
10106      * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan'\r
10107      * elements. For non-rendering environments, the user agent shall make reasonable\r
10108      * assumptions about glyph metrics.\r
10109      */\r
10110     double getSubStringLength(unsigned long charnum, unsigned long nchars)\r
10111                                      throw (DOMException);\r
10113     /**\r
10114      * Returns the current text position before rendering the character in the user\r
10115      * coordinate system for rendering the glyph(s) that correspond to the specified\r
10116      * character. The current text position has already taken into account the\r
10117      * effects of any inter-character adjustments due to properties 'kerning',\r
10118      * 'letter-spacing' and 'word-spacing' and adjustments due to attributes x, y, dx\r
10119      * and dy. If multiple consecutive characters are rendered inseparably(e.g., as\r
10120      * a single glyph or a sequence of glyphs), then each of the inseparable\r
10121      * characters will return the start position for the first glyph.\r
10122      */\r
10123     SVGPoint getStartPositionOfChar(unsigned long charnum) throw (DOMException);\r
10125     /**\r
10126      * Returns the current text position after rendering the character in the user\r
10127      * coordinate system for rendering the glyph(s) that correspond to the specified\r
10128      * character. This current text position does not take into account the effects\r
10129      * of any inter-character adjustments to prepare for the next character, such as\r
10130      * properties 'kerning', 'letter-spacing' and 'word-spacing' and adjustments due\r
10131      * to attributes x, y, dx and dy. If multiple consecutive characters are rendered\r
10132      * inseparably(e.g., as a single glyph or a sequence of glyphs), then each of\r
10133      * the inseparable characters will return the end position for the last glyph.\r
10134      */\r
10135     SVGPoint getEndPositionOfChar(unsigned long charnum) throw (DOMException);\r
10137     /**\r
10138      * Returns a tightest rectangle which defines the minimum and maximum X and Y\r
10139      * values in the user coordinate system for rendering the glyph(s) that\r
10140      * correspond to the specified character. The calculations assume that all glyphs\r
10141      * occupy the full standard glyph cell for the font. If multiple consecutive\r
10142      * characters are rendered inseparably(e.g., as a single glyph or a sequence of\r
10143      * glyphs), then each of the inseparable characters will return the same extent.\r
10144      */\r
10145     SVGRect getExtentOfChar(unsigned long charnum) throw (DOMException);\r
10147     /**\r
10148      * Returns the rotation value relative to the current user coordinate system used\r
10149      * to render the glyph(s) corresponding to the specified character. If multiple\r
10150      * glyph(s) are used to render the given character and the glyphs each have\r
10151      * different rotations(e.g., due to text-on-a-path), the user agent shall return\r
10152      * an average value(e.g., the rotation angle at the midpoint along the path for\r
10153      * all glyphs used to render this character). The rotation value represents the\r
10154      * rotation that is supplemental to any rotation due to properties\r
10155      * 'glyph-orientation-horizontal' and 'glyph-orientation-vertical'; thus, any\r
10156      * glyph rotations due to these properties are not included into the returned\r
10157      * rotation value. If multiple consecutive characters are rendered inseparably\r
10158      *(e.g., as a single glyph or a sequence of glyphs), then each of the\r
10159      * inseparable characters will return the same rotation value.\r
10160      */\r
10161     double getRotationOfChar(unsigned long charnum) throw (DOMException);\r
10163     /**\r
10164      * Returns the index of the character whose corresponding glyph cell bounding box\r
10165      * contains the specified point. The calculations assume that all glyphs occupy\r
10166      * the full standard glyph cell for the font. If no such character exists, a\r
10167      * value of -1 is returned. If multiple such characters exist, the character\r
10168      * within the element whose glyphs were rendered last(i.e., take into account\r
10169      * any reordering such as for bidirectional text) is used. If multiple\r
10170      * consecutive characters are rendered inseparably(e.g., as a single glyph or a\r
10171      * sequence of glyphs), then the user agent shall allocate an equal percentage of\r
10172      * the text advance amount to each of the contributing characters in determining\r
10173      * which of the characters is chosen.\r
10174      */\r
10175     long getCharNumAtPosition(const SVGPoint &point);\r
10177     /**\r
10178      * Causes the specified substring to be selected just as if the user\r
10179      *      selected the substring interactively.\r
10180      */\r
10181     void selectSubString(unsigned long charnum, unsigned long nchars)\r
10182                                   throw (DOMException);\r
10188     //####################################################################\r
10189     //# SVGTextPathElement\r
10190     //####################################################################\r
10193     /**\r
10194      * textPath Method Types\r
10195      */\r
10196     typedef enum\r
10197         {\r
10198         TEXTPATH_METHODTYPE_UNKNOWN   = 0,\r
10199         TEXTPATH_METHODTYPE_ALIGN     = 1,\r
10200         TEXTPATH_METHODTYPE_STRETCH   = 2\r
10201         } TextPathMethodType;\r
10203     /**\r
10204      * textPath Spacing Types\r
10205      */\r
10206     typedef enum\r
10207         {\r
10208         TEXTPATH_SPACINGTYPE_UNKNOWN  = 0,\r
10209         TEXTPATH_SPACINGTYPE_AUTO     = 1,\r
10210         TEXTPATH_SPACINGTYPE_EXACT    = 2\r
10211         } TextPathSpacingType;\r
10214     /**\r
10215      * Corresponds to attribute startOffset on the given 'textPath' element.\r
10216      */\r
10217     SVGAnimatedLength getStartOffset();\r
10219     /**\r
10220      * Corresponds to attribute method on the given 'textPath' element. The value\r
10221      * must be one of the method type constants specified above.\r
10222      */\r
10223     SVGAnimatedEnumeration getMethod();\r
10225     /**\r
10226      * Corresponds to attribute spacing on the given 'textPath' element.\r
10227      *  The value must be one of the spacing type constants specified above.\r
10228      */\r
10229     SVGAnimatedEnumeration getSpacing();\r
10232     //####################################################################\r
10233     //# SVGTextPositioningElement\r
10234     //####################################################################\r
10237     /**\r
10238      * Corresponds to attribute x on the given element.\r
10239      */\r
10240     SVGAnimatedLength getX();\r
10242     /**\r
10243      * Corresponds to attribute y on the given element.\r
10244      */\r
10245     SVGAnimatedLength getY();\r
10247     /**\r
10248      * Corresponds to attribute dx on the given element.\r
10249      */\r
10250     SVGAnimatedLength getDx();\r
10252     /**\r
10253      * Corresponds to attribute dy on the given element.\r
10254      */\r
10255     SVGAnimatedLength getDy();\r
10258     /**\r
10259      * Corresponds to attribute rotate on the given element.\r
10260      */\r
10261     SVGAnimatedNumberList getRotate();\r
10264     //####################################################################\r
10265     //# SVGTitleElement\r
10266     //####################################################################\r
10268     //####################################################################\r
10269     //# SVGTRefElement\r
10270     //####################################################################\r
10272     //####################################################################\r
10273     //# SVGTSpanElement\r
10274     //####################################################################\r
10276     //####################################################################\r
10277     //# SVGSwitchElement\r
10278     //####################################################################\r
10280     //####################################################################\r
10281     //# SVGUseElement\r
10282     //####################################################################\r
10284     /**\r
10285      * Corresponds to attribute x on the given 'use' element.\r
10286      */\r
10287     SVGAnimatedLength getX();\r
10289     /**\r
10290      * Corresponds to attribute y on the given 'use' element.\r
10291      */\r
10292     SVGAnimatedLength getY();\r
10294     /**\r
10295      * Corresponds to attribute width on the given 'use' element.\r
10296      */\r
10297     SVGAnimatedLength getWidth();\r
10299     /**\r
10300      * Corresponds to attribute height on the given 'use' element.\r
10301      */\r
10302     SVGAnimatedLength getHeight();\r
10304     /**\r
10305      * The root of the "instance tree". See description of SVGElementInstance for\r
10306      * a discussion on the instance tree.\r
10307      *      */\r
10308     SVGElementInstance getInstanceRoot();\r
10310     /**\r
10311      * If the 'href' attribute is being animated, contains the current animated root\r
10312      * of the "instance tree". If the 'href' attribute is not currently being\r
10313      * animated, contains the same value as 'instanceRoot'. The root of the "instance\r
10314      * tree". See description of SVGElementInstance for a discussion on the instance\r
10315      * tree.\r
10316      */\r
10317     SVGElementInstance getAnimatedInstanceRoot();\r
10319     //####################################################################\r
10320     //# SVGVKernElement\r
10321     //####################################################################\r
10323     //####################################################################\r
10324     //# SVGViewElement\r
10325     //####################################################################\r
10328     /**\r
10329      *\r
10330      */\r
10331     SVGStringList getViewTarget();\r
10336     //##################\r
10337     //# Non-API methods\r
10338     //##################\r
10341     /**\r
10342      *\r
10343      */\r
10344     ~SVGElement() {}\r
10347 };\r
10351 /*#########################################################################\r
10352 ## SVGDocument\r
10353 #########################################################################*/\r
10355 /**\r
10356  * When an 'svg' element is embedded inline as a component of a document from\r
10357  * another namespace, such as when an 'svg' element is embedded inline within an\r
10358  * XHTML document [XHTML], then an SVGDocument object will not exist; instead,\r
10359  * the root object in the document object hierarchy will be a Document object of\r
10360  * a different type, such as an HTMLDocument object.\r
10361  *\r
10362  * However, an SVGDocument object will indeed exist when the root element of the\r
10363  * XML document hierarchy is an 'svg' element, such as when viewing a stand-alone\r
10364  * SVG file(i.e., a file with MIME type "image/svg+xml"). In this case, the\r
10365  * SVGDocument object will be the root object of the document object model\r
10366  * hierarchy.\r
10367  *\r
10368  * In the case where an SVG document is embedded by reference, such as when an\r
10369  * XHTML document has an 'object' element whose href attribute references an SVG\r
10370  * document(i.e., a document whose MIME type is "image/svg+xml" and whose root\r
10371  * element is thus an 'svg' element), there will exist two distinct DOM\r
10372  * hierarchies. The first DOM hierarchy will be for the referencing document\r
10373  *(e.g., an XHTML document). The second DOM hierarchy will be for the referenced\r
10374  * SVG document. In this second DOM hierarchy, the root object of the document\r
10375  * object model hierarchy is an SVGDocument object.\r
10376  */\r
10377 class SVGDocument : public Document,\r
10378                     public events::DocumentEvent\r
10379 {\r
10380 public:\r
10383     /**\r
10384      * The title of a document as specified by the title sub-element of the 'svg'\r
10385      * root element(i.e., <svg><title>Here is the title</title>...</svg>)\r
10386      */\r
10387     DOMString getTitle();\r
10389     /**\r
10390      * Returns the URI of the page that linked to this page. The value is an empty\r
10391      * string if the user navigated to the page directly(not through a link, but,\r
10392      * for example, via a bookmark).\r
10393      */\r
10394     DOMString getReferrer();\r
10396     /**\r
10397      * The domain name of the server that served the document, or a null string if\r
10398      * the server cannot be identified by a domain name.\r
10399      */\r
10400     DOMString getDomain();\r
10402     /**\r
10403      * The complete URI of the document.\r
10404      */\r
10405     DOMString getURL();\r
10407     /**\r
10408      * The root 'svg'  element in the document hierarchy.\r
10409      */\r
10410     SVGElementPtr getRootElement();\r
10413     //##################\r
10414     //# Non-API methods\r
10415     //##################\r
10417     /**\r
10418      *\r
10419      */\r
10420     ~SVGDocument() {}\r
10422 };\r
10426 /*#########################################################################\r
10427 ## GetSVGDocument\r
10428 #########################################################################*/\r
10430 /**\r
10431  * In the case where an SVG document is embedded by reference, such as when an\r
10432  * XHTML document has an 'object' element whose href(or equivalent) attribute\r
10433  * references an SVG document(i.e., a document whose MIME type is\r
10434  * "image/svg+xml" and whose root element is thus an 'svg' element), the SVG user\r
10435  * agent is required to implement the GetSVGDocument interface for the element\r
10436  * which references the SVG document(e.g., the HTML 'object' or comparable\r
10437  * referencing elements).\r
10438  */\r
10439 class GetSVGDocument\r
10440 {\r
10441 public:\r
10443     /**\r
10444      * Returns the SVGDocument  object for the referenced SVG document.\r
10445      */\r
10446     SVGDocumentPtr getSVGDocument()\r
10447                     throw (DOMException);\r
10449     //##################\r
10450     //# Non-API methods\r
10451     //##################\r
10453     /**\r
10454      *\r
10455      */\r
10456     ~GetSVGDocument() {}\r
10458 };\r
10466 }  //namespace svg\r
10467 }  //namespace dom\r
10468 }  //namespace w3c\r
10469 }  //namespace org\r
10471 #endif // __SVG_H__\r
10472 /*#########################################################################\r
10473 ## E N D    O F    F I L E\r
10474 #########################################################################*/\r