00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00021 #ifndef __vtkPVKeyFrame_h
00022 #define __vtkPVKeyFrame_h
00023
00024 #include "vtkPVTracedWidget.h"
00025 class vtkSMKeyFrameProxy;
00026 class vtkKWThumbWheel;
00027 class vtkPVWidget;
00028 class vtkKWLabel;
00029 class vtkKWPushButton;
00030 class vtkPVAnimationScene;
00031 class vtkPVKeyFrameObserver;
00032 class vtkSMAnimationCueProxy;
00033 class vtkSMProperty;
00034
00035 class VTK_EXPORT vtkPVKeyFrame : public vtkPVTracedWidget
00036 {
00037 public:
00038 vtkTypeRevisionMacro(vtkPVKeyFrame, vtkPVTracedWidget);
00039 void PrintSelf(ostream& os, vtkIndent indent);
00040
00042 virtual void Create(vtkKWApplication* app);
00043
00045
00046 vtkGetObjectMacro(KeyFrameProxy, vtkSMKeyFrameProxy);
00048
00055 void SetKeyFrameProxy(vtkSMKeyFrameProxy* kfProxy);
00056
00057
00059
00061 void SetKeyTime(double time);
00062 double GetKeyTime();
00064
00066 void SetKeyTimeWithTrace(double time);
00067
00069 virtual void InitializeKeyValueUsingCurrentState() = 0;
00070
00073 virtual void InitializeKeyValueDomainUsingCurrentState() =0;
00074
00076
00078 void SetTimeMinimumBound(double min);
00079 void SetTimeMaximumBound(double max);
00080 void ClearTimeBounds();
00082
00084 void TimeChangedCallback();
00085
00088 virtual void PrepareForDisplay();
00089
00091
00095 void SetAnimationCueProxy(vtkSMAnimationCueProxy* cueproxy)
00096 { this->AnimationCueProxy = cueproxy; }
00097 vtkGetObjectMacro(AnimationCueProxy, vtkSMAnimationCueProxy);
00099
00101
00103 virtual void SetValueToMinimum() = 0;
00104 virtual void SetValueToMaximum() = 0;
00106
00108 virtual void SaveState(ofstream* file);
00109
00111 virtual void UpdateEnableState();
00112
00114
00115 vtkSetStringMacro(Name);
00116 vtkGetStringMacro(Name);
00118
00120
00122 void SetAnimationScene(vtkPVAnimationScene* scene);
00123 vtkGetObjectMacro(AnimationScene, vtkPVAnimationScene);
00125
00127
00128 void SetDuration(double duration);
00129 vtkGetMacro(Duration, double);
00131
00134 virtual void Copy(vtkPVKeyFrame* fromKF);
00135
00137
00139 vtkSetMacro(TimeChangeable, int);
00140 vtkGetMacro(TimeChangeable, int);
00142
00144
00148 vtkSetMacro(BlankTimeEntry, int);
00149 vtkGetMacro(BlankTimeEntry, int);
00151
00152 protected:
00153 vtkPVKeyFrame();
00154 ~vtkPVKeyFrame();
00155
00156 virtual void ChildCreate(vtkKWApplication* app);
00157
00158 vtkSMKeyFrameProxy* KeyFrameProxy;
00159 char* KeyFrameProxyName;
00160 char* KeyFrameProxyXMLName;
00161 vtkSetStringMacro(KeyFrameProxyName);
00162 vtkSetStringMacro(KeyFrameProxyXMLName);
00163
00164 void DetermineKeyFrameProxyName();
00165
00166 vtkKWLabel* TimeLabel;
00167 vtkKWThumbWheel* TimeThumbWheel;
00168
00169 vtkSMAnimationCueProxy* AnimationCueProxy;
00170 char* Name;
00171
00172 friend class vtkPVKeyFrameObserver;
00173 vtkPVKeyFrameObserver* Observer;
00174 virtual void ExecuteEvent(vtkObject* , unsigned long event, void*);
00175
00176
00178 virtual void UpdateValuesFromProxy();
00179
00180 double GetRelativeTime(double ntime);
00181 double GetNormalizedTime(double rtime);
00182
00183 double TimeBounds[2];
00184 double Duration;
00185
00186 int BlankTimeEntry;
00187 int TimeChangeable;
00188
00189 vtkPVAnimationScene* AnimationScene;
00190
00191 int BlockUpdates;
00192
00193
00194 private:
00195 vtkPVKeyFrame(const vtkPVKeyFrame&);
00196 void operator=(const vtkPVKeyFrame&);
00197 };
00198
00199
00200 #endif
00201