Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/arranger/jarl/filter/BaseSegmentFilter.java


1   package com.arranger.jarl.filter;
2   
3   import com.arranger.jarl.base.IContext;
4   import com.arranger.jarl.base.Time;
5   import com.arranger.jarl.util.IWidgetConfigSegmentFactory;
6   import com.arranger.jarl.util.InterpolateUtil;
7   import com.arranger.jarl.util.WidgetConfigSegment;
8   import com.arranger.jarl.util.WidgetUtil;
9   
10  import java.util.Collection;
11  
12  
13  /**
14   * BaseSegmentFilter created on Mar 21, 2003
15   */
16  public abstract class BaseSegmentFilter extends BaseFilter implements IWidgetConfigSegmentFactory {
17  
18      protected java.util.List m_configSegments;
19  
20      /**
21       * @return a collection of {@link WidgetConfigSegment}
22       */
23      public Collection getConfigSegments() {
24          return m_configSegments;
25      }
26  
27      /**
28       * Always remember some attrs might not be there
29       * @param context
30       */
31      protected void initAttributes(IContext context) {
32          super.initAttributes(context);
33  
34          //look for segments
35          java.util.List seg = WidgetUtil.initWidgetConfigSegments(m_configElement, this);
36          if (seg != null) {
37              m_configSegments = seg;
38          }
39      }
40  
41      /**
42       * Get the 'active' widget config segment
43       * @param context
44       * @return the 'active' widget config segment
45       */
46      protected WidgetConfigSegment getCurrentSegment(IContext context) {
47          //get how far along we are into this widget
48          double currentTimePct = InterpolateUtil.interpolate(this, context.getTime());
49  
50          //get the current motion segment
51          return WidgetUtil.getWidgetConfigSegment(m_configSegments, currentTimePct);
52      }
53  
54      /**
55       * Get the pct of time relative to this segment
56       * @param widgetConfigSegment
57       * @return relative time into this segment
58       *
59       * @see #getCurrentSegment
60       */
61      protected double getCurrentSegmentTimePct(IContext context, WidgetConfigSegment widgetConfigSegment) {
62  
63          //get relative time
64          Time relTime = WidgetUtil.getRelativeTime(this, context.getTime());
65  
66          //get current time pct relative to this segment
67          //relTime - segStart
68          //-------------------
69          //       segLength
70          double segStart = widgetConfigSegment.getStartTimePct() * getTotalTime().getFrame();
71          double segEnd = widgetConfigSegment.getEndTimePct() * getTotalTime().getFrame();
72          double segLength = segEnd - segStart;
73  
74          return (relTime.getFrame() - segStart) / segLength;
75      }
76  }