From 551b02f0819a98e9595a81570b1d1174f398f34d Mon Sep 17 00:00:00 2001 From: guigues Date: Fri, 9 May 2008 10:39:46 +0000 Subject: [PATCH] *** empty log message *** --- kernel/src/bbtkPackage.cxx | 58 +++++---- kernel/src/bbtkVtkBlackBoxMacros.h | 8 +- .../src/bbitkvtkitkImage2vtkImageData.cxx | 34 ++++-- .../src/bbitkvtkitkImage2vtkImageData.h | 8 +- packages/vtk/src/bbvtkImagePlanes.cxx | 14 ++- packages/vtk/src/bbvtkImagePlanes.h | 5 +- packages/vtk/src/bbvtkIsoSurfaceExtractor.cxx | 25 ++-- packages/vtk/src/bbvtkIsoSurfaceExtractor.h | 7 +- packages/vtk/src/bbvtkMIPCreator.cxx | 12 +- packages/vtk/src/bbvtkMIPCreator.h | 5 +- packages/vtk/src/bbvtkMetaImageReader.xml | 4 - .../vtk/src/bbvtkSegmentationConnectivity.cxx | 111 ++++++++++-------- .../vtk/src/bbvtkSegmentationConnectivity.h | 5 +- .../wxvtk/bbs/appli/ExampleSimpleSlicer.bbs | 3 +- packages/wxvtk/src/bbwxvtkViewer2D.cxx | 75 ++++++++---- packages/wxvtk/src/bbwxvtkViewer3D.cxx | 12 +- packages/wxvtk/src/bbwxvtkViewer3D.h | 7 +- .../wxvtk/src/wxVTKRenderWindowInteractor.cxx | 5 +- 18 files changed, 242 insertions(+), 156 deletions(-) diff --git a/kernel/src/bbtkPackage.cxx b/kernel/src/bbtkPackage.cxx index 31f5a13..236953e 100644 --- a/kernel/src/bbtkPackage.cxx +++ b/kernel/src/bbtkPackage.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkPackage.cxx,v $ Language: C++ - Date: $Date: 2008/05/06 13:45:12 $ - Version: $Revision: 1.17 $ + Date: $Date: 2008/05/09 10:39:46 $ + Version: $Revision: 1.18 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See doc/license.txt or @@ -111,15 +111,17 @@ namespace bbtk const std::string& descname) { // Try to release descriptor - bbtkDebugMessage("package",3,"--- Trying to release descriptor '" - <GetName(); + bbtkDebugMessage("package",5,"--- Releasing descriptor '" + <GetBlackBoxMap().find(descname); if (desc == pack.lock()->GetBlackBoxMap().end()) { - bbtkDebugMessage("package",3, + bbtkDebugMessage("package",5, " Descriptor has already been released" < '"<GetBlackBoxMap()[descname] = pdesc.lock(); @@ -166,7 +168,7 @@ namespace bbtk long ndesc = pack.lock()->GetBlackBoxMap().size(); long nrefs = pack.use_count(); - bbtkDebugMessage("package",2," "< No more external ref : checking descriptors" <GetBlackBoxMap().size(); long nrefs = pack.use_count(); - bbtkDebugMessage("package",3," "<GetName(); - bbtkDebugMessage("package",3,"==> Package::UnLoadDynamicLibrary('" + bbtkDebugMessage("package",5,"==> Package::UnLoadDynamicLibrary('" <GetBlackBoxMap().empty()) { - bbtkDebugMessage("package",3," Package not empty ... abort" + bbtkDebugMessage("package",5," Package not empty ... abort" < dynamic library for package '" + < package '"< Package::UnLoadReleasedDynamicallyLoadedPackages()"< Package::UnLoadReleasedDynamicallyLoadedPackages()"<::iterator i; for (i=mReleasedDynamicallyLoadedPackages.begin(); @@ -606,7 +609,7 @@ namespace bbtk { if (!i->expired()) UnLoad(*i); } - bbtkDebugMessage("package",2,"<== Package::UnLoadReleasedDynamicallyLoadedPackages()"<GetName(); - bbtkDebugMessage("package",2,"==> Package::UnLoad("< Package::UnLoad("< dynamic library for package '" + <SetSource(NULL); \ - /* vtkParent::SetReferenceCount(0);*/ \ - bbmDescriptorPointer.reset(); \ vtkParent::Delete(); \ } +// bbmDescriptorPointer.reset(); \ + #define BBTK_VTK_BLACK_BOX_INTERFACE(CLASS,PARENTBLACKBOX,VTKPARENT) \ BBTK_BLACK_BOX_INTERFACE(CLASS,PARENTBLACKBOX); \ typedef VTKPARENT vtkParent; \ diff --git a/packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.cxx b/packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.cxx index 3fe9fe3..0047b30 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/04/18 12:59:50 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/05/09 10:39:46 $ + 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 @@ -64,13 +64,11 @@ namespace bbitkvtk typename ItkToVtkConnection::Pointer conv = ItkToVtkConnection::New(); conv->SetInput( this->bbGetInputIn().get() ); conv->Update(); - vtkImageData* o = vtkImageData::New(); - // o->SetReferenceCount(10); - o->DeepCopy(conv->GetOutput()); - - // o->Print(std::cout); - if (bbGetOutputOut()) bbGetOutputOut()->Delete(); - bbSetOutputOut(o); + if (bbGetOutputOut()) bbGetOutputOut()->UnRegister(NULL); + bbSetOutputOut(conv->GetOutput()); + // bbGetOutputOut()->DebugOn(); + bbGetOutputOut()->Register(NULL); + bbGetOutputOut()->SetSource(NULL); } catch( itk::ExceptionObject & e) { @@ -78,12 +76,24 @@ namespace bbitkvtk <() <<">::Convert() : "<UnRegister(NULL); + } + } } diff --git a/packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.h b/packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.h index d2f9564..e3991b2 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/04/18 12:59:50 $ - Version: $Revision: 1.3 $ + Date: $Date: 2008/05/09 10:39:46 $ + 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 @@ -46,7 +46,9 @@ namespace bbitkvtk BBTK_DECLARE_OUTPUT(Out,vtkImageData*); BBTK_PROCESS(Convert); void Convert(); - void bbUserConstructor() { bbSetOutputOut(0); } + void bbUserConstructor(); + void bbUserCopyConstructor(); + void bbUserDestructor(); private: // Convert method template on type of the itk image // embedded in the input itkImage* diff --git a/packages/vtk/src/bbvtkImagePlanes.cxx b/packages/vtk/src/bbvtkImagePlanes.cxx index 6f46cf3..4241c69 100644 --- a/packages/vtk/src/bbvtkImagePlanes.cxx +++ b/packages/vtk/src/bbvtkImagePlanes.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbvtkImagePlanes.cxx,v $ Language: C++ - Date: $Date: 2008/04/18 12:59:52 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/05/09 10:39:46 $ + 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 @@ -110,10 +110,18 @@ namespace bbvtk bbSetOutputPlaneX(planeWidgetX); bbSetOutputPlaneY(planeWidgetY); bbSetOutputPlaneZ(planeWidgetZ); + + picker->UnRegister(NULL); } //--------------------------------------------------------------------- - + void ImagePlanes::bbUserDestructor() + { + planeWidgetX->Delete(); + planeWidgetY->Delete(); + planeWidgetZ->Delete(); + } + void ImagePlanes::Process() { if (bbGetInputIn()!=0) diff --git a/packages/vtk/src/bbvtkImagePlanes.h b/packages/vtk/src/bbvtkImagePlanes.h index df25307..d0b0f9b 100644 --- a/packages/vtk/src/bbvtkImagePlanes.h +++ b/packages/vtk/src/bbvtkImagePlanes.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbvtkImagePlanes.h,v $ Language: C++ - Date: $Date: 2008/04/18 12:59:52 $ - Version: $Revision: 1.3 $ + Date: $Date: 2008/05/09 10:39:47 $ + 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 @@ -70,6 +70,7 @@ namespace bbvtk protected: virtual void bbUserConstructor(); virtual void bbUserCopyConstructor(); + virtual void bbUserDestructor(); void Init(); private: vtkImagePlaneWidget* planeWidgetX; diff --git a/packages/vtk/src/bbvtkIsoSurfaceExtractor.cxx b/packages/vtk/src/bbvtkIsoSurfaceExtractor.cxx index 7b23c9a..1559d97 100644 --- a/packages/vtk/src/bbvtkIsoSurfaceExtractor.cxx +++ b/packages/vtk/src/bbvtkIsoSurfaceExtractor.cxx @@ -4,8 +4,8 @@ Program: bbtk Module: $RCSfile: bbvtkIsoSurfaceExtractor.cxx,v $ Language: C++ - Date: $Date: 2008/04/24 12:56:41 $ - Version: $Revision: 1.5 $ + Date: $Date: 2008/05/09 10:39:47 $ + Version: $Revision: 1.6 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -49,19 +49,26 @@ namespace bbvtk Init(); } + void IsoSurfaceExtractor::bbUserDestructor() + { + marchingcubes->Delete(); + polydatamapper->Delete(); + vtkactor->Delete(); + } + void IsoSurfaceExtractor::Init() { firsttime=true; - bbSetInputIn(NULL); - // bbSetInputInVtkObject(NULL); - bbSetInputRenderer(NULL); + bbSetInputIn(NULL); + // bbSetInputInVtkObject(NULL); + bbSetInputRenderer(NULL); bbSetInputIsovalue(400); bbSetInputOpacity(1); - marchingcubes = vtkMarchingCubes::New(); + marchingcubes = vtkMarchingCubes::New(); polydatamapper = vtkPolyDataMapper::New(); - vtkactor = vtkActor::New(); + vtkactor = vtkActor::New(); polydatamapper->SetInput(marchingcubes->GetOutput()); vtkactor->SetMapper(polydatamapper); @@ -80,7 +87,9 @@ namespace bbvtk marchingcubes->SetValue(0, bbGetInputIsovalue() ); marchingcubes->Update(); - vtkactor->GetProperty()->SetColor( bbGetInputColour()[0], bbGetInputColour()[1], bbGetInputColour()[2] ); + vtkactor->GetProperty()->SetColor( bbGetInputColour()[0], + bbGetInputColour()[1], + bbGetInputColour()[2] ); vtkactor->GetProperty()->SetOpacity( bbGetInputOpacity() ); diff --git a/packages/vtk/src/bbvtkIsoSurfaceExtractor.h b/packages/vtk/src/bbvtkIsoSurfaceExtractor.h index cefe1a4..00c5b46 100644 --- a/packages/vtk/src/bbvtkIsoSurfaceExtractor.h +++ b/packages/vtk/src/bbvtkIsoSurfaceExtractor.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbvtkIsoSurfaceExtractor.h,v $ Language: C++ - Date: $Date: 2008/04/24 14:11:31 $ - Version: $Revision: 1.7 $ + Date: $Date: 2008/05/09 10:39:47 $ + Version: $Revision: 1.8 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -66,7 +66,7 @@ namespace bbvtk BBTK_DECLARE_INPUT(Isovalue,double); BBTK_DECLARE_INPUT(Opacity,double); BBTK_DECLARE_INPUT(Colour,std::vector); - BBTK_DECLARE_INPUT(Renderer,vtkRenderer *); + BBTK_DECLARE_INPUT(Renderer,vtkRenderer *); BBTK_DECLARE_OUTPUT(Out,vtkProp3D *); BBTK_PROCESS(DoProcess); @@ -75,6 +75,7 @@ namespace bbvtk protected: virtual void bbUserConstructor(); virtual void bbUserCopyConstructor(); + virtual void bbUserDestructor(); void Init(); }; diff --git a/packages/vtk/src/bbvtkMIPCreator.cxx b/packages/vtk/src/bbvtkMIPCreator.cxx index be2a7d4..39d615f 100644 --- a/packages/vtk/src/bbvtkMIPCreator.cxx +++ b/packages/vtk/src/bbvtkMIPCreator.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbvtkMIPCreator.cxx,v $ Language: C++ - Date: $Date: 2008/04/18 12:59:52 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/05/09 10:39:47 $ + 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 @@ -74,6 +74,14 @@ namespace bbvtk bbSetOutputOut(mVolume); } + void MIPCreator::bbUserDestructor() + { + mCast->Delete(); + mMIP->Delete(); + mMapper->Delete(); + mVolume->Delete(); + + } //--------------------------------------------------------------------- void MIPCreator::Process() diff --git a/packages/vtk/src/bbvtkMIPCreator.h b/packages/vtk/src/bbvtkMIPCreator.h index 28f4358..1dbebde 100644 --- a/packages/vtk/src/bbvtkMIPCreator.h +++ b/packages/vtk/src/bbvtkMIPCreator.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbvtkMIPCreator.h,v $ Language: C++ - Date: $Date: 2008/04/18 12:59:52 $ - Version: $Revision: 1.3 $ + Date: $Date: 2008/05/09 10:39:47 $ + 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 @@ -66,6 +66,7 @@ namespace bbvtk protected: virtual void bbUserConstructor(); virtual void bbUserCopyConstructor(); + virtual void bbUserDestructor(); void Init(); private: vtkImageShiftScale* mCast; diff --git a/packages/vtk/src/bbvtkMetaImageReader.xml b/packages/vtk/src/bbvtkMetaImageReader.xml index a557719..98540bd 100644 --- a/packages/vtk/src/bbvtkMetaImageReader.xml +++ b/packages/vtk/src/bbvtkMetaImageReader.xml @@ -16,10 +16,6 @@
    SetFileName(bbGetInputIn().c_str());
    vtkParent::Update();
-   // We need to disconnect the output image from its source or the 
-   // vtk object will not be deleted as it 
-   // will be referenced by its output image
-//   bbGetOutputOut()->SetSource(NULL);					
  
diff --git a/packages/vtk/src/bbvtkSegmentationConnectivity.cxx b/packages/vtk/src/bbvtkSegmentationConnectivity.cxx index e717254..ff5d11f 100644 --- a/packages/vtk/src/bbvtkSegmentationConnectivity.cxx +++ b/packages/vtk/src/bbvtkSegmentationConnectivity.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbvtkSegmentationConnectivity.cxx,v $ Language: C++ - Date: $Date: 2008/04/24 14:11:31 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/05/09 10:39:47 $ + 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 @@ -30,60 +30,69 @@ namespace bbvtk { - BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,SegmentationConnectivity) - BBTK_BLACK_BOX_IMPLEMENTATION(SegmentationConnectivity,bbtk::AtomicBlackBox); - - - void SegmentationConnectivity::bbUserConstructor() - { - bbSetInputIn(NULL); - std::vector position; - position.push_back(0); - position.push_back(0); - position.push_back(0); - bbSetInputPositionXYZ(position); - std::vector threshold; - threshold.push_back(0); - threshold.push_back(0); - bbSetInputThresholdMinMax(threshold); - bbSetOutputOut(NULL); - thresh2 = vtkImageThreshold::New(); - thresh2->SetInValue(255); - thresh2->SetOutputScalarTypeToUnsignedShort(); - thresh2->SetOutValue(0); - cast2 = vtkImageCast::New(); - cast2->SetInput(thresh2->GetOutput()); - cast2->SetOutputScalarTypeToUnsignedChar(); - connect2 = vtkImageSeedConnectivity::New(); - connect2->SetInput(cast2->GetOutput()); - connect2->SetInputConnectValue(255); - connect2->SetOutputConnectedValue(255); - connect2->SetOutputUnconnectedValue(0); - cast4 = vtkImageCast::New(); - cast4->SetInput(connect2->GetOutput()); - cast4->SetOutputScalarTypeToUnsignedShort(); - } - + BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,SegmentationConnectivity); + BBTK_BLACK_BOX_IMPLEMENTATION(SegmentationConnectivity, + bbtk::AtomicBlackBox); + + + void SegmentationConnectivity::bbUserConstructor() + { + bbSetInputIn(NULL); + std::vector position; + position.push_back(0); + position.push_back(0); + position.push_back(0); + bbSetInputPositionXYZ(position); + std::vector threshold; + threshold.push_back(0); + threshold.push_back(0); + bbSetInputThresholdMinMax(threshold); + bbSetOutputOut(NULL); + thresh2 = vtkImageThreshold::New(); + thresh2->SetInValue(255); + thresh2->SetOutputScalarTypeToUnsignedShort(); + thresh2->SetOutValue(0); + cast2 = vtkImageCast::New(); + cast2->SetInput(thresh2->GetOutput()); + cast2->SetOutputScalarTypeToUnsignedChar(); + connect2 = vtkImageSeedConnectivity::New(); + connect2->SetInput(cast2->GetOutput()); + connect2->SetInputConnectValue(255); + connect2->SetOutputConnectedValue(255); + connect2->SetOutputUnconnectedValue(0); + cast4 = vtkImageCast::New(); + cast4->SetInput(connect2->GetOutput()); + cast4->SetOutputScalarTypeToUnsignedShort(); + } + + + void SegmentationConnectivity::bbUserDestructor() + { + thresh2->Delete(); + cast2->Delete(); + connect2->Delete(); + cast4->Delete(); + } void SegmentationConnectivity::DoProcess() { - vtkImageData *imagedata = bbGetInputIn(); - imagedata->UpdateInformation(); - imagedata->SetUpdateExtent(imagedata->GetWholeExtent()); - imagedata->Update(); - thresh2->ThresholdBetween(3000, 3001); - thresh2->SetInput(imagedata); - thresh2->ThresholdBetween(bbGetInputThresholdMinMax()[0], bbGetInputThresholdMinMax()[1]); - thresh2->Update(); - cast2->Update(); - connect2->RemoveAllSeeds (); - connect2->AddSeed( bbGetInputPositionXYZ()[0] , bbGetInputPositionXYZ()[1] , bbGetInputPositionXYZ()[2] ); - connect2->Update(); - cast4->Update(); - + vtkImageData *imagedata = bbGetInputIn(); + imagedata->UpdateInformation(); + imagedata->SetUpdateExtent(imagedata->GetWholeExtent()); + imagedata->Update(); + thresh2->ThresholdBetween(3000, 3001); + thresh2->SetInput(imagedata); + thresh2->ThresholdBetween(bbGetInputThresholdMinMax()[0], bbGetInputThresholdMinMax()[1]); + thresh2->Update(); + cast2->Update(); + connect2->RemoveAllSeeds (); + connect2->AddSeed( bbGetInputPositionXYZ()[0] , bbGetInputPositionXYZ()[1] , bbGetInputPositionXYZ()[2] ); + connect2->Update(); + cast4->Update(); + bbSetOutputOut(cast4->GetOutput() ); } - + }// EO namespace bbvtk diff --git a/packages/vtk/src/bbvtkSegmentationConnectivity.h b/packages/vtk/src/bbvtkSegmentationConnectivity.h index 213cbf8..a958163 100644 --- a/packages/vtk/src/bbvtkSegmentationConnectivity.h +++ b/packages/vtk/src/bbvtkSegmentationConnectivity.h @@ -4,8 +4,8 @@ Program: bbtk Module: $RCSfile: bbvtkSegmentationConnectivity.h,v $ Language: C++ - Date: $Date: 2008/04/24 14:11:31 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/05/09 10:39:47 $ + 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 @@ -59,6 +59,7 @@ namespace bbvtk protected: virtual void bbUserConstructor(); + virtual void bbUserDestructor(); private: vtkImageCast *cast2; diff --git a/packages/wxvtk/bbs/appli/ExampleSimpleSlicer.bbs b/packages/wxvtk/bbs/appli/ExampleSimpleSlicer.bbs index 536bce5..2fe619a 100644 --- a/packages/wxvtk/bbs/appli/ExampleSimpleSlicer.bbs +++ b/packages/wxvtk/bbs/appli/ExampleSimpleSlicer.bbs @@ -13,7 +13,8 @@ load std set viewer.WinTitle "ExampleSimpleSlicer" set viewer.WinWidth 350 set viewer.WinHeight 400 -set viewer.Slice 20 +# Crashes ! why ? +#set viewer.Slice 20 exec viewer diff --git a/packages/wxvtk/src/bbwxvtkViewer2D.cxx b/packages/wxvtk/src/bbwxvtkViewer2D.cxx index a6ecfa2..9c3a6c9 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/04/18 12:59:53 $ - Version: $Revision: 1.3 $ + Date: $Date: 2008/05/09 10:39:47 $ + 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 @@ -66,8 +66,20 @@ namespace bbwxvtk Viewer2DWidget::~Viewer2DWidget() { + // delete wxvtkrenderwindowinteractor; + // pourquoi pas wxvtkrenderwindowinteractor->Delete(); // JP + // 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 + if (backImageData) + { + backImageData->UnRegister(NULL); + } + if (imageViewer) + { + imageViewer->Delete(); + } delete wxvtkrenderwindowinteractor; -// pourquoi pas wxvtkrenderwindowinteractor->Delete(); // JP } //------------------------------------------------------------------------- @@ -77,24 +89,23 @@ namespace bbwxvtk void Viewer2DWidget::UpdateView() { - - if (imageViewer==NULL){ - imageViewer = vtkImageViewer2::New(); - imageViewer->SetupInteractor ( wxvtkrenderwindowinteractor ); - } - - // Viewer2D* mbbtkViewer2D = (Viewer2D*)GetBlackBox(); - - - - // imageViewer->SetSliceOrientation(((Viewer2D*)GetBlackBox())->bbGetInputOrientation()); - - - if ( backImageData != mBox->bbGetInputIn() ) + std::cout << "Viewer2DWidget::UpdateView()" << std::endl; + std::cout << "slice="<bbGetInputSlice()<bbGetInputIn()!=NULL) && + (backImageData != mBox->bbGetInputIn()) ) { + if (imageViewer==NULL) + { + imageViewer = vtkImageViewer2::New(); + imageViewer->SetupInteractor ( wxvtkrenderwindowinteractor ); + } + + if (backImageData) backImageData->UnRegister(NULL); backImageData = mBox->bbGetInputIn(); + backImageData->Register(NULL); imageViewer->SetInput( backImageData ); backImageData->Update(); + int x1,x2,y1,y2,z1,z2; double spx,spy,spz; backImageData->GetSpacing(spx,spy,spz); @@ -124,30 +135,41 @@ namespace bbwxvtk // mBox->bbIsShown() is necessary to be sure that the wxWindow is already // created and displayed. // Else when slice != 0 we get an X Window System error with wxGTK - if ((backImageData!=NULL)&&(mBox->bbIsShown())) + if ((imageViewer!=NULL)&& + (backImageData!=NULL)&& + (mBox->bbIsShown())) { int z = mBox->bbGetInputSlice(); - // std::cout << "slice = "<=ext[5]) { z=ext[5]-1; } // LG : SetZSlice does not exist anymore in vtk 5 ! + /* +#if (VTK_MAJOR_VERSION >= 5) + imageViewer->SetSlice( 0 ); +#else + imageViewer->SetZSlice( 0 ); +#endif + + + + wxvtkrenderwindowinteractor->Render(); + */ #if (VTK_MAJOR_VERSION >= 5) imageViewer->SetSlice( z ); #else imageViewer->SetZSlice( z ); #endif - + wxvtkrenderwindowinteractor->Render(); } - - wxvtkrenderwindowinteractor->Render(); - // wxvtkrenderwindowinteractor->Refresh(); + //Refresh(); @@ -167,6 +189,11 @@ namespace bbwxvtk void Viewer2D::Process() { + // LG : Bug when initial slice != 0 on first time + // (see wxvtk/appli/ExampleSimpleSlicer) + // I think there is a problem with rendering before window + // has been reparented ... we have to check this + ((Viewer2DWidget*)bbGetOutputWidget())->UpdateView(); bbSetOutputOut( bbGetInputSlice() ); } diff --git a/packages/wxvtk/src/bbwxvtkViewer3D.cxx b/packages/wxvtk/src/bbwxvtkViewer3D.cxx index b81a1dd..2750a33 100644 --- a/packages/wxvtk/src/bbwxvtkViewer3D.cxx +++ b/packages/wxvtk/src/bbwxvtkViewer3D.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxvtkViewer3D.cxx,v $ Language: C++ - Date: $Date: 2008/05/07 12:59:23 $ - Version: $Revision: 1.4 $ + Date: $Date: 2008/05/09 10:39:47 $ + 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 @@ -28,7 +28,6 @@ #include "bbwxvtkPackage.h" #include "vtkCamera.h" -#include "vtkInteractorStyleTrackballCamera.h" @@ -52,7 +51,7 @@ namespace bbwxvtk renderwindow->AddRenderer(renderer); wxvtkrenderwindowinteractor->SetRenderWindow(renderwindow); - vtkInteractorStyleTrackballCamera *interactorstyle = vtkInteractorStyleTrackballCamera ::New(); + interactorstyle = vtkInteractorStyleTrackballCamera ::New(); interactorstyle->SetInteractor ( wxvtkrenderwindowinteractor ); wxvtkrenderwindowinteractor->SetInteractorStyle( interactorstyle ); @@ -79,7 +78,10 @@ namespace bbwxvtk //------------------------------------------------------------------------- Viewer3DWidget::~Viewer3DWidget() { - wxvtkrenderwindowinteractor->Delete(); + renderwindow->Delete(); + renderer->Delete(); + interactorstyle->Delete(); + delete wxvtkrenderwindowinteractor; } //------------------------------------------------------------------------- diff --git a/packages/wxvtk/src/bbwxvtkViewer3D.h b/packages/wxvtk/src/bbwxvtkViewer3D.h index a9f441f..6eb48f0 100644 --- a/packages/wxvtk/src/bbwxvtkViewer3D.h +++ b/packages/wxvtk/src/bbwxvtkViewer3D.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxvtkViewer3D.h,v $ Language: C++ - Date: $Date: 2008/04/18 12:59:53 $ - Version: $Revision: 1.5 $ + Date: $Date: 2008/05/09 10:39:47 $ + Version: $Revision: 1.6 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -39,12 +39,14 @@ #include #include +#include #include "bbtkWxBlackBox.h" #include "wxVTKRenderWindowInteractor.h" + namespace bbwxvtk { class Viewer3D; @@ -62,6 +64,7 @@ namespace bbwxvtk Viewer3D *mBox; vtkRenderer *renderer; vtkRenderWindow *renderwindow; + vtkInteractorStyleTrackballCamera *interactorstyle; wxVTKRenderWindowInteractor *wxvtkrenderwindowinteractor; }; diff --git a/packages/wxvtk/src/wxVTKRenderWindowInteractor.cxx b/packages/wxvtk/src/wxVTKRenderWindowInteractor.cxx index a7ac807..17b39bd 100644 --- a/packages/wxvtk/src/wxVTKRenderWindowInteractor.cxx +++ b/packages/wxvtk/src/wxVTKRenderWindowInteractor.cxx @@ -3,8 +3,8 @@ Program: Visualization Toolkit Module: $RCSfile: wxVTKRenderWindowInteractor.cxx,v $ Language: C++ - Date: $Date: 2008/03/03 13:14:28 $ - Version: $Revision: 1.1 $ + Date: $Date: 2008/05/09 10:39:47 $ + Version: $Revision: 1.2 $ Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. @@ -186,6 +186,7 @@ wxVTKRenderWindowInteractor::wxVTKRenderWindowInteractor(wxWindow *parent, wxVTKRenderWindowInteractor::~wxVTKRenderWindowInteractor() { // LG : trompe la mort ! + SetRenderWindow(NULL); SetReferenceCount(0); } //--------------------------------------------------------------------------- -- 2.45.0