Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

TridAnimator.h

Go to the documentation of this file.
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; }; //if(fUseTimeWindow) return fAnimTime; return -2e9; };
00030   Double_t GetAnimTimeMax() { return fAnimTimeMax; }; //if(fUseTimeWindow) return fAnimTime+fAnimTimeWindow; return fAnimTime; };
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   // Controls. (incomplete)
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   // Gui.
00049   void OpenWindow();
00050   void ShowConfigFrame(GuiBox &box);
00051   void CloseConfigFrame();
00052 
00053  private:
00054   // The master object:
00055   TridControl* fTridControl;
00056 
00057 
00058   TTimer     fAnimTimer;
00059 
00061   // State machine:
00062 
00063   // For all animation:
00064   Bool_t     fAnimating;
00065   Double_t   fAnimFPS;
00066   Bool_t     fPrinting;
00067   Int_t      fFrame;
00068 
00069   // Animation types:
00070   Bool_t     fAnimateModels;
00071   Bool_t     fAnimateViews;
00072 
00073   // For animating models (i.e. event)
00074   Bool_t      fUseTimeWindow;  // Show (t,t+dt) if true. Otherwise show (-inf,t)
00075   RangeDouble fTimeRange;
00076 
00077   Double_t   fAnimSecPerFrame;
00078   Double_t   fAnimTimeMin;
00079   Double_t   fAnimTimeMax;
00080   Double_t   fAnimTimeWindow;
00081 
00082   // For animiating the view:
00083   Double_t   fViewAnimSpeed;  // Angular velocity to rotate the POV, or similar
00084 
00085   Bool_t    HandleTimer( TTimer* timer ); // Timing callback.
00086 
00087  private:
00088 
00089   // Callbacks.
00090   void StartStopHandler();
00091   void StopAndResetHandler();
00092   void ParamChangedHandler();
00093 
00094   void ReadFromGui(void);
00095   void UpdateGui(void);
00096 
00097   // Gui objects.
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

Generated on Mon Nov 23 05:28:40 2009 for loon by  doxygen 1.3.9.1