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

Quick Search    Search Deep

Source code: com/arranger/jarl/stroke/BaseSegmentStroke.java


1   package com.arranger.jarl.stroke;
2   
3   import com.arranger.jarl.util.IWidgetConfigSegmentFactory;
4   import com.arranger.jarl.util.WidgetUtil;
5   import com.arranger.jarl.util.WidgetConfigSegment;
6   import com.arranger.jarl.util.InterpolateUtil;
7   import com.arranger.jarl.base.IContext;
8   import com.arranger.jarl.base.Time;
9   import com.arranger.jarl.widget.IWidget;
10  
11  import java.util.Collection;
12  
13  /**
14   * BaseSegmentStroke created on Feb 26, 2003
15   */
16  public abstract class BaseSegmentStroke extends BaseStroke 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 widget
44       * @param context
45       * @return the 'active' widget config segment
46       */
47      protected WidgetConfigSegment getCurrentSegment(IWidget widget, IContext context) {
48          //get how far along we are into this widget
49          double currentTimePct = InterpolateUtil.interpolate(widget, context.getTime());
50  
51          //get the current motion segment
52          return WidgetUtil.getWidgetConfigSegment(m_configSegments, currentTimePct);
53      }
54  
55      /**
56       * Get the pct of time relative to this segment
57       * @param widget
58       * @param widgetConfigSegment
59       * @return relative time into this segment
60       *
61       * @see #getCurrentSegment
62       */
63      protected double getCurrentSegmentTimePct(IWidget widget, IContext context, WidgetConfigSegment widgetConfigSegment) {
64  
65          //get relative time
66          Time relTime = WidgetUtil.getRelativeTime(widget, context.getTime());
67  
68          //get current time pct relative to this segment
69          //relTime - segStart
70          //-------------------
71          //       segLength
72          double segStart = widgetConfigSegment.getStartTimePct() * widget.getTotalTime().getFrame();
73          double segEnd = widgetConfigSegment.getEndTimePct() * widget.getTotalTime().getFrame();
74          double segLength = segEnd - segStart;
75  
76          return (relTime.getFrame() - segStart) / segLength;
77      }
78  }