]> Creatis software - cpPlugins.git/blobdiff - lib/cpExtensions/Visualization/MPRObjects.h
...
[cpPlugins.git] / lib / cpExtensions / Visualization / MPRObjects.h
index 1a8135012044c928cd02d9af8171e60a879597b1..c800fc1ce626b11602c066f54a10b7ed363341f3 100644 (file)
@@ -3,12 +3,18 @@
 
 #include <cpExtensions/cpExtensions_Export.h>
 #include <cpExtensions/Visualization/MPRActors.h>
-#include <cpExtensions/Visualization/ImageInteractorStyle.h>
 
 #include <vtkObject.h>
 #include <vtkRenderer.h>
 #include <vtkRenderWindow.h>
 
+// -------------------------------------------------------------------------
+#define cpExtensions_MPRObjects_Renderer( DIR )                         \
+  inline vtkRenderer* Get##DIR##Renderer( )                             \
+  { return( this->m_Renderers[ Self::MPRDirections_##DIR ] ); }         \
+  inline const vtkRenderer* Get##DIR##Renderer( ) const                 \
+  { return( this->m_Renderers[ Self::MPRDirections_##DIR ] ); }
+
 namespace cpExtensions
 {
   namespace Visualization
@@ -20,36 +26,89 @@ namespace cpExtensions
     {
     public:
       typedef MPRObjects Self;
-      typedef cpExtensions::Visualization::MPRActors            TMPRActors;
-      typedef cpExtensions::Visualization::ImageInteractorStyle TStyle;
+
+      typedef MPRActors::TStyle                   TStyle;
+      typedef MPRActors::TMouseCommand            TMouseCommand;
+      typedef MPRActors::TMouseWheelCommand       TMouseWheelCommand;
+      typedef MPRActors::TKeyCommand              TKeyCommand;
+      typedef MPRActors::TVoidCommand             TVoidCommand;
+      typedef MPRActors::TMouseMoveCommand        TMouseMoveCommand;
+      typedef MPRActors::TMouseClickCommand       TMouseClickCommand;
+      typedef MPRActors::TMouseDoubleClickCommand TMouseDoubleClickCommand;
+      typedef MPRActors::TExposeCommand           TExposeCommand;
+      typedef MPRActors::TConfigureCommand        TConfigureCommand;
+      typedef MPRActors::TEnterCommand            TEnterCommand;
+      typedef MPRActors::TLeaveCommand            TLeaveCommand;
+
+      enum MPRDirections
+      {
+        MPRDirections_X = 0,
+        MPRDirections_Y = 1,
+        MPRDirections_Z = 2,
+        MPRDirections_W = 3
+      };
 
     public:
       vtkTypeMacro( MPRObjects, vtkObject );
 
+      cpExtensions_MPRObjects_Renderer( X );
+      cpExtensions_MPRObjects_Renderer( Y );
+      cpExtensions_MPRObjects_Renderer( Z );
+      cpExtensions_MPRObjects_Renderer( W );
+
     public:
       // Creation
       static MPRObjects* New( );
 
+      // Association
       void SetRenderWindows(
-        vtkRenderWindow* wx, vtkRenderWindow* wy,
-        vtkRenderWindow* wz, vtkRenderWindow* w3D
+        vtkRenderWindow* x, vtkRenderWindow* y,
+        vtkRenderWindow* z, vtkRenderWindow* w
+        );
+
+      void SetInputConnection( vtkAlgorithmOutput* aout );
+      void SetInputImage( vtkImageData* data );
+      int AddBinaryConnection(
+        vtkAlgorithmOutput* aout,
+        const double& r, const double& g, const double& b
         );
-      void SetImage( vtkImageData* image );
-      void AddAuxiliaryImage( vtkImageData* image );
-      void ActivateInteractors( );
+      int AddBinaryImage(
+        vtkImageData* data,
+        const double& r, const double& g, const double& b
+        );
+      void Show( );
+      void Hide( );
+      void Clear( );
+
+      vtkImageData* GetInputImage( );
+      const vtkImageData* GetInputImage( ) const;
+      unsigned int GetNumberOfImages( ) const;
+
+      void SetInterpolate( bool v );
+      void InterpolateOn( );
+      void InterpolateOff( );
+
+      double GetMinWindow( ) const;
+      double GetMaxWindow( ) const;
+      double GetMinLevel( ) const;
+      double GetMaxLevel( ) const;
+      double GetWindow( ) const;
+      double GetLevel( ) const;
+      void SetWindow( double w );
+      void SetLevel( double l );
+      void SetWindowLevel( double w, double l );
+      void ResetWindowLevel( );
+
+      int GetSliceNumber( const int& axis ) const;
+      int GetSliceNumberMinValue( const int& axis ) const;
+      int GetSliceNumberMaxValue( const int& axis ) const;
+      void SetSliceNumber( const int& axis, const int& slice );
+      void SetSlice( const int& axis, double* pos );
 
-      void ResetCamera( const int& id );
+      void Render( const double& t );
+      void Render( const int& axis, const double& t );
+      void ResetCamera( const int& axis );
       void ResetCameras( );
-      void Render( const int& id );
-      void RenderAll( );
-      vtkRenderer* GetXRenderer( );
-      vtkRenderer* GetYRenderer( );
-      vtkRenderer* GetZRenderer( );
-      vtkRenderer* Get3DRenderer( );
-      const vtkRenderer* GetXRenderer( ) const;
-      const vtkRenderer* GetYRenderer( ) const;
-      const vtkRenderer* GetZRenderer( ) const;
-      const vtkRenderer* Get3DRenderer( ) const;
 
     protected:
       MPRObjects( );
@@ -65,9 +124,8 @@ namespace cpExtensions
       vtkSmartPointer< vtkRenderWindow > m_Windows[ 4 ];
 
       // Internal pipelines
-      vtkSmartPointer< TMPRActors >  m_MPRActors;
+      vtkSmartPointer< MPRActors >   m_MPRActors;
       vtkSmartPointer< vtkRenderer > m_Renderers[ 4 ];
-      vtkSmartPointer< TStyle >      m_Styles[ 3 ];
     };
 
   } // ecapseman