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.impl;
31  
32  import org.vectomatic.dom.svg.OMSVGAngle;
33  import org.vectomatic.dom.svg.OMSVGAnimatedBoolean;
34  import org.vectomatic.dom.svg.OMSVGAnimatedLength;
35  import org.vectomatic.dom.svg.OMSVGAnimatedPreserveAspectRatio;
36  import org.vectomatic.dom.svg.OMSVGAnimatedRect;
37  import org.vectomatic.dom.svg.OMSVGLength;
38  import org.vectomatic.dom.svg.OMSVGMatrix;
39  import org.vectomatic.dom.svg.OMSVGNumber;
40  import org.vectomatic.dom.svg.OMSVGPoint;
41  import org.vectomatic.dom.svg.OMSVGRect;
42  import org.vectomatic.dom.svg.OMSVGStringList;
43  import org.vectomatic.dom.svg.OMSVGTransform;
44  import org.vectomatic.dom.svg.OMSVGViewSpec;
45  
46  import com.google.gwt.core.client.JavaScriptException;
47  import com.google.gwt.dom.client.Element;
48  import com.google.gwt.dom.client.Node;
49  import com.google.gwt.dom.client.NodeList;
50  
51  /**
52   * <p>A key interface definition is the {@link org.vectomatic.dom.svg.impl.SVGSVGElement}
53   * interface, which is the interface that corresponds to the <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
54   * title='svg element specification'>svg</a> element. This interface contains
55   * various miscellaneous commonly-used utility methods, such as matrix operations
56   * and the ability to control the time of redraw on visual rendering devices.</p>
57   * <p>{@link org.vectomatic.dom.svg.impl.SVGSVGElement} extends <code>ViewCSS</code>
58   * and <code>DocumentCSS</code> to provide access to the computed values of
59   * properties and the override style sheet as described in <a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/"><cite>DOM
60   * Level 2 Style</cite></a> [<a href="refs.html#ref-DOM2STYLE">DOM2STYLE</a>].</p>
61   */
62  public class SVGSVGElement extends SVGElement {
63    protected SVGSVGElement() {
64    }
65  
66    // Implementation of the svg::SVGSVGElement W3C IDL interface
67    /**
68     * Corresponds to attribute {@link org.vectomatic.dom.svg.impl.SVGSVGElement#getX()}
69     * on the given <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
70     * title='svg element specification'>svg</a> element.
71     */
72    public final native OMSVGAnimatedLength getX() /*-{
73      return this.x;
74    }-*/;
75    /**
76     * Corresponds to attribute {@link org.vectomatic.dom.svg.impl.SVGSVGElement#getY()}
77     * on the given <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
78     * title='svg element specification'>svg</a> element.
79     */
80    public final native OMSVGAnimatedLength getY() /*-{
81      return this.y;
82    }-*/;
83    /**
84     * Corresponds to attribute {@link org.vectomatic.dom.svg.impl.SVGSVGElement#getWidth()}
85     * on the given <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
86     * title='svg element specification'>svg</a> element.
87     */
88    public final native OMSVGAnimatedLength getWidth() /*-{
89      return this.width;
90    }-*/;
91    /**
92     * Corresponds to attribute {@link org.vectomatic.dom.svg.impl.SVGSVGElement#getHeight()}
93     * on the given <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
94     * title='svg element specification'>svg</a> element.
95     */
96    public final native OMSVGAnimatedLength getHeight() /*-{
97      return this.height;
98    }-*/;
99    /**
100    * Corresponds to attribute {@link org.vectomatic.dom.svg.impl.SVGSVGElement#getContentScriptType()}
101    * on the given <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
102    * title='svg element specification'>svg</a> element.
103    */
104   public final native String getContentScriptType() /*-{
105     return this.contentScriptType;
106   }-*/;
107   /**
108    * Corresponds to attribute {@link org.vectomatic.dom.svg.impl.SVGSVGElement#getContentScriptType()}
109    * on the given <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
110    * title='svg element specification'>svg</a> element.
111    * @throws DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
112    * to   change the value of a <a href="svgdom.html#ReadOnlyNodes">read only
113    * attribute</a>.
114    */
115   public final native void setContentScriptType(String value) throws JavaScriptException /*-{
116     this.contentScriptType = value;
117   }-*/;
118   /**
119    * Corresponds to attribute {@link org.vectomatic.dom.svg.impl.SVGSVGElement#getContentStyleType()}
120    * on the given <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
121    * title='svg element specification'>svg</a> element.
122    */
123   public final native String getContentStyleType() /*-{
124     return this.contentStyleType;
125   }-*/;
126   /**
127    * Corresponds to attribute {@link org.vectomatic.dom.svg.impl.SVGSVGElement#getContentStyleType()}
128    * on the given <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
129    * title='svg element specification'>svg</a> element.
130    * @throws DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
131    * to   change the value of a <a href="svgdom.html#ReadOnlyNodes">read only
132    * attribute</a>.
133    */
134   public final native void setContentStyleType(String value) throws JavaScriptException /*-{
135     this.contentStyleType = value;
136   }-*/;
137   /**
138    * <p>The position and size of the viewport (implicit or explicit) that corresponds
139    * to this <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement' title='svg
140    * element specification'>svg</a> element. When the user agent is actually
141    * rendering the content, then the position and size values represent the
142    * actual values when rendering. The position and size values are unitless
143    * values in the coordinate system of the parent element. If no parent element
144    * exists (i.e., <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
145    * title='svg element specification'>svg</a> element represents the root of
146    * the document tree), if this SVG document is embedded as part of another
147    * document (e.g., via the HTML <span class='element-name'>'object'</span>
148    * element), then the position and size are unitless values in the coordinate
149    * system of the parent document. (If the parent uses CSS or XSL layout, then
150    * unitless values represent pixel units for the current CSS or XSL viewport,
151    * as described in the CSS2 specification.) If the parent element does not
152    * have a coordinate system, then the user agent should provide reasonable
153    * default values for this attribute.</p> <p>The {@link org.vectomatic.dom.svg.OMSVGRect}
154    * object is <a href="types.html#ReadOnlyRect">read only</a>.</p>
155    */
156   public final native OMSVGRect getViewport() /*-{
157     return this.viewport;
158   }-*/;
159   /**
160    * Size of a pixel units (as defined by CSS2) along the x-axis of the viewport,
161    * which represents a unit somewhere in the range of 70dpi to 120dpi, and,
162    * on systems that support this, might actually match the characteristics
163    * of the target medium. On systems where it is impossible to know the size
164    * of a pixel, a suitable default pixel size is provided.
165    */
166   public final native float getPixelUnitToMillimeterX() /*-{
167     return this.pixelUnitToMillimeterX;
168   }-*/;
169   /**
170    * Corresponding size of a pixel unit along the y-axis of the viewport.
171    */
172   public final native float getPixelUnitToMillimeterY() /*-{
173     return this.pixelUnitToMillimeterY;
174   }-*/;
175   /**
176    * User interface (UI) events in DOM Level 2 indicate the screen positions
177    * at which the given UI event occurred. When the user agent actually knows
178    * the physical size of a "screen unit", this attribute will express that
179    * information; otherwise, user agents will provide a suitable default value
180    * such as .28mm.
181    */
182   public final native float getScreenPixelToMillimeterX() /*-{
183     return this.screenPixelToMillimeterX;
184   }-*/;
185   /**
186    * Corresponding size of a screen pixel along the y-axis of the viewport.
187    */
188   public final native float getScreenPixelToMillimeterY() /*-{
189     return this.screenPixelToMillimeterY;
190   }-*/;
191   /**
192    * The initial view (i.e., before magnification and panning) of the current
193    * innermost SVG document fragment can be either the "standard" view (i.e.,
194    * based on attributes on the <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
195    * title='svg element specification'>svg</a> element such as <code>svg/viewBox</code>)
196    * or to a "custom" view (i.e., a hyperlink into a particular <a href='http://www.w3.org/TR/SVG11/linking.html#ViewElement'
197    * title='view element specification'>view</a> or other element - see <a href="linking.html#LinksIntoSVG">Linking
198    * into SVG content: URI fragments and SVG views</a>). If the initial view
199    * is the "standard" view, then this attribute is false. If the initial view
200    * is a "custom" view, then this attribute is true.
201    */
202   public final native boolean getUseCurrentView() /*-{
203     return this.useCurrentView;
204   }-*/;
205   /**
206    * <p>The definition of the initial view (i.e., before magnification and panning)
207    * of the current innermost SVG document fragment. The meaning depends on
208    * the situation:</p> <ul>   <li>     If the initial view was a "standard"
209    * view, then:     <ul>       <li>the values for {@link org.vectomatic.dom.svg.itf.ISVGFitToViewBox#getViewBox()},
210    * {@link org.vectomatic.dom.svg.itf.ISVGFitToViewBox#getPreserveAspectRatio()}
211    * and       {@link org.vectomatic.dom.svg.itf.ISVGZoomAndPan#getZoomAndPan()}
212    * within {@link org.vectomatic.dom.svg.impl.SVGSVGElement#getCurrentView()}
213    * will match the values for the corresponding DOM attributes       that are
214    * on SVGSVGElement directly</li>       <li>the values for {@link org.vectomatic.dom.svg.itf.ISVGViewSpec#getTransform()}
215    * and       {@link org.vectomatic.dom.svg.itf.ISVGViewSpec#getViewTarget()}
216    * within {@link org.vectomatic.dom.svg.impl.SVGSVGElement#getCurrentView()}
217    * will be null</li>     </ul>   </li>   <li>     If the initial view was
218    * a link into a <a href='http://www.w3.org/TR/SVG11/linking.html#ViewElement'
219    * title='view element specification'>view</a> element, then:     <ul>   
220    * <li>the values for {@link org.vectomatic.dom.svg.itf.ISVGFitToViewBox#getViewBox()},
221    * {@link org.vectomatic.dom.svg.itf.ISVGFitToViewBox#getPreserveAspectRatio()}
222    * and       {@link org.vectomatic.dom.svg.itf.ISVGZoomAndPan#getZoomAndPan()}
223    * within {@link org.vectomatic.dom.svg.impl.SVGSVGElement#getCurrentView()}
224    * will correspond to the corresponding attributes for the       given <a
225    * href='http://www.w3.org/TR/SVG11/linking.html#ViewElement' title='view
226    * element specification'>view</a> element</li>       <li>the values for {@link
227    * org.vectomatic.dom.svg.itf.ISVGViewSpec#getTransform()} and       {@link
228    * org.vectomatic.dom.svg.itf.ISVGViewSpec#getViewTarget()} within {@link
229    * org.vectomatic.dom.svg.impl.SVGSVGElement#getCurrentView()}       will
230    * be null</li>     </ul>   </li>   <li>     If the initial view was a link
231    * into another element (i.e.,     other than a <a href='http://www.w3.org/TR/SVG11/linking.html#ViewElement'
232    * title='view element specification'>view</a>), then:     <ul>       <li>the
233    * values for {@link org.vectomatic.dom.svg.itf.ISVGFitToViewBox#getViewBox()},
234    * {@link org.vectomatic.dom.svg.itf.ISVGFitToViewBox#getPreserveAspectRatio()}
235    * and       {@link org.vectomatic.dom.svg.itf.ISVGZoomAndPan#getZoomAndPan()}
236    * within {@link org.vectomatic.dom.svg.impl.SVGSVGElement#getCurrentView()}
237    * will match the values for the corresponding DOM attributes       that are
238    * on SVGSVGElement directly for the closest ancestor       <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
239    * title='svg element specification'>svg</a> element</li>       <li>the values
240    * for {@link org.vectomatic.dom.svg.itf.ISVGViewSpec#getTransform()} within
241    * {@link org.vectomatic.dom.svg.impl.SVGSVGElement#getCurrentView()} will
242    * be null</li>       <li>the {@link org.vectomatic.dom.svg.itf.ISVGViewSpec#getViewTarget()}
243    * within       {@link org.vectomatic.dom.svg.impl.SVGSVGElement#getCurrentView()}
244    * will represent the target of the       link</li>     </ul>   </li>   <li>
245    * If the initial view was a link into the SVG document fragment     using
246    * an SVG view specification fragment identifier (i.e.,     #svgView(...)),
247    * then:     <ul>       <li>the values for {@link org.vectomatic.dom.svg.itf.ISVGFitToViewBox#getViewBox()},
248    * {@link org.vectomatic.dom.svg.itf.ISVGFitToViewBox#getPreserveAspectRatio()},
249    * {@link org.vectomatic.dom.svg.itf.ISVGZoomAndPan#getZoomAndPan()},    
250    * {@link org.vectomatic.dom.svg.itf.ISVGViewSpec#getTransform()} and    
251    * {@link org.vectomatic.dom.svg.itf.ISVGViewSpec#getViewTarget()} within
252    * {@link org.vectomatic.dom.svg.impl.SVGSVGElement#getCurrentView()}    
253    * will correspond to the values from the SVG view       specification fragment
254    * identifier</li>     </ul>   </li> </ul> <p>The object itself and its contents
255    * are both read only.</p>
256    */
257   public final native OMSVGViewSpec getCurrentView() /*-{
258     return this.currentView;
259   }-*/;
260   /**
261    * On an outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
262    * title='svg element specification'>svg</a> element, this attribute indicates
263    * the current scale factor relative to the initial view to take into account
264    * user magnification and panning operations, as described under <a href='interact.html#ZoomAndPanAttribute'>Magnification
265    * and panning</a>. DOM attributes {@link org.vectomatic.dom.svg.impl.SVGSVGElement#getCurrentScale()}
266    * and {@link org.vectomatic.dom.svg.impl.SVGSVGElement#getCurrentTranslate()}
267    * are equivalent to the 2x3 matrix [a b c d e f] = [currentScale 0 0 currentScale currentTranslate.x currentTranslate.y].
268    * If "magnification" is enabled (i.e., <span class='attr-value'>zoomAndPan="magnify"</span>),
269    * then the effect is as if an extra transformation were placed at the outermost
270    * level on the SVG document fragment (i.e., outside the outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
271    * title='svg element specification'>svg</a> element). <p>When accessed on
272    * an <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement' title='svg
273    * element specification'>svg</a> element that is not an outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
274    * title='svg element specification'>svg</a> element, it is undefined what
275    * behavior this attribute has.</p>
276    */
277   public final native float getCurrentScale() /*-{
278     return this.currentScale;
279   }-*/;
280   /**
281    * On an outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
282    * title='svg element specification'>svg</a> element, this attribute indicates
283    * the current scale factor relative to the initial view to take into account
284    * user magnification and panning operations, as described under <a href='interact.html#ZoomAndPanAttribute'>Magnification
285    * and panning</a>. DOM attributes {@link org.vectomatic.dom.svg.impl.SVGSVGElement#getCurrentScale()}
286    * and {@link org.vectomatic.dom.svg.impl.SVGSVGElement#getCurrentTranslate()}
287    * are equivalent to the 2x3 matrix [a b c d e f] = [currentScale 0 0 currentScale currentTranslate.x currentTranslate.y].
288    * If "magnification" is enabled (i.e., <span class='attr-value'>zoomAndPan="magnify"</span>),
289    * then the effect is as if an extra transformation were placed at the outermost
290    * level on the SVG document fragment (i.e., outside the outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
291    * title='svg element specification'>svg</a> element). <p>When accessed on
292    * an <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement' title='svg
293    * element specification'>svg</a> element that is not an outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
294    * title='svg element specification'>svg</a> element, it is undefined what
295    * behavior this attribute has.</p>
296    */
297   public final native void setCurrentScale(float value) /*-{
298     this.currentScale = value;
299   }-*/;
300   /**
301    * On an outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
302    * title='svg element specification'>svg</a> element, the corresponding translation
303    * factor that takes into account user "magnification". <p>When accessed on
304    * an <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement' title='svg
305    * element specification'>svg</a> element that is not an outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
306    * title='svg element specification'>svg</a> element, it is undefined what
307    * behavior this attribute has.</p>
308    */
309   public final native OMSVGPoint getCurrentTranslate() /*-{
310     return this.currentTranslate;
311   }-*/;
312   /**
313    * Takes a time-out value which indicates that redraw shall not occur until:
314    * <ol>   <li>the corresponding unsuspendRedraw() call has been made,</li>
315    * <li>an unsuspendRedrawAll() call has been made, or</li>   <li>its timer
316    * has timed out.</li> </ol> <p>In environments that do not support interactivity
317    * (e.g., print media), then redraw shall not be suspended. Calls to suspendRedraw()
318    * and unsuspendRedraw() should, but need not be, made in balanced pairs.</p>
319    * <p>To suspend redraw actions as a collection of SVG DOM changes occur,
320    * precede the changes to the SVG DOM with a method call similar to:</p> <pre>suspendHandleID
321    * = suspendRedraw(maxWaitMilliseconds);</pre> <p>and follow the changes with
322    * a method call similar to:</p> <pre>unsuspendRedraw(suspendHandleID);</pre>
323    * <p>Note that multiple suspendRedraw calls can be used at once and that
324    * each such method call is treated independently of the other suspendRedraw
325    * method calls.</p>
326    * @param maxWaitMilliseconds The amount of time in milliseconds   to hold
327    * off before redrawing the device. Values greater than 60 seconds   will
328    * be truncated down to 60 seconds.
329    * @return A number which acts as a unique identifier for the given   suspendRedraw()
330    * call. This value must be passed as the parameter to the   corresponding
331    * unsuspendRedraw() method call.
332    */
333   public final native int suspendRedraw(int maxWaitMilliseconds) /*-{
334     return this.suspendRedraw(maxWaitMilliseconds);
335   }-*/;
336   /**
337    * Cancels a specified suspendRedraw() by providing a unique suspend handle
338    * ID that was returned by a previous suspendRedraw() call.
339    * @param suspendHandleID A number which acts as a unique identifier for 
340    * the desired suspendRedraw() call. The number supplied must be a value 
341    * returned from a previous call to suspendRedraw(). If an invalid   handle
342    * ID value is provided then the request to unsuspendRedraw() is   silently
343    * ignored.
344    */
345   public final native void unsuspendRedraw(int suspendHandleID) /*-{
346     this.unsuspendRedraw(suspendHandleID);
347   }-*/;
348   /**
349    * Cancels all currently active suspendRedraw() method calls. This method
350    * is most useful at the very end of a set of SVG DOM calls to ensure that
351    * all pending suspendRedraw() method calls have been cancelled.
352    */
353   public final native void unsuspendRedrawAll() /*-{
354     this.unsuspendRedrawAll();
355   }-*/;
356   /**
357    * In rendering environments supporting interactivity, forces the user agent
358    * to immediately redraw all regions of the viewport that require updating.
359    */
360   public final native void forceRedraw() /*-{
361     this.forceRedraw();
362   }-*/;
363   /**
364    * Suspends (i.e., pauses) all currently running animations that are defined
365    * within the SVG document fragment corresponding to this <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
366    * title='svg element specification'>svg</a> element, causing the animation
367    * clock corresponding to this document fragment to stand still until it is
368    * unpaused.
369    */
370   public final native void pauseAnimations() /*-{
371     this.pauseAnimations();
372   }-*/;
373   /**
374    * Unsuspends (i.e., unpauses) currently running animations that are defined
375    * within the SVG document fragment, causing the animation clock to continue
376    * from the time at which it was suspended.
377    */
378   public final native void unpauseAnimations() /*-{
379     this.unpauseAnimations();
380   }-*/;
381   /**
382    * Returns true if this SVG document fragment is in a paused state.
383    * @return Boolean indicating whether this SVG document fragment is in a 
384    * paused state.
385    */
386   public final native boolean animationsPaused() /*-{
387     return this.animationsPaused();
388   }-*/;
389   /**
390    * Returns the current time in seconds relative to the start time for the
391    * current SVG document fragment. If <span class="dom-method-name">getCurrentTime</span>
392    * is called before the document timeline has begun (for example, by script
393    * running in a <a href='http://www.w3.org/TR/SVG11/script.html#ScriptElement'
394    * title='script element specification'>script</a>  element before the document's
395    * <a href="interact.html#LoadEvent">SVGLoad</a> event is dispatched), then
396    * 0 is returned.
397    * @return The current time in seconds, or 0 if the document timeline has
398    * not yet begun.
399    */
400   public final native float getCurrentTime() /*-{
401     return this.getCurrentTime();
402   }-*/;
403   /**
404    * Adjusts the clock for this SVG document fragment, establishing a new current
405    * time. If <span class="dom-method-name">setCurrentTime</span> is called
406    * before the document timeline has begun (for example, by script running
407    * in a <a href='http://www.w3.org/TR/SVG11/script.html#ScriptElement' title='script
408    * element specification'>script</a> element before the document's <a href="interact.html#LoadEvent">SVGLoad</a>
409    * event is dispatched), then the value of <var>seconds</var> in the last
410    * invocation of the method gives the time that the document will seek to
411    * once the document timeline has begun.
412    * @param seconds The new current time in seconds relative to the start  
413    * time for the current SVG document fragment.
414    */
415   public final native void setCurrentTime(float seconds) /*-{
416     this.setCurrentTime(seconds);
417   }-*/;
418   /**
419    * Returns the list of graphics elements whose rendered content intersects
420    * the supplied rectangle. Each candidate graphics element is to be considered
421    * a match only if the same graphics element can be a <a href="interact.html#PointerEventsProperty">target
422    * of pointer events</a> as defined in <code>pointer-events</code> processing.
423    * @param rect The test rectangle. The values are in the <code>initial coordinate
424    * system</code> for the current <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
425    * title='svg element specification'>svg</a> element.
426    * @param referenceElement If not null, then any intersected element that
427    * doesn't have the referenceElement as ancestor must not be included   in
428    * the returned NodeList.
429    * @return A list of Elements whose content intersects the supplied   rectangle.
430    * This {@link com.google.gwt.dom.client.NodeList} must be implemented identically
431    * to   the {@link com.google.gwt.dom.client.NodeList} interface as defined
432    * in DOM Level 2 Core   ([<a href="refs.html#ref-DOM2">DOM2</a>], section
433    * 1.2) with the   exception that the interface is not   <a href="http://www.w3.org/TR/DOM-Level-2-Core/core.html#td-live">live</a>.
434    */
435   public final native NodeList<? extends Node> getIntersectionList(OMSVGRect rect, SVGElement referenceElement) /*-{
436     return this.getIntersectionList(rect, referenceElement);
437   }-*/;
438   /**
439    * Returns the list of graphics elements whose rendered content is entirely
440    * contained within the supplied rectangle. Each candidate graphics element
441    * is to be considered a match only if the same graphics element can be a
442    * <a href="interact.html#PointerEventsProperty">target of pointer events</a>
443    * as defined in <code>pointer-events</code> processing.
444    * @param rect The test rectangle. The values are in the <code>initial coordinate
445    * system</code> for the current <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
446    * title='svg element specification'>svg</a> element.
447    * @param referenceElement If not null, then any intersected element that
448    * doesn't have the referenceElement as ancestor must not be included   in
449    * the returned NodeList.
450    * @return A list of Elements whose content is enclosed by the supplied  
451    * rectangle.  This {@link com.google.gwt.dom.client.NodeList} must be implemented
452    * identically to   the {@link com.google.gwt.dom.client.NodeList} interface
453    * as defined in DOM Level 2 Core   ([<a href="refs.html#ref-DOM2">DOM2</a>],
454    * section 1.2) with the   exception that the interface is not   <a href="http://www.w3.org/TR/DOM-Level-2-Core/core.html#td-live">live</a>.
455    */
456   public final native NodeList<? extends Node> getEnclosureList(OMSVGRect rect, SVGElement referenceElement) /*-{
457     return this.getEnclosureList(rect, referenceElement);
458   }-*/;
459   /**
460    * Returns true if the rendered content of the given element intersects the
461    * supplied rectangle. Each candidate graphics element is to be considered
462    * a match only if the same graphics element can be a <a href="interact.html#PointerEventsProperty">target
463    * of pointer events</a> as defined in <code>pointer-events</code> processing.
464    * @param element The element on which to perform the given test.
465    * @param rect The test rectangle. The values are in the <code>initial coordinate
466    * system</code> for the current <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
467    * title='svg element specification'>svg</a> element.
468    * @return True or false, depending on whether the given element intersects
469    * the supplied rectangle.
470    */
471   public final native boolean checkIntersection(SVGElement element, OMSVGRect rect) /*-{
472     return this.checkIntersection(element, rect);
473   }-*/;
474   /**
475    * Returns true if the rendered content of the given element is entirely contained
476    * within the supplied rectangle. Each candidate graphics element is to be
477    * considered a match only if the same graphics element can be a <a href="interact.html#PointerEventsProperty">target
478    * of pointer events</a> as defined in <code>pointer-events</code> processing.
479    * @param element The element on which to perform the given test.
480    * @param rect The test rectangle. The values are in the <code>initial coordinate
481    * system</code> for the current <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
482    * title='svg element specification'>svg</a> element.
483    * @return True or false, depending on whether the given element is enclosed
484    * by the supplied rectangle.
485    */
486   public final native boolean checkEnclosure(SVGElement element, OMSVGRect rect) /*-{
487     return this.checkEnclosure(element, rect);
488   }-*/;
489   /**
490    * Unselects any selected objects, including any selections of text strings
491    * and type-in bars.
492    */
493   public final native void deselectAll() /*-{
494     this.deselectAll();
495   }-*/;
496   /**
497    * Creates an {@link org.vectomatic.dom.svg.OMSVGNumber} object outside of
498    * any document trees. The object is initialized to a value of zero.
499    * @return An {@link org.vectomatic.dom.svg.OMSVGNumber} object.
500    */
501   public final native OMSVGNumber createSVGNumber() /*-{
502     return this.createSVGNumber();
503   }-*/;
504   /**
505    * Creates an {@link org.vectomatic.dom.svg.OMSVGLength} object outside of
506    * any document trees. The object is initialized to the value of 0 user units.
507    * @return An {@link org.vectomatic.dom.svg.OMSVGLength} object.
508    */
509   public final native OMSVGLength createSVGLength() /*-{
510     return this.createSVGLength();
511   }-*/;
512   /**
513    * Creates an {@link org.vectomatic.dom.svg.OMSVGAngle} object outside of
514    * any document trees. The object is initialized to the value 0 degrees (unitless).
515    * @return An {@link org.vectomatic.dom.svg.OMSVGAngle} object.
516    */
517   public final native OMSVGAngle createSVGAngle() /*-{
518     return this.createSVGAngle();
519   }-*/;
520   /**
521    * Creates an {@link org.vectomatic.dom.svg.OMSVGPoint} object outside of
522    * any document trees. The object is initialized to the point (0,0) in the
523    * user coordinate system.
524    * @return An {@link org.vectomatic.dom.svg.OMSVGPoint} object.
525    */
526   public final native OMSVGPoint createSVGPoint() /*-{
527     return this.createSVGPoint();
528   }-*/;
529   /**
530    * Creates an {@link org.vectomatic.dom.svg.OMSVGMatrix} object outside of
531    * any document trees. The object is initialized to the identity matrix.
532    * @return An {@link org.vectomatic.dom.svg.OMSVGMatrix} object.
533    */
534   public final native OMSVGMatrix createSVGMatrix() /*-{
535     return this.createSVGMatrix();
536   }-*/;
537   /**
538    * Creates an {@link org.vectomatic.dom.svg.OMSVGRect} object outside of any
539    * document trees. The object is initialized such that all values are set
540    * to 0 user units.
541    * @return An {@link org.vectomatic.dom.svg.OMSVGRect} object.
542    */
543   public final native OMSVGRect createSVGRect() /*-{
544     return this.createSVGRect();
545   }-*/;
546   /**
547    * Creates an {@link org.vectomatic.dom.svg.OMSVGTransform} object outside
548    * of any document trees. The object is initialized to an identity matrix
549    * transform (SVG_TRANSFORM_MATRIX).
550    * @return An {@link org.vectomatic.dom.svg.OMSVGTransform} object.
551    */
552   public final native OMSVGTransform createSVGTransform() /*-{
553     return this.createSVGTransform();
554   }-*/;
555   /**
556    * <p xmlns:edit="http://xmlns.grorg.org/SVGT12NG/"> Creates an {@link org.vectomatic.dom.svg.OMSVGTransform}
557    * object outside of any document trees. The object is initialized to the
558    * given matrix transform (i.e., SVG_TRANSFORM_MATRIX).  The values from the
559    * parameter <var>matrix</var> are copied, the <var>matrix</var> parameter
560    * is not adopted as <a edit:format="expanded">SVGTransform::matrix</a>. </p>
561    * @param matrix The transform matrix.
562    * @return An {@link org.vectomatic.dom.svg.OMSVGTransform} object.
563    */
564   public final native OMSVGTransform createSVGTransformFromMatrix(OMSVGMatrix matrix) /*-{
565     return this.createSVGTransformFromMatrix(matrix);
566   }-*/;
567   /**
568    * Searches this SVG document fragment (i.e., the search is restricted to
569    * a subset of the document tree) for an Element whose id is given by <var>elementId</var>.
570    * If an Element is found, that Element is returned. If no such element exists,
571    * returns null. Behavior is not defined if more than one element has this
572    * id.
573    * @param elementId The unique id value for an element.
574    * @return The matching element.
575    */
576   public final native Element getElementById(String elementId) /*-{
577     return this.getElementById(elementId);
578   }-*/;
579 
580   // Implementation of the svg::SVGExternalResourcesRequired W3C IDL interface
581   /**
582    * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGExternalResourcesRequired#getExternalResourcesRequired()}
583    * on the given element. Note that the SVG DOM defines the attribute {@link
584    * org.vectomatic.dom.svg.itf.ISVGExternalResourcesRequired#getExternalResourcesRequired()}
585    * as being of type {@link org.vectomatic.dom.svg.OMSVGAnimatedBoolean}, whereas
586    * the SVG language definition says that {@link org.vectomatic.dom.svg.itf.ISVGExternalResourcesRequired#getExternalResourcesRequired()}
587    * is not animated. Because the SVG language definition states that {@link
588    * org.vectomatic.dom.svg.itf.ISVGExternalResourcesRequired#getExternalResourcesRequired()}
589    * cannot be animated, the {@link org.vectomatic.dom.svg.OMSVGAnimatedBoolean#getAnimVal()}
590    * will always be the same as the {@link org.vectomatic.dom.svg.OMSVGAnimatedBoolean#getBaseVal()}.
591    */
592   public final native OMSVGAnimatedBoolean getExternalResourcesRequired() /*-{
593     return this.externalResourcesRequired;
594   }-*/;
595 
596   // Implementation of the svg::SVGFitToViewBox W3C IDL interface
597   /**
598    * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGFitToViewBox#getViewBox()}
599    * on the given element.
600    */
601   public final native OMSVGAnimatedRect getViewBox() /*-{
602     return this.viewBox;
603   }-*/;
604   /**
605    * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGFitToViewBox#getPreserveAspectRatio()}
606    * on the given element.
607    */
608   public final native OMSVGAnimatedPreserveAspectRatio getPreserveAspectRatio() /*-{
609     return this.preserveAspectRatio;
610   }-*/;
611 
612   // Implementation of the svg::SVGLangSpace W3C IDL interface
613   /**
614    * Corresponds to attribute <code>xml:lang</code> on the given element.
615    */
616   public final native String getXmllang() /*-{
617     return this.xmllang;
618   }-*/;
619   /**
620    * Corresponds to attribute <code>xml:lang</code> on the given element.
621    * @throws DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an   attempt
622    * to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only
623    * attribute</a>.
624    */
625   public final native void setXmllang(String value) throws JavaScriptException /*-{
626     this.xmllang = value;
627   }-*/;
628   /**
629    * Corresponds to attribute <code>xml:space</code> on the given element.
630    */
631   public final native String getXmlspace() /*-{
632     return this.xmlspace;
633   }-*/;
634   /**
635    * Corresponds to attribute <code>xml:space</code> on the given element.
636    * @throws DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an   attempt
637    * to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only
638    * attribute</a>.
639    */
640   public final native void setXmlspace(String value) throws JavaScriptException /*-{
641     this.xmlspace = value;
642   }-*/;
643 
644   // Implementation of the svg::SVGLocatable W3C IDL interface
645   /**
646    * The element which established the current viewport. Often, the nearest
647    * ancestor <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement' title='svg
648    * element specification'>svg</a> element. Null if the current element is
649    * the outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
650    * title='svg element specification'>svg</a> element.
651    */
652   public final native SVGElement getNearestViewportElement() /*-{
653     return this.nearestViewportElement;
654   }-*/;
655   /**
656    * The farthest ancestor <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
657    * title='svg element specification'>svg</a> element. Null if the current
658    * element is the outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
659    * title='svg element specification'>svg</a> element.
660    */
661   public final native SVGElement getFarthestViewportElement() /*-{
662     return this.farthestViewportElement;
663   }-*/;
664   /**
665    * Returns the tight bounding box in current user space (i.e., after application
666    * of the <code>transform</code> attribute, if any) on the geometry of all
667    * contained graphics elements, exclusive of stroking, clipping, masking and
668    * filter effects). Note that getBBox must return the actual bounding box
669    * at the time the method was called, even in case the element has not yet
670    * been rendered.
671    * @return An {@link org.vectomatic.dom.svg.OMSVGRect} object that defines
672    * the bounding box.
673    */
674   public final native OMSVGRect getBBox() /*-{
675     return this.getBBox();
676   }-*/;
677   /**
678    * Returns the transformation matrix from current user units (i.e., after
679    * application of the <code>transform</code> attribute, if any) to the viewport
680    * coordinate system for the {@link org.vectomatic.dom.svg.itf.ISVGLocatable#getNearestViewportElement()}.
681    * @return An {@link org.vectomatic.dom.svg.OMSVGMatrix} object that defines
682    * the CTM.
683    */
684   public final native OMSVGMatrix getCTM() /*-{
685     return this.getCTM();
686   }-*/;
687   /**
688    * Returns the transformation matrix from current user units (i.e., after
689    * application of the <code>transform</code> attribute, if any) to the parent
690    * user agent's notice of a "pixel". For display devices, ideally this represents
691    * a physical screen pixel. For other devices or environments where physical
692    * pixel sizes are not known, then an algorithm similar to the CSS2 definition
693    * of a "pixel" can be used instead.  Note that null is returned if this element
694    * is not hooked into the document tree. This method would have been more
695    * aptly named as <code>getClientCTM</code>, but the name <code>getScreenCTM</code>
696    * is kept for historical reasons.
697    * @return An {@link org.vectomatic.dom.svg.OMSVGMatrix} object that defines
698    * the given   transformation matrix.
699    */
700   public final native OMSVGMatrix getScreenCTM() /*-{
701     return this.getScreenCTM();
702   }-*/;
703   /**
704    * Returns the transformation matrix from the user coordinate system on the
705    * current element (after application of the <code>transform</code> attribute,
706    * if any) to the user coordinate system on parameter <var>element</var> (after
707    * application of its <code>transform</code> attribute, if any).
708    * @param element The target element.
709    * @return An {@link org.vectomatic.dom.svg.OMSVGMatrix} object that defines
710    * the transformation.
711    * @throws SVGException(SVG_MATRIX_NOT_INVERTABLE) Raised if the currently
712    * defined transformation matrices make it impossible to compute the   given
713    * matrix (e.g., because one of the transformations is singular).
714    */
715   public final native OMSVGMatrix getTransformToElement(SVGElement element) throws JavaScriptException /*-{
716     return this.getTransformToElement(element);
717   }-*/;
718 
719   // Implementation of the svg::SVGTests W3C IDL interface
720   /**
721    * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGTests#getRequiredFeatures()}
722    * on the given element.
723    */
724   public final native OMSVGStringList getRequiredFeatures() /*-{
725     return @org.vectomatic.dom.svg.OMNode::convertList(Lcom/google/gwt/core/client/JavaScriptObject;)(this.requiredFeatures);
726   }-*/;
727   /**
728    * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGTests#getRequiredExtensions()}
729    * on the given element.
730    */
731   public final native OMSVGStringList getRequiredExtensions() /*-{
732     return @org.vectomatic.dom.svg.OMNode::convertList(Lcom/google/gwt/core/client/JavaScriptObject;)(this.requiredExtensions);
733   }-*/;
734   /**
735    * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGTests#getSystemLanguage()}
736    * on the given element.
737    */
738   public final native OMSVGStringList getSystemLanguage() /*-{
739     return @org.vectomatic.dom.svg.OMNode::convertList(Lcom/google/gwt/core/client/JavaScriptObject;)(this.systemLanguage);
740   }-*/;
741   /**
742    * Returns true if the user agent supports the given extension, specified
743    * by a URI.
744    * @param extension The name of the extension, expressed as a URI.
745    * @return True or false, depending on whether the given extension is   supported.
746    */
747   public final native boolean hasExtension(String extension) /*-{
748     return this.hasExtension(extension);
749   }-*/;
750 
751   // Implementation of the svg::SVGZoomAndPan W3C IDL interface
752   /**
753    * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGZoomAndPan#getZoomAndPan()}
754    * on the given element. The value must be one of the SVG_ZOOMANDPAN_ constants
755    * defined on this interface.
756    */
757   public final native short getZoomAndPan() /*-{
758     return this.zoomAndPan;
759   }-*/;
760   /**
761    * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGZoomAndPan#getZoomAndPan()}
762    * on the given element. The value must be one of the SVG_ZOOMANDPAN_ constants
763    * defined on this interface.
764    * @throws DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an   attempt
765    * to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only
766    * attribute</a>.
767    */
768   public final native void setZoomAndPan(short value) throws JavaScriptException /*-{
769     this.zoomAndPan = value;
770   }-*/;
771 
772 }