/*========================================================================= Program: ParaView Module: vtkPVCameraKeyFrame.h Copyright (c) Kitware, Inc. All rights reserved. See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ // .NAME vtkPVCameraKeyFrame // .SECTION Description // Special key frame for animating Camera. Unlike typical keyframes, // this keyframe interpolates a camera and not a property on the camera. #ifndef vtkPVCameraKeyFrame_h #define vtkPVCameraKeyFrame_h #include "vtkPVAnimationModule.h" //needed for exports #include "vtkPVKeyFrame.h" class vtkCamera; class vtkCameraInterpolator2; class vtkPVAnimationCue; class VTKPVANIMATION_EXPORT vtkPVCameraKeyFrame : public vtkPVKeyFrame { public: static vtkPVCameraKeyFrame* New(); vtkTypeMacro(vtkPVCameraKeyFrame, vtkPVKeyFrame); void PrintSelf(ostream& os, vtkIndent indent); // Description: // If the vtkPVCameraCueManipulator is in CAMERA mode, then this method is // not even called since the interpolation is done by vtkCameraInterpolator // maintained by vtkPVCameraCueManipulator itself. However, in PATH mode, // this method is called to allow the key frame to use vtkCameraInterpolator2 // to do path-based interpolations for the camera. virtual void UpdateValue( double currenttime, vtkPVAnimationCue* cue, vtkPVKeyFrame* next); // Overridden, since these methods are not supported by this class. virtual void SetKeyValue(unsigned int , double ) { } virtual void SetKeyValue(double ) { } virtual double GetKeyValue(unsigned int) {return 0;} // Description: // Get the camera i.e. the key value for this key frame. vtkGetObjectMacro(Camera, vtkCamera); // Description: // Methods to set the current camera value. void SetPosition(double x, double y, double z); void SetFocalPoint(double x, double y, double z); void SetViewUp(double x, double y, double z); void SetViewAngle(double angle); void SetParallelScale(double scale); // Description: // Forwarded to vtkCameraInterpolator2. void AddPositionPathPoint(double x, double y, double z); void ClearPositionPath(); void AddFocalPathPoint(double x, double y, double z); void ClearFocalPath(); void SetFocalPointMode(int val); void SetPositionMode(int val); void SetClosedFocalPath(bool val); void SetClosedPositionPath(bool val); protected: vtkPVCameraKeyFrame(); ~vtkPVCameraKeyFrame(); vtkCamera* Camera; vtkCameraInterpolator2* Interpolator; private: vtkPVCameraKeyFrame(const vtkPVCameraKeyFrame&); // Not implemented. void operator=(const vtkPVCameraKeyFrame&); // Not implemented. }; #endif