#ifndef __CPPLUGINS__EXTENSIONS__VISUALIZATION__IMAGEINTERACTORSTYLE__H__ #define __CPPLUGINS__EXTENSIONS__VISUALIZATION__IMAGEINTERACTORSTYLE__H__ #include #include #include #include /* TODO #include #include #include #include class vtkImageData; */ namespace cpPlugins { namespace Extensions { namespace Visualization { class ImageSliceActors; class MPRActors; /** */ class ImageInteractorStyle : public vtkInteractorStyleImage { public: typedef ImageInteractorStyle Self; enum InteractionMode { NavigationMode = 0, DeformationMode }; public: vtkTypeMacro( ImageInteractorStyle, vtkInteractorStyleImage ); public: static Self* New( ); void Configure( ImageSliceActors* slice_actors, MPRActors* mpr_actors = NULL ); void SetModeToNavigation( ); void SetModeToDeformation( ); virtual void SetInteractor( vtkRenderWindowInteractor* interactor, const int& axis ); // Description: // Event bindings controlling the effects of pressing mouse buttons // or moving the mouse. virtual void OnMouseMove( ); virtual void OnLeftButtonDown( ); virtual void OnLeftButtonUp( ); virtual void OnMiddleButtonDown( ); virtual void OnMiddleButtonUp( ); virtual void OnRightButtonDown( ); virtual void OnRightButtonUp( ); virtual void OnMouseWheelForward( ); virtual void OnMouseWheelBackward( ); // Description: // Override the "fly-to" (f keypress) for images. virtual void OnChar( ); // These methods for the different interactions in different modes // are overridden in subclasses to perform the correct motion. Since // they might be called from OnTimer, they do not have mouse coord // parameters (use interactor's GetEventPosition and // GetLastEventPosition) virtual void Rotate( ); virtual void Pan( ); virtual void Spin( ); virtual void Zoom( ); virtual void WindowLevel( ); virtual void Pick( ); virtual void Slice( ); // Interaction mode entry points used internally. virtual void StartWindowLevel( ); virtual void EndWindowLevel( ); virtual void StartPick( ); virtual void EndPick( ); virtual void StartSlice( ); virtual void EndSlice( ); protected: ImageInteractorStyle( ); virtual ~ImageInteractorStyle( ); bool _PickPosition( double pos[ 3 ] ); void _UpdateCursor( ); private: // Purposely not implemented ImageInteractorStyle( const Self& ); Self& operator=( const Self& ); protected: Self::InteractionMode Mode; ImageSliceActors* m_SliceActors; MPRActors* m_MPRActors; vtkSmartPointer< vtkOrientationMarkerWidget > OrientationWidget; vtkSmartPointer< vtkPropPicker > PropPicker; public: static const int SliceEvent; }; } // ecapseman } // ecapseman } // ecapseman #endif // __CPPLUGINS__EXTENSIONS__VISUALIZATION__IMAGEINTERACTORSTYLE__H__ // eof - $RCSfile$