]> Creatis software - FrontAlgorithms.git/blobdiff - lib/fpa/VTK/ImageMPR.cxx
Some tests... Package is unstable right nowgit status!
[FrontAlgorithms.git] / lib / fpa / VTK / ImageMPR.cxx
index d435bb8e515baa3449f60b51c818785c7d0ebb00..b990900f17ef4a4cbfa04fc3347b8463745c53d2 100644 (file)
@@ -1,13 +1,65 @@
 #include <fpa/VTK/ImageMPR.h>
 
+#include <vtkCommand.h>
 #include <vtkInteractorStyleSwitch.h>
+#include <vtkPickingManager.h>
+
+class vtkUpdateCallback
+  : public vtkCommand
+{
+public:
+  static vtkUpdateCallback *New()
+    {
+      return new vtkUpdateCallback;
+    }
+  virtual void Execute(vtkObject *caller, unsigned long eventId, void*
+                       arguments)
+    {
+      vtkRenderWindowInteractor* iren = 
+        static_cast< vtkRenderWindowInteractor* >( caller );
+      if( caller == NULL )
+        return;
+
+      switch( iren->GetKeyCode( ) )
+      {
+      case 'x':
+      case 'X':
+      {
+        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
+    }
+
+public:
+  vtkImagePlaneWidget* WidgetX;
+  vtkImagePlaneWidget* WidgetY;
+  vtkImagePlaneWidget* WidgetZ;
+  vtkSeedWidget2*       SeedWidget;
+};
 
 // -------------------------------------------------------------------------
 fpa::VTK::ImageMPR::
 ImageMPR( )
 {
-  // vtkSmartPointer< vtkImageData > m_Image;
-
   this->m_Outline = vtkSmartPointer< vtkOutlineSource >::New( );
   this->m_OutlineMapper = vtkSmartPointer< vtkPolyDataMapper >::New( );
   this->m_OutlineActor = vtkSmartPointer< vtkActor >::New( );
@@ -18,6 +70,38 @@ ImageMPR( )
   this->m_Renderer = vtkSmartPointer< vtkRenderer >::New( );
   this->m_Window = vtkSmartPointer< vtkRenderWindow >::New( );
   this->m_Interactor = vtkSmartPointer< vtkRenderWindowInteractor >::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_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);
 }
     
 // -------------------------------------------------------------------------
@@ -97,6 +181,16 @@ 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_WidgetX->On( );
+  this->m_WidgetY->On( );
+  this->m_WidgetZ->On( );
+  seedWidget->On( );
+  seedWidget->ProcessEventsOff( );
+  this->m_Interactor->SetPicker( this->m_Picker );
+  this->m_Interactor->GetPickingManager( )->AddPicker( this->m_Picker );
+  this->m_Interactor->GetPickingManager( )->EnabledOn( );
 }
 
 // -------------------------------------------------------------------------