X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FwxMaracas_ViewerWidget.cxx;h=b90dbaff4c38b4ee7cfa6a8a1cedb1a6db836a6e;hb=dea0efc567d8332b2e7eb936e3ba4ac1c11b2542;hp=4097c98766638a93c54e87298517ac04ff012cbd;hpb=543dfcbe8f5ff78bbed90ef1e20c722bfa0ef248;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracas_ViewerWidget.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracas_ViewerWidget.cxx index 4097c98..b90dbaf 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracas_ViewerWidget.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracas_ViewerWidget.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: wxMaracas_ViewerWidget.cxx,v $ Language: C++ - Date: $Date: 2012/11/14 07:30:52 $ - Version: $Revision: 1.37 $ + Date: $Date: 2012/11/15 14:14:35 $ + Version: $Revision: 1.38 $ Copyright: (c) 2002, 2003 License: @@ -30,42 +55,43 @@ wxMaracas_ViewerWidget::wxMaracas_ViewerWidget(wxWindow *parent, vtkImageData* imagedata, int type, vtkMPRBaseData *vtkmprbasedata) : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL) { - wxPanel *panel = this; - wxWindow *wxwindow = NULL, *window3D = 0; - wxSplitterWindow *panelClipping3D= 0; -// wxPanel *panelControl = 0; -// wxFlexGridSizer *sizerCtrol = 0; - wxPanel *controlPanelMPR3D = 0; - wxPanel *controlPanelClippingSurf3D = 0; + wxPanel *panel = this; + wxWindow *wxwindow = NULL; + wxWindow *window3D = NULL; + wxSplitterWindow *panelClipping3D = NULL; +// wxPanel *panelControl = NULL; +// wxFlexGridSizer *sizerCtrol = NULL; + wxPanel *controlPanelMPR3D = NULL; + wxPanel *controlPanelClippingSurf3D = NULL; //RaC 03-2010 Adding a tab - wxPanel *controlPanelClippingVol3D = 0; + wxPanel *controlPanelClippingVol3D = NULL; - wxBoxSizer *sizer = 0; + wxBoxSizer *sizer = 0; mType = type; if (vtkmprbasedata==NULL) { - minternalVtkmprbasedata = true; - mvtkmprbasedata = new vtkMPRBaseData(); - marImageData *marimagedata = new marImageData( imagedata ); + minternalVtkmprbasedata = true; + mvtkmprbasedata = new vtkMPRBaseData(); + marImageData *marimagedata = new marImageData( imagedata ); mvtkmprbasedata->SetMarImageData(marimagedata); } else { minternalVtkmprbasedata = false; mvtkmprbasedata = vtkmprbasedata; } - mvtk2Dbaseview = NULL; - mvtkmpr2Dview_X = NULL; - mvtkmpr2Dview_Y = NULL; - mvtkmpr2Dview_Z = NULL; - mvtkplane2Dview = NULL; - mwidgetMesure = NULL; - mwxsphereview = NULL; - mwxvtkclipping3Dview = NULL; - mwxvtk3Dbaseview_Clipping3D = NULL; - mwxvtkmpr3Dview = NULL; - vtkmpr3Ddataviewer = NULL; + mvtk2Dbaseview = NULL; + mvtkmpr2Dview_X = NULL; + mvtkmpr2Dview_Y = NULL; + mvtkmpr2Dview_Z = NULL; + mvtkplane2Dview = NULL; + mwidgetMesure = NULL; + mwxsphereview = NULL; + mwxvtkclipping3Dview = NULL; + mwxvtk3Dbaseview_Clipping3D = NULL; + mwxvtkmpr3Dview = NULL; + vtkmpr3Ddataviewer = NULL; if (type==-1) { @@ -97,20 +123,21 @@ wxwindow = mwidgetMesure; }else if (type==4) { - mwxsphereview = new wxSphereView( panel , mvtkmprbasedata, mvtkmprbasedata->GetImageData() ); +//EED +// mwxsphereview = new wxSphereView( panel , mvtkmprbasedata , mvtkmprbasedata->GetImageData() ); + mwxsphereview = new wxSphereView( panel , mvtkmprbasedata ); wxwindow=mwxsphereview->GetWxVTKRenderWindowInteractor(); }else if (type==5) { panelClipping3D = new wxSplitterWindow( panel , -1); - mwxvtk3Dbaseview_Clipping3D = new wxVtk3DBaseView( panelClipping3D ); - - mwxvtkclipping3Dview = new wxVtkClipping3DView(mwxvtk3Dbaseview_Clipping3D); - vtkClipping3DDataViewer *vtkclipping3Ddataviewer = new vtkClipping3DDataViewer(); + mwxvtk3Dbaseview_Clipping3D = new wxVtk3DBaseView( panelClipping3D , vtkmprbasedata); + mwxvtkclipping3Dview = new wxVtkClipping3DView(mwxvtk3Dbaseview_Clipping3D); + vtkClipping3DDataViewer *vtkclipping3Ddataviewer= new vtkClipping3DDataViewer(); vtkclipping3Ddataviewer->SetVtkMPRBaseData(mvtkmprbasedata); vtkclipping3Ddataviewer->Configure(); mwxvtkclipping3Dview->SetVtkClipping3DDataViewer(vtkclipping3Ddataviewer); - mwxvtkmpr3Dview = new wxVtkMPR3DView( mwxvtk3Dbaseview_Clipping3D ); + mwxvtkmpr3Dview = new wxVtkMPR3DView( mwxvtk3Dbaseview_Clipping3D ); vtkMPR3DDataViewer *vtkmpr3Ddataviewer = new vtkMPR3DDataViewer(); vtkmpr3Ddataviewer->SetVtkMPRBaseData(mvtkmprbasedata); vtkmpr3Ddataviewer->Configure(); @@ -119,10 +146,10 @@ window3D = mwxvtk3Dbaseview_Clipping3D->GetWxVTKRenderWindowInteractor(); //-- - wxNotebook *notebook = new wxNotebook(panelClipping3D, -1); + wxNotebook *notebook = new wxNotebook(panelClipping3D, -1); // First tab - controlPanelMPR3D = mwxvtkmpr3Dview->CreateControlPanel(notebook, true); + controlPanelMPR3D = mwxvtkmpr3Dview->CreateControlPanel(notebook, true); notebook->AddPage(controlPanelMPR3D, _T("Planes") ); // Second Tab @@ -137,6 +164,8 @@ panelClipping3D->SplitHorizontally( notebook , window3D , 10 ); //panelClipping3D->SetMinimumPaneSize( 15 ); panelClipping3D->SetMinimumPaneSize( 70 ); // JPR + //RaC Nov2012 Correctly resize internal panels with the window resize event + panelClipping3D->SetSashGravity(0.5); /* EED 04 / Febrary / 2010 panelControl = new wxPanel(panelClipping3D,-1); @@ -158,19 +187,14 @@ wxwindow=panelClipping3D; } else if (type==6) { - panelClipping3D = new wxSplitterWindow( panel , -1); - mwxvtk3Dbaseview_Clipping3D = new wxVtk3DBaseView( panelClipping3D ); - - mwxvtkmpr3Dview = new wxVtkMPR3DView( mwxvtk3Dbaseview_Clipping3D ); - - vtkmpr3Ddataviewer = new vtkMPR3DDataViewer(); - - wxWindow *window3D = mwxvtk3Dbaseview_Clipping3D->GetWxVTKRenderWindowInteractor(); - - wxPanel *panelControl = new wxPanel(panelClipping3D,-1); - wxPanel *controlPanelMPR3D = mwxvtkmpr3Dview->CreateControlPanel(panelControl, true); - - wxFlexGridSizer *sizerCtrol = new wxFlexGridSizer(1); + panelClipping3D = new wxSplitterWindow( panel , -1); + mwxvtk3Dbaseview_Clipping3D = new wxVtk3DBaseView( panelClipping3D , vtkmprbasedata); + mwxvtkmpr3Dview = new wxVtkMPR3DView( mwxvtk3Dbaseview_Clipping3D ); + vtkmpr3Ddataviewer = new vtkMPR3DDataViewer(); + wxWindow *window3D = mwxvtk3Dbaseview_Clipping3D->GetWxVTKRenderWindowInteractor(); + wxPanel *panelControl = new wxPanel(panelClipping3D,-1); + wxPanel *controlPanelMPR3D = mwxvtkmpr3Dview->CreateControlPanel(panelControl, true); + wxFlexGridSizer *sizerCtrol = new wxFlexGridSizer(1); sizerCtrol->Add(controlPanelMPR3D, 1, wxALL|wxEXPAND, 2); panelControl->SetAutoLayout(true); @@ -181,6 +205,9 @@ panelClipping3D->SetMinimumPaneSize( 130 ); // FCY panelClipping3D->SplitHorizontally( panelControl , window3D , 0 ); //panelClipping3D->SetSashSize(10); + + //RaC Nov2012 Correctly resize internal panels with the window resize event + panelClipping3D->SetSashGravity(0.5); panelClipping3D->UpdateSize(); //FCY wxwindow=panelClipping3D; @@ -191,7 +218,7 @@ }else if (type==7) { - mwxvtk3Dbaseview_Clipping3D = new wxVtk3DBaseView( panel ); + mwxvtk3Dbaseview_Clipping3D = new wxVtk3DBaseView( panel ,vtkmprbasedata); wxwindow = (wxWindow*) mwxvtk3Dbaseview_Clipping3D->GetWxVTKRenderWindowInteractor(); } @@ -290,7 +317,6 @@ if ( mwidgetMesure !=NULL ) { mwidgetMesure->ConfigureA(mvtkplane2Dview); } if ( mwidgetMesure !=NULL ) { mwidgetMesure->ConfigureA(mvtkplane2Dview); } if ( mwidgetMesure !=NULL ) { mwidgetMesure->SetActiveLink(true); } - if ( mwidgetMesure !=NULL ) { mwidgetMesure->SetMesureScale( 1 ); } if ( mwxsphereview !=NULL ) { mwxsphereview->Configure(); } @@ -334,15 +360,15 @@ void wxMaracas_ViewerWidget::Refresh(bool eraseBackground ,const wxRect* rect ) //------------------------------------------------------------------------- void wxMaracas_ViewerWidget::RefreshView() { - if (mvtk2Dbaseview !=NULL ){ mvtk2Dbaseview->Refresh(); } - if (mvtkmpr2Dview_X !=NULL ){ mvtkmpr2Dview_X->Refresh(); } - if (mvtkmpr2Dview_Y !=NULL ){ mvtkmpr2Dview_Y->Refresh(); } - if (mvtkmpr2Dview_Z !=NULL ){ mvtkmpr2Dview_Z->Refresh(); } - if (mvtkplane2Dview !=NULL ){ mvtkplane2Dview->Refresh(); } - if (mwxsphereview !=NULL ){ mwxsphereview ->Refresh(); } - if (mwxvtkmpr3Dview !=NULL ){ mwxvtkmpr3Dview->RefreshView(); } - if (mwxvtkclipping3Dview !=NULL ){ mwxvtkclipping3Dview->Refresh(); } - if (mwxvtk3Dbaseview_Clipping3D !=NULL ){ mwxvtk3Dbaseview_Clipping3D->Refresh(); } + if (mwxvtk3Dbaseview_Clipping3D !=NULL ){ mwxvtk3Dbaseview_Clipping3D->Refresh(); } + if (mwxvtkclipping3Dview !=NULL ){ mwxvtkclipping3Dview->Refresh(); } + if (mwxvtkmpr3Dview !=NULL ){ mwxvtkmpr3Dview->RefreshView(); } + if (mvtk2Dbaseview !=NULL ){ mvtk2Dbaseview->Refresh(); } + if (mvtkmpr2Dview_X !=NULL ){ mvtkmpr2Dview_X->Refresh(); } + if (mvtkmpr2Dview_Y !=NULL ){ mvtkmpr2Dview_Y->Refresh(); } + if (mvtkmpr2Dview_Z !=NULL ){ mvtkmpr2Dview_Z->Refresh(); } + if (mvtkplane2Dview !=NULL ){ mvtkplane2Dview->Refresh(); } + if (mwxsphereview !=NULL ){ mwxsphereview ->RefreshView(); } } //------------------------------------------------------------------------- @@ -350,30 +376,40 @@ void wxMaracas_ViewerWidget::Refresh(bool eraseBackground ,const wxRect* rect ) wxVtkBaseView *wxMaracas_ViewerWidget::GetwxVtkBaseView() { wxVtkBaseView *wxvtkbaseview=NULL; - if (mvtk2Dbaseview!=NULL){ + if (mvtk2Dbaseview!=NULL) + { wxvtkbaseview = mvtk2Dbaseview; } - if (mvtkmpr2Dview_X!=NULL){ + if (mvtkmpr2Dview_X!=NULL) + { wxvtkbaseview = mvtkmpr2Dview_X; } - if (mvtkmpr2Dview_Y!=NULL){ + if (mvtkmpr2Dview_Y!=NULL) + { wxvtkbaseview = mvtkmpr2Dview_Y; } - if (mvtkmpr2Dview_Z!=NULL){ + if (mvtkmpr2Dview_Z!=NULL) + { wxvtkbaseview = mvtkmpr2Dview_Z; } - if (mvtkplane2Dview!=NULL){ + if (mvtkplane2Dview!=NULL) + { wxvtkbaseview = mvtkplane2Dview; } - if (mwxsphereview!=NULL){ + if (mwxsphereview!=NULL) + { wxvtkbaseview = mwxsphereview; } - if (mwxvtk3Dbaseview_Clipping3D!=NULL){ + if (mwxvtk3Dbaseview_Clipping3D!=NULL) + { wxvtkbaseview = mwxvtk3Dbaseview_Clipping3D; } return wxvtkbaseview ; } + + +//------------------------------------------------------------------------- void wxMaracas_ViewerWidget::SetImage( vtkImageData *image ) { if(mvtkmprbasedata !=NULL) @@ -382,40 +418,51 @@ void wxMaracas_ViewerWidget::Refresh(bool eraseBackground ,const wxRect* rect ) mar->removeImageData(0); mar->AddImageData(image); } - if (mvtk2Dbaseview!=NULL) { mvtk2Dbaseview->SetImageToVtkViewer(image); } - if (mvtkmpr2Dview_X!=NULL){ + if (mvtkmpr2Dview_X!=NULL) + { mvtkmpr2Dview_X->SetImageToVtkViewer(image); } - if (mvtkmpr2Dview_Y!=NULL){ + if (mvtkmpr2Dview_Y!=NULL) + { mvtkmpr2Dview_Y->SetImageToVtkViewer(image); } - if (mvtkmpr2Dview_Z!=NULL){ + if (mvtkmpr2Dview_Z!=NULL) + { mvtkmpr2Dview_Z->SetImageToVtkViewer(image); } - if (mvtkplane2Dview!=NULL){ + if (mvtkplane2Dview!=NULL) + { // ??? EED 10 oct 2012 } - if (mwxsphereview!=NULL){ - // ??? EED 10 oct 2012 + if (mwxsphereview!=NULL) + { + mwxsphereview->SetImage(); } - if (mwxvtk3Dbaseview_Clipping3D!=NULL){ - // ??? EED 10 oct 2012 + if (mwxvtkclipping3Dview!=NULL) + { + mwxvtkclipping3Dview->GetVtkClipping3DDataViewer()->SetImage(); } - + if (mwxvtkmpr3Dview!=NULL) + { + mwxvtkmpr3Dview->SetImage(); + } //EED 26/11/2009 // ConfigureVTK(); // RefreshView(); + } + //------------------------------------------------------------------------- + double wxMaracas_ViewerWidget :: GetX() { double value = -1; @@ -426,6 +473,8 @@ void wxMaracas_ViewerWidget::Refresh(bool eraseBackground ,const wxRect* rect ) return value; } + //------------------------------------------------------------------------- + double wxMaracas_ViewerWidget::GetY() { double value = -1; @@ -436,6 +485,8 @@ void wxMaracas_ViewerWidget::Refresh(bool eraseBackground ,const wxRect* rect ) return value; } + //------------------------------------------------------------------------- + double wxMaracas_ViewerWidget::GetZ() { double value = -1;