]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Extensions/Visualization/MPRWithDifferentWindows.h
The beast is alive on MSWin!!!
[cpPlugins.git] / lib / cpPlugins / Extensions / Visualization / MPRWithDifferentWindows.h
index 152ea99ed6d41a7bca82691e232c99907bacac7b..ceff1ebcfefaa490891c21b355d69c5cd7f814a9 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,7 +61,9 @@ namespace cpPlugins
           );
         virtual ~MPRWithDifferentWindows( );
 
+
         void SetImage( vtkImageData* image );
+        void SetSegmentation( vtkImageData* image );
 
         void ResetCamera( const int& id );
         void ResetCameras( );