X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpExtensions%2FVisualization%2FImageSliceActors.h;h=b4cec90e6fec8e3c7a3c8f28b4eb74c49fb5b717;hb=e2fb8817731f6231d34941a208e46b36dad425b2;hp=8fff84881d01249d7283f281382366de4a7a510d;hpb=ce7d718b88d08f559ca8328b335c4fe8fbfb9b9a;p=cpPlugins.git diff --git a/lib/cpExtensions/Visualization/ImageSliceActors.h b/lib/cpExtensions/Visualization/ImageSliceActors.h index 8fff848..b4cec90 100644 --- a/lib/cpExtensions/Visualization/ImageSliceActors.h +++ b/lib/cpExtensions/Visualization/ImageSliceActors.h @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -51,6 +52,8 @@ namespace cpExtensions typedef void ( *TWindowLevelCommand )( double, double, void* ); typedef TVoidCommand TRenderCommand; + typedef cpExtensions::Visualization::ImageBlender TBlender; + public: vtkTypeMacro( ImageSliceActors, vtkPropCollection ); @@ -62,18 +65,23 @@ namespace cpExtensions // Creation static ImageSliceActors* New( ); - ImageBlender* GetBlender( ); - const ImageBlender* GetBlender( ) const; - void SetBlender( ImageBlender* blender ); void SetAxis( int axis ); - void AddInputConnection( vtkAlgorithmOutput* aout ); - void AddInputData( vtkImageData* data ); + 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( ); void AssociateSlice( Self* slice ); - vtkImageData* GetInputImage( unsigned int id ); - const vtkImageData* GetInputImage( unsigned int id ) const; + vtkImageData* GetInputImage( ); + const vtkImageData* GetInputImage( ) const; vtkInteractorStyle* GetStyle( ); const vtkInteractorStyle* GetStyle( ) const; @@ -81,8 +89,11 @@ namespace cpExtensions void PushActorsInto( vtkRenderWindow* window, bool force_style = true ); void PopActorsFrom( vtkRenderWindow* window ); unsigned int GetNumberOfImages( ) const; + vtkImageActor* GetImageActor( ); const vtkImageActor* GetImageActor( ) const; + vtkImageActor* GetBinaryActor( ); + const vtkImageActor* GetBinaryActor( ) const; vtkTextActor* GetTextActor( ); const vtkTextActor* GetTextActor( ) const; vtkActor* GetPlaneActor( ); @@ -100,6 +111,9 @@ namespace cpExtensions void ResetCursor( ); void SetCursor( double pos[ 3 ] ); + void ResetAxesCursor( ); + void SetAxesCursor( double pos[ 3 ] ); + double GetMinWindow( ) const; double GetMaxWindow( ) const; double GetMinLevel( ) const; @@ -121,7 +135,7 @@ namespace cpExtensions void UpdateText( double pos[ 3 ] ); void UpdateText( const double& w, const double& l ); - void Render( const double& t ); + void Render( ); void ResetCamera( ); protected: @@ -129,6 +143,10 @@ namespace cpExtensions virtual ~ImageSliceActors( ); void _ConfigureStyle( ); + void _ConfigureInputImage( ); + void _ConfigureBinaryImage( + const double& r, const double& g, const double& b + ); // Events static void _MouseMoveCommand( @@ -160,15 +178,25 @@ namespace cpExtensions Self& operator=( const Self& ); protected: + static double m_PlaneColors[ 3 ][ 3 ]; + vtkSmartPointer< TStyle > m_Style; vtkRenderWindow* m_Window; // Multiple actors - vtkSmartPointer< ImageBlender > m_ImageBlender; vtkSmartPointer< vtkImageSliceMapper > m_ImageMapper; vtkSmartPointer< vtkImageActor > m_ImageActor; + + vtkSmartPointer< vtkImageData > m_BlenderBase; + vtkSmartPointer< TBlender > m_Blender; + vtkSmartPointer< vtkImageSliceMapper > m_BlenderMapper; + vtkSmartPointer< vtkLookupTable > m_BlenderLUT; + vtkSmartPointer< vtkImageActor > m_BlenderActor; + bool m_Interpolate; + double m_WLRange[ 4 ]; + int m_VisibleExtent[ 6 ]; double m_VisibleBounds[ 6 ]; @@ -180,13 +208,13 @@ namespace cpExtensions vtkSmartPointer< vtkPolyDataMapper > m_CursorMapper; vtkSmartPointer< vtkActor > m_CursorActor; - vtkSmartPointer< vtkPolyData > m_HorizontalLine; - vtkSmartPointer< vtkPolyDataMapper > m_HorizontalLineMapper; - vtkSmartPointer< vtkActor > m_HorizontalLineActor; + vtkSmartPointer< vtkPolyData > m_Axis1; + vtkSmartPointer< vtkPolyDataMapper > m_Axis1Mapper; + vtkSmartPointer< vtkActor > m_Axis1Actor; - vtkSmartPointer< vtkPolyData > m_VerticalLine; - vtkSmartPointer< vtkPolyDataMapper > m_VerticalLineMapper; - vtkSmartPointer< vtkActor > m_VerticalLineActor; + vtkSmartPointer< vtkPolyData > m_Axis2; + vtkSmartPointer< vtkPolyDataMapper > m_Axis2Mapper; + vtkSmartPointer< vtkActor > m_Axis2Actor; vtkSmartPointer< vtkPolyData > m_Plane; vtkSmartPointer< vtkPolyDataMapper > m_PlaneMapper;