From 4ad7fcc03df98849a36051440ebcd326f90a5e68 Mon Sep 17 00:00:00 2001 From: guigues Date: Wed, 14 May 2008 07:01:00 +0000 Subject: [PATCH] *** empty log message *** --- .../src/bbitkvtkitkImage2vtkImageData.cxx | 78 +++++++++++++----- .../src/bbitkvtkitkImage2vtkImageData.h | 8 +- .../src/bbitkvtkvtkImageData2itkImage.cxx | 81 +++++++++++++++---- .../src/bbitkvtkvtkImageData2itkImage.h | 12 ++- .../vtk/bbs/appli/ExampleGaussianSmooth.bbs | 5 ++ packages/wxvtk/src/bbwxvtkViewer2D.cxx | 28 +++++-- 6 files changed, 162 insertions(+), 50 deletions(-) diff --git a/packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.cxx b/packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.cxx index 0047b30..852e4d9 100644 --- a/packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.cxx +++ b/packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbitkvtkitkImage2vtkImageData.cxx,v $ Language: C++ - Date: $Date: 2008/05/09 10:39:46 $ - Version: $Revision: 1.3 $ + Date: $Date: 2008/05/14 07:01:00 $ + Version: $Revision: 1.4 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -50,25 +50,61 @@ namespace bbitkvtk template void itkImage2vtkImageData::Convert() { - bbtkDebugMessageInc("Core",9,"itkImage2vtkImageData<" - <() - <<">::Convert()"< ["<() + <<">()"< VtkToItkConnection; typedef itk::ImageToVTKImageFilter< itkImageType > ItkToVtkConnection; + typename ItkToVtkConnection::Pointer conv; - - try + // No converter yet : create it and set its input + if (!mConverter) { - typename ItkToVtkConnection::Pointer conv = ItkToVtkConnection::New(); + bbtkDebugMessage("process",5," ["<SetInput( this->bbGetInputIn().get() ); + } + else + { + bbtkDebugMessage("process",5," ["< + ((itk::ProcessObject*)mConverter); + if (!conv) + { + bbtkDebugMessage("process",5," ["<UnRegister(); + conv = ItkToVtkConnection::New(); + mConverter = conv; + conv->SetInput( this->bbGetInputIn().get() ); + } + // Input image type did not change but input image pointer did: + // set new input + else if ( this->bbGetInputIn().get() + != (itkImageType*)(conv->GetExporter()->GetInputs()[0].GetPointer())) + { + bbtkDebugMessage("process",5," ["<SetInput( this->bbGetInputIn().get() ); + } + else + { + bbtkDebugMessage("process",5," ["<Update(); - if (bbGetOutputOut()) bbGetOutputOut()->UnRegister(NULL); bbSetOutputOut(conv->GetOutput()); - // bbGetOutputOut()->DebugOn(); - bbGetOutputOut()->Register(NULL); - bbGetOutputOut()->SetSource(NULL); } catch( itk::ExceptionObject & e) { @@ -76,25 +112,27 @@ namespace bbitkvtk <() <<">::Convert() : "<() + <<">() *DONE*"<UnRegister(NULL); - } } - + } // eo namespace bbitkvtk diff --git a/packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.h b/packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.h index e3991b2..b683f88 100644 --- a/packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.h +++ b/packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbitkvtkitkImage2vtkImageData.h,v $ Language: C++ - Date: $Date: 2008/05/09 10:39:46 $ - Version: $Revision: 1.4 $ + Date: $Date: 2008/05/14 07:01:00 $ + Version: $Revision: 1.5 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -53,8 +53,8 @@ namespace bbitkvtk // Convert method template on type of the itk image // embedded in the input itkImage* template void Convert(); - - + // stores the pointer on the template itk::ImageToVTKImageFilter + itk::ProcessObject::Pointer mConverter; }; diff --git a/packages/itkvtk/src/bbitkvtkvtkImageData2itkImage.cxx b/packages/itkvtk/src/bbitkvtkvtkImageData2itkImage.cxx index 3afb1e8..d8cde9d 100644 --- a/packages/itkvtk/src/bbitkvtkvtkImageData2itkImage.cxx +++ b/packages/itkvtk/src/bbitkvtkvtkImageData2itkImage.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbitkvtkvtkImageData2itkImage.cxx,v $ Language: C++ - Date: $Date: 2008/04/18 12:59:50 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/05/14 07:01:00 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -67,27 +67,57 @@ namespace bbitkvtk template void vtkImageData2itkImage::Convert() { - bbtkDebugMessageInc("Core",9,"vtkImageData2itkImage<" + bbtkDebugMessage("process",5,"==> ["<()<<","<::Convert()"<()"< itkImageType; typedef itk::VTKImageToImageFilter< itkImageType > VtkToItkConnection; - //typedef itk::ImageToVTKImageFilter< itkImageType > ItkToVtkConnection; + typename VtkToItkConnection::Pointer conv; - - try + // No converter yet : create it and set its input + if (!mConverter) { - typename VtkToItkConnection::Pointer conv = VtkToItkConnection::New(); + bbtkDebugMessage("process",5," ["<SetInput( this->bbGetInputIn() ); - conv->Update(); - - // How to unreference the old output (is in an any...) ? - //if (bbGetOutputOut()) bbGetOutputOut()->Unreference(); + } + else + { + bbtkDebugMessage("process",5," ["< + ((itk::ProcessObject*)mConverter); + if (!conv) + { + bbtkDebugMessage("process",5," ["<UnRegister(); + conv = VtkToItkConnection::New(); + mConverter = conv; + conv->SetInput( this->bbGetInputIn() ); + } + // Input image type did not change but input image pointer did: + // set new input + else if ( this->bbGetInputIn() != conv->GetExporter()->GetInput()) + { + bbtkDebugMessage("process",5," ["<SetInput( this->bbGetInputIn() ); + } + else + { + bbtkDebugMessage("process",5," ["<Update(); itkImageType* out = const_cast(conv->GetOutput()); - out->Register(); - bbSetOutputOut(out); + bbSetOutputOut(out); } catch( itk::ExceptionObject & e) { @@ -95,12 +125,29 @@ namespace bbitkvtk <()<<","<::Convert() : "<()<<","<() *DONE*"<UnRegister(); + } + diff --git a/packages/itkvtk/src/bbitkvtkvtkImageData2itkImage.h b/packages/itkvtk/src/bbitkvtkvtkImageData2itkImage.h index d092863..7eb37d0 100644 --- a/packages/itkvtk/src/bbitkvtkvtkImageData2itkImage.h +++ b/packages/itkvtk/src/bbitkvtkvtkImageData2itkImage.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbitkvtkvtkImageData2itkImage.h,v $ Language: C++ - Date: $Date: 2008/04/18 12:59:50 $ - Version: $Revision: 1.3 $ + Date: $Date: 2008/05/14 07:01:00 $ + Version: $Revision: 1.4 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -32,6 +32,7 @@ #include "bbtkAtomicBlackBox.h" #include "bbitkImage.h" #include "vtkImageData.h" +#include "itkProcessObject.h" namespace bbitkvtk { @@ -46,10 +47,15 @@ namespace bbitkvtk BBTK_DECLARE_OUTPUT(Out,bbitk::anyImagePointer); BBTK_PROCESS(Convert); void Convert(); + void bbUserConstructor(); + void bbUserCopyConstructor(); + void bbUserDestructor(); private: - // Convert method template on type of the itk image to be created + // Convert method : template on type of the itk image to be created template void Convert(); + // stores the pointer on the template itk::VTKImageToImageFilter + itk::ProcessObject::Pointer mConverter; }; diff --git a/packages/vtk/bbs/appli/ExampleGaussianSmooth.bbs b/packages/vtk/bbs/appli/ExampleGaussianSmooth.bbs index a31325e..eed2e61 100644 --- a/packages/vtk/bbs/appli/ExampleGaussianSmooth.bbs +++ b/packages/vtk/bbs/appli/ExampleGaussianSmooth.bbs @@ -5,6 +5,11 @@ include itk include itkvtk include wxvtk +description "Example ..." +author "eduardo.davila@creatis.insa-lyon.fr" +category "example" + + new MetaImageReader reader include std/boxes/bbPrependPackageDataPath.bbs new PrependPackageDataPath prependDatapath diff --git a/packages/wxvtk/src/bbwxvtkViewer2D.cxx b/packages/wxvtk/src/bbwxvtkViewer2D.cxx index 9c3a6c9..2d694c4 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/05/09 10:39:47 $ - Version: $Revision: 1.4 $ + Date: $Date: 2008/05/14 07:01:00 $ + Version: $Revision: 1.5 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -71,15 +71,17 @@ namespace bbwxvtk // LG : because it has been allocated with operator new not method ::New // we want to force its destruction without taking care of vtk ref counting // on the contrary the following vtk objects are deleted with vtk Delete + std::cout << "Viewer2DWidget::~Viewer2DWidget()" << std::endl; if (backImageData) { - backImageData->UnRegister(NULL); + // backImageData->UnRegister(NULL); } if (imageViewer) { imageViewer->Delete(); } delete wxvtkrenderwindowinteractor; + std::cout << "Viewer2DWidget::~Viewer2DWidget() OK" << std::endl; } //------------------------------------------------------------------------- @@ -89,7 +91,7 @@ namespace bbwxvtk void Viewer2DWidget::UpdateView() { - std::cout << "Viewer2DWidget::UpdateView()" << std::endl; + std::cout << "Viewer2DWidget::UpdateView() "<bbGetFullName() << std::endl; std::cout << "slice="<bbGetInputSlice()<bbGetInputIn()!=NULL) && (backImageData != mBox->bbGetInputIn()) ) @@ -100,9 +102,23 @@ namespace bbwxvtk imageViewer->SetupInteractor ( wxvtkrenderwindowinteractor ); } - if (backImageData) backImageData->UnRegister(NULL); + std::cout << "V2D b="<