Package org.apache.batik.anim
Class AnimationEngine
- java.lang.Object
-
- org.apache.batik.anim.AnimationEngine
-
- Direct Known Subclasses:
SVGAnimationEngine
public abstract class AnimationEngine extends java.lang.Object
An abstract base class for managing animation in a document.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
AnimationEngine.AnimationInfo
Class to hold target information of an animation.protected class
AnimationEngine.Listener
Listener class for changes to base values on a target element.protected static class
AnimationEngine.Sandwich
Class to hold an animation sandwich for a particular attribute.protected static class
AnimationEngine.TargetInfo
Class to hold XML and CSS animations for a target element.
-
Field Summary
Fields Modifier and Type Field Description static short
ANIM_TYPE_CSS
static short
ANIM_TYPE_OTHER
static short
ANIM_TYPE_XML
protected java.util.HashMap
animations
Map of AbstractAnimations to AnimationInfo objects.protected org.w3c.dom.Document
document
The document this AnimationEngine is managing animation for.protected static java.util.Map.Entry[]
MAP_ENTRY_ARRAY
protected long
pauseTime
The time at which the document was paused, or 0 if the document is not paused.protected AnimationEngine.Listener
targetListener
The listener object for animation target base value changes.protected java.util.HashMap
targets
Map of AnimationTargets to TargetInfo objects.protected TimedDocumentRoot
timedDocumentRoot
The root time container for the document.
-
Constructor Summary
Constructors Constructor Description AnimationEngine(org.w3c.dom.Document doc)
Creates a new AnimationEngine for the given document.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
addAnimation(AnimationTarget target, short type, java.lang.String ns, java.lang.String an, AbstractAnimation anim)
Adds an animation to the document.void
addTimegraphListener(TimegraphListener l)
Adds aTimegraphListener
to the document.protected abstract TimedDocumentRoot
createDocumentRoot()
Creates a new returns a new TimedDocumentRoot object for the document.void
dispose()
Disposes this animation engine.protected AnimationEngine.AnimationInfo
getAnimationInfo(AbstractAnimation anim)
Returns the AnimationInfo for the given AbstractAnimation.float
getCurrentTime()
Returns the current document time.protected AnimationEngine.Sandwich
getSandwich(AnimationTarget target, short type, java.lang.String ns, java.lang.String an)
Returns the Sandwich for the given animation type/attribute.protected AnimationEngine.TargetInfo
getTargetInfo(AnimationTarget target)
Returns the TargetInfo for the given AnimationTarget.boolean
isPaused()
Returns whether animations are currently paused.protected void
moveToBottom(AbstractAnimation anim)
Moves the given animation to the bottom of the sandwich.protected void
moveToTop(AbstractAnimation anim)
Moves the given animation to the top of the sandwich.void
pause()
Pauses the animations.protected void
pushDown(AbstractAnimation anim)
Moves the animation down the sandwich such that it is in the right position according to begin time and document order.void
removeAnimation(AbstractAnimation anim)
Removes an animation from the document.void
removeFill(AbstractAnimation anim)
Invoked to indicate that this timed element has had its fill removed.void
removeTimegraphListener(TimegraphListener l)
Removes aTimegraphListener
from the document.void
sampledAt(AbstractAnimation anim, float simpleTime, float simpleDur, int repeatIteration)
Invoked to indicate that this timed element has been sampled at the given time.void
sampledLastValue(AbstractAnimation anim, int repeatIteration)
Invoked to indicate that this timed element has been sampled at the end of its active time, at an integer multiple of the simple duration.float
setCurrentTime(float t)
Sets the current document time.protected float
tick(float time, boolean hyperlinking)
Updates the animations in the document to the given document time.void
toActive(AbstractAnimation anim, float begin)
Invoked to indicate an animation became active at the specified time.void
toInactive(AbstractAnimation anim, boolean isFrozen)
Invoked to indicate that this timed element became inactive.void
unpause()
Unpauses the animations.
-
-
-
Field Detail
-
ANIM_TYPE_XML
public static final short ANIM_TYPE_XML
- See Also:
- Constant Field Values
-
ANIM_TYPE_CSS
public static final short ANIM_TYPE_CSS
- See Also:
- Constant Field Values
-
ANIM_TYPE_OTHER
public static final short ANIM_TYPE_OTHER
- See Also:
- Constant Field Values
-
document
protected org.w3c.dom.Document document
The document this AnimationEngine is managing animation for.
-
timedDocumentRoot
protected TimedDocumentRoot timedDocumentRoot
The root time container for the document.
-
pauseTime
protected long pauseTime
The time at which the document was paused, or 0 if the document is not paused.
-
targets
protected java.util.HashMap targets
Map of AnimationTargets to TargetInfo objects.
-
animations
protected java.util.HashMap animations
Map of AbstractAnimations to AnimationInfo objects.
-
targetListener
protected AnimationEngine.Listener targetListener
The listener object for animation target base value changes.
-
MAP_ENTRY_ARRAY
protected static final java.util.Map.Entry[] MAP_ENTRY_ARRAY
-
-
Method Detail
-
dispose
public void dispose()
Disposes this animation engine.
-
pause
public void pause()
Pauses the animations.
-
unpause
public void unpause()
Unpauses the animations.
-
isPaused
public boolean isPaused()
Returns whether animations are currently paused.
-
getCurrentTime
public float getCurrentTime()
Returns the current document time.
-
setCurrentTime
public float setCurrentTime(float t)
Sets the current document time.
-
addAnimation
public void addAnimation(AnimationTarget target, short type, java.lang.String ns, java.lang.String an, AbstractAnimation anim)
Adds an animation to the document.- Parameters:
target
- the target element of the animationtype
- the type of animation (must be one of theANIM_TYPE_*
constants defined in this classns
- the namespace URI of the attribute being animated, iftype ==
ANIM_TYPE_XML
an
- the attribute name iftype ==
ANIM_TYPE_XML
, the property name iftype ==
ANIM_TYPE_CSS
, and the animation type otherwiseanim
- the animation
-
removeAnimation
public void removeAnimation(AbstractAnimation anim)
Removes an animation from the document.
-
getSandwich
protected AnimationEngine.Sandwich getSandwich(AnimationTarget target, short type, java.lang.String ns, java.lang.String an)
Returns the Sandwich for the given animation type/attribute.
-
getTargetInfo
protected AnimationEngine.TargetInfo getTargetInfo(AnimationTarget target)
Returns the TargetInfo for the given AnimationTarget.
-
getAnimationInfo
protected AnimationEngine.AnimationInfo getAnimationInfo(AbstractAnimation anim)
Returns the AnimationInfo for the given AbstractAnimation.
-
tick
protected float tick(float time, boolean hyperlinking)
Updates the animations in the document to the given document time.- Parameters:
time
- the document time to sample athyperlinking
- whether the document should be seeked to the given time, as with hyperlinking
-
toActive
public void toActive(AbstractAnimation anim, float begin)
Invoked to indicate an animation became active at the specified time.- Parameters:
anim
- the animationbegin
- the time the element became active, in document simple time
-
pushDown
protected void pushDown(AbstractAnimation anim)
Moves the animation down the sandwich such that it is in the right position according to begin time and document order.
-
toInactive
public void toInactive(AbstractAnimation anim, boolean isFrozen)
Invoked to indicate that this timed element became inactive.- Parameters:
anim
- the animationisFrozen
- whether the element is frozen or not
-
removeFill
public void removeFill(AbstractAnimation anim)
Invoked to indicate that this timed element has had its fill removed.
-
moveToTop
protected void moveToTop(AbstractAnimation anim)
Moves the given animation to the top of the sandwich.
-
moveToBottom
protected void moveToBottom(AbstractAnimation anim)
Moves the given animation to the bottom of the sandwich.
-
addTimegraphListener
public void addTimegraphListener(TimegraphListener l)
Adds aTimegraphListener
to the document.
-
removeTimegraphListener
public void removeTimegraphListener(TimegraphListener l)
Removes aTimegraphListener
from the document.
-
sampledAt
public void sampledAt(AbstractAnimation anim, float simpleTime, float simpleDur, int repeatIteration)
Invoked to indicate that this timed element has been sampled at the given time.- Parameters:
anim
- the animationsimpleTime
- the sample time in local simple timesimpleDur
- the simple duration of the elementrepeatIteration
- the repeat iteration during which the element was sampled
-
sampledLastValue
public void sampledLastValue(AbstractAnimation anim, int repeatIteration)
Invoked to indicate that this timed element has been sampled at the end of its active time, at an integer multiple of the simple duration. This is the "last" value that will be used for filling, which cannot be sampled normally.
-
createDocumentRoot
protected abstract TimedDocumentRoot createDocumentRoot()
Creates a new returns a new TimedDocumentRoot object for the document.
-
-