]> Creatis software - cpPlugins.git/blobdiff - lib/cpExtensions/Visualization/MPRActors.h
Double click widget integrated with segmentation and deformation filters.
[cpPlugins.git] / lib / cpExtensions / Visualization / MPRActors.h
index 8cdfe5a963c9abbdfae81ec36ab2316563d45794..5eb3a202003712441265a4aada24d5990166d98f 100644 (file)
 #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
   {
-    namespace Visualization
+    /**
+     */
+    class cpExtensions_EXPORT MPRActors
+      : public vtkPropCollection
     {
-      /**
-       */
-      class cpExtensions_EXPORT MPRActors
-        : public vtkPropCollection
-      {
-      public:
-        typedef MPRActors Self;
-
-      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 PopDataFrom(
-          vtkRenderer* x,
-          vtkRenderer* y,
-          vtkRenderer* z,
-          vtkRenderer* w
-          );
-
-        // Lookup table methods
-        vtkScalarsToColors* GetLookupTable( ) const;
-        void SetLookupTable( vtkScalarsToColors* lut );
-
-        // 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 );
-        void ResetWindowLevel( );
-
-        // Slice access
-        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( );
-
-        // General accessors 
-        void GetImageBounds( double bounds[ 6 ] ) const;
-
-      protected:
-        MPRActors( );
-        virtual ~MPRActors( );
-
-        vtkImageData* _InputImage( ) const;
-        void _UpdateSlices( );
-
-      private:
-        // Purposely not implemented
-        MPRActors( const Self& );
-        Self& operator=( const Self& );
-
-      protected:
-        vtkSmartPointer< vtkImageMapToColors > ImageMapToColors;
-        vtkSmartPointer< vtkActor >            ImageOutlineActor;
-
-        typedef
-          cpExtensions::Visualization::ImageSliceActors
-          _TSlice;
-        vtkSmartPointer< _TSlice > Slices[ 3 ];
-
-        unsigned int ImageOutlineActorIndex;
-      };
-
-    } // ecapseman
+    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 );
+
+    public:
+      // Creation
+      static MPRActors* New( );
+
+      ImageSliceActors* GetSliceActors( const int& i ) const;
+
+      int AddInputConnection( vtkAlgorithmOutput* aout );
+      int AddInputData( vtkImageData* new_image );
+      unsigned int GetNumberOfImages( ) const;
+
+      void PushActorsInto(
+        vtkRenderWindow* x,
+        vtkRenderWindow* y,
+        vtkRenderWindow* z,
+        vtkRenderWindow* w
+        );
+      void PopActorsFrom(
+        vtkRenderWindow* x,
+        vtkRenderWindow* y,
+        vtkRenderWindow* z,
+        vtkRenderWindow* w
+        );
+
+      double GetWindow( );
+      double GetLevel( );
+
+      // Slice access
+      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( );
+
+    protected:
+      MPRActors( );
+      virtual ~MPRActors( );
+
+      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
+      MPRActors( const Self& );
+      Self& operator=( const Self& );
+
+    protected:
+      vtkSmartPointer< vtkActor >         ImageOutlineActor;
+      vtkSmartPointer< ImageSliceActors > Slices[ 2 ][ 3 ];
+    };
+
+  } // ecapseman
 
 } // ecapseman