Skip to content

Commit 97913ec

Browse files
committed
rework of animation player and renderer
1 parent 7d6a743 commit 97913ec

7 files changed

Lines changed: 187 additions & 224 deletions

File tree

src/main/java/bigtrace/BigTraceControlPanel.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public class BigTraceControlPanel< T extends RealType< T > & NativeType< T > > e
8484
final RoiManager3D<T> roiManager;
8585
final RoiMeasure3D<T> roiMeasure;
8686
TrackingPanel<T> btTracksPanel;
87-
public AnimationPanel <T> btAniPanel;
87+
public AnimationPanel btAniPanel;
8888

8989
double [][] nDisplayMinMax;
9090

@@ -111,7 +111,7 @@ public BigTraceControlPanel(final BigTrace<T> bt_,final BigTraceData<T> btd_, fi
111111
btTracksPanel = new TrackingPanel<>(bt);
112112
roiManager.setRoiMeasure3D(roiMeasure);
113113
roiManager.setTracksPanel(btTracksPanel);
114-
btAniPanel = new AnimationPanel<>(bt);
114+
btAniPanel = new AnimationPanel(bt);
115115

116116
JTabbedPane tabPane = new JTabbedPane(SwingConstants.LEFT);
117117

src/main/java/bigtrace/animation/AnimationPanel.java

Lines changed: 19 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,6 @@
3939
import javax.swing.event.ListSelectionEvent;
4040
import javax.swing.event.ListSelectionListener;
4141

42-
43-
import net.imglib2.type.NativeType;
44-
import net.imglib2.type.numeric.RealType;
45-
4642
import bigtrace.BigTrace;
4743
import bigtrace.gui.NumberField;
4844
import bigtrace.gui.PanelTitle;
@@ -54,9 +50,9 @@
5450
import ij.io.OpenDialog;
5551
import ij.io.SaveDialog;
5652

57-
public class AnimationPanel < T extends RealType< T > & NativeType< T > > extends JPanel implements ListSelectionListener, NumberField.Listener, ChangeListener, ActionListener
53+
public class AnimationPanel extends JPanel implements ListSelectionListener, NumberField.Listener, ChangeListener, ActionListener
5854
{
59-
final BigTrace<T> bt;
55+
final BigTrace<?> bt;
6056

6157
final JButton butRecord;
6258
final JButton butPlayStop;
@@ -82,7 +78,7 @@ public class AnimationPanel < T extends RealType< T > & NativeType< T > > extend
8278

8379
final public NumberField nfTotalTime;
8480

85-
public static final int ANIMTIME_START=0, ANIMTIME_END=1, ANIMTIME_STRETCH=2;
81+
public static final int ANIMTIME_START = 0, ANIMTIME_END = 1, ANIMTIME_STRETCH = 2;
8682

8783
int nChangeTotalTimeMode = (int)Prefs.get("BigTrace.nChangeTotalTimeMode", ANIMTIME_END);
8884

@@ -94,22 +90,20 @@ public class AnimationPanel < T extends RealType< T > & NativeType< T > > extend
9490
int tsSpan = 100;
9591

9692
/** play preview **/
97-
AnimationPlayer<T> player;
93+
final AnimationPlayer player;
9894

9995
ImageIcon tabIconRecord;
10096

10197
ImageIcon tabIconPlay;
10298

10399
ImageIcon tabIconStop;
104100

105-
float fPlaySpeedFactor = 1.0f ;
106-
107101
boolean bPlayerBackForth = Prefs.get("BigTrace.bPlayerBackForth", false);
108102

109103
boolean bUpdateSlider = true;
110104

111105
/** keyframe render **/
112-
AnimationRender<T> render;
106+
AnimationRender render;
113107

114108
int nRenderFPS = (int)Prefs.get("BigTrace.nRenderFPS", 24.0);
115109

@@ -125,13 +119,13 @@ public class AnimationPanel < T extends RealType< T > & NativeType< T > > extend
125119

126120
String sRenderSavePath = null;
127121

128-
final AnimationPanelDialogs<T> dialogsAnim;
122+
final AnimationPanelDialogs dialogsAnim;
129123

130-
public AnimationPanel(final BigTrace<T> bt)
124+
public AnimationPanel(final BigTrace<?> bt)
131125
{
132126
this.bt = bt;
133127

134-
dialogsAnim = new AnimationPanelDialogs<>(bt, this);
128+
dialogsAnim = new AnimationPanelDialogs(bt, this);
135129

136130
int nInitialTotalTime = 5;
137131

@@ -140,7 +134,7 @@ public AnimationPanel(final BigTrace<T> bt)
140134

141135
kfAnim = new KeyFrameAnimation(listModel);
142136
kfAnim.setTotalTime( nInitialTotalTime );
143-
this.player = null;
137+
this.player = new AnimationPlayer(bt, this);
144138

145139
JPanel panAnimTools = new JPanel(new GridBagLayout());
146140
panAnimTools.setBorder(new PanelTitle(" Animation "));
@@ -423,7 +417,7 @@ void sortListModel()
423417

424418
void runRender()
425419
{
426-
render = new AnimationRender< >(bt, this);
420+
render = new AnimationRender(bt, this);
427421
bt.bInputLock = true;
428422
bt.setLockMode(true);
429423
render.addPropertyChangeListener( bt.btPanel );
@@ -436,21 +430,6 @@ void runRender()
436430
render.execute();
437431
}
438432

439-
void runPlayer()
440-
{
441-
player = new AnimationPlayer< >(bt, this);
442-
bt.bInputLock = true;
443-
bt.setLockMode(true);
444-
player.addPropertyChangeListener( bt.btPanel );
445-
446-
butPlayStop.setEnabled( true );
447-
butPlayStop.setIcon( tabIconStop );
448-
butPlayStop.setToolTipText( "Stop playing" );
449-
player.butPlayStop = butPlayStop;
450-
player.tabIconPlay = tabIconPlay;
451-
player.execute();
452-
}
453-
454433
@Override
455434
public void actionPerformed( ActionEvent e )
456435
{
@@ -460,7 +439,7 @@ public void actionPerformed( ActionEvent e )
460439
{
461440
if(listModel.size() > 0)
462441
{
463-
if(!bt.bInputLock )
442+
if(!bt.bInputLock)
464443
{
465444
if(dialogsAnim.dialRenderSettings())
466445
{
@@ -488,18 +467,12 @@ public void actionPerformed( ActionEvent e )
488467
{
489468
if(!bt.bInputLock )
490469
{
491-
runPlayer();
470+
if(!player.isPlaying())
471+
player.play();
492472
}
493473
else
494474
{
495-
if( bt.bInputLock &&
496-
butPlayStop.isEnabled() &&
497-
player!=null &&
498-
!player.isCancelled() &&
499-
!player.isDone())
500-
{
501-
player.cancel( false );
502-
}
475+
player.stop();
503476
}
504477
}
505478
else
@@ -866,11 +839,10 @@ protected void paintComponent(Graphics g)
866839
}
867840
}
868841

869-
public void updateScene()
842+
public void updateScene(final float fTimePoint)
870843
{
871844
if(listModel.size() > 1)
872845
{
873-
float fTimePoint = (kfAnim.getTotalTime())*(timeSlider.getValue()/(float)tsSpan);
874846
bt.setScene( kfAnim.getScene( fTimePoint ) );
875847
}
876848
}
@@ -883,7 +855,8 @@ public void stateChanged( ChangeEvent e )
883855
{
884856
if(bUpdateSlider)
885857
{
886-
updateScene();
858+
float fTimePoint = (kfAnim.getTotalTime())*(timeSlider.getValue()/(float)tsSpan);
859+
updateScene(fTimePoint);
887860
}
888861
}
889862

@@ -904,7 +877,7 @@ void dialStorylineSave()
904877

905878
bt.setLockMode(true);
906879
bt.bInputLock = true;
907-
StorylineSave<T> stSave = new StorylineSave<>(bt, this);
880+
StorylineSave stSave = new StorylineSave(bt, this);
908881
stSave.saveAnimation( filename );
909882
bt.setLockMode(false);
910883
bt.bInputLock = false;
@@ -926,7 +899,7 @@ void dialStorylineLoad()
926899
filename = path + openDial.getFileName();
927900
bt.setLockMode(true);
928901
bt.bInputLock = true;
929-
StorylineLoad<T> stLoad = new StorylineLoad<>(bt, this);
902+
StorylineLoad stLoad = new StorylineLoad(bt, this);
930903
stLoad.loadAnimation( filename );
931904
bt.setLockMode(false);
932905
bt.bInputLock = false;

src/main/java/bigtrace/animation/AnimationPanelDialogs.java

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
import javax.swing.JPanel;
1616
import javax.swing.JTextField;
1717

18-
import net.imglib2.type.NativeType;
19-
import net.imglib2.type.numeric.RealType;
2018
import net.imglib2.util.LinAlgHelpers;
2119

2220
import bigtrace.BigTrace;
@@ -29,13 +27,13 @@
2927
import ij.Prefs;
3028
import ij.io.OpenDialog;
3129

32-
public class AnimationPanelDialogs< T extends RealType< T > & NativeType< T > >
30+
public class AnimationPanelDialogs
3331
{
34-
final BigTrace<T> bt;
32+
final BigTrace<?> bt;
3533

36-
final AnimationPanel<T> pan;
34+
final AnimationPanel pan;
3735

38-
public AnimationPanelDialogs(final BigTrace<T> bt_, final AnimationPanel<T> pan_)
36+
public AnimationPanelDialogs(final BigTrace<?> bt_, final AnimationPanel pan_)
3937
{
4038
bt = bt_;
4139
pan = pan_;
@@ -116,18 +114,18 @@ void dialPlayerSettings()
116114
DecimalFormat df = new DecimalFormat("0.000", decimalFormatSymbols);
117115

118116
final NumberField nfSpeedFactor = new NumberField(4);
119-
nfSpeedFactor.setText(df.format(pan.fPlaySpeedFactor));
117+
nfSpeedFactor.setText(df.format(pan.player.getPlaybackSpeed()));
120118

121-
cd.gridx=0;
122-
cd.gridy=0;
119+
cd.gridx = 0;
120+
cd.gridy = 0;
123121
panPlayerSettings.add(new JLabel("Play speed (0.01-100):"),cd);
124122
cd.gridx++;
125123
panPlayerSettings.add(nfSpeedFactor, cd);
126124

127125
JCheckBox cbBackForth = new JCheckBox();
128126
cbBackForth.setSelected( Prefs.get("BigTrace.bPlayerBackForth", false) );
129127
cd.gridy++;
130-
cd.gridx=0;
128+
cd.gridx = 0;
131129
panPlayerSettings.add(new JLabel("Loop back and forth"),cd);
132130
cd.gridx++;
133131
panPlayerSettings.add(cbBackForth,cd);
@@ -136,14 +134,10 @@ void dialPlayerSettings()
136134
JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
137135
if (reply == JOptionPane.OK_OPTION)
138136
{
139-
140-
pan.fPlaySpeedFactor = ( float ) Math.min(Math.max( 0.01,Math.abs( Float.parseFloat( nfSpeedFactor.getText()))),100);
137+
pan.player.setPlaybackSpeed( ( float ) Math.min(Math.max( 0.01,Math.abs( Float.parseFloat( nfSpeedFactor.getText()))),100));
141138

142139
pan.bPlayerBackForth = cbBackForth.isSelected();
143-
Prefs.set("BigTrace.bPlayerBackForth", pan.bPlayerBackForth);
144-
145-
146-
140+
Prefs.set("BigTrace.bPlayerBackForth", pan.bPlayerBackForth);
147141
}
148142
}
149143

@@ -300,7 +294,7 @@ public void dialUnCoilAnimation(final Roi3D roiIn)
300294
}
301295
}
302296

303-
UnCoilAnimation<T> unAnim = new UnCoilAnimation<>(bt);
297+
UnCoilAnimation<?> unAnim = new UnCoilAnimation<>(bt);
304298
unAnim.inputROI = ( AbstractCurve3D ) roiIn;
305299
unAnim.nFrames = nTotFramesUnCoil;
306300
unAnim.nUnCoilTask = nUnCoilTask;

0 commit comments

Comments
 (0)