]> Creatis software - cpPlugins.git/blobdiff - lib/cpExtensions/Visualization/ImageSliceActors.h
...
[cpPlugins.git] / lib / cpExtensions / Visualization / ImageSliceActors.h
index 8fff84881d01249d7283f281382366de4a7a510d..b4cec90e6fec8e3c7a3c8f28b4eb74c49fb5b717 100644 (file)
@@ -7,6 +7,7 @@
 #include <vtkActor.h>
 #include <vtkImageActor.h>
 #include <vtkImageSliceMapper.h>
+#include <vtkLookupTable.h>
 #include <vtkPlane.h>
 #include <vtkPolyData.h>
 #include <vtkPolyDataMapper.h>
@@ -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;