00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00037 #ifndef __vtkPVAnimationCue_h
00038 #define __vtkPVAnimationCue_h
00039
00040 #include "vtkPVSimpleAnimationCue.h"
00041
00042 class vtkKWWidget;
00043 class vtkKWLabel;
00044 class vtkPVTimeLine;
00045 class vtkKWFrame;
00046 class vtkSMAnimationCueProxy;
00047 class vtkSMKeyFrameAnimationCueManipulatorProxy;
00048 class vtkPVKeyFrame;
00049 class vtkCollection;
00050 class vtkCollectionIterator;
00051 class vtkPVAnimationScene;
00052 class vtkPVSource;
00053 class vtkSMPropertyStatusManager;
00054 class vtkSMProxy;
00055
00056 class VTK_EXPORT vtkPVAnimationCue : public vtkPVSimpleAnimationCue
00057 {
00058 public:
00059 static vtkPVAnimationCue* New();
00060 vtkTypeRevisionMacro(vtkPVAnimationCue, vtkPVSimpleAnimationCue);
00061 void PrintSelf(ostream& os, vtkIndent indent);
00062
00064 virtual void Create(vtkKWApplication* app);
00065
00069 void SetTimeLineParent(vtkKWWidget* frame);
00070
00072 virtual void SetLabelText(const char* label);
00073
00075
00076 vtkGetObjectMacro(TimeLine, vtkPVTimeLine);
00078
00079 virtual void PackWidget();
00080 virtual void UnpackWidget();
00081
00083
00084 virtual void GetFocus();
00085 virtual void RemoveFocus();
00086 virtual int HasFocus() {return this->Focus;}
00088
00090 virtual void RemoveAllKeyFrames();
00091
00095 void DeleteKeyFrame(int id);
00096
00099 virtual void ReplaceKeyFrame(vtkPVKeyFrame* oldFrame, vtkPVKeyFrame* newFrame);
00100
00101
00104 virtual void StartRecording();
00105
00107 virtual void StopRecording();
00108
00109 virtual void RecordState(double ntime, double offset, int onlyFocus);
00110 virtual void RecordState(double ntime, double offset);
00111
00116 void SetAnimationScene(vtkPVAnimationScene* scene);
00117
00119
00121 void SetPVSource(vtkPVSource*);
00122 vtkGetObjectMacro(PVSource, vtkPVSource);
00124
00126
00128 virtual void SetTimeMarker(double time);
00129 double GetTimeMarker();
00131
00138 virtual void UpdateEnableState();
00139
00140 virtual void SaveState(ofstream* file);
00141
00143
00152 vtkSetStringMacro(Name);
00153 vtkGetStringMacro(Name);
00155
00157
00163 vtkSetStringMacro(SourceTreeName);
00164 vtkGetStringMacro(SourceTreeName);
00166
00168 void SetEnableZoom(int zoom);
00169
00171 virtual void Zoom(double range[2]);
00172 void Zoom(double s, double e)
00173 {
00174 double r[2];
00175 r[0]=s; r[1] = e;
00176 this->Zoom(r);
00177 }
00179
00186 const char* GetTclNameCommand();
00187
00189
00191 virtual void UpdateCueVisibility(int advanced);
00192 vtkGetMacro(CueVisibility, int);
00194
00197 virtual void Detach();
00198
00200 virtual void SelectKeyFrame(int id);
00201
00203
00206 virtual void SetTimeBounds(double bounds[2], int enable_scaling=0);
00207 virtual int GetTimeBounds(double* bounds);
00209
00214 virtual int CreateAndAddKeyFrame(double time, int type);
00215
00216 protected:
00217 vtkPVAnimationCue();
00218 ~vtkPVAnimationCue();
00219
00221
00224 void SetImageType(int type);
00225 vtkGetMacro(ImageType, int);
00227
00228 enum {
00229 NONE=0,
00230 IMAGE_OPEN,
00231 IMAGE_CLOSE
00232 };
00233
00234
00235 void InitializeObservers(vtkObject* object);
00236 virtual void ExecuteEvent(vtkObject* obj, unsigned long event, void*data);
00237
00238 vtkKWWidget* TimeLineParent;
00239 vtkPVSource* PVSource;
00240
00241 vtkKWLabel* Label;
00242 vtkKWLabel* Image;
00243 vtkKWFrame* Frame;
00244
00245 vtkKWFrame* TimeLineContainer;
00246 vtkKWFrame* TimeLineFrame;
00247 vtkPVTimeLine* TimeLine;
00248
00249 int ImageType;
00250 int ShowTimeLine;
00251
00252 char* Name;
00253 char* SourceTreeName;
00254 char* TclNameCommand;
00255 vtkSetStringMacro(TclNameCommand);
00256
00257 int Focus;
00258 vtkPVAnimationScene* PVAnimationScene;
00259
00261
00262 void GetSelfFocus();
00263 void RemoveSelfFocus();
00265
00267
00272 virtual void RegisterProxies();
00273 virtual void UnregisterProxies();
00275
00276 int CueVisibility;
00277 int DisableSelectionChangedEvent;
00278 private:
00279 vtkPVAnimationCue(const vtkPVAnimationCue&);
00280 void operator=(const vtkPVAnimationCue&);
00281 };
00282
00283 #endif
00284
00285