#ifndef __CPEXTENSIONS__VISUALIZATION__MPRACTORS__H__ #define __CPEXTENSIONS__VISUALIZATION__MPRACTORS__H__ #include #include namespace cpExtensions { namespace Visualization { /** */ class cpExtensions_EXPORT MPRActors : public vtkPropCollection { public: typedef MPRActors Self; typedef ImageSliceActors::TStyle TStyle; typedef ImageSliceActors::TMouseCommand TMouseCommand; typedef ImageSliceActors::TMouseWheelCommand TMouseWheelCommand; typedef ImageSliceActors::TKeyCommand TKeyCommand; typedef ImageSliceActors::TVoidCommand TVoidCommand; typedef ImageSliceActors::TMouseMoveCommand TMouseMoveCommand; typedef ImageSliceActors::TMouseClickCommand TMouseClickCommand; typedef ImageSliceActors::TMouseDoubleClickCommand TMouseDoubleClickCommand; typedef ImageSliceActors::TExposeCommand TExposeCommand; typedef ImageSliceActors::TConfigureCommand TConfigureCommand; typedef ImageSliceActors::TEnterCommand TEnterCommand; typedef ImageSliceActors::TLeaveCommand TLeaveCommand; public: vtkTypeMacro( MPRActors, vtkPropCollection ); public: // Creation static MPRActors* New( ); ImageSliceActors* GetSliceActors( const int& i ) const; int AddInputConnection( vtkAlgorithmOutput* aout ); int AddInputData( vtkImageData* new_image ); unsigned int GetNumberOfImages( ) const; void PushActorsInto( vtkRenderWindow* x, vtkRenderWindow* y, vtkRenderWindow* z, vtkRenderWindow* w ); void PopActorsFrom( vtkRenderWindow* x, vtkRenderWindow* y, vtkRenderWindow* z, vtkRenderWindow* w ); double GetWindow( ); double GetLevel( ); // Slice access int GetSliceNumberMinValue( const int& axis ) const; int GetSliceNumberMaxValue( const int& axis ) const; int GetSlice( const int& axis ) const; void SetSlice( const int& axis, const int& slice ); void SetSlice( const int& axis, const double& slice ); void ResetSlices( ); protected: MPRActors( ); virtual ~MPRActors( ); void _CreateBoundingBox( ); static void _SlicesCommand( double* pos, int axis, void* data ); static void _WindowLevelCommand( double window, double level, void* data ); static void _RenderCommand( void* data ); private: // Purposely not implemented MPRActors( const Self& ); Self& operator=( const Self& ); protected: vtkSmartPointer< vtkActor > ImageOutlineActor; vtkSmartPointer< ImageSliceActors > Slices[ 2 ][ 3 ]; }; } // ecapseman } // ecapseman #endif // __CPEXTENSIONS__VISUALIZATION__MPRACTORS__H__ // eof - $RCSfile$