]> Creatis software - bbtk.git/commitdiff
Try to display planes (from Image Planes)
authorjean-pierre roux <jean-pierre.roux@creatis.insa-lyon.fr>
Wed, 3 Dec 2008 09:34:37 +0000 (09:34 +0000)
committerjean-pierre roux <jean-pierre.roux@creatis.insa-lyon.fr>
Wed, 3 Dec 2008 09:34:37 +0000 (09:34 +0000)
kernel/src/bbtkBlackBox.cxx
kernel/src/bbtkBlackBox.h
packages/vtk/src/bbvtkImagePlanes.cxx
packages/vtk/src/bbvtkImagePlanes.h
packages/wxvtk/src/bbwxvtkViewer2D.cxx

index ddfc3ed9576598ad5b150716c67dbec7ccafe65e..5fc7d01babe0b9224cb59e7b194a34e24e9aafe7 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkBlackBox.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/11/25 11:17:13 $
-  Version:   $Revision: 1.29 $
+  Date:      $Date: 2008/12/03 09:34:37 $
+  Version:   $Revision: 1.30 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -488,6 +488,7 @@ namespace bbtk
       {
        bbtkDebugMessage("modified",2,"-> Status set to modified"<<std::endl);
        this->bbSetStatus(MODIFIED); 
+       std::cout << "Status set to modified" <<std::endl;
       }
  
     this->bbSignalOutputModification(false);
index 467e40c734d254bcb8064b9792e21efc68972ab1..2082d77676c6e57a072f13e5f717d59ced7da307 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkBlackBox.h,v $
   Language:  C++
-  Date:      $Date: 2008/11/13 14:46:43 $
-  Version:   $Revision: 1.14 $
+  Date:      $Date: 2008/12/03 09:34:37 $
+  Version:   $Revision: 1.15 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -253,7 +253,6 @@ bool reaction = true);
        virtual void bbUserOnShow() { }
        void bbUserOnShowWidget(std::string nameInput);
 
-
   protected:
     //==================================================================
     // PROTECTED PART : ACCESSIBLE TO THE BlackBox DEVELOPER 
index 06253d0d93dead3af2bee24e9fff937a04136b4f..79ab3850b81e61815cc83328d6940080d02b13cb 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbvtkImagePlanes.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/11/27 16:38:32 $
-  Version:   $Revision: 1.13 $
+  Date:      $Date: 2008/12/03 09:34:39 $
+  Version:   $Revision: 1.14 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -38,6 +38,7 @@
 #include "bbvtkPackage.h"
 #include "vtkCellPicker.h"
 #include "vtkProperty.h"
+#include "vtkMetaImageWriter.h"
 
 #include "bbstdCast.h"
 namespace bbstd
@@ -74,7 +75,9 @@ namespace bbvtk
      std::vector<double> vect;
      vect.push_back(512);
      vect.push_back(256);
-     bbSetInputWindowLevel (vect);
+     bbSetInputWindowLevel (vect);  
+
+     bbSetModifiedStatus();
    }
    
    void ImagePlanes::bbUserCopyConstructor(bbtk::BlackBox::Pointer) 
@@ -84,9 +87,9 @@ namespace bbvtk
    }
 
    void ImagePlanes::Init() 
-   {
-   
+   {  
      if (planeWidgetX != 0) return;
+       
      // The shared picker enables us to use 3 planes at one time
      // and gets the picking order right
      vtkCellPicker* picker = vtkCellPicker::New();
@@ -121,6 +124,12 @@ namespace bbvtk
      bbSetOutputPlaneZ(planeWidgetZ);
 
      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);  
    }
 
 //---------------------------------------------------------------------
@@ -152,6 +161,15 @@ namespace bbvtk
         planeWidgetX->SetSlicePosition((xMax+xMin)/2.*xSpacing);
         planeWidgetX->GetResliceOutput()->Update();
         bbSetOutput("ImageX", planeWidgetX->GetResliceOutput());
+        
+        
+        vtkMetaImageWriter *writer = vtkMetaImageWriter::New();
+        
+        std::string newFilenameX("newFilenameX.mhd");
+        writer->SetInput(planeWidgetX->GetResliceOutput());
+        writer->SetFileName(newFilenameX.c_str());
+        writer->Update();
+        
         //planeWidgetX->GetResliceOutput()->Print(std::cout);
 
         planeWidgetY->SetInput(bbGetInputIn());
@@ -161,6 +179,11 @@ namespace bbvtk
         bbSetOutput("ImageY", planeWidgetY->GetResliceOutput());
         //planeWidgetY->GetResliceOutput()->Print(std::cout);
         
+        std::string newFilenameY("newFilenameY.mhd");
+        writer->SetInput(planeWidgetY->GetResliceOutput());
+        writer->SetFileName(newFilenameY.c_str());
+        writer->Update();
+                
         planeWidgetZ->SetInput(bbGetInputIn());
         planeWidgetZ->SetPlaneOrientationToZAxes();
         planeWidgetZ->SetSlicePosition((zMax+zMin)/2.*zSpacing);
@@ -169,8 +192,16 @@ namespace bbvtk
        // planeWidgetZ->GetResliceOutput()->Print(std::cout);
        
        // planeWidgetZ->SetWindowLevel(512,256);
