java.lang.Object
io.sf.carte.echosvg.anim.timing.TimedElement
- All Implemented Interfaces:
SMILConstants
- Direct Known Subclasses:
SVGAnimationElementBridge.SVGTimedElement
,TimeContainer
An abstract base class for elements that can have timing applied to them. The
concrete versions of this class do not necessarily have to be the same as the
DOM class, and in fact, this will mostly be impossible unless creating new
DOM classes that inherit from these elements.
-
Field Summary
Modifier and TypeFieldDescriptionprotected LinkedList
<TimingSpecifier> List of TimingSpecifiers on other elements that depend on this element's begin times.protected List
<InstanceTime> List of begin InstanceTimes.protected TimingSpecifier[]
Timing specifiers for the begin times of this element.protected Interval
The current Interval.protected int
The current repeat iteration.protected boolean
Whether the simple duration of this element should be equal to the implicit duration.protected LinkedList
<TimingSpecifier> List of TimingSpecifiers on other elements that depend on this element's end times.protected List
<InstanceTime> List of end InstanceTimes.protected TimingSpecifier[]
Timing specifiers for the end times of this element.static final int
static final int
protected int
The fill mode for this element.protected Map
<Event, Set<TimingSpecifier>> protected boolean
Whether this timed element has parsed its timing attributes yet.protected boolean
Whether an instance time update message has already been propagated to this timed element.static final float
protected boolean
Whether the element is currently active.protected boolean
Whether the element is currently frozen.protected boolean
Whether this timed element is currently being sampled.protected float
The end time of the previous interval, initiallyFloat.NEGATIVE_INFINITY
.protected float
The local active time of the last repeat.protected float
The current time of this element in local active time.protected static LocalizableSupport
The localizable support for the error messages.protected float
The maximum active duration of this element.protected boolean
Whether the max value was specified as 'media'.protected float
The minimum active duration of this element.protected boolean
Whether the min value was specified as 'media'.protected TimeContainer
The parent time container.protected Interval
The previous interval.protected float
The number of repeats.protected float
The duration of repeats.protected float
The computed repeat duration of the element.protected static final String
The error messages bundle class name.static final int
static final int
static final int
protected int
The restart mode for this element.protected TimedDocumentRoot
The root time container.protected boolean
Whether the list of instance times should be checked to update the current interval.protected float
Duration of this element, ifdurMedia
= false
.static final float
Fields inherited from interface io.sf.carte.echosvg.util.SMILConstants
SMIL_ACCUMULATE_ATTRIBUTE, SMIL_ADDITIVE_ATTRIBUTE, SMIL_ALWAYS_VALUE, SMIL_ANIMATE_COLOR_TAG, SMIL_ANIMATE_MOTION_TAG, SMIL_ANIMATE_TAG, SMIL_ATTRIBUTE_NAME_ATTRIBUTE, SMIL_ATTRIBUTE_TYPE_ATTRIBUTE, SMIL_AUTO_VALUE, SMIL_BEGIN_ATTRIBUTE, SMIL_BEGIN_DEFAULT_VALUE, SMIL_BEGIN_EVENT_NAME, SMIL_BY_ATTRIBUTE, SMIL_CALC_MODE_ATTRIBUTE, SMIL_CSS_VALUE, SMIL_DEFAULT_VALUE, SMIL_DISCRETE_VALUE, SMIL_DUR_ATTRIBUTE, SMIL_END_ATTRIBUTE, SMIL_END_EVENT_NAME, SMIL_FILL_ATTRIBUTE, SMIL_FREEZE_VALUE, SMIL_FROM_ATTRIBUTE, SMIL_HOLD_VALUE, SMIL_INDEFINITE_VALUE, SMIL_KEY_POINTS_ATTRIBUTE, SMIL_KEY_SPLINES_ATTRIBUTE, SMIL_KEY_TIMES_ATTRIBUTE, SMIL_LINEAR_VALUE, SMIL_MAX_ATTRIBUTE, SMIL_MEDIA_VALUE, SMIL_MIN_ATTRIBUTE, SMIL_NEVER_VALUE, SMIL_NONE_VALUE, SMIL_ORIGIN_ATTRIBUTE, SMIL_PACED_VALUE, SMIL_PATH_ATTRIBUTE, SMIL_REMOVE_VALUE, SMIL_REPEAT_COUNT_ATTRIBUTE, SMIL_REPEAT_DUR_ATTRIBUTE, SMIL_REPEAT_EVENT_ALT_NAME, SMIL_REPEAT_EVENT_NAME, SMIL_REPLACE_VALUE, SMIL_RESTART_ATTRIBUTE, SMIL_SET_TAG, SMIL_SPLINE_VALUE, SMIL_SUM_VALUE, SMIL_TO_ATTRIBUTE, SMIL_VALUES_ATTRIBUTE, SMIL_WHEN_NOT_ACTIVE_VALUE, SMIL_XML_VALUE
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
addDependent
(TimingSpecifier dependent, boolean forBegin) Adds a dependent TimingSpecifier for this element.protected float
addInstanceTime
(InstanceTime time, boolean isBegin) Called by a TimingSpecifier of this element when a new InstanceTime is created.void
Adds a time to the begin time instance list that will cause the element to begin immediately (if restart semantics allow it).void
beginElement
(float offset) Adds a time to the begin time instance list that will cause the element to begin at some offset to the current time (if restart semantics allow it).boolean
canBegin()
Returns whether this element can be begun or restarted currently.boolean
canEnd()
Returns whether this element can be ended currently.protected Interval
computeInterval
(boolean first, boolean fixedBegin, float beginAfter, boolean incl) Computes an interval from the begin and end instance time lists.createException
(String code, Object[] params) Creates and returns a newAnimationException
.void
Deinitializes this timed element.void
Adds a time to the end time instance list that will cause the element to end immediately (if restart semantics allow it).void
endElement
(float offset) Adds a time to the end time instance list that will cause the element to end at some offset to the current time (if restart semantics allow it).protected boolean
Returns whether the end timing specifier list contains any eventbase, accesskey or repeat timing specifiers.protected void
fireTimeEvent
(String eventType, float time, int detail) Fires a TimeEvent of the given type on this element.protected abstract void
fireTimeEvent
(String eventType, Calendar time, int detail) Fires a TimeEvent of the given type on this element.static String
formatMessage
(String key, Object[] args) ImplementsLocalizable.formatMessage(String,Object[])
.float
getActiveDur
(float B, float end) Returns the active duration time of this element.float
Returns the current active time of this element.protected abstract EventTarget
Returns the target of this animation as anEventTarget
.Returns an array of the begin timing specifiers on this timed element.float
Returns the begin time of the current interval, in parent simple time, orFloat.NaN
if the element is not active.abstract Element
Returns the DOM element that corresponds to this timed element, if such a DOM element exists.Returns an array of the end timing specifiers on this timed element.protected abstract EventTarget
Returns the event target with the given ID.float
Returns the time that the document would seek to if this animation element were hyperlinked to, orNaN
if there is no such begin time.protected float
Returns the implicit duration of the element.float
Returns the last sample time of this element, in local active time.static Locale
ImplementsLocalizable.getLocale()
.getRoot()
Returns the root time container of this timed element.protected abstract EventTarget
Returns the event target that should be listened to for access key events.float
Returns the simple duration time of this element.float
Returns the current simple time of this element.protected abstract TimedElement
Returns the timed element with the given ID.void
Initializes this timed element.protected float
instanceTimeChanged
(InstanceTime time, boolean isBegin) Called by a TimingSpecifier of this element when an InstanceTime has been updated.abstract boolean
isBefore
(TimedElement other) Returns whether this timed element comes before the given timed element in document order.protected abstract boolean
Returns whether this timed element is for a constant animation (i.e., a 'set' animation.static boolean
isUnresolved
(float t) Returns whether the given time value is equal to theUNRESOLVED
value.protected float
maxTime
(float t1, float t2) Returns the maximum of two time values.protected float
minTime
(float t1, float t2) Returns the minimum of two time values.protected float
minusTime
(float t1, float t2) Subtracts one simple time from another.protected float
multiplyTime
(float t, float n) Multiplies one simple time by n.protected float
notifyNewInterval
(Interval interval) Notifies dependents of a new interval.protected float
notifyRemoveInterval
(Interval interval) Notifies dependents of a removed interval.void
parseAttributes
(String begin, String dur, String end, String min, String max, String repeatCount, String repeatDur, String fill, String restart) Parses the animation attributes for this timed element.protected void
parseBegin
(String begin) Parses a new 'begin' attribute.protected float
parseClockValue
(String s, boolean parseOffset) Parses a clock value or offset and returns it as a float.protected void
Parses a new 'dur' attribute.protected void
Parses a new 'end' attribute.protected void
Parses a new 'fill' attribute.protected void
Parses a new 'max' attribute.protected void
Parses a new 'min' attribute.protected void
parseRepeatCount
(String repeatCount) Parses a new 'repeatCount' attribute.protected void
parseRepeatDur
(String repeatDur) Parses a new 'repeatDur' attribute.protected void
parseRestart
(String restart) Parses a new 'restart' attribute.protected void
removeDependent
(TimingSpecifier dependent, boolean forBegin) Removes a dependent TimingSpecifier for this element.protected abstract void
Invoked to indicate that this timed element has had its fill removed.protected float
removeInstanceTime
(InstanceTime time, boolean isBegin) Called by a TimingSpecifier of this element when an InstanceTime should be removed.protected void
reset
(boolean clearCurrentBegin) Resets this element.protected float
sampleAt
(float parentSimpleTime, boolean hyperlinking) Calculates the local simple time.protected abstract void
sampledAt
(float simpleTime, float simpleDur, int repeatIteration) Invoked to indicate that this timed element has been sampled at the given time.protected abstract void
sampledLastValue
(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.protected float
selectNewInterval
(float time, Interval interval) Sets the current interval to the one specified.static void
ImplementsLocalizable.setLocale(java.util.Locale)
.protected abstract void
toActive
(float begin) Invoked to indicate this timed element became active at the specified time.protected abstract void
toInactive
(boolean stillActive, boolean isFrozen) Invoked to indicate that this timed element became inactive.static String
toString
(float time) Returns a string representation of the given time value.
-
Field Details
-
FILL_REMOVE
public static final int FILL_REMOVE- See Also:
-
FILL_FREEZE
public static final int FILL_FREEZE- See Also:
-
RESTART_ALWAYS
public static final int RESTART_ALWAYS- See Also:
-
RESTART_WHEN_NOT_ACTIVE
public static final int RESTART_WHEN_NOT_ACTIVE- See Also:
-
RESTART_NEVER
public static final int RESTART_NEVER- See Also:
-
INDEFINITE
public static final float INDEFINITE- See Also:
-
UNRESOLVED
public static final float UNRESOLVED- See Also:
-
root
The root time container. -
parent
The parent time container. -
beginTimes
Timing specifiers for the begin times of this element. -
endTimes
Timing specifiers for the end times of this element. -
simpleDur
protected float simpleDur -
durMedia
protected boolean durMediaWhether the simple duration of this element should be equal to the implicit duration. -
repeatCount
protected float repeatCountThe number of repeats. If unspecified, it will beUNRESOLVED
. -
repeatDur
protected float repeatDurThe duration of repeats. If unspecified, it will beUNRESOLVED
. -
currentRepeatIteration
protected int currentRepeatIterationThe current repeat iteration. -
lastRepeatTime
protected float lastRepeatTimeThe local active time of the last repeat. -
fillMode
protected int fillModeThe fill mode for this element. Uses the FILL_* constants defined in this class. -
restartMode
protected int restartModeThe restart mode for this element. Uses the RESTART_* constants defined in this class. -
min
protected float min -
minMedia
protected boolean minMediaWhether the min value was specified as 'media'. -
max
protected float max -
maxMedia
protected boolean maxMediaWhether the max value was specified as 'media'. -
isActive
protected boolean isActiveWhether the element is currently active. -
isFrozen
protected boolean isFrozenWhether the element is currently frozen. -
lastSampleTime
protected float lastSampleTimeThe current time of this element in local active time. -
repeatDuration
protected float repeatDurationThe computed repeat duration of the element. -
beginInstanceTimes
List of begin InstanceTimes. -
endInstanceTimes
List of end InstanceTimes. -
currentInterval
The current Interval. -
lastIntervalEnd
protected float lastIntervalEndThe end time of the previous interval, initiallyFloat.NEGATIVE_INFINITY
. -
previousInterval
The previous interval. -
beginDependents
List of TimingSpecifiers on other elements that depend on this element's begin times. -
endDependents
List of TimingSpecifiers on other elements that depend on this element's end times. -
shouldUpdateCurrentInterval
protected boolean shouldUpdateCurrentIntervalWhether the list of instance times should be checked to update the current interval. -
hasParsed
protected boolean hasParsedWhether this timed element has parsed its timing attributes yet. -
handledEvents
-
isSampling
protected boolean isSamplingWhether this timed element is currently being sampled. -
hasPropagated
protected boolean hasPropagatedWhether an instance time update message has already been propagated to this timed element. -
RESOURCES
The error messages bundle class name.- See Also:
-
localizableSupport
The localizable support for the error messages.
-
-
Constructor Details
-
TimedElement
public TimedElement()Creates a new TimedElement.
-
-
Method Details
-
getRoot
Returns the root time container of this timed element. -
getActiveTime
public float getActiveTime()Returns the current active time of this element. -
getSimpleTime
public float getSimpleTime()Returns the current simple time of this element. -
addInstanceTime
Called by a TimingSpecifier of this element when a new InstanceTime is created. This will be in response to an event firing, a DOM method being called or a new Instance being created by a syncbase element. -
removeInstanceTime
Called by a TimingSpecifier of this element when an InstanceTime should be removed. This will be in response to the pruning of an Interval. -
instanceTimeChanged
Called by a TimingSpecifier of this element when an InstanceTime has been updated. This will be in response to a dependent syncbase change. -
addDependent
Adds a dependent TimingSpecifier for this element. -
removeDependent
Removes a dependent TimingSpecifier for this element. -
getSimpleDur
public float getSimpleDur()Returns the simple duration time of this element. -
isUnresolved
public static boolean isUnresolved(float t) Returns whether the given time value is equal to theUNRESOLVED
value. -
getActiveDur
public float getActiveDur(float B, float end) Returns the active duration time of this element. -
minusTime
protected float minusTime(float t1, float t2) Subtracts one simple time from another. -
multiplyTime
protected float multiplyTime(float t, float n) Multiplies one simple time by n. -
minTime
protected float minTime(float t1, float t2) Returns the minimum of two time values. -
maxTime
protected float maxTime(float t1, float t2) Returns the maximum of two time values. -
getImplicitDur
protected float getImplicitDur()Returns the implicit duration of the element. Currently, nested time containers are not supported by SVG so this just returnsUNRESOLVED
by default. This should be overriden in derived classes that play media, since they will have an implicit duration. -
notifyNewInterval
Notifies dependents of a new interval. -
notifyRemoveInterval
Notifies dependents of a removed interval. -
sampleAt
protected float sampleAt(float parentSimpleTime, boolean hyperlinking) Calculates the local simple time. Currently the hyperlinking parameter is ignored, so DOM timing events are fired during hyperlinking seeks. If we were following SMIL 2.1 rather than SMIL Animation, then these events would have to be suppressed.- Returns:
- the number of seconds until this element becomes active again if it
currently is not,
Float.POSITIVE_INFINITY
if this element will become active at some undetermined point in the future (because of unresolved begin times, for example) or will never become active again, or0f
if the element is currently active.
-
endHasEventConditions
protected boolean endHasEventConditions()Returns whether the end timing specifier list contains any eventbase, accesskey or repeat timing specifiers. -
selectNewInterval
Sets the current interval to the one specified. This will notify dependents and fire the 'begin' and any necessary 'repeat' events.- Parameters:
time
- the current sampling timeinterval
- the Interval object to select to be current- Returns:
- the minimum time the animation engine can safely wait, as determined by dependents of the interval
-
computeInterval
protected Interval computeInterval(boolean first, boolean fixedBegin, float beginAfter, boolean incl) Computes an interval from the begin and end instance time lists.- Parameters:
first
- indicates whether this is the first interval to computefixedBegin
- if true, specifies that the value given forbeginAfter
is taken to be the actual begin time for the interval; only the end value is computed.beginAfter
- the earliest possible begin time for the computed interval.incl
- if true (and!fixedBegin
), specifies that the new interval's begin time must be greater thanbeginAfter
; otherwise, the begin time must be greater than or equal tobeginAfter
.
-
reset
protected void reset(boolean clearCurrentBegin) Resets this element. -
parseAttributes
public void parseAttributes(String begin, String dur, String end, String min, String max, String repeatCount, String repeatDur, String fill, String restart) Parses the animation attributes for this timed element. -
parseBegin
Parses a new 'begin' attribute. -
parseDur
Parses a new 'dur' attribute. -
parseClockValue
Parses a clock value or offset and returns it as a float.- Throws:
ParseException
-
parseEnd
Parses a new 'end' attribute. -
parseMin
Parses a new 'min' attribute. -
parseMax
Parses a new 'max' attribute. -
parseRepeatCount
Parses a new 'repeatCount' attribute. -
parseRepeatDur
Parses a new 'repeatDur' attribute. -
parseFill
Parses a new 'fill' attribute. -
parseRestart
Parses a new 'restart' attribute. -
initialize
public void initialize()Initializes this timed element. -
deinitialize
public void deinitialize()Deinitializes this timed element. -
beginElement
public void beginElement()Adds a time to the begin time instance list that will cause the element to begin immediately (if restart semantics allow it). -
beginElement
public void beginElement(float offset) Adds a time to the begin time instance list that will cause the element to begin at some offset to the current time (if restart semantics allow it). -
endElement
public void endElement()Adds a time to the end time instance list that will cause the element to end immediately (if restart semantics allow it). -
endElement
public void endElement(float offset) Adds a time to the end time instance list that will cause the element to end at some offset to the current time (if restart semantics allow it). -
getLastSampleTime
public float getLastSampleTime()Returns the last sample time of this element, in local active time. -
getCurrentBeginTime
public float getCurrentBeginTime()Returns the begin time of the current interval, in parent simple time, orFloat.NaN
if the element is not active. -
canBegin
public boolean canBegin()Returns whether this element can be begun or restarted currently. -
canEnd
public boolean canEnd()Returns whether this element can be ended currently. -
getHyperlinkBeginTime
public float getHyperlinkBeginTime()Returns the time that the document would seek to if this animation element were hyperlinked to, orNaN
if there is no such begin time. -
getBeginTimingSpecifiers
Returns an array of the begin timing specifiers on this timed element. XXX Note that this is an experimental public API and is subject to change, when somebody gets around to thinking of a better model for exposing animation information from the document. -
getEndTimingSpecifiers
Returns an array of the end timing specifiers on this timed element. XXX Note that this is an experimental public API and is subject to change, when somebody gets around to thinking of a better model for exposing animation information from the document. -
fireTimeEvent
Fires a TimeEvent of the given type on this element.- Parameters:
eventType
- the type of TimeEvent ("beginEvent", "endEvent" or "repeatEvent").time
- the timestamp of the event objectdetail
- the repeat iteration, if this event is a repeat event
-
fireTimeEvent
Fires a TimeEvent of the given type on this element.- Parameters:
eventType
- the type of TimeEvent ("beginEvent", "endEvent" or "repeatEvent").time
- the timestamp of the event object
-
toActive
protected abstract void toActive(float begin) Invoked to indicate this timed element became active at the specified time.- Parameters:
begin
- the time the element became active, in document simple time
-
toInactive
protected abstract void toInactive(boolean stillActive, boolean isFrozen) Invoked to indicate that this timed element became inactive.- Parameters:
stillActive
- if true, indicates that the element is still actually active, but between the end of the computed repeat duration and the end of the intervalisFrozen
- whether the element is frozen or not
-
removeFill
protected abstract void removeFill()Invoked to indicate that this timed element has had its fill removed. -
sampledAt
protected abstract void sampledAt(float simpleTime, float simpleDur, int repeatIteration) Invoked to indicate that this timed element has been sampled at the given time.- Parameters:
simpleTime
- the sample time in local simple timesimpleDur
- the simple duration of the elementrepeatIteration
- the repeat iteration during which the element was sampled
-
sampledLastValue
protected abstract void sampledLastValue(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. -
getTimedElementById
Returns the timed element with the given ID. -
getEventTargetById
Returns the event target with the given ID. -
getRootEventTarget
Returns the event target that should be listened to for access key events. -
getElement
Returns the DOM element that corresponds to this timed element, if such a DOM element exists. -
getAnimationEventTarget
Returns the target of this animation as anEventTarget
. Used for eventbase timing specifiers where the element ID is omitted. -
isBefore
Returns whether this timed element comes before the given timed element in document order. -
isConstantAnimation
protected abstract boolean isConstantAnimation()Returns whether this timed element is for a constant animation (i.e., a 'set' animation. -
createException
Creates and returns a newAnimationException
. -
setLocale
ImplementsLocalizable.setLocale(java.util.Locale)
. -
getLocale
ImplementsLocalizable.getLocale()
. -
formatMessage
ImplementsLocalizable.formatMessage(String,Object[])
.- Throws:
MissingResourceException
-
toString
Returns a string representation of the given time value.
-