From 9e16e29818047ef5e7f4cd8031a61cc09e8efc3b Mon Sep 17 00:00:00 2001 From: Juan Prieto Date: Wed, 25 Nov 2009 16:35:34 +0000 Subject: [PATCH] =?utf8?q?Mach=E8te=20detruction=20viewer?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- bbtk/src/bbcreaMaracasVisuVolumeRendering.cxx | 10 +++---- .../CutModule/interface/CutModelMainPanel.cxx | 29 ++++++++++--------- .../src/CutModule/kernel/CutModelData.cxx | 8 +++-- .../src/CutModule/kernel/CutModelManager.cxx | 21 +++++++++----- ...racasMultipleVolumeRendererManagerData.cxx | 2 +- .../widgets/wxMaracas_ViewerWidget.cxx | 6 ++-- .../wxWindows/widgets/wxVtk3DBaseView.cxx | 10 +++++-- 7 files changed, 51 insertions(+), 35 deletions(-) diff --git a/bbtk/src/bbcreaMaracasVisuVolumeRendering.cxx b/bbtk/src/bbcreaMaracasVisuVolumeRendering.cxx index 8dd23db..5242857 100644 --- a/bbtk/src/bbcreaMaracasVisuVolumeRendering.cxx +++ b/bbtk/src/bbcreaMaracasVisuVolumeRendering.cxx @@ -51,11 +51,11 @@ void VolumeRendering::Process() //vtkImageData* img1 = ; - //bbSetOutputOut0(volview->GetOutputImages()[0]); - //bbSetOutputOut1(volview->GetOutputImages()[1]); - //bbSetOutputOut2(volview->GetOutputImages()[2]); - //bbSetOutputOut3(volview->GetOutputImages()[3]); - } + /*bbSetOutputOut0(volview->GetOutputImages()[0]); + bbSetOutputOut1(volview->GetOutputImages()[1]); + bbSetOutputOut2(volview->GetOutputImages()[2]); + bbSetOutputOut3(volview->GetOutputImages()[3]);*/ + } void VolumeRendering::CreateWidget(wxWindow* parent) { diff --git a/lib/maracasVisuLib/src/CutModule/interface/CutModelMainPanel.cxx b/lib/maracasVisuLib/src/CutModule/interface/CutModelMainPanel.cxx index 2991814..c30a641 100644 --- a/lib/maracasVisuLib/src/CutModule/interface/CutModelMainPanel.cxx +++ b/lib/maracasVisuLib/src/CutModule/interface/CutModelMainPanel.cxx @@ -3,8 +3,8 @@ Program: wxMaracas Module: $RCSfile: CutModelMainPanel.cxx,v $ Language: C++ - Date: $Date: 2009/09/08 08:14:25 $ - Version: $Revision: 1.3 $ + Date: $Date: 2009/11/25 16:35:36 $ + Version: $Revision: 1.4 $ Copyright: (c) 2002, 2003 License: @@ -43,8 +43,8 @@ CutModelMainPanel::CutModelMainPanel( wxWindow* parent, std::string path) initialize(path); } -CutModelMainPanel::~CutModelMainPanel( ){ - +CutModelMainPanel::~CutModelMainPanel( ){ + viewpanels.clear(); delete cutmanager; } @@ -117,18 +117,19 @@ void CutModelMainPanel::RemoveActor(int id){ try{ checkInvariant(); - for(int i = 0; i < viewpanels.size()-1;i++){ - if(viewpanels[i]->getId()==id){ - for(int j = i; j < viewpanels.size()-1;j++){ - viewpanels[j]=viewpanels[j+1]; + if(!this->IsBeingDeleted()){ + for(int i = 0; i < viewpanels.size()-1;i++){ + CutModelView* view = viewpanels[i]; + if(view->getId()==id){ + for(int j = i; j < viewpanels.size()-1;j++){ + viewpanels[j]=viewpanels[j+1]; + } + i = viewpanels.size(); } - i = viewpanels.size(); } - } - viewpanels.pop_back(); - - - cutmanager->RemoveActor(id); + viewpanels.pop_back(); + cutmanager->RemoveActor(id); + } }catch(CutModelException e){ showErrorDialog(e.getCause()); diff --git a/lib/maracasVisuLib/src/CutModule/kernel/CutModelData.cxx b/lib/maracasVisuLib/src/CutModule/kernel/CutModelData.cxx index ca9825a..d4b46fb 100644 --- a/lib/maracasVisuLib/src/CutModule/kernel/CutModelData.cxx +++ b/lib/maracasVisuLib/src/CutModule/kernel/CutModelData.cxx @@ -3,8 +3,8 @@ Program: wxMaracas Module: $RCSfile: CutModelData.cxx,v $ Language: C++ - Date: $Date: 2009/10/16 15:17:56 $ - Version: $Revision: 1.4 $ + Date: $Date: 2009/11/25 16:35:37 $ + Version: $Revision: 1.5 $ Copyright: (c) 2002, 2003 License: @@ -39,7 +39,9 @@ void CutModelData::initializeData(int id, vtkRenderWindowInteractor* interactor, } CutModelData::~CutModelData(){ checkInvariant(); + _boxWidgetVolume->RemoveAllObservers(); _boxWidgetVolume->Off(); + _boxWidgetVolume->SetInteractor(NULL); _boxWidgetVolume->Delete(); _Mapper->Delete(); _Actor->Delete(); @@ -47,7 +49,9 @@ CutModelData::~CutModelData(){ delete _cylinderfigure; delete _spherefigure; currentmatrix->Delete(); + modeltransform->Delete(); inversModel->Delete(); + _id = -1; } void CutModelData::RefreshViewBox(){ diff --git a/lib/maracasVisuLib/src/CutModule/kernel/CutModelManager.cxx b/lib/maracasVisuLib/src/CutModule/kernel/CutModelManager.cxx index 652faa7..101afaa 100644 --- a/lib/maracasVisuLib/src/CutModule/kernel/CutModelManager.cxx +++ b/lib/maracasVisuLib/src/CutModule/kernel/CutModelManager.cxx @@ -3,8 +3,8 @@ Program: wxMaracas Module: $RCSfile: CutModelManager.cxx,v $ Language: C++ - Date: $Date: 2009/09/08 08:14:27 $ - Version: $Revision: 1.3 $ + Date: $Date: 2009/11/25 16:35:37 $ + Version: $Revision: 1.4 $ Copyright: (c) 2002, 2003 License: @@ -30,7 +30,12 @@ CutModelManager::CutModelManager(std::string path){ CutModelManager::~CutModelManager(){ std::string files = _path; files+="/infounrd_0_fig_0.info"; - remove(files.c_str()); + remove(files.c_str()); + _vectordata.clear(); + _img = NULL; + _copyimg = NULL; + _interactor = NULL; + _render = NULL; } @@ -111,11 +116,12 @@ CutModelData* CutModelManager::getCutModelData(int id)throw( CutModelException){ CutModelData* current = NULL; for(int i= 0; i < _vectordata.size();i++){ + CutModelData* temp = _vectordata[i]; std::cout<<"id in CutModelManager:: "<getId()<getId()<getId()==id){ - current = _vectordata[i]; + if(temp->getId() == id){ + current = temp; } } if(current ==NULL){ @@ -152,7 +158,8 @@ void CutModelManager::RemoveActor(int id)throw( CutModelException){ i = _vectordata.size(); } } - _render->RemoveActor(current->getActor()); + _render->RemoveViewProp(current->getActor()); + //_render->RemoveViewProp(current->get delete current; _vectordata.pop_back(); _render->Render(); diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererManagerData.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererManagerData.cxx index 06ceb98..052da71 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererManagerData.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererManagerData.cxx @@ -23,7 +23,7 @@ wxMaracasMultipleVolumeRendererManagerData::wxMaracasMultipleVolumeRendererManag _volumeMapper->AutoAdjustSampleDistancesOn(); _volumeProperty = vtkVolumeProperty::New(); _volumeProperty->SetInterpolationTypeToLinear(); - _volumeProperty->ShadeOn(); + //_volumeProperty->ShadeOn(); _volumeProperty->DisableGradientOpacityOn(); _volumeProperty->SetColor(_ctfun); _volumeProperty->SetScalarOpacity(_tfun ); diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracas_ViewerWidget.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracas_ViewerWidget.cxx index b07d32f..5ce146c 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracas_ViewerWidget.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracas_ViewerWidget.cxx @@ -3,8 +3,8 @@ Program: wxMaracas Module: $RCSfile: wxMaracas_ViewerWidget.cxx,v $ Language: C++ - Date: $Date: 2009/10/16 15:17:57 $ - Version: $Revision: 1.18 $ + Date: $Date: 2009/11/25 16:35:38 $ + Version: $Revision: 1.19 $ Copyright: (c) 2002, 2003 License: @@ -215,7 +215,7 @@ if (mwxsphereview) { delete mwxsphereview; } if (mwxvtkmpr3Dview) { delete mwxvtkmpr3Dview; } if (mwxvtkclipping3Dview) { delete mwxvtkclipping3Dview; } - if (mwxvtk3Dbaseview_Clipping3D){ delete mwxvtk3Dbaseview_Clipping3D; } + if (mwxvtk3Dbaseview_Clipping3D){ delete mwxvtk3Dbaseview_Clipping3D; mwxvtk3Dbaseview_Clipping3D=NULL;} } //------------------------------------------------------------------------------------------------------------ // Methods diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtk3DBaseView.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtk3DBaseView.cxx index e601235..94fe0f7 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtk3DBaseView.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtk3DBaseView.cxx @@ -14,9 +14,13 @@ wxVtk3DBaseView::wxVtk3DBaseView(wxWindow *parent) //------------------------------------------------------------------- wxVtk3DBaseView::~wxVtk3DBaseView() { - if (_aCamera!=NULL) { _aCamera -> Delete(); } - if (_aRenderer!=NULL) { _aRenderer -> Delete(); } - if (_renWin!=NULL) { _renWin -> Delete(); } + if (_aCamera!=NULL) { _aCamera -> Delete(); _aCamera=NULL;} + if (_aRenderer!=NULL) { _aRenderer -> Delete(); _aRenderer=NULL;} + if (_renWin!=NULL) { + if(_renWin->GetReferenceCount()==0){ + _renWin -> Delete(); _renWin=NULL; + } + } } //------------------------------------------------------------------- vtkCamera* wxVtk3DBaseView::GetCamera() -- 2.45.1