You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-commits@xmlgraphics.apache.org by ca...@apache.org on 2007/09/28 15:13:46 UTC

svn commit: r580338 - /xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/

Author: cam
Date: Fri Sep 28 06:13:46 2007
New Revision: 580338

URL: http://svn.apache.org/viewvc?rev=580338&view=rev
Log:
Don't store a whole list of previous Intervals for each timed element,
just the most recent one.  (Only the list of begin/end instance times
is required for hyperlinking backwards.)

Modified:
    xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/AccesskeyTimingSpecifier.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/EventbaseTimingSpecifier.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/IndefiniteTimingSpecifier.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/InstanceTime.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/OffsetTimingSpecifier.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/SyncbaseTimingSpecifier.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/TimedElement.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/WallclockTimingSpecifier.java

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/AccesskeyTimingSpecifier.java
URL: http://svn.apache.org/viewvc/xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/AccesskeyTimingSpecifier.java?rev=580338&r1=580337&r2=580338&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/AccesskeyTimingSpecifier.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/AccesskeyTimingSpecifier.java Fri Sep 28 06:13:46 2007
@@ -143,8 +143,7 @@
      */
     public void resolve(Event e) {
         float time = owner.getRoot().convertEpochTime(e.getTimeStamp());
-        InstanceTime instance = new InstanceTime(this, time + offset, null,
-                                                 true);
+        InstanceTime instance = new InstanceTime(this, time + offset, true);
         owner.addInstanceTime(instance, isBegin);
     }
 }

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/EventbaseTimingSpecifier.java
URL: http://svn.apache.org/viewvc/xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/EventbaseTimingSpecifier.java?rev=580338&r1=580337&r2=580338&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/EventbaseTimingSpecifier.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/EventbaseTimingSpecifier.java Fri Sep 28 06:13:46 2007
@@ -122,8 +122,7 @@
      */
     public void resolve(Event e) {
         float time = owner.getRoot().convertEpochTime(e.getTimeStamp());
-        InstanceTime instance = new InstanceTime(this, time + offset, null,
-                                                 true);
+        InstanceTime instance = new InstanceTime(this, time + offset, true);
         owner.addInstanceTime(instance, isBegin);
     }
 }

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/IndefiniteTimingSpecifier.java
URL: http://svn.apache.org/viewvc/xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/IndefiniteTimingSpecifier.java?rev=580338&r1=580337&r2=580338&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/IndefiniteTimingSpecifier.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/IndefiniteTimingSpecifier.java Fri Sep 28 06:13:46 2007
@@ -49,7 +49,7 @@
             // Only end instance lists get an 'indefinite' instance time from
             // an indefinite timing specifier.
             InstanceTime instance =
-                new InstanceTime(this, TimedElement.INDEFINITE, null, false);
+                new InstanceTime(this, TimedElement.INDEFINITE, false);
             owner.addInstanceTime(instance, isBegin);
         }
     }

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/InstanceTime.java
URL: http://svn.apache.org/viewvc/xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/InstanceTime.java?rev=580338&r1=580337&r2=580338&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/InstanceTime.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/InstanceTime.java Fri Sep 28 06:13:46 2007
@@ -44,22 +44,14 @@
     protected boolean clearOnReset;
 
     /**
-     * The Interval on which this InstanceTime is dependent, or null
-     * if the InstanceTime was not created from a syncbase value.
-     */
-    protected Interval timebase;
-
-    /**
      * Creates a new InstanceTime.
      * @param creator the TimingSpecifier that created this InstanceTime
      * @param time the new time, in parent simple time
-     * @param timebase the interval from which this InstanceTime was created
      * @param clearOnReset whether this InstanceTime should be removed from
      *                     an instance time list upon element reset
      */
     public InstanceTime(TimingSpecifier creator,
                         float time,
-                        Interval timebase,
                         boolean clearOnReset) {
         // Trace.enter(this, null, new Object[] { creator, new Float(time), timebase, new Boolean(clearOnReset) } ); try {
         this.creator = creator;
@@ -67,7 +59,6 @@
         //     time system into this time system.  Not
         //     strictly necessary in SVG.
         this.time = time;
-        this.timebase = timebase;
         this.clearOnReset = clearOnReset;
         // } finally { Trace.exit(); }
     }

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/OffsetTimingSpecifier.java
URL: http://svn.apache.org/viewvc/xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/OffsetTimingSpecifier.java?rev=580338&r1=580337&r2=580338&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/OffsetTimingSpecifier.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/OffsetTimingSpecifier.java Fri Sep 28 06:13:46 2007
@@ -52,7 +52,7 @@
      * to the owner's instance time list or setting up any event listeners.
      */
     public void initialize() {
-        InstanceTime instance = new InstanceTime(this, offset, null, false);
+        InstanceTime instance = new InstanceTime(this, offset, false);
         owner.addInstanceTime(instance, isBegin);
     }
 

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/SyncbaseTimingSpecifier.java
URL: http://svn.apache.org/viewvc/xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/SyncbaseTimingSpecifier.java?rev=580338&r1=580337&r2=580338&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/SyncbaseTimingSpecifier.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/SyncbaseTimingSpecifier.java Fri Sep 28 06:13:46 2007
@@ -100,7 +100,7 @@
         InstanceTime instance =
             new InstanceTime(this, (syncBegin ? interval.getBegin()
                                               : interval.getEnd()) + offset,
-                             interval, true);
+                             true);
         instances.put(interval, instance);
         interval.addDependent(instance, syncBegin);
         return owner.addInstanceTime(instance, isBegin);

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/TimedElement.java
URL: http://svn.apache.org/viewvc/xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/TimedElement.java?rev=580338&r1=580337&r2=580338&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/TimedElement.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/TimedElement.java Fri Sep 28 06:13:46 2007
@@ -187,7 +187,12 @@
     /**
      * List of previous intervals.
      */
