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.OMSVGAnimatedBoolean; 33 import org.vectomatic.dom.svg.OMSVGAnimatedString; 34 import org.vectomatic.dom.svg.OMSVGAnimatedTransformList; 35 import org.vectomatic.dom.svg.OMSVGMatrix; 36 import org.vectomatic.dom.svg.OMSVGRect; 37 import org.vectomatic.dom.svg.OMSVGStringList; 38 39 import com.google.gwt.core.client.JavaScriptException; 40 41 /** 42 * The {@link org.vectomatic.dom.svg.impl.SVGAElement} interface corresponds 43 * to the <a href='http://www.w3.org/TR/SVG11/linking.html#AElement' title='a 44 * element specification'>a</a> element. 45 */ 46 public class SVGAElement extends SVGElement { 47 protected SVGAElement() { 48 } 49 50 // Implementation of the svg::SVGAElement W3C IDL interface 51 /** 52 * Corresponds to attribute {@link org.vectomatic.dom.svg.impl.SVGAElement#getTarget()} 53 * on the given <a href='http://www.w3.org/TR/SVG11/linking.html#AElement' 54 * title='a element specification'>a</a> element. 55 */ 56 public final native OMSVGAnimatedString getTarget() /*-{ 57 return this.target; 58 }-*/; 59 60 // Implementation of the svg::SVGExternalResourcesRequired W3C IDL interface 61 /** 62 * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGExternalResourcesRequired#getExternalResourcesRequired()} 63 * on the given element. Note that the SVG DOM defines the attribute {@link 64 * org.vectomatic.dom.svg.itf.ISVGExternalResourcesRequired#getExternalResourcesRequired()} 65 * as being of type {@link org.vectomatic.dom.svg.OMSVGAnimatedBoolean}, whereas 66 * the SVG language definition says that {@link org.vectomatic.dom.svg.itf.ISVGExternalResourcesRequired#getExternalResourcesRequired()} 67 * is not animated. Because the SVG language definition states that {@link 68 * org.vectomatic.dom.svg.itf.ISVGExternalResourcesRequired#getExternalResourcesRequired()} 69 * cannot be animated, the {@link org.vectomatic.dom.svg.OMSVGAnimatedBoolean#getAnimVal()} 70 * will always be the same as the {@link org.vectomatic.dom.svg.OMSVGAnimatedBoolean#getBaseVal()}. 71 */ 72 public final native OMSVGAnimatedBoolean getExternalResourcesRequired() /*-{ 73 return this.externalResourcesRequired; 74 }-*/; 75 76 // Implementation of the svg::SVGLangSpace W3C IDL interface 77 /** 78 * Corresponds to attribute <code>xml:lang</code> on the given element. 79 */ 80 public final native String getXmllang() /*-{ 81 return this.xmllang; 82 }-*/; 83 /** 84 * Corresponds to attribute <code>xml:lang</code> on the given element. 85 * @throws DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt 86 * to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only 87 * attribute</a>. 88 */ 89 public final native void setXmllang(String value) throws JavaScriptException /*-{ 90 this.xmllang = value; 91 }-*/; 92 /** 93 * Corresponds to attribute <code>xml:space</code> on the given element. 94 */ 95 public final native String getXmlspace() /*-{ 96 return this.xmlspace; 97 }-*/; 98 /** 99 * Corresponds to attribute <code>xml:space</code> on the given element. 100 * @throws DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt 101 * to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only 102 * attribute</a>. 103 */ 104 public final native void setXmlspace(String value) throws JavaScriptException /*-{ 105 this.xmlspace = value; 106 }-*/; 107 108 // Implementation of the svg::SVGLocatable W3C IDL interface 109 /** 110 * The element which established the current viewport. Often, the nearest 111 * ancestor <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement' title='svg 112 * element specification'>svg</a> element. Null if the current element is 113 * the outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement' 114 * title='svg element specification'>svg</a> element. 115 */ 116 public final native SVGElement getNearestViewportElement() /*-{ 117 return this.nearestViewportElement; 118 }-*/; 119 /** 120 * The farthest ancestor <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement' 121 * title='svg element specification'>svg</a> element. Null if the current 122 * element is the outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement' 123 * title='svg element specification'>svg</a> element. 124 */ 125 public final native SVGElement getFarthestViewportElement() /*-{ 126 return this.farthestViewportElement; 127 }-*/; 128 /** 129 * Returns the tight bounding box in current user space (i.e., after application 130 * of the <code>transform</code> attribute, if any) on the geometry of all 131 * contained graphics elements, exclusive of stroking, clipping, masking and 132 * filter effects). Note that getBBox must return the actual bounding box 133 * at the time the method was called, even in case the element has not yet 134 * been rendered. 135 * @return An {@link org.vectomatic.dom.svg.OMSVGRect} object that defines 136 * the bounding box. 137 */ 138 public final native OMSVGRect getBBox() /*-{ 139 return this.getBBox(); 140 }-*/; 141 /** 142 * Returns the transformation matrix from current user units (i.e., after 143 * application of the <code>transform</code> attribute, if any) to the viewport 144 * coordinate system for the {@link org.vectomatic.dom.svg.itf.ISVGLocatable#getNearestViewportElement()}. 145 * @return An {@link org.vectomatic.dom.svg.OMSVGMatrix} object that defines 146 * the CTM. 147 */ 148 public final native OMSVGMatrix getCTM() /*-{ 149 return this.getCTM(); 150 }-*/; 151 /** 152 * Returns the transformation matrix from current user units (i.e., after 153 * application of the <code>transform</code> attribute, if any) to the parent 154 * user agent's notice of a "pixel". For display devices, ideally this represents 155 * a physical screen pixel. For other devices or environments where physical 156 * pixel sizes are not known, then an algorithm similar to the CSS2 definition 157 * of a "pixel" can be used instead. Note that null is returned if this element 158 * is not hooked into the document tree. This method would have been more 159 * aptly named as <code>getClientCTM</code>, but the name <code>getScreenCTM</code> 160 * is kept for historical reasons. 161 * @return An {@link org.vectomatic.dom.svg.OMSVGMatrix} object that defines 162 * the given transformation matrix. 163 */ 164 public final native OMSVGMatrix getScreenCTM() /*-{ 165 return this.getScreenCTM(); 166 }-*/; 167 /** 168 * Returns the transformation matrix from the user coordinate system on the 169 * current element (after application of the <code>transform</code> attribute, 170 * if any) to the user coordinate system on parameter <var>element</var> (after 171 * application of its <code>transform</code> attribute, if any). 172 * @param element The target element. 173 * @return An {@link org.vectomatic.dom.svg.OMSVGMatrix} object that defines 174 * the transformation. 175 * @throws SVGException(SVG_MATRIX_NOT_INVERTABLE) Raised if the currently 176 * defined transformation matrices make it impossible to compute the given 177 * matrix (e.g., because one of the transformations is singular). 178 */ 179 public final native OMSVGMatrix getTransformToElement(SVGElement element) throws JavaScriptException /*-{ 180 return this.getTransformToElement(element); 181 }-*/; 182 183 // Implementation of the svg::SVGTests W3C IDL interface 184 /** 185 * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGTests#getRequiredFeatures()} 186 * on the given element. 187 */ 188 public final native OMSVGStringList getRequiredFeatures() /*-{ 189 return @org.vectomatic.dom.svg.OMNode::convertList(Lcom/google/gwt/core/client/JavaScriptObject;)(this.requiredFeatures); 190 }-*/; 191 /** 192 * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGTests#getRequiredExtensions()} 193 * on the given element. 194 */ 195 public final native OMSVGStringList getRequiredExtensions() /*-{ 196 return @org.vectomatic.dom.svg.OMNode::convertList(Lcom/google/gwt/core/client/JavaScriptObject;)(this.requiredExtensions); 197 }-*/; 198 /** 199 * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGTests#getSystemLanguage()} 200 * on the given element. 201 */ 202 public final native OMSVGStringList getSystemLanguage() /*-{ 203 return @org.vectomatic.dom.svg.OMNode::convertList(Lcom/google/gwt/core/client/JavaScriptObject;)(this.systemLanguage); 204 }-*/; 205 /** 206 * Returns true if the user agent supports the given extension, specified 207 * by a URI. 208 * @param extension The name of the extension, expressed as a URI. 209 * @return True or false, depending on whether the given extension is supported. 210 */ 211 public final native boolean hasExtension(String extension) /*-{ 212 return this.hasExtension(extension); 213 }-*/; 214 215 // Implementation of the svg::SVGTransformable W3C IDL interface 216 /** 217 * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGTransformable#getTransform()} 218 * on the given element. 219 */ 220 public final native OMSVGAnimatedTransformList getTransform() /*-{ 221 return this.transform; 222 }-*/; 223 224 // Implementation of the svg::SVGURIReference W3C IDL interface 225 /** 226 * Corresponds to attribute <span class='attr-name'>'xlink:href'</span> on 227 * the given element. 228 */ 229 public final native OMSVGAnimatedString getHref() /*-{ 230 return this.href; 231 }-*/; 232 233 }