]> Creatis software - cpPlugins.git/blobdiff - lib/cpExtensions/Visualization/ImageSliceActors.h
Double click widget integrated with segmentation and deformation filters.
[cpPlugins.git] / lib / cpExtensions / Visualization / ImageSliceActors.h
index c5113ad725145ad6757d5e542ad78fc55d512334..8fff84881d01249d7283f281382366de4a7a510d 100644 (file)
@@ -3,13 +3,9 @@
 
 #include <cpExtensions/cpExtensions_Export.h>
 
-#include <map>
-#include <utility>
-
 #include <vtkSmartPointer.h>
 #include <vtkActor.h>
 #include <vtkImageActor.h>
-#include <vtkImageMapToColors.h>
 #include <vtkImageSliceMapper.h>
 #include <vtkPlane.h>
 #include <vtkPolyData.h>
@@ -18,6 +14,7 @@
 #include <vtkTextActor.h>
 
 #include <cpExtensions/Interaction/ImageInteractorStyle.h>
+#include <cpExtensions/Visualization/ImageBlender.h>
 
 // -------------------------------------------------------------------------
 class vtkAlgorithmOutput;
@@ -65,8 +62,12 @@ namespace cpExtensions
       // Creation
       static ImageSliceActors* New( );
 
-      void AddInputConnection( vtkAlgorithmOutput* aout, int axis = 2 );
-      void AddInputData( vtkImageData* data, int axis = 2 );
+      ImageBlender* GetBlender( );
+      const ImageBlender* GetBlender( ) const;
+      void SetBlender( ImageBlender* blender );
+      void SetAxis( int axis );
+      void AddInputConnection( vtkAlgorithmOutput* aout );
+      void AddInputData( vtkImageData* data );
       void Clear( );
 
       void AssociateSlice( Self* slice );
@@ -79,9 +80,9 @@ namespace cpExtensions
 
       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;
       vtkTextActor* GetTextActor( );
       const vtkTextActor* GetTextActor( ) const;
       vtkActor* GetPlaneActor( );
@@ -99,9 +100,6 @@ namespace cpExtensions
       void ResetCursor( );
       void SetCursor( double pos[ 3 ] );
 
-      vtkImageMapToColors* GetImageMap( unsigned int id );
-      const vtkImageMapToColors* GetImageMap( unsigned int id ) const;
-
       double GetMinWindow( ) const;
       double GetMaxWindow( ) const;
       double GetMinLevel( ) const;
@@ -113,11 +111,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;
@@ -136,8 +129,6 @@ namespace cpExtensions
       virtual ~ImageSliceActors( );
 
       void _ConfigureStyle( );
-      void _ConfigureNewLUT( vtkImageData* data );
-      void _ConfigureNewInput( int axis );
 
       // Events
       static void _MouseMoveCommand(
@@ -173,27 +164,36 @@ namespace cpExtensions
       vtkRenderWindow* m_Window;
 
       // Multiple actors
-      std::vector< vtkSmartPointer< vtkImageMapToColors > > m_ImageMaps;
-      std::vector< vtkSmartPointer< vtkImageSliceMapper > > m_SliceMappers;
-      std::vector< vtkSmartPointer< vtkImageActor > >       m_ImageActors;
+      vtkSmartPointer< ImageBlender >        m_ImageBlender;
+      vtkSmartPointer< vtkImageSliceMapper > m_ImageMapper;
+      vtkSmartPointer< vtkImageActor >       m_ImageActor;
       bool m_Interpolate;
 
+      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_VerticalLine;
+      vtkSmartPointer< vtkPolyDataMapper > m_VerticalLineMapper;
+      vtkSmartPointer< vtkActor >          m_VerticalLineActor;
+
       vtkSmartPointer< vtkPolyData >       m_Plane;
       vtkSmartPointer< vtkPolyDataMapper > m_PlaneMapper;
+      vtkSmartPointer< vtkActor >          m_PlaneActor;
+
       char                                 m_TextBuffer[ 1024 ];
       vtkSmartPointer< vtkTextActor >      m_TextActor;
-      vtkSmartPointer< vtkActor >          m_PlaneActor;
 
       double m_StartWindowLevelPos[ 3 ];
       double m_StartWindowLevel[ 2 ];