]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Extensions/Visualization/MPRWithDifferentWindows.h
Image visualization objects updated
[cpPlugins.git] / lib / cpPlugins / Extensions / Visualization / MPRWithDifferentWindows.h
index 6ac17e80112b9c8cda8bdb04512b4a207aaacde0..aef8ebd9c64f652f76eae99ccb3df12cabc15024 100644 (file)
@@ -3,12 +3,34 @@
 
 #include <cpPlugins/Extensions/Visualization/MPRActors.h>
 #include <cpPlugins/Extensions/Visualization/ImageInteractorStyle.h>
+#include <cpPlugins/Extensions/cpPlugins_Extensions_Export.h>
 
 #include <vtkImageData.h>
 #include <vtkRenderer.h>
 #include <vtkRenderWindow.h>
 #include <vtkSmartPointer.h>
 
+// -------------------------------------------------------------------------
+#define cpPlugins_MPRWithDifferentWindows_ObserverMacro( e )    \
+inline void Add##e##Observer( vtkCommand* observer )            \
+{                                                               \
+  for( int i = 0; i < 3; ++i )                                  \
+    if( this->m_Styles[ i ].GetPointer( ) != NULL )             \
+      this->m_Styles[ i ]->Add##e##Observer( observer );        \
+}                                                               \
+inline void Remove##e##Observer( vtkCommand* observer )         \
+{                                                               \
+  for( int i = 0; i < 3; ++i )                                  \
+    if( this->m_Styles[ i ].GetPointer( ) != NULL )             \
+      this->m_Styles[ i ]->Remove##e##Observer( observer );     \
+}                                                               \
+inline void Remove##e##Observers( )                             \
+{                                                               \
+  for( int i = 0; i < 3; ++i )                                  \
+    if( this->m_Styles[ i ].GetPointer( ) != NULL )             \
+      this->m_Styles[ i ]->Remove##e##Observers( );             \
+}
+
 namespace cpPlugins
 {
   namespace Extensions
@@ -17,7 +39,7 @@ namespace cpPlugins
     {
       /**
        */
-      class MPRWithDifferentWindows
+      class cpPlugins_Extensions_EXPORT MPRWithDifferentWindows
       {
       public:
         typedef cpPlugins::Extensions::Visualization::
@@ -25,6 +47,11 @@ namespace cpPlugins
         typedef cpPlugins::Extensions::Visualization::
         ImageInteractorStyle TStyle;
 
+      public:
+        cpPlugins_MPRWithDifferentWindows_ObserverMacro( DoubleClick );
+        cpPlugins_MPRWithDifferentWindows_ObserverMacro( Cursor );
+        cpPlugins_MPRWithDifferentWindows_ObserverMacro( Radius );
+
       public:
         MPRWithDifferentWindows(
           vtkRenderWindow* xWin = NULL,
@@ -34,18 +61,17 @@ namespace cpPlugins
           );
         virtual ~MPRWithDifferentWindows( );
 
-        void AddDoubleClickObserver( vtkCommand* observer );
-        void RemoveDoubleClickObserver( vtkCommand* observer );
-        void RemoveDoubleClickObservers( );
-
         void SetImage( vtkImageData* image );
-        void SetSegmentation( vtkImageData* image );
+        void SetModeToNavigation( );
+        void SetModeToDeformation( );
 
         void ResetCamera( const int& id );
         void ResetCameras( );
         void Render( const int& id );
         void RenderAll( );
 
+        void Add3DActor( vtkProp3D* prop );
+
       protected:
         // Inputs
         vtkRenderWindow* m_Windows[ 4 ];