From: jean-pierre roux Date: Wed, 3 Dec 2008 09:34:37 +0000 (+0000) Subject: Try to display planes (from Image Planes) X-Git-Tag: v0.9.1~56 X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=ae4497a19b957df306e688ce3f69c3687323668e;p=bbtk.git Try to display planes (from Image Planes) --- diff --git a/kernel/src/bbtkBlackBox.cxx b/kernel/src/bbtkBlackBox.cxx index ddfc3ed..5fc7d01 100644 --- a/kernel/src/bbtkBlackBox.cxx +++ b/kernel/src/bbtkBlackBox.cxx @@ -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"<bbSetStatus(MODIFIED); + std::cout << "Status set to modified" <bbSignalOutputModification(false); diff --git a/kernel/src/bbtkBlackBox.h b/kernel/src/bbtkBlackBox.h index 467e40c..2082d77 100644 --- a/kernel/src/bbtkBlackBox.h +++ b/kernel/src/bbtkBlackBox.h @@ -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 diff --git a/packages/vtk/src/bbvtkImagePlanes.cxx b/packages/vtk/src/bbvtkImagePlanes.cxx index 06253d0..79ab385 100644 --- a/packages/vtk/src/bbvtkImagePlanes.cxx +++ b/packages/vtk/src/bbvtkImagePlanes.cxx @@ -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 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 diff --git a/packages/vtk/src/bbvtkImagePlanes.h b/packages/vtk/src/bbvtkImagePlanes.h index fec60e9..91c1475 100644 --- a/packages/vtk/src/bbvtkImagePlanes.h +++ b/packages/vtk/src/bbvtkImagePlanes.h @@ -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 +#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 diff --git a/packages/wxvtk/src/bbwxvtkViewer2D.cxx b/packages/wxvtk/src/bbwxvtkViewer2D.cxx index d9d310e..e366505 100644 --- a/packages/wxvtk/src/bbwxvtkViewer2D.cxx +++ b/packages/wxvtk/src/bbwxvtkViewer2D.cxx @@ -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); }