]> Creatis software - bbtk.git/blobdiff - packages/vtk/src/bbvtkImagePlanes.cxx
Fixed (sure ? to test extensively) the problem with vtk-inherited black boxes desallo...
[bbtk.git] / packages / vtk / src / bbvtkImagePlanes.cxx
index 8ff343d308cb8f2d08b53e42e97e79f247b06c64..ccfba10fce9c18e1d5ba4b385553b680267808b4 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbvtkImagePlanes.cxx,v $
   Language:  C++
-  Date:      $Date: 2009/01/08 10:18:37 $
-  Version:   $Revision: 1.19 $
+  Date:      $Date: 2009/02/27 11:20:26 $
+  Version:   $Revision: 1.20 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -108,25 +108,25 @@ namespace bbvtk
 {
 
   //================================================================
class myCallbackPlane : public vtkCommand
 class ImagePlanes::VtkCallbackType : public vtkCommand
  {
  public:
-   static myCallbackPlane *New()
+   static VtkCallbackType *New()
       {
-         return new myCallbackPlane;
+         return new VtkCallbackType;
       }
    virtual void Execute(vtkObject *caller, unsigned long, void*)
    {
-       currentBlackBox->Process();
-       currentBlackBox->bbSignalOutputModification();
+       mBlackBox->Process();
+       mBlackBox->bbSignalOutputModification();
    } 
-   void SetCurrentBlackBox(ImagePlanes *cBB) {currentBlackBox = cBB;};    
-   void SetVtkPlaneWidget( vtkImagePlaneWidget *planeWidget );
-   myCallbackPlane() {};
+   void SetBlackBox(ImagePlanes *BB) { mBlackBox = BB;};    
+   //   void SetVtkPlaneWidget( vtkImagePlaneWidget *planeWidget );
+   VtkCallbackType() {};
 
  private:
-   vtkPlaneWidget *planeWidget;
-   ImagePlanes *currentBlackBox;
+   //   vtkPlaneWidget *planeWidget;
+   ImagePlanes *mBlackBox;
  };
   //================================================================
 
@@ -206,20 +206,33 @@ namespace bbvtk
 
      picker->UnRegister(NULL);
      
-     myCallbackPlane *_myCallback = myCallbackPlane::New();
-     _myCallback->SetCurrentBlackBox(this);
-     planeWidgetX->AddObserver(vtkCommand::InteractionEvent,_myCallback);
-     planeWidgetY->AddObserver(vtkCommand::InteractionEvent,_myCallback);
-     planeWidgetZ->AddObserver(vtkCommand::InteractionEvent,_myCallback);  
+     mVtkCallback = VtkCallbackType::New();
+     mVtkCallback->SetBlackBox(this);
+     planeWidgetX->AddObserver(vtkCommand::InteractionEvent,mVtkCallback);
+     planeWidgetY->AddObserver(vtkCommand::InteractionEvent,mVtkCallback);
+     planeWidgetZ->AddObserver(vtkCommand::InteractionEvent,mVtkCallback);  
    }
 
 //---------------------------------------------------------------------
   void ImagePlanes::bbUserDestructor()
   {
 
-    if (bbGetOutputPlaneX()) bbGetOutputPlaneX()->UnRegister(NULL);
-    if (bbGetOutputPlaneY()) bbGetOutputPlaneY()->UnRegister(NULL);
-    if (bbGetOutputPlaneZ()) bbGetOutputPlaneZ()->UnRegister(NULL);
+    if (bbGetOutputPlaneX()) 
+      {
+       bbGetOutputPlaneX()->SetInput(NULL);
+       bbGetOutputPlaneX()->UnRegister(NULL);
+      }
+    if (bbGetOutputPlaneY()) 
+      {
+       bbGetOutputPlaneY()->SetInput(NULL);
+       bbGetOutputPlaneY()->UnRegister(NULL);
+      }
+    if (bbGetOutputPlaneZ()) 
+      {
+       bbGetOutputPlaneZ()->SetInput(NULL);
+       bbGetOutputPlaneZ()->UnRegister(NULL);
+      }
+    mVtkCallback->Delete();
   }
   
 //---------------------------------------------------------------------