X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpExtensions%2FVisualization%2FImageSliceActors.h;h=b4cec90e6fec8e3c7a3c8f28b4eb74c49fb5b717;hb=e2fb8817731f6231d34941a208e46b36dad425b2;hp=e086901c32044dd6164e05fac6fe91d9911b6a44;hpb=8e5fd31fd4d280781d8bc27a799361bf9c30b1d4;p=cpPlugins.git diff --git a/lib/cpExtensions/Visualization/ImageSliceActors.h b/lib/cpExtensions/Visualization/ImageSliceActors.h index e086901..b4cec90 100644 --- a/lib/cpExtensions/Visualization/ImageSliceActors.h +++ b/lib/cpExtensions/Visualization/ImageSliceActors.h @@ -3,14 +3,11 @@ #include -#include -#include - #include #include #include -#include #include +#include #include #include #include @@ -18,6 +15,7 @@ #include #include +#include // ------------------------------------------------------------------------- class vtkAlgorithmOutput; @@ -54,6 +52,8 @@ namespace cpExtensions typedef void ( *TWindowLevelCommand )( double, double, void* ); typedef TVoidCommand TRenderCommand; + typedef cpExtensions::Visualization::ImageBlender TBlender; + public: vtkTypeMacro( ImageSliceActors, vtkPropCollection ); @@ -65,23 +65,35 @@ namespace cpExtensions // Creation static ImageSliceActors* New( ); - void AddInputConnection( vtkAlgorithmOutput* aout, int axis = 2 ); - void AddInputData( vtkImageData* data, int axis = 2 ); + void SetAxis( int axis ); + 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; void PushActorsInto( vtkRenderWindow* window, bool force_style = true ); void PopActorsFrom( vtkRenderWindow* window ); - unsigned int GetNumberOfImageActors( ) const; - vtkImageActor* GetImageActor( unsigned int id ); - const vtkImageActor* GetImageActor( unsigned int id ) const; + unsigned int GetNumberOfImages( ) const; + + vtkImageActor* GetImageActor( ); + const vtkImageActor* GetImageActor( ) const; + vtkImageActor* GetBinaryActor( ); + const vtkImageActor* GetBinaryActor( ) const; vtkTextActor* GetTextActor( ); const vtkTextActor* GetTextActor( ) const; vtkActor* GetPlaneActor( ); @@ -99,8 +111,8 @@ namespace cpExtensions void ResetCursor( ); void SetCursor( double pos[ 3 ] ); - vtkImageMapToColors* GetImageMap( unsigned int id ); - const vtkImageMapToColors* GetImageMap( unsigned int id ) const; + void ResetAxesCursor( ); + void SetAxesCursor( double pos[ 3 ] ); double GetMinWindow( ) const; double GetMaxWindow( ) const; @@ -113,11 +125,6 @@ namespace cpExtensions void SetWindowLevel( double w, double l ); void ResetWindowLevel( ); - void SetLookupTable( unsigned int id, vtkLookupTable* lut ); - void SetLookupTableAsColor( - unsigned int id, double r, double g, double b - ); - int GetAxis( ) const; int GetSliceNumber( ) const; int GetSliceNumberMinValue( ) const; @@ -128,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: @@ -136,8 +143,10 @@ namespace cpExtensions virtual ~ImageSliceActors( ); void _ConfigureStyle( ); - void _ConfigureNewLUT( vtkImageData* data ); - void _ConfigureNewInput( int axis ); + void _ConfigureInputImage( ); + void _ConfigureBinaryImage( + const double& r, const double& g, const double& b + ); // Events static void _MouseMoveCommand( @@ -169,37 +178,43 @@ namespace cpExtensions Self& operator=( const Self& ); protected: + static double m_PlaneColors[ 3 ][ 3 ]; + vtkSmartPointer< TStyle > m_Style; vtkRenderWindow* m_Window; // Multiple actors - std::vector< vtkSmartPointer< vtkImageMapToColors > > m_ImageMaps; - std::vector< vtkSmartPointer< vtkImageSliceMapper > > m_SliceMappers; - std::vector< vtkSmartPointer< vtkImageActor > > m_ImageActors; + 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 ]; // Associated slices std::vector< Self* > m_AssociatedSlices; - // Window-Level values - double m_MinWindow, m_MaxWindow; - double m_MinLevel, m_MaxLevel; - // Unique objects vtkSmartPointer< vtkPolyData > m_Cursor; 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;