X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpExtensions%2FVisualization%2FImageSliceActors.h;h=b4cec90e6fec8e3c7a3c8f28b4eb74c49fb5b717;hb=73332fee95f5410c46e3b0cff1e2755d5e4a8b71;hp=ae5b35251a75980197d58c84aa62d53a130834f9;hpb=2e9a8218ec2792eb36b62731e2ae0c7dbb9ef436;p=cpPlugins.git diff --git a/lib/cpExtensions/Visualization/ImageSliceActors.h b/lib/cpExtensions/Visualization/ImageSliceActors.h index ae5b352..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 @@ -14,6 +15,7 @@ #include #include +#include // ------------------------------------------------------------------------- class vtkAlgorithmOutput; @@ -50,6 +52,8 @@ namespace cpExtensions typedef void ( *TWindowLevelCommand )( double, double, void* ); typedef TVoidCommand TRenderCommand; + typedef cpExtensions::Visualization::ImageBlender TBlender; + public: vtkTypeMacro( ImageSliceActors, vtkPropCollection ); @@ -62,8 +66,16 @@ namespace cpExtensions static ImageSliceActors* New( ); 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 ); @@ -77,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( ); @@ -96,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; @@ -117,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: @@ -125,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( @@ -156,12 +178,21 @@ namespace cpExtensions Self& operator=( const Self& ); protected: + static double m_PlaneColors[ 3 ][ 3 ]; + vtkSmartPointer< TStyle > m_Style; vtkRenderWindow* m_Window; // Multiple actors 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 ]; @@ -177,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;