#ifndef __CPEXTENSIONS__VISUALIZATION__MPRACTORS__H__ #define __CPEXTENSIONS__VISUALIZATION__MPRACTORS__H__ #include #include #include namespace cpExtensions { namespace Visualization { /** */ class cpExtensions_EXPORT MPRActors : public vtkPropCollection { public: typedef MPRActors Self; typedef ImageSliceActors::TCursorCommand TCursorCommand; typedef ImageSliceActors::TMouseCommand TMouseCommand; typedef ImageSliceActors::TMouseWheelCommand TMouseWheelCommand; typedef ImageSliceActors::TKeyCommand TKeyCommand; public: vtkTypeMacro( MPRActors, vtkPropCollection ); public: // Creation static MPRActors* New( ); void AddCursorCommand( TCursorCommand command, void* data ) { this->Slices[ 0 ][ 0 ]->AddSlicesCommand( command, data ); this->Slices[ 0 ][ 1 ]->AddSlicesCommand( command, data ); this->Slices[ 0 ][ 2 ]->AddSlicesCommand( command, data ); } 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 ); // Color lookup table void SetLookupTableAsColor( unsigned int i, double r, double g, double b ); double GetWindow( ) { return( this->Slices[ 0 ][ 0 ]->GetWindow( ) ); } double GetLevel( ) { return( this->Slices[ 0 ][ 0 ]->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( ); vtkImageData* _Image( unsigned int i ) const; void _Update( unsigned int i ); static void _SetSlices( double* pos, int axis, void* data ); private: // Purposely not implemented MPRActors( const Self& ); Self& operator=( const Self& ); protected: vtkSmartPointer< vtkActor > ImageOutlineActor; vtkSmartPointer< ImageSliceActors > Slices[ 2 ][ 3 ]; std::vector< TCursorCommand > CursorCommands; std::vector< TMouseCommand > MouseCommands; std::vector< TMouseCommand > MouseClickCommands; std::vector< TMouseCommand > MouseDoubleClickCommands; std::vector< TMouseWheelCommand > MouseWheelCommands; std::vector< TKeyCommand > KeyCommands; }; } // ecapseman } // ecapseman #endif // __CPEXTENSIONS__VISUALIZATION__MPRACTORS__H__ // eof - $RCSfile$