]> Creatis software - cpPlugins.git/blobdiff - lib/cpExtensions/Visualization/MPRActors.h
...
[cpPlugins.git] / lib / cpExtensions / Visualization / MPRActors.h
index c8718a31b231cb3f9505fb55f099ec504bdf7d3f..91c0b5089d9e19eca6b90ba7a6bda710ae1f0be2 100644 (file)
@@ -4,17 +4,6 @@
 #include <cpExtensions/cpExtensions_Export.h>
 #include <cpExtensions/Visualization/ImageSliceActors.h>
 
-#include <vtkActor.h>
-#include <vtkImageMapToColors.h>
-
-// -------------------------------------------------------------------------
-class vtkAlgorithmOutput;
-class vtkImageData;
-class vtkRenderer;
-class vtkScalarsToColors;
-class vtkWindowLevelLookupTable;
-
-// -------------------------------------------------------------------------
 namespace cpExtensions
 {
   namespace Visualization
@@ -27,67 +16,98 @@ namespace cpExtensions
     public:
       typedef MPRActors Self;
 
+      typedef ImageSliceActors::TStyle                   TStyle;
+      typedef ImageSliceActors::TMouseCommand            TMouseCommand;
+      typedef ImageSliceActors::TMouseWheelCommand       TMouseWheelCommand;
+      typedef ImageSliceActors::TKeyCommand              TKeyCommand;
+      typedef ImageSliceActors::TVoidCommand             TVoidCommand;
+      typedef ImageSliceActors::TMouseMoveCommand        TMouseMoveCommand;
+      typedef ImageSliceActors::TMouseClickCommand       TMouseClickCommand;
+      typedef ImageSliceActors::TMouseDoubleClickCommand TMouseDoubleClickCommand;
+      typedef ImageSliceActors::TExposeCommand           TExposeCommand;
+      typedef ImageSliceActors::TConfigureCommand        TConfigureCommand;
+      typedef ImageSliceActors::TEnterCommand            TEnterCommand;
+      typedef ImageSliceActors::TLeaveCommand            TLeaveCommand;
+
     public:
       vtkTypeMacro( MPRActors, vtkPropCollection );
 
-      cpPlugins_ImageSliceActors( ImageOutline, vtkImageActor );
-
     public:
       // Creation
       static MPRActors* New( );
 
       ImageSliceActors* GetSliceActors( const int& i ) const;
-      void SetInputConnection( vtkAlgorithmOutput* aout );
-      void SetInputData( vtkImageData* image );
 
-      void PushDataInto(
-        vtkRenderer* x,
-        vtkRenderer* y,
-        vtkRenderer* z,
-        vtkRenderer* w
+      void SetInputConnection( vtkAlgorithmOutput* aout );
+      void SetInputImage( vtkImageData* data );
+      int AddBinaryConnection(
+        vtkAlgorithmOutput* aout,
+        const double& r, const double& g, const double& b
         );
-      void PopDataFrom(
-        vtkRenderer* x,
-        vtkRenderer* y,
-        vtkRenderer* z,
-        vtkRenderer* w
+      int AddBinaryImage(
+        vtkImageData* data,
+        const double& r, const double& g, const double& b
         );
+      void Clear( );
+
+      vtkImageData* GetInputImage( );
+      const vtkImageData* GetInputImage( ) const;
+
+      unsigned int GetNumberOfImages( ) const;
 
-      // Lookup table methods
-      vtkScalarsToColors* GetLookupTable( ) const;
-      void SetLookupTable( vtkScalarsToColors* lut );
+      void SetInterpolate( bool v );
+      void InterpolateOn( );
+      void InterpolateOff( );
+
+      void PushActorsInto(
+        vtkRenderWindow* x,
+        vtkRenderWindow* y,
+        vtkRenderWindow* z,
+        vtkRenderWindow* w
+        );
+      void PopActorsFrom(
+        vtkRenderWindow* x,
+        vtkRenderWindow* y,
+        vtkRenderWindow* z,
+        vtkRenderWindow* w
+        );
 
-      // Grayscale window/level lookup
-      vtkWindowLevelLookupTable* GetLookupTableAsWindowLevel( ) const;
-      void SetLookupTableToWindowLevel( );
       double GetMinWindow( ) const;
       double GetMaxWindow( ) const;
       double GetMinLevel( ) const;
       double GetMaxLevel( ) const;
-      double GetWindow( ) const;
-      double GetLevel( ) const;
-      void SetWindow( const double& w );
-      void SetLevel( const double& l );
-      void SetWindowLevel( const double& w, const double& l );
+      double GetWindow( );
+      double GetLevel( );
+      void SetWindow( double w );
+      void SetLevel( double l );
+      void SetWindowLevel( double w, double l );
       void ResetWindowLevel( );
 
       // Slice access
+      int GetSliceNumber( const int& axis ) const;
       int GetSliceNumberMinValue( const int& axis ) const;
       int GetSliceNumberMaxValue( const int& axis ) const;
-      int GetSlice( const int& axis ) const;
-      void SetSlice( const int& axis, const int& slice );
-      void SetSlice( const int& axis, const double& slice );
-      void ResetSlices( );
+      void SetSliceNumber( const int& axis, const int& slice );
+      void SetSlice( const int& axis, double* pos );
+      void SetAxesCursor( const int& axis, double* pos );
 
-      // General accessors
-      void GetImageBounds( double bounds[ 6 ] ) const;
+      // Rendering controls
+      void Render( const int& axis );
+      void Render( );
+      void ResetCamera( const int& axis );
+      void ResetCameras( );
 
     protected:
       MPRActors( );
       virtual ~MPRActors( );
 
-      vtkImageData* _InputImage( ) const;
-      void _UpdateSlices( );
+      void _CreateBoundingBox( );
+
+      static void _SlicesCommand( double* pos, int axis, void* data );
+      static void _WindowLevelCommand(
+        double window, double level, void* data
+        );
+      static void _RenderCommand( void* data );
 
     private:
       // Purposely not implemented
@@ -95,15 +115,8 @@ namespace cpExtensions
       Self& operator=( const Self& );
 
     protected:
-      vtkSmartPointer< vtkImageMapToColors > ImageMapToColors;
-      vtkSmartPointer< vtkActor >            ImageOutlineActor;
-
-      typedef
-        cpExtensions::Visualization::ImageSliceActors
-        _TSlice;
-      vtkSmartPointer< _TSlice > Slices[ 2 ][ 3 ];
-
-      unsigned int ImageOutlineActorIndex;
+      vtkSmartPointer< vtkActor >         ImageOutlineActor;
+      vtkSmartPointer< ImageSliceActors > Slices[ 2 ][ 3 ];
     };
 
   } // ecapseman