X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FwxVtkMPR3DView.cxx;h=e406380814b179a5794fffd504f142716790fcd9;hb=d653db1bd5d3650822d8c8f6febd9e1ab59cd701;hp=e740c60db0b54851abceeaad79c2adbed82edaec;hpb=49c71c0601fad68cadb5f01aa0c5decabc1c6495;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR3DView.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR3DView.cxx index e740c60..e406380 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR3DView.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR3DView.cxx @@ -93,6 +93,9 @@ void wxVtkMPR3DView::ResetCamera(int* ext, double* origin,double* spc) //------------------------------------------------------------------- void wxVtkMPR3DView::Configure(){ + + + vtkImageData *imageData = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData(); _wxvtk3Dbaseview->Configure(); _wxvtkmpr3DviewCntrlPanel->UpdateControlPanel(); @@ -142,7 +145,10 @@ void wxVtkMPR3DView::Configure(){ _pointWidget = vtkPointWidget::New(); _myCallback->SetVtkPointWidget(_pointWidget); _pointWidget->SetInteractor( GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor() ); - _pointWidget->SetInput( GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData() ); + + if(imageData){ + _pointWidget->SetInput( imageData ); + } _pointWidget->AllOff(); @@ -163,12 +169,20 @@ void wxVtkMPR3DView::Configure(){ } _planeWidget = vtkPlaneWidget::New(); _myCallback->SetVtkPlaneWidget(_planeWidget); - _planeWidget->SetInput( GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData() ); + if(imageData){ + _planeWidget->SetInput( imageData ); + } _planeWidget->NormalToXAxisOn(); _planeWidget->SetResolution(50); _planeWidget->SetRepresentationToOutline(); int dim[3]; - GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData()->GetDimensions(dim); + if(imageData){ + imageData->GetDimensions(dim); + }else{ + dim[0] = 0; + dim[1] = 0; + dim[2] = 0; + } int px=(dim[0]/2); int py=(dim[1]/2); int pz=(dim[2]/2); @@ -197,13 +211,13 @@ void wxVtkMPR3DView::Configure(){ _planeWidget->Off(); _wxvtk3Dbaseview->GetRenderer()->AddActor( _contourPlaneActor ); - }else{ - } + _planeWidget->GetPolyData(_vtkplane); - vtkImageData *imageData = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData(); - _probe->SetSource( imageData ); - _contourMapper->SetScalarRange( imageData->GetScalarRange() ); + if(imageData){ + _probe->SetSource( imageData ); + _contourMapper->SetScalarRange( imageData->GetScalarRange() ); + } ConfigureFreePlanes(); } @@ -238,13 +252,18 @@ vtkImagePlaneWidget* wxVtkMPR3DView::GetPlaneWidget(unsigned char activationkey, planeWidget->EnabledOff(); planeWidget->SetInteractor( GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor() ); vtkImageData *image = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData(); - planeWidget->SetInput( image ); + int xMin = 0, xMax = 0, yMin = 0, yMax = 0, zMin = 0, zMax = 0; + double xSpacing = 0, ySpacing = 0, zSpacing = 0; + if(image){ + planeWidget->SetInput( image ); + image->GetExtent(xMin, xMax, yMin, yMax, zMin, zMax); + image->GetSpacing(xSpacing, ySpacing, zSpacing); + } - int xMin, xMax, yMin, yMax, zMin, zMax; - image->GetExtent(xMin, xMax, yMin, yMax, zMin, zMax); - double xSpacing, ySpacing, zSpacing; - image->GetSpacing(xSpacing, ySpacing, zSpacing); + + + if (activationkey=='x') { @@ -321,7 +340,16 @@ void wxVtkMPR3DView::Refresh() // virtual void wxVtkMPR3DView::RefreshView() // virtual { double spc[3]; - this->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData()->GetSpacing(spc); + vtkImageData *image = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData(); + + if(image){ + image->GetSpacing(spc); + }else{ + spc[0] = 0; + spc[1] = 0; + spc[2] = 0; + } + //this->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData()->GetSpacing(spc); //double nx=1,ny=0,nz=0; // JPRx Refresh();