1 package prefuse.action.animate; 2 3 import java.util.Iterator ; 4 5 import prefuse.action.ItemAction; 6 import prefuse.action.layout.AxisLabelLayout; 7 import prefuse.data.tuple.TupleSet; 8 import prefuse.util.ColorLib; 9 import prefuse.visual.VisualItem; 10 import prefuse.visual.expression.StartVisiblePredicate; 11 12 13 20 public class AxisLabelAnimator extends ItemAction { 21 22 25 protected AxisLabelAnimator() { 26 super(); 27 } 28 29 33 public AxisLabelAnimator(String group) { 34 super(group); 35 } 36 37 40 public void run(double frac) { 41 if ( frac == 0.0 ) { 42 setup(); 43 } else if ( frac == 1.0 ) { 44 finish(); 45 } else { 46 super.run(frac); 47 } 48 TupleSet ts = m_vis.getGroup(m_group); 49 ts.putClientProperty(AxisLabelLayout.FRAC, new Double (frac)); 50 } 51 52 private void setup() { 53 Iterator items = m_vis.visibleItems(m_group); 55 while ( items.hasNext() ) { 56 VisualItem item = (VisualItem) items.next(); 57 if ( !item.isStartVisible() ) { 58 int efc = item.getEndFillColor(); 59 int esc = item.getEndStrokeColor(); 60 int etc = item.getEndTextColor(); 61 item.setStartFillColor(ColorLib.setAlpha(efc,0)); 62 item.setStartStrokeColor(ColorLib.setAlpha(esc,0)); 63 item.setStartTextColor(ColorLib.setAlpha(etc,0)); 64 item.setStartVisible(true); 65 } 66 process(item, 0.0); 67 } 68 69 items = m_vis.items(m_group, StartVisiblePredicate.TRUE); 71 while ( items.hasNext() ) { 72 VisualItem item = (VisualItem) items.next(); 73 if ( !item.isEndVisible() ) { 74 int sfc = item.getStartFillColor(); 75 int ssc = item.getStartStrokeColor(); 76 int stc = item.getStartTextColor(); 77 item.setEndFillColor(ColorLib.setAlpha(sfc,0)); 78 item.setEndStrokeColor(ColorLib.setAlpha(ssc,0)); 79 item.setEndTextColor(ColorLib.setAlpha(stc,0)); 80 item.setVisible(true); 81 process(item, 0.0); 82 } 83 } 84 } 85 86 private void finish() { 87 Iterator items = m_vis.items(m_group, StartVisiblePredicate.TRUE); 89 while ( items.hasNext() ) { 90 VisualItem item = (VisualItem) items.next(); 91 if ( !item.isEndVisible() ) { 92 item.setVisible(false); 93 item.setStartVisible(false); 94 } 95 } 96 97 items = m_vis.visibleItems(m_group); 99 while ( items.hasNext() ) { 100 VisualItem item = (VisualItem) items.next(); 101 process(item, 1.0); 102 item.setStartFillColor(item.getEndFillColor()); 103 item.setStartTextColor(item.getEndTextColor()); 104 item.setStartStrokeColor(item.getEndStrokeColor()); 105 } 106 } 107 108 111 public void process(VisualItem item, double frac) { 112 double v = item.getStartX(); 113 item.setX(v + frac*(item.getEndX()-v)); 114 v = item.getStartY(); 115 item.setY(v + frac*(item.getEndY()-v)); 116 v = item.getDouble(VisualItem.STARTX2); 117 v = v + frac*(item.getDouble(VisualItem.ENDX2)-v); 118 item.setDouble(VisualItem.X2, v); 119 v = item.getDouble(VisualItem.STARTY2); 120 v = v + frac*(item.getDouble(VisualItem.ENDY2)-v); 121 item.setDouble(VisualItem.Y2, v); 122 123 int c = ColorLib.interp(item.getStartStrokeColor(), 124 item.getEndStrokeColor(), frac); 125 item.setStrokeColor(c); 126 127 int tc = ColorLib.interp(item.getStartTextColor(), 128 item.getEndTextColor(), frac); 129 item.setTextColor(tc); 130 131 int fc = ColorLib.interp(item.getStartFillColor(), 132 item.getEndFillColor(), frac); 133 item.setFillColor(fc); 134 } 135 136 } | Popular Tags |