/** * Progam made by Olivier Bernard, associate professor * at Institut National des Sciences Appliquees (INSA) Lyon, * CREATIS-LRMN Laboratory, * 69621 Villeurbanne, France, * 20th of May 2014 */ #ifndef __vtkMyInteractorStyleTrackballCameraOpenHeart_h__ #define __vtkMyInteractorStyleTrackballCameraOpenHeart_h__ #include #include #include "OpenHeartGui.h" class vtkMyInteractorStyleTrackballCameraOpenHeart : public vtkInteractorStyleTrackballCamera { public: void SetOpenHeartGui( OpenHeartGui *win ) { this->window = win; } static vtkMyInteractorStyleTrackballCameraOpenHeart *New() { /// First try to create the object from the vtkObjectFactory vtkObject *ret = vtkObjectFactory::CreateInstance ("vtkMyInteractorStyleTrackballCameraOpenHeart"); if (ret) { return (vtkMyInteractorStyleTrackballCameraOpenHeart *) ret; } /// If the factory was unable to create the object, then create it here. return (new vtkMyInteractorStyleTrackballCameraOpenHeart); } virtual void OnChar(); virtual void OnMouseWheelForward(); virtual void OnMouseWheelBackward(); virtual void OnLeftButtonDown(); virtual void OnLeftButtonUp(); virtual void OnEnter(); virtual void OnLeave(); protected: vtkMyInteractorStyleTrackballCameraOpenHeart() : FlagFirstTime(0), Step(1), PadBound(0.2), FlagLeftClick(false) { for (int i=0; i<6; i++) { Bounds[i] = 0; Limits[i] = 0; } for (int i=0; i<3; i++) { PadSliceDetection[i] = 0; SpacingImg[i] = 0; OriginImg[i] = 0; LimitImg[i] = 0; } } ~vtkMyInteractorStyleTrackballCameraOpenHeart() {} OpenHeartGui *window; int FlagFirstTime; int Step; double Bounds[6]; double Limits[6]; double PadSliceDetection[3]; double SpacingImg[3]; double OriginImg[3]; double LimitImg[3]; double PadBound; bool FlagLeftClick; void MoveForward(); void MoveForwardXYPlan(); void MoveForwardXZPlan(); void MoveForwardYZPlan(); void MoveBackward(); void MoveBackwardXYPlan(); void MoveBackwardXZPlan(); void MoveBackwardYZPlan(); void GetPickerPosition(double *pos); bool IsInside(double *pos); }; #endif