-
+       
+        std::string newFilenameZ("newFilenameZ.mhd");
+        writer->SetInput(planeWidgetZ->GetResliceOutput());
+        writer->SetFileName(newFilenameZ.c_str());
+        writer->Update();
+       
          planeWidgetZ->SetWindowLevel(bbGetInputWindowLevel()[0],bbGetInputWindowLevel()[1]);
+       
+       // writer->vtkMetaImageWriter::Delete();
+        
        }
    }
 }//namespace bbtk
index fec60e94070f327b93d1a8eecb870ed9b96ce28c..91c1475b7e895a3ce265f4a729938e3821e9dd8f 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbvtkImagePlanes.h,v $
   Language:  C++
-  Date:      $Date: 2008/11/27 14:57:38 $
-  Version:   $Revision: 1.8 $
+  Date:      $Date: 2008/12/03 09:34:39 $
+  Version:   $Revision: 1.9 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -65,6 +65,9 @@
 //#include "vtkRenderer.h"
 //#include "vtkCamera.h"
 
+#include <vtkCommand.h>
+#include "vtkPlaneWidget.h"
+
 namespace bbvtk
 {
 
@@ -123,6 +126,31 @@ namespace bbvtk
 
 
 
+ class myCallbackPlane : public vtkCommand
+ {
+ public:
+   static myCallbackPlane *New()
+      {
+         return new myCallbackPlane;
+      }
+   virtual void Execute(vtkObject *caller, unsigned long, void*)
+   {
+       std::cout << "entree ds myCallbackPlane::Execute()" << std::endl;
+       printf("Execute Call Back on %p\n",caller); 
+
+       currentBlackBox->bbSetModifiedStatus();
+   } 
+   void SetCurrentBlackBox(bbtk::AtomicBlackBox *cBB) {currentBlackBox = cBB;};    
+   void SetVtkPlaneWidget( vtkImagePlaneWidget *planeWidget );
+   myCallbackPlane() 
+   {
+      // std::cout << "entree Constr myCallbackPlane" << std::endl;
+   };
+
+ private:
+   vtkPlaneWidget *planeWidget;
+   bbtk::AtomicBlackBox *currentBlackBox;
+ };
 
 
 }//namespace bbvtk
index d9d310e22c856fff7766d5facd60f5ab15e46c8e..e366505a15fe33dcccd1db67d19d5397b5b1cd95 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbwxvtkViewer2D.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/11/29 21:42:01 $
-  Version:   $Revision: 1.25 $
+  Date:      $Date: 2008/12/03 09:34:41 $
+  Version:   $Revision: 1.26 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -136,6 +136,7 @@ namespace bbwxvtk
       {
        backImageData = mDefaultImage;
        mUpdateCamera = true;
+       std::cout << "Viewer2DWidget::UpdateView() passe par 1" << std::endl;
       }
     else if ( ( mBox->bbGetInputIn() != NULL ) && 
              (backImageData != mBox->bbGetInputIn()) ) 
@@ -144,6 +145,7 @@ namespace bbwxvtk
        backImageData->Update();
        imageViewer->SetInput( backImageData );
        mUpdateCamera = true;
+               std::cout << "Viewer2DWidget::UpdateView() passe par 2" << std::endl;
       }
 
     if (mUpdateCamera)
@@ -168,6 +170,7 @@ namespace bbwxvtk
        //   
        //      imageViewer->GetRenderer()->ResetCamera(x1,x2,y1,y2,z1,z2);
        mUpdateCamera = false;
+       std::cout << "Viewer2DWidget::UpdateView() passe par 3" << std::endl;
       }
   
     //  std::cout << "OW = "<< mBox->bbGetWindow() << std::endl;
@@ -229,7 +232,7 @@ namespace bbwxvtk
            imageViewer->SetSliceOrientation (orientation);
           imageViewer->SetSlice( z );
 
-           
+std::cout << "Viewer2DWidget::UpdateView() passe par 4" << std::endl;      
 /*
        #if (VTK_MAJOR_VERSION >= 5)
                imageViewer->SetSlice( z );
@@ -271,9 +274,14 @@ namespace bbwxvtk
     // (see wxvtk/bbs/appli/ExampleSimpleSlicer)
     // I think there is a problem with rendering before window 
     // has been reparented ... we have to check this 
+    
+std::cout << "Viewer2D::Process() passe par 5" << std::endl;      
+    
          Viewer2DWidget* w = (Viewer2DWidget*)bbGetOutputWidget(); 
+         
     if (w)
        {
+std::cout << "Viewer2D::Process() passe par 6" << std::endl;
                w->UpdateView();
                bbSetOutputRenderer( ((Viewer2DWidget*)bbGetOutputWidget())->GetRenderer() );
        }
@@ -297,7 +305,9 @@ namespace bbwxvtk
    */ 
   void Viewer2D::CreateWidget(wxWindow* parent)
   {
+  std::cout << "Viewer2D::CreateWidget() passe par 7" << std::endl;
     Viewer2DWidget* w = new Viewer2DWidget(this,parent);//bbGetWxParent());
+
     bbSetOutputWidget(w);
   }