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=8cb2e736dbd160649089afd44928db6d26febcca;hp=a0ca639899ac8173d90700ba1658e3bd88ce469d;hpb=40dfa1616e1203ecccb8163e7722c76769eddfe3;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 a0ca639..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/10/11 10:45:16 $ - Version: $Revision: 1.36 $ + 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(); } @@ -259,11 +286,6 @@ if (mvtkmprbasedata!=NULL) { mvtkmprbasedata->Configure(); - /* - x = mvtkmprbasedata->GetMaxPositionX()/2; - y = mvtkmprbasedata->GetMaxPositionY()/2; - z = mvtkmprbasedata->GetMaxPositionZ()/2; - */ if(mvtkmprbasedata->GetImageData() != NULL) { @@ -295,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(); } @@ -330,25 +351,24 @@ } - //------------------------------------------------------------------------- - - void wxMaracas_ViewerWidget::Refresh(bool eraseBackground ,const wxRect* rect ) // virtual eraseBackground=true , rect=NULL - { - wxPanel::Refresh(false); - } +//------------------------------------------------------------------------- +void wxMaracas_ViewerWidget::Refresh(bool eraseBackground ,const wxRect* rect ) // virtual eraseBackground=true , rect=NULL +{ + wxPanel::Refresh(false); +} //------------------------------------------------------------------------- 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(); } } //------------------------------------------------------------------------- @@ -356,30 +376,40 @@ 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) @@ -388,40 +418,51 @@ 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; @@ -432,6 +473,8 @@ return value; } + //------------------------------------------------------------------------- + double wxMaracas_ViewerWidget::GetY() { double value = -1; @@ -442,6 +485,8 @@ return value; } + //------------------------------------------------------------------------- + double wxMaracas_ViewerWidget::GetZ() { double value = -1; @@ -453,47 +498,64 @@ // return mvtk2Dbaseview->GetVtkBaseData()->GetZ(); } - void wxMaracas_ViewerWidget::setColorTransferFunction(vtkColorTransferFunction* colortable){ - if(mvtkmpr2Dview_X!=NULL){ - mvtkmpr2Dview_X->setColorTransferFunction(colortable); - } - if(mvtkmpr2Dview_Y!=NULL){ - mvtkmpr2Dview_Y->setColorTransferFunction(colortable); - } - if(mvtkmpr2Dview_Z!=NULL){ - mvtkmpr2Dview_Z->setColorTransferFunction(colortable); - } - if(mwxvtkmpr3Dview!=NULL){ - mwxvtkmpr3Dview->setColorTransferFunction(colortable); - } +//------------------------------------------------------------------------------------------- +void wxMaracas_ViewerWidget::setColorTransferFunction(vtkColorTransferFunction* colortable) +{ + if(mvtkmpr2Dview_X!=NULL) + { + mvtkmpr2Dview_X->setColorTransferFunction(colortable); } - - void wxMaracas_ViewerWidget::setWindowLevel(double level){ - if(mvtkmpr2Dview_X!=NULL){ - mvtkmpr2Dview_X->setWindowLevel(level); - } - if(mvtkmpr2Dview_Y!=NULL){ - mvtkmpr2Dview_Y->setWindowLevel(level); - } - if(mvtkmpr2Dview_Z!=NULL){ - mvtkmpr2Dview_Z->setWindowLevel(level); - } - /*if(mwxvtkmpr3Dview!=NULL){ - mwxvtkmpr3Dview->setWindowLevel(level); - }*/ + + if(mvtkmpr2Dview_Y!=NULL) + { + mvtkmpr2Dview_Y->setColorTransferFunction(colortable); + } + + if(mvtkmpr2Dview_Z!=NULL) + { + mvtkmpr2Dview_Z->setColorTransferFunction(colortable); } + + if(mwxvtkmpr3Dview!=NULL) + { + mwxvtkmpr3Dview->setColorTransferFunction(colortable); + } +} + +//------------------------------------------------------------------------------------------- +void wxMaracas_ViewerWidget::SetColorWindowLevel(double colorWindow, double colorLevel) +{ + mvtkmprbasedata->SetColorWindow(colorWindow); + mvtkmprbasedata->SetColorLevel(colorLevel); +//EED Borrame +/* + RefreshView(); + if(mvtk2Dbaseview!=NULL) + { + mvtk2Dbaseview->SetColorWindow(level); + } + + if(mvtkmpr2Dview_X!=NULL) + { + mvtkmpr2Dview_X->SetColorWindow(level); + } + + if(mvtkmpr2Dview_Y!=NULL) + { + mvtkmpr2Dview_Y->SetColorWindow(level); + } + + if(mvtkmpr2Dview_Z!=NULL) + { + mvtkmpr2Dview_Z->SetColorWindow(level); + } + + if(mwxvtkmpr3Dview!=NULL) + { + mwxvtkmpr3Dview->SetColorWindow(level); + } + */ +} + + - void wxMaracas_ViewerWidget::setColorLevel(double level){ - if(mvtkmpr2Dview_X!=NULL){ - mvtkmpr2Dview_X->setColorLevel(level); - } - if(mvtkmpr2Dview_Y!=NULL){ - mvtkmpr2Dview_Y->setColorLevel(level); - } - if(mvtkmpr2Dview_Z!=NULL){ - mvtkmpr2Dview_Z->setColorLevel(level); - } - /*if(mwxvtkmpr3Dview!=NULL){ - mwxvtkmpr3Dview->setColorLevel(level); - }*/ - }