X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FwxMPRWidget.cxx;h=67606299255f14f666ae5337dec6a3314de33f35;hb=f9901e756bb82bd333310b47607875331616bb29;hp=61063ce9c6e61efef087362f5def7d229cf9d7f7;hpb=d2fc2645728a4aea4f0aa0febfa1d7a894ab3ff1;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMPRWidget.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMPRWidget.cxx index 61063ce..6760629 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMPRWidget.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMPRWidget.cxx @@ -1,10 +1,35 @@ +/*# --------------------------------------------------------------------- +# +# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image +# pour la Sant�) +# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton +# Previous Authors : Laurent Guigues, Jean-Pierre Roux +# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil +# +# This software is governed by the CeCILL-B license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL-B +# license as circulated by CEA, CNRS and INRIA at the following URL +# http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +# or in the file LICENSE.txt. +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL-B license and that you accept its terms. +# ------------------------------------------------------------------------ */ + /*========================================================================= Program: wxMaracas Module: $RCSfile: wxMPRWidget.cxx,v $ Language: C++ - Date: $Date: 2009/11/30 20:52:50 $ - Version: $Revision: 1.15 $ + Date: $Date: 2012/11/15 14:14:35 $ + Version: $Revision: 1.17 $ Copyright: (c) 2002, 2003 License: @@ -56,7 +81,7 @@ #include "wxMPRWidget.h" -#include "wxVTKRenderWindowInteractor.h" +#include "creawxVTKRenderWindowInteractor.h" #include "UtilVtk3DGeometriSelection.h" #include "../kernel/marDicomBase.h" @@ -93,7 +118,7 @@ END_EVENT_TABLE( ); wxMPRWidget::wxMPRWidget( wxWindow* parent, - marImageData *marimageData , double voxelSize) + marImageData *marimageData ) : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL) { @@ -134,7 +159,6 @@ wxMPRWidget::wxMPRWidget( wxWindow* parent, if(marimageData!=NULL){ _marImageData = marimageData; - _voxelSize = voxelSize; _vtkmprbasedata = new vtkMPRBaseData(); _vtkmprbasedata->SetMarImageData(_marImageData); @@ -143,6 +167,8 @@ wxMPRWidget::wxMPRWidget( wxWindow* parent, wxSplitterWindow *pnlSplitter = new wxSplitterWindow( this , -1); pnlSplitter -> SetMinimumPaneSize( 2 ); + //RaC Nov2012 Correctly resize internal panels with the window resize event + pnlSplitter->SetSashGravity(0.5); wxPanel *MPRPanel = CreateMPRPanel(pnlSplitter,_vtkmprbasedata); wxPanel *controlPanel = CreateControlPanel(pnlSplitter); @@ -164,36 +190,36 @@ wxMPRWidget::wxMPRWidget( wxWindow* parent, _refreshBPage=0; } -void wxMPRWidget::setImageData(vtkImageData * img, double voxelsize){ + +//---------------------------------------------------------------------------- +void wxMPRWidget::setImageData(vtkImageData * img) +{ if(_marImageData!=NULL){ _marImageData->removeImageData(0); _marImageData->AddImageData(img); }else{ - _marImageData = new marImageData(img); + _marImageData = new marImageData(img); } - _voxelSize = voxelsize; - if(_vtkmprbasedata==NULL){ _vtkmprbasedata = new vtkMPRBaseData(); _vtkmprbasedata->SetMarImageData(_marImageData); - wxSplitterWindow *pnlSplitter = new wxSplitterWindow( this , -1); + wxSplitterWindow *pnlSplitter= new wxSplitterWindow( this , -1); pnlSplitter -> SetMinimumPaneSize( 2 ); + //RaC Nov2012 Correctly resize internal panels with the window resize event + pnlSplitter->SetSashGravity(0.5); - wxPanel *MPRPanel = CreateMPRPanel(pnlSplitter,_vtkmprbasedata); + wxPanel *MPRPanel = CreateMPRPanel(pnlSplitter,_vtkmprbasedata); wxPanel *controlPanel = CreateControlPanel(pnlSplitter); pnlSplitter -> SplitVertically( MPRPanel, controlPanel, 550 ); this->GetSizer() -> Add( pnlSplitter ,1,wxGROW ,0); } - - - } -//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- wxMPRWidget::~wxMPRWidget( ) { //EEDxx2.4 DELETE @@ -351,7 +377,7 @@ wxPanel* wxMPRWidget::CreateView(int type,wxWindow *parent, vtkMPRBaseData *vtkm if (type==3) { _widgetMesure_B = new wxWidgetMesure2D_Plane_in_MPR(panel); - _vtkplane2Dview_B = new vtkPlane2DView( _widgetMesure_B->GetWindow2()); + _vtkplane2Dview_B = new vtkPlane2DView( _widgetMesure_B->GetWindow2()); _widgetMesure_B->SetVtkPlane2DView( _vtkplane2Dview_B ); _vtkplane2Dview_B->SetImgSize( 200 ); _vtkplane2Dview_B->SetVtkBaseData(vtkmprbasedata); @@ -359,27 +385,31 @@ wxPanel* wxMPRWidget::CreateView(int type,wxWindow *parent, vtkMPRBaseData *vtkm } if (type==4) { - _wxsphereview_B = new wxSphereView( panel , vtkmprbasedata, vtkmprbasedata->GetImageData() ); +//EED +// _wxsphereview_B = new wxSphereView( panel , vtkmprbasedata, vtkmprbasedata->GetImageData() ); + _wxsphereview_B = new wxSphereView( panel , vtkmprbasedata ); wxwindow=_wxsphereview_B->GetWxVTKRenderWindowInteractor(); } if (type==5) { wxSplitterWindow *panelMPR3D = new wxSplitterWindow( panel , -1); - _wxvtk3Dbaseview_MPR3D_B = new wxVtk3DBaseView( panelMPR3D ); + _wxvtk3Dbaseview_MPR3D_B = new wxVtk3DBaseView( panelMPR3D , vtkmprbasedata ); - _wxvtkmpr3Dview_B = new wxVtkMPR3DView(_wxvtk3Dbaseview_MPR3D_B); + _wxvtkmpr3Dview_B = new wxVtkMPR3DView(_wxvtk3Dbaseview_MPR3D_B); vtkMPR3DDataViewer *vtkmpr3Ddataviewer = new vtkMPR3DDataViewer(); vtkmpr3Ddataviewer->SetVtkMPRBaseData(vtkmprbasedata); vtkmpr3Ddataviewer->Configure(); _wxvtkmpr3Dview_B->SetVtkMPR3DDataViewer(vtkmpr3Ddataviewer); - wxWindow *window3D = _wxvtk3Dbaseview_MPR3D_B->GetWxVTKRenderWindowInteractor(); - wxPanel *controlPanel3D = _wxvtkmpr3Dview_B->CreateControlPanel(panelMPR3D, false); + wxWindow *window3D = _wxvtk3Dbaseview_MPR3D_B->GetWxVTKRenderWindowInteractor(); + wxPanel *controlPanel3D = _wxvtkmpr3Dview_B->CreateControlPanel(panelMPR3D, false); //EEDxx2.4 panelMPR3D -> SetMinimumPaneSize( 5 ); panelMPR3D -> SplitHorizontally( controlPanel3D,window3D,600 ); + //RaC Nov2012 Correctly resize internal panels with the window resize event + panelMPR3D->SetSashGravity(0.5); wxwindow=panelMPR3D; } @@ -387,7 +417,7 @@ wxPanel* wxMPRWidget::CreateView(int type,wxWindow *parent, vtkMPRBaseData *vtkm if (type==6) { wxSplitterWindow *panelClipping3D = new wxSplitterWindow( panel , -1); - _wxvtk3Dbaseview_Clipping3D_BB = new wxVtk3DBaseView( panelClipping3D ); + _wxvtk3Dbaseview_Clipping3D_BB = new wxVtk3DBaseView( panelClipping3D , vtkmprbasedata ); _wxvtkclipping3Dview_BB = new wxVtkClipping3DView(_wxvtk3Dbaseview_Clipping3D_BB); vtkClipping3DDataViewer *vtkclipping3Ddataviewer = new vtkClipping3DDataViewer(); @@ -401,11 +431,11 @@ wxPanel* wxMPRWidget::CreateView(int type,wxWindow *parent, vtkMPRBaseData *vtkm vtkmpr3Ddataviewer->Configure(); _wxvtkmpr3Dview_BB->SetVtkMPR3DDataViewer(vtkmpr3Ddataviewer); - wxWindow *window3D = _wxvtk3Dbaseview_Clipping3D_BB->GetWxVTKRenderWindowInteractor(); + wxWindow *window3D = _wxvtk3Dbaseview_Clipping3D_BB->GetWxVTKRenderWindowInteractor(); wxPanel *panelControl = new wxPanel(panelClipping3D,-1); wxPanel *controlPanelMPR3D = _wxvtkmpr3Dview_BB->CreateControlPanel(panelControl, false); - wxPanel *controlPanelClipping3D = _wxvtkclipping3Dview_BB->CreateControlPanel(panelControl); + wxPanel *controlPanelClipping3D = _wxvtkclipping3Dview_BB->CreateSurfControlPanel(panelControl); _btnCutImageData = new wxCheckBox(panelControl,-1,_T("Cut Module")); Connect(_btnCutImageData->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED , (wxObjectEventFunction) &wxMPRWidget::OnCutImagaData ); @@ -424,6 +454,8 @@ wxPanel* wxMPRWidget::CreateView(int type,wxWindow *parent, vtkMPRBaseData *vtkm //EEDxx2.4 panelClipping3D -> SetMinimumPaneSize( 5 ); panelClipping3D -> SplitHorizontally( panelControl , window3D , 10 ); + //RaC Nov2012 Correctly resize internal panels with the window resize event + panelClipping3D->SetSashGravity(0.5); wxwindow=panelClipping3D; } @@ -478,17 +510,17 @@ wxPanel* wxMPRWidget::CreateMPRPanel4View(wxWindow *parent, vtkMPRBaseData *vtkm // view 0 _vtkmpr2Dview[0] = new wxVtkMPR2DView(panel,0); _vtkmpr2Dview[0]->SetVtkBaseData(vtkmprbasedata); - wxVTKRenderWindowInteractor *iren0 = _vtkmpr2Dview[0]->GetWxVTKRenderWindowInteractor(); + crea::wxVTKRenderWindowInteractor *iren0 = _vtkmpr2Dview[0]->GetWxVTKRenderWindowInteractor(); // view 1 _vtkmpr2Dview[1] = new wxVtkMPR2DView(panel,1); _vtkmpr2Dview[1]->SetVtkBaseData(vtkmprbasedata); - wxVTKRenderWindowInteractor *iren1 = _vtkmpr2Dview[1]->GetWxVTKRenderWindowInteractor(); + crea::wxVTKRenderWindowInteractor *iren1 = _vtkmpr2Dview[1]->GetWxVTKRenderWindowInteractor(); // view 2 _vtkmpr2Dview[2] = new wxVtkMPR2DView(panel,2); _vtkmpr2Dview[2]->SetVtkBaseData(vtkmprbasedata); - wxVTKRenderWindowInteractor *iren2 = _vtkmpr2Dview[2]->GetWxVTKRenderWindowInteractor(); + crea::wxVTKRenderWindowInteractor *iren2 = _vtkmpr2Dview[2]->GetWxVTKRenderWindowInteractor(); // view 3 wxNotebook *notebook = new wxNotebook( panel, -1 ); @@ -504,14 +536,15 @@ wxPanel* wxMPRWidget::CreateMPRPanel4View(wxWindow *parent, vtkMPRBaseData *vtkm notebook->AddPage( _widgetMesure, _T("Plane") ); // view 3.1 - _wxsphereview = new wxSphereView( notebook , vtkmprbasedata, vtkmprbasedata->GetImageData()); - wxVTKRenderWindowInteractor *iren3B = _wxsphereview->GetWxVTKRenderWindowInteractor(); +// EED +// _wxsphereview = new wxSphereView( notebook , vtkmprbasedata, vtkmprbasedata->GetImageData()); + _wxsphereview = new wxSphereView( notebook , vtkmprbasedata ); + crea::wxVTKRenderWindowInteractor *iren3B = _wxsphereview->GetWxVTKRenderWindowInteractor(); notebook->AddPage( iren3B, _T("Sphere") ); - // view 3.2 wxSplitterWindow *panelMPR3D = new wxSplitterWindow( notebook , -1); - _wxvtk3Dbaseview_MPRClipping3D = new wxVtk3DBaseView( panelMPR3D ); + _wxvtk3Dbaseview_MPRClipping3D = new wxVtk3DBaseView( panelMPR3D ,vtkmprbasedata ); _wxvtkmpr3Dview = new wxVtkMPR3DView( _wxvtk3Dbaseview_MPRClipping3D ); vtkMPR3DDataViewer *vtkmpr3Ddataviewer = new vtkMPR3DDataViewer(); @@ -527,21 +560,16 @@ wxPanel* wxMPRWidget::CreateMPRPanel4View(wxWindow *parent, vtkMPRBaseData *vtkm _wxvtkclipping3Dview->SetVtkClipping3DDataViewer(vtkclipping3Ddataviewer); - wxWindow *window3D = _wxvtk3Dbaseview_MPRClipping3D->GetWxVTKRenderWindowInteractor(); - + wxWindow *window3D = _wxvtk3Dbaseview_MPRClipping3D->GetWxVTKRenderWindowInteractor(); wxPanel *panelControl = new wxPanel(panelMPR3D,-1); wxPanel *controlPanelMPR3D = _wxvtkmpr3Dview->CreateControlPanel(panelControl, false); - wxPanel *controlPanelClipping3D = _wxvtkclipping3Dview->CreateControlPanel(panelControl); - - - + wxPanel *controlPanelClipping3D = _wxvtkclipping3Dview->CreateSurfControlPanel(panelControl); // wxBoxSizer *sizerCtrol = new wxBoxSizer(wxVERTICAL); wxFlexGridSizer *sizerCtrol = new wxFlexGridSizer(1); sizerCtrol->Add(controlPanelMPR3D , 1, wxALL|wxEXPAND, 2); sizerCtrol->Add(controlPanelClipping3D , 1, wxALL|wxEXPAND, 2); - panelControl->SetAutoLayout(true); panelControl->SetSizer(sizerCtrol); panelControl->SetSize(400,150); @@ -549,14 +577,11 @@ wxPanel* wxMPRWidget::CreateMPRPanel4View(wxWindow *parent, vtkMPRBaseData *vtkm //EEDxx2.4 panelMPR3D -> SetMinimumPaneSize( 5 ); - + //RaC Nov2012 Correctly resize internal panels with the window resize event + panelMPR3D->SetSashGravity(0.5); panelMPR3D -> SplitHorizontally( panelControl,window3D,200 ); - notebook->AddPage( panelMPR3D, _T("MPR 3D - Clipping") ); - - Connect(notebook->GetId() , wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED , (wxObjectEventFunction) &wxMPRWidget::OnPageBChanged ); - wxBoxSizer *sizerV = new wxBoxSizer(wxVERTICAL); wxBoxSizer *sizerH1= new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *sizerH2= new wxBoxSizer(wxHORIZONTAL); @@ -621,42 +646,35 @@ void wxMPRWidget::ConfigureVTK(){ if (_vtkmprbasedata!=NULL) { _vtkmprbasedata->Configure(); - x=_vtkmprbasedata -> GetMaxPositionX()/2; - y=_vtkmprbasedata -> GetMaxPositionY()/2; - z=_vtkmprbasedata -> GetMaxPositionZ()/2; + x = _vtkmprbasedata->GetMaxPositionX()/2; + y = _vtkmprbasedata->GetMaxPositionY()/2; + z = _vtkmprbasedata->GetMaxPositionZ()/2; _vtkmprbasedata->SetX( x ); _vtkmprbasedata->SetY( y ); _vtkmprbasedata->SetZ( z ); } - if(_vtkmpr2Dview[0]!=NULL) {_vtkmpr2Dview[0] -> Configure();} - if(_vtkmpr2Dview[1]!=NULL) {_vtkmpr2Dview[1] -> Configure();} - if(_vtkmpr2Dview[2]!=NULL) {_vtkmpr2Dview[2] -> Configure();} - + if(_vtkmpr2Dview[0]!=NULL) { _vtkmpr2Dview[0]->Configure(); } + if(_vtkmpr2Dview[1]!=NULL) { _vtkmpr2Dview[1]->Configure(); } + if(_vtkmpr2Dview[2]!=NULL) { _vtkmpr2Dview[2]->Configure(); } - if (_vtkmpr2Dview_B[0]!=NULL) { _vtkmpr2Dview_B[0] -> Configure(); } - if (_vtkmpr2Dview_B[1]!=NULL) { _vtkmpr2Dview_B[1] -> Configure(); } - if (_vtkmpr2Dview_B[2]!=NULL) { _vtkmpr2Dview_B[2] -> Configure(); } + if (_vtkmpr2Dview_B[0]!=NULL) { _vtkmpr2Dview_B[0]->Configure(); } + if (_vtkmpr2Dview_B[1]!=NULL) { _vtkmpr2Dview_B[1]->Configure(); } + if (_vtkmpr2Dview_B[2]!=NULL) { _vtkmpr2Dview_B[2]->Configure(); } + if (_vtkplane2Dview!=NULL) { _vtkplane2Dview->Configure(); } + if (_widgetMesure!=NULL) { _widgetMesure->ConfigureA(_vtkplane2Dview); } + if (_widgetMesure!=NULL) { _widgetMesure->SetActiveLink(true); } + if (_wxsphereview!=NULL) { _wxsphereview->Configure(); } - + if (_wxvtk3Dbaseview_MPRClipping3D!=NULL){_wxvtk3Dbaseview_MPRClipping3D->Configure();} + if (_wxvtkmpr3Dview!=NULL) { _wxvtkmpr3Dview->Configure(); } + if (_wxvtkclipping3Dview!=NULL) { _wxvtkclipping3Dview->Configure(); } - if (_vtkplane2Dview!=NULL){_vtkplane2Dview -> Configure();} - if (_widgetMesure!=NULL){_widgetMesure -> ConfigureA(_vtkplane2Dview);} - if (_widgetMesure!=NULL){_widgetMesure -> SetActiveLink(true);} - if (_widgetMesure!=NULL){_widgetMesure -> SetMesureScale( _voxelSize );} - if (_wxsphereview!=NULL){_wxsphereview -> Configure();} - - if (_wxvtk3Dbaseview_MPRClipping3D!=NULL){_wxvtk3Dbaseview_MPRClipping3D -> Configure();} - if (_wxvtkmpr3Dview!=NULL){ - _wxvtkmpr3Dview -> Configure(); - } - if (_wxvtkclipping3Dview!=NULL){_wxvtkclipping3Dview -> Configure();} - - if (_vtkplane2Dview_B!=NULL){ _vtkplane2Dview_B -> Configure(); } - if (_widgetMesure_B!=NULL){ _widgetMesure_B -> ConfigureA( _vtkplane2Dview_B ); } - if (_widgetMesure_B!=NULL){ _widgetMesure_B -> SetActiveLink(true); } + if (_vtkplane2Dview_B!=NULL) { _vtkplane2Dview_B->Configure(); } + if (_widgetMesure_B!=NULL) { _widgetMesure_B->ConfigureA( _vtkplane2Dview_B ); } + if (_widgetMesure_B!=NULL) { _widgetMesure_B->SetActiveLink(true); } //EEDx3 // double spc[3]; @@ -665,8 +683,6 @@ void wxMPRWidget::ConfigureVTK(){ // imageData->GetSpacing(spc); // _widgetMesure_B->SetMesureScale(spc[0]); - if (_widgetMesure_B!=NULL) {_widgetMesure_B->SetMesureScale( _voxelSize );} - if (_wxsphereview_B!=NULL) {_wxsphereview_B -> Configure();}