00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00020 #ifndef __vtkPVAnimationScene_h
00021 #define __vtkPVAnimationScene_h
00022
00023 #include "vtkPVTracedWidget.h"
00024
00025 class vtkPVAnimationSceneObserver;
00026 class vtkKWFrame;
00027 class vtkKWPushButton;
00028 class vtkKWCheckButton;
00029 class vtkKWScaleWithEntry;
00030 class vtkKWMenuButton;
00031 class vtkKWThumbWheel;
00032 class vtkKWLabel;
00033 class vtkSMAnimationSceneProxy;
00034 class vtkPVAnimationCue;
00035 class vtkPVRenderView;
00036 class vtkPVAnimationManager;
00037 class vtkPVWindow;
00038 class vtkPVVCRControl;
00039
00040 class VTK_EXPORT vtkPVAnimationScene : public vtkPVTracedWidget
00041 {
00042 public:
00043 static vtkPVAnimationScene* New();
00044 vtkTypeRevisionMacro(vtkPVAnimationScene, vtkPVTracedWidget);
00045 void PrintSelf(ostream& os, vtkIndent indent);
00046
00048 virtual void Create(vtkKWApplication* app);
00049
00051
00052 void SetPlayModeToSequence();
00053 void SetPlayModeToRealTime();
00054 void DurationChangedCallback();
00055 void DurationChangedKeyReleaseCallback();
00056 void LoopCheckButtonCallback();
00057 void ToolbarLoopCheckButtonCallback();
00058 void TimeScaleCallback();
00059 void ToolbarRecordCheckButtonCallback();
00060 void RecordCheckCallback();
00061 void SaveAnimationCallback();
00063
00065 int IsInPlay();
00066 void Play();
00067 void Stop();
00068 void GoToBeginning();
00069 void GoToEnd();
00071
00073
00074 void GoToNext();
00075 void GoToPrevious();
00077
00078
00079 void StartRecording();
00080 void StopRecording();
00081 void RecordState();
00082
00084
00085 void SetDuration(double seconds);
00086 void SetDurationWithTrace(double s);
00087 double GetDuration();
00089
00091
00092 void SetPlayMode(int mode);
00093 int GetPlayMode();
00095
00097
00098 void SetFrameRate(double fps);
00099 double GetFrameRate();
00101
00103
00104 void SetLoop(int loop);
00105 void SetLoopWithTrace(int loop);
00106 int GetLoop();
00108
00110
00112 void SetAnimationTime( double time);
00113 void SetAnimationTimeWithTrace(double time);
00115
00117 double GetAnimationTime();
00118
00120
00122 void SetNormalizedAnimationTime(double ntime);
00123 double GetNormalizedAnimationTime();
00125
00127
00130 void AddAnimationCue(vtkPVAnimationCue* cue);
00131 void RemoveAnimationCue(vtkPVAnimationCue* cue);
00133
00134 virtual void SaveInBatchScript(ofstream* file);
00135
00136 void SaveState(ofstream* file);
00137
00139
00142 virtual void SetWindow(vtkPVWindow *window);
00143 vtkGetObjectMacro(Window, vtkPVWindow);
00145
00146 void SetRenderView(vtkPVRenderView* pvRenderView);
00147 vtkGetObjectMacro(RenderView, vtkPVRenderView);
00148
00149 void SetAnimationManager(vtkPVAnimationManager*);
00150
00151 virtual void UpdateEnableState();
00152
00153
00155
00157 void SaveImages(const char* fileRoot, const char* ext, int width, int height,
00158 double framerate);
00159
00160
00161 void SaveGeometry(const char* filename);
00163
00164 void InvalidateAllGeometries();
00165
00167
00168 void ShowAnimationToolbar() { this->SetAnimationToolbarVisibility(1); }
00169 void HideAnimationToolbar() { this->SetAnimationToolbarVisibility(0); }
00170 void SetAnimationToolbarVisibility(int visible);
00172
00174
00175 void SetCaching(int enable);
00176 int GetCaching();
00178
00180
00183 void SetPropertiesChangedCallback(vtkKWWidget* target,
00184 const char* methodAndArgs);
00186
00187 void PrepareForDelete();
00188
00190
00192 void OnBeginPlay();
00193 void OnEndPlay();
00195
00196
00197
00199 VTK_LEGACY(void SetCurrentTime( double time));
00200
00203 VTK_LEGACY(void SetCurrentTimeWithTrace(double time));
00204
00205 #ifdef VTK_WORKAROUND_WINDOWS_MANGLE
00206
00207 #define GetTickCount GetCurrentTime
00208 #endif
00209
00210
00211 VTK_LEGACY(double GetCurrentTime());
00212 #ifdef VTK_WORKAROUND_WINDOWS_MANGLE
00213 # undef GetTickCount
00214
00215 int GetTickCount();
00216
00218 #endif
00219
00220
00221
00222 protected:
00223 vtkPVAnimationScene();
00224 ~vtkPVAnimationScene();
00225
00226 void CaptureErrorEvents();
00227 void ReleaseErrorEvents();
00228
00229 vtkPVRenderView* RenderView;
00230 vtkPVWindow* Window;
00231 vtkPVAnimationManager* AnimationManager;
00232
00233
00234 vtkPVVCRControl* VCRControl;
00235 vtkPVVCRControl* VCRToolbar;
00236
00237 vtkKWLabel* TimeLabel;
00238 vtkKWScaleWithEntry* TimeScale;
00239
00240 vtkKWLabel* DurationLabel;
00241 vtkKWThumbWheel* DurationThumbWheel;
00242
00243 vtkKWLabel* PlayModeLabel;
00244 vtkKWMenuButton* PlayModeMenuButton;
00245
00246 vtkSMAnimationSceneProxy* AnimationSceneProxy;
00247 char* AnimationSceneProxyName;
00248 vtkSetStringMacro(AnimationSceneProxyName);
00249
00250 virtual void ExecuteEvent(vtkObject* , unsigned long event, void* calldata);
00251
00252 vtkPVAnimationSceneObserver* Observer;
00253 friend class vtkPVAnimationSceneObserver;
00254
00255 void CreateProxy();
00256 int InPlay;
00257 int InvokingError;
00258
00259
00260
00261
00262 int InterpretDurationAsFrameMax;
00263 void SetInterpretDurationAsFrameMax(int val);
00264
00265 unsigned long ErrorEventTag;
00266
00267 char* PropertiesChangedCallbackCommand;
00268 vtkSetStringMacro(PropertiesChangedCallbackCommand);
00269 void InvokePropertiesChangedCallback();
00270
00271 private:
00272 vtkPVAnimationScene(const vtkPVAnimationScene&);
00273 void operator=(const vtkPVAnimationScene&);
00274 };
00275
00276 #endif