View Javadoc

1   /**********************************************
2    * Copyright (C) 2010 Lukas Laag
3    * This file is part of lib-gwt-svg.
4    * 
5    * libgwtsvg is free software: you can redistribute it and/or modify
6    * it under the terms of the GNU Lesser General Public License as published by
7    * the Free Software Foundation, either version 3 of the License, or
8    * (at your option) any later version.
9    * 
10   * libgwtsvg is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   * GNU Lesser General Public License for more details.
14   * 
15   * You should have received a copy of the GNU Lesser General Public License
16   * along with libgwtsvg.  If not, see http://www.gnu.org/licenses/
17   **********************************************/
18  /*
19   * Copyright (c) 2004 World Wide Web Consortium,
20   *
21   * (Massachusetts Institute of Technology, European Research Consortium for
22   * Informatics and Mathematics, Keio University). All Rights Reserved. This
23   * work is distributed under the W3C(r) Software License [1] in the hope that
24   * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
25   * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
26   *
27   * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
28   */
29  
30  package org.vectomatic.dom.svg;
31  
32  import org.vectomatic.dom.svg.events.HasDocumentHandlers;
33  import org.vectomatic.dom.svg.events.SVGZoomEvent;
34  import org.vectomatic.dom.svg.events.SVGZoomHandler;
35  import org.vectomatic.dom.svg.impl.SVGAElement;
36  import org.vectomatic.dom.svg.impl.SVGAltGlyphDefElement;
37  import org.vectomatic.dom.svg.impl.SVGAltGlyphElement;
38  import org.vectomatic.dom.svg.impl.SVGAltGlyphItemElement;
39  import org.vectomatic.dom.svg.impl.SVGAnimateColorElement;
40  import org.vectomatic.dom.svg.impl.SVGAnimateElement;
41  import org.vectomatic.dom.svg.impl.SVGAnimateMotionElement;
42  import org.vectomatic.dom.svg.impl.SVGAnimateTransformElement;
43  import org.vectomatic.dom.svg.impl.SVGCircleElement;
44  import org.vectomatic.dom.svg.impl.SVGClipPathElement;
45  import org.vectomatic.dom.svg.impl.SVGColorProfileElement;
46  import org.vectomatic.dom.svg.impl.SVGCursorElement;
47  import org.vectomatic.dom.svg.impl.SVGDefsElement;
48  import org.vectomatic.dom.svg.impl.SVGDescElement;
49  import org.vectomatic.dom.svg.impl.SVGDocument;
50  import org.vectomatic.dom.svg.impl.SVGEllipseElement;
51  import org.vectomatic.dom.svg.impl.SVGFEBlendElement;
52  import org.vectomatic.dom.svg.impl.SVGFEColorMatrixElement;
53  import org.vectomatic.dom.svg.impl.SVGFEComponentTransferElement;
54  import org.vectomatic.dom.svg.impl.SVGFECompositeElement;
55  import org.vectomatic.dom.svg.impl.SVGFEConvolveMatrixElement;
56  import org.vectomatic.dom.svg.impl.SVGFEDiffuseLightingElement;
57  import org.vectomatic.dom.svg.impl.SVGFEDisplacementMapElement;
58  import org.vectomatic.dom.svg.impl.SVGFEDistantLightElement;
59  import org.vectomatic.dom.svg.impl.SVGFEFloodElement;
60  import org.vectomatic.dom.svg.impl.SVGFEFuncAElement;
61  import org.vectomatic.dom.svg.impl.SVGFEFuncBElement;
62  import org.vectomatic.dom.svg.impl.SVGFEFuncGElement;
63  import org.vectomatic.dom.svg.impl.SVGFEFuncRElement;
64  import org.vectomatic.dom.svg.impl.SVGFEGaussianBlurElement;
65  import org.vectomatic.dom.svg.impl.SVGFEImageElement;
66  import org.vectomatic.dom.svg.impl.SVGFEMergeElement;
67  import org.vectomatic.dom.svg.impl.SVGFEMergeNodeElement;
68  import org.vectomatic.dom.svg.impl.SVGFEMorphologyElement;
69  import org.vectomatic.dom.svg.impl.SVGFEOffsetElement;
70  import org.vectomatic.dom.svg.impl.SVGFEPointLightElement;
71  import org.vectomatic.dom.svg.impl.SVGFESpecularLightingElement;
72  import org.vectomatic.dom.svg.impl.SVGFESpotLightElement;
73  import org.vectomatic.dom.svg.impl.SVGFETileElement;
74  import org.vectomatic.dom.svg.impl.SVGFETurbulenceElement;
75  import org.vectomatic.dom.svg.impl.SVGFilterElement;
76  import org.vectomatic.dom.svg.impl.SVGFontElement;
77  import org.vectomatic.dom.svg.impl.SVGFontFaceElement;
78  import org.vectomatic.dom.svg.impl.SVGFontFaceFormatElement;
79  import org.vectomatic.dom.svg.impl.SVGFontFaceNameElement;
80  import org.vectomatic.dom.svg.impl.SVGFontFaceSrcElement;
81  import org.vectomatic.dom.svg.impl.SVGFontFaceUriElement;
82  import org.vectomatic.dom.svg.impl.SVGForeignObjectElement;
83  import org.vectomatic.dom.svg.impl.SVGGElement;
84  import org.vectomatic.dom.svg.impl.SVGGlyphElement;
85  import org.vectomatic.dom.svg.impl.SVGGlyphRefElement;
86  import org.vectomatic.dom.svg.impl.SVGHKernElement;
87  import org.vectomatic.dom.svg.impl.SVGImageElement;
88  import org.vectomatic.dom.svg.impl.SVGLineElement;
89  import org.vectomatic.dom.svg.impl.SVGLinearGradientElement;
90  import org.vectomatic.dom.svg.impl.SVGMPathElement;
91  import org.vectomatic.dom.svg.impl.SVGMarkerElement;
92  import org.vectomatic.dom.svg.impl.SVGMaskElement;
93  import org.vectomatic.dom.svg.impl.SVGMetadataElement;
94  import org.vectomatic.dom.svg.impl.SVGMissingGlyphElement;
95  import org.vectomatic.dom.svg.impl.SVGPathElement;
96  import org.vectomatic.dom.svg.impl.SVGPatternElement;
97  import org.vectomatic.dom.svg.impl.SVGPolygonElement;
98  import org.vectomatic.dom.svg.impl.SVGPolylineElement;
99  import org.vectomatic.dom.svg.impl.SVGRadialGradientElement;
100 import org.vectomatic.dom.svg.impl.SVGRectElement;
101 import org.vectomatic.dom.svg.impl.SVGSVGElement;
102 import org.vectomatic.dom.svg.impl.SVGScriptElement;
103 import org.vectomatic.dom.svg.impl.SVGSetElement;
104 import org.vectomatic.dom.svg.impl.SVGStopElement;
105 import org.vectomatic.dom.svg.impl.SVGStyleElement;
106 import org.vectomatic.dom.svg.impl.SVGSwitchElement;
107 import org.vectomatic.dom.svg.impl.SVGSymbolElement;
108 import org.vectomatic.dom.svg.impl.SVGTRefElement;
109 import org.vectomatic.dom.svg.impl.SVGTSpanElement;
110 import org.vectomatic.dom.svg.impl.SVGTextElement;
111 import org.vectomatic.dom.svg.impl.SVGTextPathElement;
112 import org.vectomatic.dom.svg.impl.SVGTitleElement;
113 import org.vectomatic.dom.svg.impl.SVGUseElement;
114 import org.vectomatic.dom.svg.impl.SVGVKernElement;
115 import org.vectomatic.dom.svg.impl.SVGViewElement;
116 import org.vectomatic.dom.svg.utils.DOMHelper;
117 import org.vectomatic.dom.svg.utils.SVGConstants;
118 
119 import com.google.gwt.dom.client.Document;
120 import com.google.gwt.event.dom.client.ScrollEvent;
121 import com.google.gwt.event.dom.client.ScrollHandler;
122 import com.google.gwt.event.logical.shared.ResizeEvent;
123 import com.google.gwt.event.logical.shared.ResizeHandler;
124 import com.google.gwt.event.shared.HandlerRegistration;
125 
126 /**
127  * <p>When an <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
128  * title='svg element specification'>svg</a> element is embedded inline as
129  * a component of a document from another namespace, such as when an <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
130  * title='svg element specification'>svg</a> element is embedded inline within
131  * an XHTML document [<a href="refs.html#ref-XHTML">XHTML</a>], then an {@link
132  * org.vectomatic.dom.svg.OMSVGDocument} object will not exist; instead, the
133  * root object in the document object hierarchy will be a Document object
134  * of a different type, such as an HTMLDocument object.</p> <p>However, an
135  * {@link org.vectomatic.dom.svg.OMSVGDocument} object will indeed exist when
136  * the root element of the XML document hierarchy is an <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
137  * title='svg element specification'>svg</a> element, such as when viewing
138  * a stand-alone SVG file (i.e., a file with MIME type "image/svg+xml"). In
139  * this case, the {@link org.vectomatic.dom.svg.OMSVGDocument} object will
140  * be the root object of the document object model hierarchy.</p> <p>In the
141  * case where an SVG document is embedded by reference, such as when an XHTML
142  * document has an <span class="element-name">'object'</span> element whose
143  * <span class="attr-name">'href'</span> attribute references an SVG document
144  * (i.e., a document whose MIME type is "image/svg+xml" and whose root element
145  * is thus an <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
146  * title='svg element specification'>svg</a> element), there will exist two
147  * distinct DOM hierarchies. The first DOM hierarchy will be for the referencing
148  * document (e.g., an XHTML document). The second DOM hierarchy will be for
149  * the referenced SVG document.  In this second DOM hierarchy, the root object
150  * of the document object model hierarchy is an {@link org.vectomatic.dom.svg.OMSVGDocument}
151  * object.</p> <p>The {@link org.vectomatic.dom.svg.OMSVGDocument} interface
152  * contains a similar list of attributes and methods to the HTMLDocument interface
153  * described in the <a href="http://www.w3.org/TR/REC-DOM-Level-1/level-one-html.html">Document
154  * Object Model (HTML) Level 1</a> chapter of the [<a href="refs.html#ref-DOM1">DOM1</a>]
155  * specification.</p>
156  */
157 public class OMSVGDocument extends OMDocument implements HasDocumentHandlers {
158   protected OMSVGDocument(SVGDocument ot) {
159     super(ot);
160   }
161 
162   // Implementation of the svg::SVGDocument W3C IDL interface
163   /**
164    * The root <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement' title='svg
165    * element specification'>svg</a> in the document hierarchy.
166    */
167   public final OMSVGSVGElement getRootElement() {
168     return (OMSVGSVGElement)convert(((SVGDocument)ot).getRootElement());
169   }
170 
171   @Override
172   public final HandlerRegistration addScrollHandler(ScrollHandler handler) {
173     return addDomHandler(handler, ScrollEvent.getType());
174   }
175   @Override
176   public final HandlerRegistration addResizeHandler(ResizeHandler handler) {
177     return addHandler(handler, ResizeEvent.getType());
178   }
179   @Override
180   public final HandlerRegistration addSVGZoomHandler(SVGZoomHandler handler) {
181     return addDomHandler(handler, SVGZoomEvent.getType());
182   }
183   public final OMSVGSVGElement createSVGSVGElement() {
184     return (OMSVGSVGElement)convert((SVGSVGElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_SVG_TAG).cast());
185   }
186   public final OMSVGGElement createSVGGElement() {
187     return (OMSVGGElement)convert((SVGGElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_G_TAG).cast());
188   }
189   public final OMSVGDefsElement createSVGDefsElement() {
190     return (OMSVGDefsElement)convert((SVGDefsElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_DEFS_TAG).cast());
191   }
192   public final OMSVGDescElement createSVGDescElement() {
193     return (OMSVGDescElement)convert((SVGDescElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_DESC_TAG).cast());
194   }
195   public final OMSVGTitleElement createSVGTitleElement() {
196     return (OMSVGTitleElement)convert((SVGTitleElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_TITLE_TAG).cast());
197   }
198   public final OMSVGSymbolElement createSVGSymbolElement() {
199     return (OMSVGSymbolElement)convert((SVGSymbolElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_SYMBOL_TAG).cast());
200   }
201   public final OMSVGUseElement createSVGUseElement() {
202     return (OMSVGUseElement)convert((SVGUseElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_USE_TAG).cast());
203   }
204   public final OMSVGImageElement createSVGImageElement() {
205     return (OMSVGImageElement)convert((SVGImageElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_IMAGE_TAG).cast());
206   }
207   public final OMSVGSwitchElement createSVGSwitchElement() {
208     return (OMSVGSwitchElement)convert((SVGSwitchElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_SWITCH_TAG).cast());
209   }
210   public final OMSVGStyleElement createSVGStyleElement() {
211     return (OMSVGStyleElement)convert((SVGStyleElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_STYLE_TAG).cast());
212   }
213   public final OMSVGPathElement createSVGPathElement() {
214     return (OMSVGPathElement)convert((SVGPathElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_PATH_TAG).cast());
215   }
216   public final OMSVGRectElement createSVGRectElement() {
217     return (OMSVGRectElement)convert((SVGRectElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_RECT_TAG).cast());
218   }
219   public final OMSVGCircleElement createSVGCircleElement() {
220     return (OMSVGCircleElement)convert((SVGCircleElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_CIRCLE_TAG).cast());
221   }
222   public final OMSVGEllipseElement createSVGEllipseElement() {
223     return (OMSVGEllipseElement)convert((SVGEllipseElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_ELLIPSE_TAG).cast());
224   }
225   public final OMSVGLineElement createSVGLineElement() {
226     return (OMSVGLineElement)convert((SVGLineElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_LINE_TAG).cast());
227   }
228   public final OMSVGPolylineElement createSVGPolylineElement() {
229     return (OMSVGPolylineElement)convert((SVGPolylineElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_POLYLINE_TAG).cast());
230   }
231   public final OMSVGPolygonElement createSVGPolygonElement() {
232     return (OMSVGPolygonElement)convert((SVGPolygonElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_POLYGON_TAG).cast());
233   }
234   public final OMSVGTextElement createSVGTextElement() {
235     return (OMSVGTextElement)convert((SVGTextElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_TEXT_TAG).cast());
236   }
237   public final OMSVGTSpanElement createSVGTSpanElement() {
238     return (OMSVGTSpanElement)convert((SVGTSpanElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_T_SPAN_TAG).cast());
239   }
240   public final OMSVGTRefElement createSVGTRefElement() {
241     return (OMSVGTRefElement)convert((SVGTRefElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_T_REF_TAG).cast());
242   }
243   public final OMSVGTextPathElement createSVGTextPathElement() {
244     return (OMSVGTextPathElement)convert((SVGTextPathElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_TEXT_PATH_TAG).cast());
245   }
246   public final OMSVGAltGlyphElement createSVGAltGlyphElement() {
247     return (OMSVGAltGlyphElement)convert((SVGAltGlyphElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_ALT_GLYPH_TAG).cast());
248   }
249   public final OMSVGAltGlyphDefElement createSVGAltGlyphDefElement() {
250     return (OMSVGAltGlyphDefElement)convert((SVGAltGlyphDefElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_ALT_GLYPH_DEF_TAG).cast());
251   }
252   public final OMSVGAltGlyphItemElement createSVGAltGlyphItemElement() {
253     return (OMSVGAltGlyphItemElement)convert((SVGAltGlyphItemElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_ALT_GLYPH_ITEM_TAG).cast());
254   }
255   public final OMSVGGlyphRefElement createSVGGlyphRefElement() {
256     return (OMSVGGlyphRefElement)convert((SVGGlyphRefElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_GLYPH_REF_TAG).cast());
257   }
258   public final OMSVGMarkerElement createSVGMarkerElement() {
259     return (OMSVGMarkerElement)convert((SVGMarkerElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_MARKER_TAG).cast());
260   }
261   public final OMSVGColorProfileElement createSVGColorProfileElement() {
262     return (OMSVGColorProfileElement)convert((SVGColorProfileElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_COLOR_PROFILE_TAG).cast());
263   }
264   public final OMSVGLinearGradientElement createSVGLinearGradientElement() {
265     return (OMSVGLinearGradientElement)convert((SVGLinearGradientElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_LINEAR_GRADIENT_TAG).cast());
266   }
267   public final OMSVGRadialGradientElement createSVGRadialGradientElement() {
268     return (OMSVGRadialGradientElement)convert((SVGRadialGradientElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_RADIAL_GRADIENT_TAG).cast());
269   }
270   public final OMSVGStopElement createSVGStopElement() {
271     return (OMSVGStopElement)convert((SVGStopElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_STOP_TAG).cast());
272   }
273   public final OMSVGPatternElement createSVGPatternElement() {
274     return (OMSVGPatternElement)convert((SVGPatternElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_PATTERN_TAG).cast());
275   }
276   public final OMSVGClipPathElement createSVGClipPathElement() {
277     return (OMSVGClipPathElement)convert((SVGClipPathElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_CLIP_PATH_TAG).cast());
278   }
279   public final OMSVGMaskElement createSVGMaskElement() {
280     return (OMSVGMaskElement)convert((SVGMaskElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_MASK_TAG).cast());
281   }
282   public final OMSVGFilterElement createSVGFilterElement() {
283     return (OMSVGFilterElement)convert((SVGFilterElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FILTER_TAG).cast());
284   }
285   public final OMSVGFEBlendElement createSVGFEBlendElement() {
286     return (OMSVGFEBlendElement)convert((SVGFEBlendElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_BLEND_TAG).cast());
287   }
288   public final OMSVGFEColorMatrixElement createSVGFEColorMatrixElement() {
289     return (OMSVGFEColorMatrixElement)convert((SVGFEColorMatrixElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_COLOR_MATRIX_TAG).cast());
290   }
291   public final OMSVGFEComponentTransferElement createSVGFEComponentTransferElement() {
292     return (OMSVGFEComponentTransferElement)convert((SVGFEComponentTransferElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_COMPONENT_TRANSFER_TAG).cast());
293   }
294   public final OMSVGFEFuncRElement createSVGFEFuncRElement() {
295     return (OMSVGFEFuncRElement)convert((SVGFEFuncRElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_FUNC_R_TAG).cast());
296   }
297   public final OMSVGFEFuncGElement createSVGFEFuncGElement() {
298     return (OMSVGFEFuncGElement)convert((SVGFEFuncGElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_FUNC_G_TAG).cast());
299   }
300   public final OMSVGFEFuncBElement createSVGFEFuncBElement() {
301     return (OMSVGFEFuncBElement)convert((SVGFEFuncBElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_FUNC_B_TAG).cast());
302   }
303   public final OMSVGFEFuncAElement createSVGFEFuncAElement() {
304     return (OMSVGFEFuncAElement)convert((SVGFEFuncAElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_FUNC_A_TAG).cast());
305   }
306   public final OMSVGFECompositeElement createSVGFECompositeElement() {
307     return (OMSVGFECompositeElement)convert((SVGFECompositeElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_COMPOSITE_TAG).cast());
308   }
309   public final OMSVGFEConvolveMatrixElement createSVGFEConvolveMatrixElement() {
310     return (OMSVGFEConvolveMatrixElement)convert((SVGFEConvolveMatrixElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_CONVOLVE_MATRIX_TAG).cast());
311   }
312   public final OMSVGFEDiffuseLightingElement createSVGFEDiffuseLightingElement() {
313     return (OMSVGFEDiffuseLightingElement)convert((SVGFEDiffuseLightingElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_DIFFUSE_LIGHTING_TAG).cast());
314   }
315   public final OMSVGFEDistantLightElement createSVGFEDistantLightElement() {
316     return (OMSVGFEDistantLightElement)convert((SVGFEDistantLightElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_DISTANT_LIGHT_TAG).cast());
317   }
318   public final OMSVGFEPointLightElement createSVGFEPointLightElement() {
319     return (OMSVGFEPointLightElement)convert((SVGFEPointLightElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_POINT_LIGHT_TAG).cast());
320   }
321   public final OMSVGFESpotLightElement createSVGFESpotLightElement() {
322     return (OMSVGFESpotLightElement)convert((SVGFESpotLightElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_SPOT_LIGHT_TAG).cast());
323   }
324   public final OMSVGFEDisplacementMapElement createSVGFEDisplacementMapElement() {
325     return (OMSVGFEDisplacementMapElement)convert((SVGFEDisplacementMapElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_DISPLACEMENT_MAP_TAG).cast());
326   }
327   public final OMSVGFEFloodElement createSVGFEFloodElement() {
328     return (OMSVGFEFloodElement)convert((SVGFEFloodElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_FLOOD_TAG).cast());
329   }
330   public final OMSVGFEGaussianBlurElement createSVGFEGaussianBlurElement() {
331     return (OMSVGFEGaussianBlurElement)convert((SVGFEGaussianBlurElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_GAUSSIAN_BLUR_TAG).cast());
332   }
333   public final OMSVGFEImageElement createSVGFEImageElement() {
334     return (OMSVGFEImageElement)convert((SVGFEImageElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_IMAGE_TAG).cast());
335   }
336   public final OMSVGFEMergeElement createSVGFEMergeElement() {
337     return (OMSVGFEMergeElement)convert((SVGFEMergeElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_MERGE_TAG).cast());
338   }
339   public final OMSVGFEMergeNodeElement createSVGFEMergeNodeElement() {
340     return (OMSVGFEMergeNodeElement)convert((SVGFEMergeNodeElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_MERGE_NODE_TAG).cast());
341   }
342   public final OMSVGFEMorphologyElement createSVGFEMorphologyElement() {
343     return (OMSVGFEMorphologyElement)convert((SVGFEMorphologyElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_MORPHOLOGY_TAG).cast());
344   }
345   public final OMSVGFEOffsetElement createSVGFEOffsetElement() {
346     return (OMSVGFEOffsetElement)convert((SVGFEOffsetElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_OFFSET_TAG).cast());
347   }
348   public final OMSVGFESpecularLightingElement createSVGFESpecularLightingElement() {
349     return (OMSVGFESpecularLightingElement)convert((SVGFESpecularLightingElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_SPECULAR_LIGHTING_TAG).cast());
350   }
351   public final OMSVGFETileElement createSVGFETileElement() {
352     return (OMSVGFETileElement)convert((SVGFETileElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_TILE_TAG).cast());
353   }
354   public final OMSVGFETurbulenceElement createSVGFETurbulenceElement() {
355     return (OMSVGFETurbulenceElement)convert((SVGFETurbulenceElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FE_TURBULENCE_TAG).cast());
356   }
357   public final OMSVGCursorElement createSVGCursorElement() {
358     return (OMSVGCursorElement)convert((SVGCursorElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_CURSOR_TAG).cast());
359   }
360   public final OMSVGAElement createSVGAElement() {
361     return (OMSVGAElement)convert((SVGAElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_A_TAG).cast());
362   }
363   public final OMSVGViewElement createSVGViewElement() {
364     return (OMSVGViewElement)convert((SVGViewElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_VIEW_TAG).cast());
365   }
366   public final OMSVGScriptElement createSVGScriptElement() {
367     return (OMSVGScriptElement)convert((SVGScriptElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_SCRIPT_TAG).cast());
368   }
369   public final OMSVGAnimateElement createSVGAnimateElement() {
370     return (OMSVGAnimateElement)convert((SVGAnimateElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_ANIMATE_TAG).cast());
371   }
372   public final OMSVGSetElement createSVGSetElement() {
373     return (OMSVGSetElement)convert((SVGSetElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_SET_TAG).cast());
374   }
375   public final OMSVGAnimateMotionElement createSVGAnimateMotionElement() {
376     return (OMSVGAnimateMotionElement)convert((SVGAnimateMotionElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_ANIMATE_MOTION_TAG).cast());
377   }
378   public final OMSVGMPathElement createSVGMPathElement() {
379     return (OMSVGMPathElement)convert((SVGMPathElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_M_PATH_TAG).cast());
380   }
381   public final OMSVGAnimateColorElement createSVGAnimateColorElement() {
382     return (OMSVGAnimateColorElement)convert((SVGAnimateColorElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_ANIMATE_COLOR_TAG).cast());
383   }
384   public final OMSVGAnimateTransformElement createSVGAnimateTransformElement() {
385     return (OMSVGAnimateTransformElement)convert((SVGAnimateTransformElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_ANIMATE_TRANSFORM_TAG).cast());
386   }
387   public final OMSVGFontElement createSVGFontElement() {
388     return (OMSVGFontElement)convert((SVGFontElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FONT_TAG).cast());
389   }
390   public final OMSVGGlyphElement createSVGGlyphElement() {
391     return (OMSVGGlyphElement)convert((SVGGlyphElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_GLYPH_TAG).cast());
392   }
393   public final OMSVGMissingGlyphElement createSVGMissingGlyphElement() {
394     return (OMSVGMissingGlyphElement)convert((SVGMissingGlyphElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_MISSING_GLYPH_TAG).cast());
395   }
396   public final OMSVGHKernElement createSVGHKernElement() {
397     return (OMSVGHKernElement)convert((SVGHKernElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_H_KERN_TAG).cast());
398   }
399   public final OMSVGVKernElement createSVGVKernElement() {
400     return (OMSVGVKernElement)convert((SVGVKernElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_V_KERN_TAG).cast());
401   }
402   public final OMSVGFontFaceElement createSVGFontFaceElement() {
403     return (OMSVGFontFaceElement)convert((SVGFontFaceElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FONT_FACE_TAG).cast());
404   }
405   public final OMSVGFontFaceSrcElement createSVGFontFaceSrcElement() {
406     return (OMSVGFontFaceSrcElement)convert((SVGFontFaceSrcElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FONT_FACE_SRC_TAG).cast());
407   }
408   public final OMSVGFontFaceUriElement createSVGFontFaceUriElement() {
409     return (OMSVGFontFaceUriElement)convert((SVGFontFaceUriElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FONT_FACE_URI_TAG).cast());
410   }
411   public final OMSVGFontFaceFormatElement createSVGFontFaceFormatElement() {
412     return (OMSVGFontFaceFormatElement)convert((SVGFontFaceFormatElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FONT_FACE_FORMAT_TAG).cast());
413   }
414   public final OMSVGFontFaceNameElement createSVGFontFaceNameElement() {
415     return (OMSVGFontFaceNameElement)convert((SVGFontFaceNameElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FONT_FACE_NAME_TAG).cast());
416   }
417   public final OMSVGMetadataElement createSVGMetadataElement() {
418     return (OMSVGMetadataElement)convert((SVGMetadataElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_METADATA_TAG).cast());
419   }
420   public final OMSVGForeignObjectElement createSVGForeignObjectElement() {
421     return (OMSVGForeignObjectElement)convert((SVGForeignObjectElement)DOMHelper.createElementNS((Document)ot.cast(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_FOREIGN_OBJECT_TAG).cast());
422   }
423   // Helper methods
424   /**
425    * Creates an {@link org.vectomatic.dom.svg.OMSVGCircleElement} object in this
426    * document but does not attach it to the document tree. 
427    * The object is initialized to the specified coordinates
428    * and radius.
429    * @param cx the X coordinate of the circle center
430    * @param cy the Y coordinate of the circle center
431    * @param r the circle radius
432    * @return An {@link org.vectomatic.dom.svg.OMSVGCircleElement} object.
433    */
434   public final OMSVGCircleElement createSVGCircleElement(float cx, float cy, float r) {
435 	return new OMSVGCircleElement(cx, cy, r);
436   }
437   /**
438    * Creates an {@link org.vectomatic.dom.svg.OMSVGEllipseElement} object in this
439    * document but does not attach it to the document tree. 
440    * The object is initialized to the specified coordinates
441    * and radii.
442    * @param cx the X coordinate of the ellipse center
443    * @param cy the Y coordinate of the ellipse center
444    * @param rx the X-axis radius of the ellipse
445    * @param ry the Y-axis radius of the ellipse
446    * @return An {@link org.vectomatic.dom.svg.OMSVGEllipseElement} object.
447    */
448   public final OMSVGEllipseElement createSVGEllipseElement(float cx, float cy, float rx, float ry) {
449 	return new OMSVGEllipseElement(cx, cy, rx, ry);
450   }
451   /**
452    * Creates an {@link org.vectomatic.dom.svg.OMSVGLineElement} object in this
453    * document but does not attach it to the document tree. 
454    * The object is initialized to the specified endpoint coordinates.
455    * @param x1 the X coordinate of the first endpoint
456    * @param y1 the Y coordinate of the first endpoint
457    * @param x2 the X coordinate of the second endpoint
458    * @param y2 the Y coordinate of the second endpoint
459    * @return An {@link org.vectomatic.dom.svg.OMSVGLineElement} object.
460    */
461   public final OMSVGLineElement createSVGLineElement(float x1, float y1, float x2, float y2) {
462 	return new OMSVGLineElement(x1, y1, x2, y2);
463   }
464   /**
465    * Creates an {@link org.vectomatic.dom.svg.OMSVGLineElement} object in this
466    * document but does not attach it to the document tree. 
467    * The object is initialized to the specified endpoints.
468    * @param p1 the first endpoint
469    * @param p2 the the second endpoint
470    * @return An {@link org.vectomatic.dom.svg.OMSVGLineElement} object.
471    */
472   public final OMSVGLineElement createSVGLineElement(OMSVGPoint p1, OMSVGPoint p2) {
473 	return new OMSVGLineElement(p1, p2);
474   }
475   /**
476    * Creates an {@link org.vectomatic.dom.svg.OMSVGRectElement} object in this
477    * document but does not attach it to the document tree. 
478    * The object is initialized to the specified coordinates, size and
479    * corner radii.
480    * @param x the X coordinate of the upper left corner
481    * @param y the Y coordinate of the upper left corner
482    * @param width the width of the rectangle
483    * @param height the width of the rectangle
484    * @param rx the X-axis radius of the rectangle corner
485    * @param ry the Y-axis radius of the rectangle corner
486    * @return An {@link org.vectomatic.dom.svg.OMSVGRectElement} object.
487    */
488   public final OMSVGRectElement createSVGRectElement(float x, float y, float width, float height, float rx, float ry) {
489 	return new OMSVGRectElement(x, y, width, height, rx, ry);
490   }
491   /**
492    * Creates an {@link org.vectomatic.dom.svg.OMSVGRectElement} object in this
493    * document but does not attach it to the document tree. 
494    * The object is initialized with the specified SVG rect and zero
495    * corner radii.
496    * @param rect The SVG rect to use to initialize this rect.
497    * @return An {@link org.vectomatic.dom.svg.OMSVGRectElement} object.
498    */
499   public final OMSVGRectElement createSVGRectElement(OMSVGRect rect) {
500 	return new OMSVGRectElement(rect);
501   }
502   /**
503    * Creates an {@link org.vectomatic.dom.svg.OMSVGTextElement} object in this
504    * document but does not attach it to the document tree. 
505    * The object is initialized to the specified coordinates and string data.
506    * @param x the X coordinate of the text in specified units
507    * @param y the Y coordinate of the text in specified units
508    * @param unitType the unit type used to specify the text coordinates
509    * @param data the string represented by the text object.
510    * @return An {@link org.vectomatic.dom.svg.OMSVGTextElement} object.
511    */
512   public final OMSVGTextElement createSVGTextElement(float x, float y, short unitType, String data) {
513 	return new OMSVGTextElement(x, y, unitType, data);
514   }
515   /**
516    * Creates an {@link org.vectomatic.dom.svg.OMSVGImageElement} object in this
517    * document but does not attach it to the document tree. 
518    * The object is initialized to the specified coordinates, size and
519    * image reference.
520    * @param x the X coordinate of the image
521    * @param y the Y coordinate of the image
522    * @param width the width of the image
523    * @param height the width of the image
524    * @param href the bitmap image referenced by this image element
525    * @return An {@link org.vectomatic.dom.svg.OMSVGImageElement} object.
526    */
527   public final OMSVGImageElement createSVGImageElement(float x, float y, float width, float height, String href) {
528 	return new OMSVGImageElement(x, y, width, height, href);
529   }
530   /**
531    * Creates an {@link org.vectomatic.dom.svg.OMSVGTitleElement} object in this
532    * document but does not attach it to the document tree. 
533    * The object is initialized to the specified text.
534    * @param text the title text
535    * @return An {@link org.vectomatic.dom.svg.OMSVGTitleElement} object.
536    */
537   public final OMSVGTitleElement createSVGTitleElement(String text) {
538 	return new OMSVGTitleElement(text);
539   }
540   /**
541    * Creates an {@link org.vectomatic.dom.svg.OMSVGDescElement} object in this
542    * document but does not attach it to the document tree. 
543    * The object is initialized to the specified text.
544    * @param text the description text
545    * @return An {@link org.vectomatic.dom.svg.OMSVGDescElement} object.
546    */
547   public final OMSVGDescElement createSVGDescElement(String text) {
548 	return new OMSVGDescElement(text);
549   }
550 }