]> Creatis software - FrontAlgorithms.git/blobdiff - lib/fpa/VTK/ImageMPR.cxx
Some more debug... almost there
[FrontAlgorithms.git] / lib / fpa / VTK / ImageMPR.cxx
index b990900f17ef4a4cbfa04fc3347b8463745c53d2..fc5883e6f724aa0c307e4c47930bcba921ad7355 100644 (file)
@@ -2,58 +2,65 @@
 
 #include <vtkCommand.h>
 #include <vtkInteractorStyleSwitch.h>
-#include <vtkPickingManager.h>
 
-class vtkUpdateCallback
+#include <fpa/VTK/SeedWidgetCorrector.h>
+
+/**
+ */
+class fpa_VTK_InteractionModeCallback
   : public vtkCommand
 {
 public:
-  static vtkUpdateCallback *New()
+  static fpa_VTK_InteractionModeCallback* New( )
     {
-      return new vtkUpdateCallback;
+      return( new fpa_VTK_InteractionModeCallback );
     }
-  virtual void Execute(vtkObject *caller, unsigned long eventId, void*
-                       arguments)
+  virtual void Execute(
+    vtkObject* caller, unsigned long eventId, void* arguments )
     {
-      vtkRenderWindowInteractor* iren = 
-        static_cast< vtkRenderWindowInteractor* >( caller );
-      if( caller == NULL )
-        return;
-
-      switch( iren->GetKeyCode( ) )
+      if( eventId == vtkCommand::KeyPressEvent )
       {
-      case 'x':
-      case 'X':
-      {
-        bool eSeed = ( this->SeedWidget->GetProcessEvents( ) == 1 );
-        if( eSeed )
+        vtkRenderWindowInteractor* iren = 
+          static_cast< vtkRenderWindowInteractor* >( caller );
+        if( caller == NULL )
+          return;
+
+        switch( iren->GetKeyCode( ) )
         {
-          this->SeedWidget->ProcessEventsOff( );
-          this->WidgetX->InteractionOn( );
-          this->WidgetY->InteractionOn( );
-          this->WidgetZ->InteractionOn( );
-        }
-        else
+        case 'x':
+        case 'X':
         {
-          this->SeedWidget->ProcessEventsOn( );
-          this->WidgetX->InteractionOff( );
-          this->WidgetY->InteractionOff( );
-          this->WidgetZ->InteractionOff( );
-
-        } // fi
-      }
-      break;
-      default:
+          bool eSeed = ( this->SeedWidget->GetProcessEvents( ) == 1 );
+          if( eSeed )
+          {
+            this->SeedWidget->ProcessEventsOff( );
+            this->WidgetX->InteractionOn( );
+            this->WidgetY->InteractionOn( );
+            this->WidgetZ->InteractionOn( );
+          }
+          else
+          {
+            this->SeedWidget->ProcessEventsOn( );
+            this->WidgetX->InteractionOff( );
+            this->WidgetY->InteractionOff( );
+            this->WidgetZ->InteractionOff( );
+
+          } // fi
+        }
         break;
+        default:
+          break;
+
+        } // hctiws
 
-      } // hctiws
+      } // fi
     }
 
 public:
   vtkImagePlaneWidget* WidgetX;
   vtkImagePlaneWidget* WidgetY;
   vtkImagePlaneWidget* WidgetZ;
-  vtkSeedWidget2*       SeedWidget;
+  vtkSeedWidget*       SeedWidget;
 };
 
 // -------------------------------------------------------------------------
@@ -70,40 +77,36 @@ ImageMPR( )
   this->m_Renderer = vtkSmartPointer< vtkRenderer >::New( );
   this->m_Window = vtkSmartPointer< vtkRenderWindow >::New( );
   this->m_Interactor = vtkSmartPointer< vtkRenderWindowInteractor >::New( );
+  this->m_SeedHandleRepresentation =
+    vtkSmartPointer< vtkPointHandleRepresentation3D >::New( );
+  this->m_SeedRepresentation =
+    vtkSmartPointer< vtkSeedRepresentation >::New( );
+  this->m_SeedWidget = vtkSmartPointer<vtkSeedWidget>::New();
 
