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

Quick Search    Search Deep

Source code: com/arranger/jarl/trait/BaseSegmentTrait.java


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