]> Creatis software - cpPlugins.git/blobdiff - lib/cpExtensions/Visualization/MPRActors.h
sphere widget done, finally
[cpPlugins.git] / lib / cpExtensions / Visualization / MPRActors.h
index ac49dc6d2f417f7d8cd3a9cedf2bcbf3c5b84482..5eb3a202003712441265a4aada24d5990166d98f 100644 (file)
@@ -1,26 +1,9 @@
 #ifndef __CPEXTENSIONS__VISUALIZATION__MPRACTORS__H__
 #define __CPEXTENSIONS__VISUALIZATION__MPRACTORS__H__
 
-#include <vector>
-
 #include <cpExtensions/cpExtensions_Export.h>
 #include <cpExtensions/Visualization/ImageSliceActors.h>
 
-/*
-#include <vtkSmartPointer.h>
-#include <vtkActor.h>
-#include <vtkImageMapToColors.h>
-*/
-
-// -------------------------------------------------------------------------
-/*
-class vtkAlgorithmOutput;
-class vtkImageData;
-class vtkRenderer;
-class vtkScalarsToColors;
-*/
-
-// -------------------------------------------------------------------------
 namespace cpExtensions
 {
   namespace Visualization
@@ -33,6 +16,19 @@ 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 );
 
@@ -42,14 +38,9 @@ namespace cpExtensions
 
       ImageSliceActors* GetSliceActors( const int& i ) const;
 
-      int AddInputConnection(
-        vtkAlgorithmOutput* aout,
-        ImageSliceActors::LUTType lut = ImageSliceActors::LUTType_WindowLevel
-        );
-      int AddInputData(
-        vtkImageData* image,
-        ImageSliceActors::LUTType lut = ImageSliceActors::LUTType_WindowLevel
-        );
+      int AddInputConnection( vtkAlgorithmOutput* aout );
+      int AddInputData( vtkImageData* new_image );
+      unsigned int GetNumberOfImages( ) const;
 
       void PushActorsInto(
         vtkRenderWindow* x,
@@ -57,37 +48,15 @@ namespace cpExtensions
         vtkRenderWindow* z,
         vtkRenderWindow* w
         );
-      void PopDataFrom(
-        vtkRenderer* x,
-        vtkRenderer* y,
-        vtkRenderer* z,
-        vtkRenderer* w
+      void PopActorsFrom(
+        vtkRenderWindow* x,
+        vtkRenderWindow* y,
+        vtkRenderWindow* z,
+        vtkRenderWindow* w
         );
 
-      // Lookup table methods
-      void SetLookupTable( unsigned int i, vtkScalarsToColors* lut );
-      vtkScalarsToColors* GetLookupTable( unsigned int i ) const;
-
-      // Grayscale window/level lookup
-      void SetLookupTableToWindowLevel( unsigned int i );
-      double GetMinWindow( unsigned int i ) const;
-      double GetMaxWindow( unsigned int i ) const;
-      double GetMinLevel( unsigned int i ) const;
-      double GetMaxLevel( unsigned int i ) const;
-      double GetWindow( unsigned int i ) const;
-      double GetLevel( unsigned int i ) const;
-      void SetWindow( unsigned int i, const double& w );
-      void SetLevel( unsigned int i, const double& l );
-      void SetWindowLevel( unsigned int i, const double& w, const double& l );
-      void ResetWindowLevel( unsigned int i );
-
-      // Color lookup table
-      void SetLookupTableToColor(
-        unsigned int i,
-        const double& r = double( 1 ),
-        const double& g = double( 0 ),
-        const double& b = double( 0 )
-        );
+      double GetWindow( );
+      double GetLevel( );
 
       // Slice access
       int GetSliceNumberMinValue( const int& axis ) const;
@@ -101,8 +70,13 @@ namespace cpExtensions
       MPRActors( );
       virtual ~MPRActors( );
 
-      vtkImageData* _Image( unsigned int i ) const;
-      void _Update( unsigned int i );
+      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
@@ -110,7 +84,6 @@ namespace cpExtensions
       Self& operator=( const Self& );
 
     protected:
-      // TODO: std::vector< vtkSmartPointer< vtkImageMapToColors > > ImageMaps;
       vtkSmartPointer< vtkActor >         ImageOutlineActor;
       vtkSmartPointer< ImageSliceActors > Slices[ 2 ][ 3 ];
     };