-
-
-
-
-
-  handlePointRep3D =
-    vtkSmartPointer<vtkPointHandleRepresentation3D>::New();
-  //handlePointRep3D->AllOn();
-  handlePointRep3D->GetProperty()->SetColor(1.,0.,1.);
-  seedRep =
-    vtkSmartPointer<vtkSeedRepresentation>::New();
-  seedRep->SetHandleRepresentation(handlePointRep3D);
-  seedWidget = vtkSmartPointer<vtkSeedWidget2>::New();
-
-  seedWidget->SetRepresentation(seedRep);
+  this->m_SeedHandleRepresentation->GetProperty()->SetColor( 1, 0, 1 );
+  this->m_SeedRepresentation->
+    SetHandleRepresentation( this->m_SeedHandleRepresentation );
+  this->m_SeedWidget->SetRepresentation( this->m_SeedRepresentation );
 
   this->m_WidgetX->KeyPressActivationOff( );
   this->m_WidgetY->KeyPressActivationOff( );
   this->m_WidgetZ->KeyPressActivationOff( );
-  seedWidget->KeyPressActivationOff( );
-
-  // this->m_Interactor->GetPickingManager( )->AddPicker( this->m_Picker );
-
-
-  vtkUpdateCallback* onUpdate = vtkUpdateCallback::New();
-  onUpdate->WidgetX = this->m_WidgetX;
-  onUpdate->WidgetY = this->m_WidgetY;
-  onUpdate->WidgetZ = this->m_WidgetZ;
-  onUpdate->SeedWidget = this->seedWidget;
-
-  this->m_Interactor->AddObserver(vtkCommand::KeyPressEvent, onUpdate);
+  this->m_SeedWidget->KeyPressActivationOff( );
+
+  vtkSmartPointer< fpa_VTK_InteractionModeCallback > int_cb =
+    vtkSmartPointer< fpa_VTK_InteractionModeCallback >::New( );
+  int_cb->WidgetX = this->m_WidgetX;
+  int_cb->WidgetY = this->m_WidgetY;
+  int_cb->WidgetZ = this->m_WidgetZ;
+  int_cb->SeedWidget = this->m_SeedWidget;
+  this->m_Interactor->AddObserver( vtkCommand::KeyPressEvent, int_cb );
+
+  vtkSmartPointer< fpa::VTK::SeedWidgetCorrector > corr_cb =
+    vtkSmartPointer< fpa::VTK::SeedWidgetCorrector >::New( );
+  corr_cb->Configure( this->m_Picker );
+  this->m_SeedWidget->AddObserver( vtkCommand::PlacePointEvent, corr_cb );
 }
-    
+
 // -------------------------------------------------------------------------
 fpa::VTK::ImageMPR::
 ~ImageMPR( )
@@ -181,16 +184,18 @@ SetImage( vtkImageData* image )
   this->m_WidgetX->SetInteractor( this->m_Interactor );
   this->m_WidgetY->SetInteractor( this->m_Interactor );
   this->m_WidgetZ->SetInteractor( this->m_Interactor );
-  seedWidget->SetInteractor(this->m_Interactor);
+  this->m_SeedWidget->SetInteractor( this->m_Interactor );
 
   this->m_WidgetX->On( );
   this->m_WidgetY->On( );
   this->m_WidgetZ->On( );
-  seedWidget->On( );
-  seedWidget->ProcessEventsOff( );
+  this->m_SeedWidget->On( );
+  this->m_SeedWidget->ProcessEventsOff( );
   this->m_Interactor->SetPicker( this->m_Picker );
-  this->m_Interactor->GetPickingManager( )->AddPicker( this->m_Picker );
-  this->m_Interactor->GetPickingManager( )->EnabledOn( );
+  /*
+    this->m_Interactor->GetPickingManager( )->AddPicker( this->m_Picker );
+    this->m_Interactor->GetPickingManager( )->EnabledOn( );
+  */
 }
 
 // -------------------------------------------------------------------------
@@ -223,6 +228,27 @@ AddPolyData( vtkPolyData* pd, double r, double g, double b )
   this->m_Renderer->AddActor( this->m_Actors[ i ] );
 }
 
+// -------------------------------------------------------------------------
+unsigned int fpa::VTK::ImageMPR::
+GetNumberOfSeeds( ) const
+{
+  return( this->m_SeedRepresentation->GetNumberOfSeeds( ) );
+}
+
+// -------------------------------------------------------------------------
+void fpa::VTK::ImageMPR::
+GetSeed( int n, double* s ) const
+{
+  vtkHandleWidget* hWdg = this->m_SeedWidget->GetSeed( n );
+  if( hWdg == NULL )
+    return;
+  vtkHandleRepresentation* hRep =
+    dynamic_cast< vtkHandleRepresentation* >( hWdg->GetRepresentation( ) );
+  if( hRep == NULL )
+    return;
+  hRep->GetWorldPosition( s );
+}
+
 // -------------------------------------------------------------------------
 vtkRenderWindow* fpa::VTK::ImageMPR::
 GetWindow( ) const