-    protected LinkedList previousIntervals = new LinkedList();
+    // protected LinkedList previousIntervals = new LinkedList();
+
+    /**
+     * The previous interval.
+     */
+    protected Interval previousInterval;
 
     /**
      * List of TimingSpecifiers on other elements that depend on this
@@ -686,21 +691,24 @@
         }
         while (shouldUpdateCurrentInterval || hasEnded) {
             if (hasEnded) {
-                previousIntervals.add(currentInterval);
+                // previousIntervals.add(currentInterval);
+                previousInterval = currentInterval;
                 isActive = false;
                 isFrozen = fillMode == FILL_FREEZE;
                 toInactive(false, isFrozen);
                 fireTimeEvent(SMIL_END_EVENT_NAME, currentInterval.getEnd(), 0);
             }
             boolean first =
-                currentInterval == null && previousIntervals.isEmpty();
+                // currentInterval == null && previousIntervals.isEmpty();
+                currentInterval == null && previousInterval == null;
             if (currentInterval == null || hasEnded) {
                 if (first || hyperlinking || restartMode != RESTART_NEVER) {
                     float beginAfter;
                     if (first || hyperlinking) {
                         beginAfter = Float.NEGATIVE_INFINITY;
                     } else {
-                        beginAfter = ((Interval) previousIntervals.getLast()).getEnd();
+                        // beginAfter = ((Interval) previousIntervals.getLast()).getEnd();
+                        beginAfter = previousInterval.getEnd();
                     }
                     Interval interval =
                         computeInterval(first, false, beginAfter);
@@ -720,10 +728,12 @@
                 if (currentBegin > time) {
                     // Interval hasn't started yet.
                     float beginAfter;
-                    if (previousIntervals.isEmpty()) {
+                    // if (previousIntervals.isEmpty()) {
+                    if (previousInterval == null) {
                         beginAfter = Float.NEGATIVE_INFINITY;
                     } else {
-                        beginAfter = ((Interval) previousIntervals.getLast()).getEnd();
+                        // beginAfter = ((Interval) previousIntervals.getLast()).getEnd();
+                        beginAfter = previousInterval.getEnd();
                     }
                     Interval interval = computeInterval(false, false, beginAfter);
                     float dmt = notifyRemoveInterval(currentInterval);
@@ -776,7 +786,7 @@
                 t = currentInterval.getBegin() + repeatDuration - lastRepeatTime;
                 atLast = lastRepeatTime + d == currentInterval.getBegin() + repeatDuration;
             } else {
-                Interval previousInterval = (Interval) previousIntervals.getLast();
+                // Interval previousInterval = (Interval) previousIntervals.getLast();
                 t = previousInterval.getEnd() - lastRepeatTime;
                 atLast = lastRepeatTime + d == previousInterval.getEnd();
             }
@@ -1284,7 +1294,7 @@
      */
     public void beginElement(float offset) {
         float t = root.convertWallclockTime( Calendar.getInstance());
-        InstanceTime it = new InstanceTime(null, t + offset, null, true);
+        InstanceTime it = new InstanceTime(null, t + offset, true);
         addInstanceTime(it, true);
     }
 
@@ -1303,7 +1313,7 @@
      */
     public void endElement(float offset) {
         float t = root.convertWallclockTime(Calendar.getInstance());
-        InstanceTime it = new InstanceTime(null, t + offset, null, true);
+        InstanceTime it = new InstanceTime(null, t + offset, true);
         addInstanceTime(it, false);
     }
 

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/WallclockTimingSpecifier.java
URL: http://svn.apache.org/viewvc/xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/WallclockTimingSpecifier.java?rev=580338&r1=580337&r2=580338&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/WallclockTimingSpecifier.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/anim/timing/WallclockTimingSpecifier.java Fri Sep 28 06:13:46 2007
@@ -60,7 +60,7 @@
      */
     public void initialize() {
         float t = owner.getRoot().convertWallclockTime(time);
-        instance = new InstanceTime(this, t, null, false);
+        instance = new InstanceTime(this, t, false);
         owner.addInstanceTime(instance, isBegin);
     }