org.apache.batik.anim
Class AnimationEngine

java.lang.Object
  extended by org.apache.batik.anim.AnimationEngine
Direct Known Subclasses:
SVGAnimationEngine

public abstract class AnimationEngine
extends Object

An abstract base class for managing animation in a document.


Nested Class Summary
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
static short ANIM_TYPE_CSS
           
static short ANIM_TYPE_OTHER
           
static short ANIM_TYPE_XML
           
protected  HashMap animations
          Map of AbstractAnimations to AnimationInfo objects.
protected  Document document
          The document this AnimationEngine is managing animation for.
protected static 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  HashMap targets
          Map of AnimationTargets to TargetInfo objects.
protected  TimedDocumentRoot timedDocumentRoot
          The root time container for the document.
 
Constructor Summary
AnimationEngine(Document doc)
          Creates a new AnimationEngine for the given document.
 
Method Summary
 void addAnimation(AnimationTarget target, short type, String ns, String an, AbstractAnimation anim)
          Adds an animation to the document.
 void addTimegraphListener(TimegraphListener l)
          Adds a TimegraphListener 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, String ns, 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 a TimegraphListener 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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 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 HashMap targets
Map of AnimationTargets to TargetInfo objects.


animations

protected 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 Map.Entry[] MAP_ENTRY_ARRAY
Constructor Detail

AnimationEngine

public AnimationEngine(Document doc)
Creates a new AnimationEngine for the given document.

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,
                         String ns,
                         String an,
                         AbstractAnimation anim)
Adds an animation to the document.

Parameters:
target - the target element of the animation
type - the type of animation (must be one of the ANIM_TYPE_* constants defined in this class
ns - the namespace URI of the attribute being animated, if type == ANIM_TYPE_XML
an - the attribute name if type == ANIM_TYPE_XML, the property name if type == ANIM_TYPE_CSS, and the animation type otherwise
anim - the animation

removeAnimation

public void removeAnimation(AbstractAnimation anim)
Removes an animation from the document.


getSandwich

protected AnimationEngine.Sandwich getSandwich(AnimationTarget target,
                                               short type,
                                               String ns,
                                               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 at
hyperlinking - 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 animation
begin - 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 animation
isFrozen - 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 a TimegraphListener to the document.


removeTimegraphListener

public void removeTimegraphListener(TimegraphListener l)
Removes a TimegraphListener 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 animation
simpleTime - the sample time in local simple time
simpleDur - the simple duration of the element
repeatIteration - 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.



Copyright © 2008 Apache Software Foundation. All Rights Reserved.