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.OMSVGStringList; 34 35 import com.google.gwt.core.client.JavaScriptException; 36 37 /** 38 * <p>The {@link org.vectomatic.dom.svg.impl.SVGAnimationElement} interface 39 * is the base interface for all of the animation element interfaces: {@link 40 * org.vectomatic.dom.svg.impl.SVGAnimateElement}, {@link org.vectomatic.dom.svg.impl.SVGSetElement}, 41 * {@link org.vectomatic.dom.svg.impl.SVGAnimateColorElement}, {@link org.vectomatic.dom.svg.impl.SVGAnimateMotionElement} 42 * and {@link org.vectomatic.dom.svg.impl.SVGAnimateTransformElement}.</p> 43 * <p>Unlike other SVG DOM interfaces, the SVG DOM does not specify convenience 44 * DOM properties corresponding to the various language attributes on SVG's 45 * animation elements. Specification of these convenience properties in a 46 * way that will be compatible with future versions of SMIL Animation is expected 47 * in a future version of SVG. The current method for accessing and modifying 48 * the attributes on the animation elements is to use the standard <code>getAttribute</code>, 49 * <code>setAttribute</code>, <code>getAttributeNS</code> and <code>setAttributeNS</code> 50 * defined in <a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/">DOM 51 * Level 2 Core</a> [<a href="refs.html#ref-DOM2">DOM2</a>].</p> 52 */ 53 public class SVGAnimationElement extends SVGElement { 54 protected SVGAnimationElement() { 55 } 56 57 // Implementation of the svg::SVGAnimationElement W3C IDL interface 58 /** 59 * The element which is being animated. 60 */ 61 public final native SVGElement getTargetElement() /*-{ 62 return this.targetElement; 63 }-*/; 64 /** 65 * Returns the begin time, in seconds, for this animation element's current 66 * interval, if it exists, regardless of whether the interval has begun yet. 67 * If there is no current interval, then a DOMException with code INVALID_STATE_ERR 68 * is thrown. 69 * @return The start time, in seconds, of this animation element's current 70 * interval. 71 * @throws DOMException(INVALID_STATE_ERR) The animation element does not 72 * have a current interval. 73 */ 74 public final native float getStartTime() throws JavaScriptException /*-{ 75 return this.getStartTime(); 76 }-*/; 77 /** 78 * Returns the current time in seconds relative to time zero for the given 79 * time container. 80 * @return The current time in seconds relative to time zero for the given 81 * time container. 82 */ 83 public final native float getCurrentTime() /*-{ 84 return this.getCurrentTime(); 85 }-*/; 86 /** 87 * Returns the number of seconds for the simple duration for this animation. 88 * If the simple duration is undefined (e.g., the end time is indefinite), 89 * then an exception is raised. 90 * @return number of seconds for the simple duration for this animation. 91 * @throws DOMException(NOT_SUPPORTED_ERR) The simple duration is not determined 92 * on the given element. 93 */ 94 public final native float getSimpleDuration() throws JavaScriptException /*-{ 95 return this.getSimpleDuration(); 96 }-*/; 97 98 // Implementation of the smil::ElementTimeControl W3C IDL interface 99 /** 100 * Creates a begin instance time for the current time. The new instance time 101 * is added to the <a href="http://www.w3.org/TR/2001/REC-smil-animation-20010904/#Timing-BeginEnd-InstanceTimesLists"><em>begin 102 * instance times list</em></a>. The behavior of this method is equivalent 103 * to <code>beginElementAt(0)</code>. 104 */ 105 public final native void beginElement() /*-{ 106 this.beginElement(); 107 }-*/; 108 /** 109 * Creates a begin instance time for the current time plus the specified offset. 110 * The new instance time is added to the <a href="http://www.w3.org/TR/2001/REC-smil-animation-20010904/#Timing-BeginEnd-InstanceTimesLists"><em>begin 111 * instance times list</em></a>. 112 * @param offset The offset from the current document time, in seconds, at 113 * which to begin the element. 114 */ 115 public final native void beginElementAt(float offset) /*-{ 116 this.beginElementAt(offset); 117 }-*/; 118 /** 119 * Creates an end instance time for the current time. The new instance time 120 * is added to the <a href="http://www.w3.org/TR/2001/REC-smil-animation-20010904/#Timing-BeginEnd-InstanceTimesLists"><em>end 121 * instance times list</em></a>. The behavior of this method is equivalent 122 * to <code>endElementAt(0)</code>. 123 */ 124 public final native void endElement() /*-{ 125 this.endElement(); 126 }-*/; 127 /** 128 * Creates a end instance time for the current time plus the specified offset. 129 * The new instance time is added to the <a href="http://www.w3.org/TR/2001/REC-smil-animation-20010904/#Timing-BeginEnd-InstanceTimesLists"><em>end 130 * instance times list</em></a>. 131 * @param offset offset from the current document time, in seconds, at which 132 * to end the element. 133 */ 134 public final native void endElementAt(float offset) /*-{ 135 this.endElementAt(offset); 136 }-*/; 137 138 // Implementation of the svg::SVGExternalResourcesRequired W3C IDL interface 139 /** 140 * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGExternalResourcesRequired#getExternalResourcesRequired()} 141 * on the given element. Note that the SVG DOM defines the attribute {@link 142 * org.vectomatic.dom.svg.itf.ISVGExternalResourcesRequired#getExternalResourcesRequired()} 143 * as being of type {@link org.vectomatic.dom.svg.OMSVGAnimatedBoolean}, whereas 144 * the SVG language definition says that {@link org.vectomatic.dom.svg.itf.ISVGExternalResourcesRequired#getExternalResourcesRequired()} 145 * is not animated. Because the SVG language definition states that {@link 146 * org.vectomatic.dom.svg.itf.ISVGExternalResourcesRequired#getExternalResourcesRequired()} 147 * cannot be animated, the {@link org.vectomatic.dom.svg.OMSVGAnimatedBoolean#getAnimVal()} 148 * will always be the same as the {@link org.vectomatic.dom.svg.OMSVGAnimatedBoolean#getBaseVal()}. 149 */ 150 public final native OMSVGAnimatedBoolean getExternalResourcesRequired() /*-{ 151 return this.externalResourcesRequired; 152 }-*/; 153 154 // Implementation of the svg::SVGTests W3C IDL interface 155 /** 156 * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGTests#getRequiredFeatures()} 157 * on the given element. 158 */ 159 public final native OMSVGStringList getRequiredFeatures() /*-{ 160 return @org.vectomatic.dom.svg.OMNode::convertList(Lcom/google/gwt/core/client/JavaScriptObject;)(this.requiredFeatures); 161 }-*/; 162 /** 163 * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGTests#getRequiredExtensions()} 164 * on the given element. 165 */ 166 public final native OMSVGStringList getRequiredExtensions() /*-{ 167 return @org.vectomatic.dom.svg.OMNode::convertList(Lcom/google/gwt/core/client/JavaScriptObject;)(this.requiredExtensions); 168 }-*/; 169 /** 170 * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGTests#getSystemLanguage()} 171 * on the given element. 172 */ 173 public final native OMSVGStringList getSystemLanguage() /*-{ 174 return @org.vectomatic.dom.svg.OMNode::convertList(Lcom/google/gwt/core/client/JavaScriptObject;)(this.systemLanguage); 175 }-*/; 176 /** 177 * Returns true if the user agent supports the given extension, specified 178 * by a URI. 179 * @param extension The name of the extension, expressed as a URI. 180 * @return True or false, depending on whether the given extension is supported. 181 */ 182 public final native boolean hasExtension(String extension) /*-{ 183 return this.hasExtension(extension); 184 }-*/; 185 186 }