#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; void SetInputConnection( vtkAlgorithmOutput* aout ); void SetInputImage( vtkImageData* data ); int AddBinaryConnection( vtkAlgorithmOutput* aout, const double& r, const double& g, const double& b ); int AddBinaryImage( vtkImageData* data, const double& r, const double& g, const double& b ); void Clear( ); vtkImageData* GetInputImage( ); const vtkImageData* GetInputImage( ) const; unsigned int GetNumberOfImages( ) const; void SetInterpolate( bool v ); void InterpolateOn( ); void InterpolateOff( ); void PushActorsInto( vtkRenderWindow* x, vtkRenderWindow* y, vtkRenderWindow* z, vtkRenderWindow* w ); void PopActorsFrom( vtkRenderWindow* x, vtkRenderWindow* y, vtkRenderWindow* z, vtkRenderWindow* w ); double GetMinWindow( ) const; double GetMaxWindow( ) const; double GetMinLevel( ) const; double GetMaxLevel( ) const; double GetWindow( ); double GetLevel( ); void SetWindow( double w ); void SetLevel( double l ); void SetWindowLevel( double w, double l ); void ResetWindowLevel( ); // Slice access int GetSliceNumber( const int& axis ) const; int GetSliceNumberMinValue( const int& axis ) const; int GetSliceNumberMaxValue( const int& axis ) const; void SetSliceNumber( const int& axis, const int& slice ); void SetSlice( const int& axis, double* pos ); void SetAxesCursor( const int& axis, double* pos ); // Rendering controls void Render( const int& axis ); void Render( ); void ResetCamera( const int& axis ); void ResetCameras( ); 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$