00001 #ifndef TRIDANIMATOR_H
00002 #define TRIDANIMATOR_H
00003
00004 #include <TObject.h>
00005 #include <TTimer.h>
00006
00007 #include "Conventions/Munits.h"
00008 #include "Midad/Gui/GuiMainWindow.h"
00009 #include "Midad/Gui/GuiBox.h"
00010 #include "Midad/Gui/GuiButton.h"
00011 #include "Midad/Gui/GuiLabel.h"
00012 #include "Midad/Gui/GuiTextEntry.h"
00013 #include "Midad/Util/Range.h"
00014
00015
00016 class TridControl;
00017
00018 class TridAnimator : public TObject
00019 {
00020 public:
00021 friend class TridControl;
00022
00023 TridAnimator( void );
00024 TridAnimator( TridControl& tridControl );
00025
00026 virtual ~TridAnimator( void );
00027
00028 Bool_t Animating() { return fAnimating; };
00029 Double_t GetAnimTimeMin() { return fAnimTimeMin; };
00030 Double_t GetAnimTimeMax() { return fAnimTimeMax; };
00031 Bool_t AnimatingModels() { return fAnimateModels; };
00032 Bool_t AnimatingViews() { return fAnimateViews; };
00033 Double_t GetViewSpeed() { return fViewAnimSpeed; };
00034 Double_t GetViewIncrement() { return fViewAnimSpeed; };
00035 Double_t GetRangeMin() { return fTimeRange.Min(); };
00036 Double_t GetRangeMax() { return fTimeRange.Max(); };
00037 Bool_t Printing() { return fPrinting; };
00038 Int_t GetFrame() { return fFrame; };
00039
00040
00041 void StartAnimation();
00042 void StopAnimation();
00043 void SetAnimateModels( bool on = true ) { fAnimateModels = on; UpdateGui(); };
00044 void SetAnimateViews( bool on = true ) { fAnimateViews = on; UpdateGui(); };
00045 void SetViewAnimSpeed( double speed ) { fViewAnimSpeed = speed; UpdateGui(); };
00046 void SetTimeRange(double min, double max) { fTimeRange.Set(min,max); UpdateGui(); };
00047
00048
00049 void OpenWindow();
00050 void ShowConfigFrame(GuiBox &box);
00051 void CloseConfigFrame();
00052
00053 private:
00054
00055 TridControl* fTridControl;
00056
00057
00058 TTimer fAnimTimer;
00059
00061
00062
00063
00064 Bool_t fAnimating;
00065 Double_t fAnimFPS;
00066 Bool_t fPrinting;
00067 Int_t fFrame;
00068
00069
00070 Bool_t fAnimateModels;
00071 Bool_t fAnimateViews;
00072
00073
00074 Bool_t fUseTimeWindow;
00075 RangeDouble fTimeRange;
00076
00077 Double_t fAnimSecPerFrame;
00078 Double_t fAnimTimeMin;
00079 Double_t fAnimTimeMax;
00080 Double_t fAnimTimeWindow;
00081
00082
00083 Double_t fViewAnimSpeed;
00084
00085 Bool_t HandleTimer( TTimer* timer );
00086
00087 private:
00088
00089
00090 void StartStopHandler();
00091 void StopAndResetHandler();
00092 void ParamChangedHandler();
00093
00094 void ReadFromGui(void);
00095 void UpdateGui(void);
00096
00097
00098 SigC::Ptr<GuiMainWindow> fMainWindow;
00099
00100 SigC::Ptr<GuiTextButton> fButtonStartStop;
00101 SigC::Ptr<GuiLabel> fLabelAnimTime;
00102 SigC::Ptr<GuiLabel> fLabelAnimFrame;
00103 SigC::Ptr<GuiCheckButton> fButtonAnimateViews, fButtonAnimateModels,
00104 fButtonUseTimeWindow, fButtonPrinting;
00105 SigC::Ptr<GuiTextEntry> fTextEntryFPS, fTextEntryViewSpeed,
00106 fTextEntryTimeWindow, fTextEntryTimeRangeStart,
00107 fTextEntryTimeRangeEnd, fTextEntrySecPerFrame;
00108 ClassDef(TridAnimator,0);
00109 };
00110
00111
00112 #endif