Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

GUI/Client/vtkPVKeyFrame.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   ParaView
00004   Module:    $RCSfile: vtkPVKeyFrame.h,v $
00005 
00006   Copyright (c) Kitware, Inc.
00007   All rights reserved.
00008   See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
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; // must be set by subclasses before call to create.
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 //BTX
00172   friend class vtkPVKeyFrameObserver;
00173   vtkPVKeyFrameObserver* Observer;
00174   virtual void ExecuteEvent(vtkObject* , unsigned long event, void*);
00175 //ETX
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; // flag indicating of the time can be changed.
00188     //if not the entry for time is disabled. Default is true.
00189   vtkPVAnimationScene* AnimationScene;
00190 
00191   int BlockUpdates; // this flags controls if the GUI is updated when the Keyframe proxy
00192                     // raises a ModifiedEvent.
00193 
00194 private:
00195   vtkPVKeyFrame(const vtkPVKeyFrame&); // Not implemented.
00196   void operator=(const vtkPVKeyFrame&); // Not implemented.
00197 };
00198 
00199 
00200 #endif
00201 

Generated on Tue May 30 12:31:39 2006 for ParaView by doxygen 1.3.5