X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpExtensions%2FVisualization%2FImageSliceActors.h;h=091b7bcf89ce399cceabf473b48b6cac111fa671;hb=4f6c47b5d9994cd1bbb601bfe8bc087a0a619e72;hp=37aeac402cef79579d23b0bbab961fbb209b162c;hpb=506b27e2ea07cb34ba230b02eb6857b20cbf78b1;p=cpPlugins.git diff --git a/lib/cpExtensions/Visualization/ImageSliceActors.h b/lib/cpExtensions/Visualization/ImageSliceActors.h index 37aeac4..091b7bc 100644 --- a/lib/cpExtensions/Visualization/ImageSliceActors.h +++ b/lib/cpExtensions/Visualization/ImageSliceActors.h @@ -3,27 +3,19 @@ #include +#include +#include + #include #include #include +#include #include #include #include #include #include -// ------------------------------------------------------------------------- -#define cpPlugins_ImageSliceActors( name, type ) \ - inline type* Get##name##Actor( ) const \ - { \ - return( \ - dynamic_cast< type* >( \ - const_cast< Self* >( this )-> \ - GetItemAsObject( this->name##ActorIndex ) \ - ) \ - ); \ - } - // ------------------------------------------------------------------------- class vtkAlgorithmOutput; class vtkImageData; @@ -44,16 +36,29 @@ namespace cpExtensions public: vtkTypeMacro( ImageSliceActors, vtkPropCollection ); - cpPlugins_ImageSliceActors( Image, vtkImageActor ); - cpPlugins_ImageSliceActors( Text, vtkTextActor ); - cpPlugins_ImageSliceActors( Plane, vtkActor ); - public: // Creation static ImageSliceActors* New( ); - void SetInputConnection( vtkAlgorithmOutput* aout, int axis ); - void SetInputData( vtkImageData* data, int axis ); + void AddInputConnection( vtkAlgorithmOutput* aout, int axis = 0 ); + void AddInputData( vtkImageData* data, int axis = 0 ); + void Clear( ); + + unsigned int GetNumberOfImageActors( ) const; + vtkImageActor* GetImageActor( unsigned int id ); + const vtkImageActor* GetImageActor( unsigned int id ) const; + vtkTextActor* GetTextActor( ); + const vtkTextActor* GetTextActor( ) const; + vtkActor* GetPlaneActor( ); + const vtkActor* GetPlaneActor( ) const; + vtkPlane* GetPlaneFunction( ); + const vtkPlane* GetPlaneFunction( ) const; + + void AddActor( vtkAlgorithm* algorithm, vtkActor* actor ); + + void SetInterpolate( bool v ); + void InterpolateOn( ); + void InterpolateOff( ); double* GetDisplayBounds( ) const; void GetDisplayBounds( double bounds[ 6 ] ) const; @@ -64,29 +69,33 @@ namespace cpExtensions int GetSliceNumberMaxValue( ) const; void SetSliceNumber( const int& slice ); void UpdateText( ); + void UpdateText( const double& w, const double& l ); protected: ImageSliceActors( ); virtual ~ImageSliceActors( ); + void _ConfigureNewInput( int axis ); + private: // Purposely not implemented ImageSliceActors( const Self& ); Self& operator=( const Self& ); protected: - vtkSmartPointer< vtkImageSliceMapper > SliceMapper; - vtkSmartPointer< vtkPolyData > PlaneSource; - vtkSmartPointer< vtkPolyDataMapper > PlaneMapper; - char TextBuffer[ 1024 ]; - - vtkSmartPointer< vtkImageActor > ImageActor; - vtkSmartPointer< vtkTextActor > TextActor; - vtkSmartPointer< vtkActor > PlaneActor; - - unsigned int ImageActorIndex; - unsigned int TextActorIndex; - unsigned int PlaneActorIndex; + // Multiple actors + std::vector< vtkSmartPointer< vtkImageSliceMapper > > SliceMappers; + std::vector< vtkSmartPointer< vtkImageActor > > ImageActors; + std::vector< std::pair< vtkSmartPointer< vtkAlgorithm >, vtkSmartPointer< vtkActor > > > OtherActors; + bool Interpolate; + + // Unique objects + vtkSmartPointer< vtkPlane > PlaneFunction; + vtkSmartPointer< vtkPolyData > PlaneSource; + vtkSmartPointer< vtkPolyDataMapper > PlaneMapper; + char TextBuffer[ 1024 ]; + vtkSmartPointer< vtkTextActor > TextActor; + vtkSmartPointer< vtkActor > PlaneActor; }; } // ecapseman