X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FwxMPRWidget.cxx;h=da7729e47a7eda21532fdae7353ea29d48eff3fb;hb=d8891e268dbd788932ede97097f41d8653f5e3f2;hp=127cdb916bbbcf5544e6619680fec43e1ee91316;hpb=e59fe4a0a69ae0180c502e68c57faff544b935ca;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMPRWidget.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMPRWidget.cxx index 127cdb9..da7729e 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMPRWidget.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMPRWidget.cxx @@ -3,8 +3,8 @@ Program: wxMaracas Module: $RCSfile: wxMPRWidget.cxx,v $ Language: C++ - Date: $Date: 2008/11/14 15:57:07 $ - Version: $Revision: 1.3 $ + Date: $Date: 2009/05/07 15:35:46 $ + Version: $Revision: 1.13 $ Copyright: (c) 2002, 2003 License: @@ -67,6 +67,8 @@ #include "matrix.h" #include +#include + #include "pPlotter/HistogramDialog.h" @@ -447,14 +449,14 @@ void wxSphereView::ResetlstId() int wxSphereView::GetIdOfImage(double radio) { int id=0; - int dim[3]; - _imageSphere->GetDimensions(dim); + int dim[3]; + _imageSphere->GetDimensions(dim); int sizeMaxList = dim[2]; // Search in list >> alpha beta radio int i,size=_lstId.size(); for (i=0; i_radio==radio) && (_lstId[i]->_deltavoxel==_delta)) { return _lstId[i]->_id; @@ -576,8 +578,13 @@ void wxSphereView::FiltreImageB(int id, double radio, bool ok,int deltaTMP) unsigned short *pOrig; int dimRes[3],dimOrig[3]; double i,j; + int ext[6]; + _imageSphere->GetExtent(ext); _imageSphere->GetDimensions(dimRes); - _imageSphere->SetExtent(0,dimRes[0]-1,0,dimRes[1]-1,0,dimRes[2]-1); + //JCP 24 - 04 -09 + //_imageSphere->SetExtent(0,dimRes[0]-1,0,dimRes[1]-1,0,dimRes[2]-1); + _imageSphere->SetExtent(ext); + //JCP 24 - 04 -09 d2x=dimRes[0]/2; d2y=dimRes[1]/2; // double deltaTMP=_delta; @@ -979,7 +986,7 @@ bool vtkInteractorStylePlane2D::OnLeftButtonUp() // virtual bool vtkInteractorStylePlane2D::OnRightButtonUp() // virtual { if (_stateRotate==true){ - //vtkPlane2DView *vtkplane2Dview = (vtkPlane2DView*)(_vtkInteractorStyleBaseView->GetWxVtk2DBaseView()); + //vtkPlane2DView *vtkplane2Dview = (vtkPlane2DView*)(_vtkInteractorStyleBaseView->GetWxVtk2DBaseView()); // JPRx // EED Borrame // vtkplane2Dview->RotationEnd(); @@ -1381,9 +1388,11 @@ void vtkPlane2DView::Configure( ) GetInteractorStyleBaseView()->AddInteractorStyleMaracas( _interactorstyleplane2D ); vtkCamera *camera =_imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->GetActiveCamera(); + camera->SetViewUp ( 0 , 1 , 0 ); - camera->SetFocalPoint ((0+_sizeIma)/2 , (0+_sizeIma)/2 , 0 ); camera->SetPosition ((0+_sizeIma)/2 , (0+_sizeIma)/2 , 10000 ); + + camera->SetFocalPoint ((0+_sizeIma)/2 , (0+_sizeIma)/2 , 0 ); camera->SetClippingRange(0.01, 100000); camera->ComputeViewPlaneNormal(); camera->SetParallelScale( _sizeIma/3.0 ); @@ -1857,8 +1866,8 @@ bool vtkInteractorStyleMPRView::OnLeftButtonDown () double x = _vtkInteractorStyleBaseView->GetInteractor()->GetEventPosition()[0]; double y = _vtkInteractorStyleBaseView->GetInteractor()->GetEventPosition()[1]; double z = 1; - //double xx = x; - //double yy = y; + //double xx = x; // JPRx + //double yy = y; // JPRx _vtkInteractorStyleBaseView->TransformCoordinate(x,y,z); /*EED Borrame @@ -1973,7 +1982,6 @@ vtkMPRBaseData *wxVtkMPR2DView::GetVtkmprbasedata() void wxVtkMPR2DView::Configure(){ wxVtk2DBaseView::Configure(); - _interactorstylemprview = new vtkInteractorStyleMPRView(); GetInteractorStyleBaseView()->AddInteractorStyleMaracas( _interactorstylemprview ); @@ -1981,88 +1989,118 @@ void wxVtkMPR2DView::Configure(){ GetVtkmprbasedata() -> GetDimensionExtention(&x1,&x2,&y1,&y2,&z1,&z2); double spc[3]; - GetVtkmprbasedata()->GetImageData()->GetSpacing(spc); - x1 = (int)(x1*spc[0]); - y1 = (int)(y1*spc[1]); - z1 = (int)(z1*spc[2]); - - x2 = (int)(x2*spc[0]); - y2 = (int)(y2*spc[1]); - z2 = (int)(z2*spc[2]); - - _visibleAxis = true; - -// Axe A - _ptsA = vtkPoints::New(); - _ptsA->SetNumberOfPoints(2); - _ptsA->SetPoint(0, -1000 , -1000 , -1000 ); - _ptsA->SetPoint(1, 1000 , 1000 , 1000 ); - vtkCellArray *linesA; - linesA = vtkCellArray::New(); - linesA->InsertNextCell(2); - linesA->InsertCellPoint(0); - linesA->InsertCellPoint(1); - _pdA = vtkPolyData::New(); - _pdA->SetPoints( _ptsA ); - _pdA->SetLines( linesA ); - linesA->Delete(); //do not delete lines ?? - _lineAActor = vtkActor::New(); - _lineAMapper = vtkPolyDataMapper::New(); - _lineAMapper->SetInput(_pdA); - _lineAMapper->ImmediateModeRenderingOn(); - _lineAActor->SetMapper(_lineAMapper); - _lineAActor->GetProperty()->BackfaceCullingOn(); - _lineAActor->GetProperty()->SetDiffuseColor(1,0,0); - _lineAActor->GetProperty()->SetLineWidth(2); - _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineAActor ); - -// Axe B - _ptsB = vtkPoints::New(); - _ptsB->SetNumberOfPoints(2); - _ptsB->SetPoint(0, -1000 , -1000 , -1000 ); - _ptsB->SetPoint(1, 1000 , 1000 , 1000 ); - vtkCellArray *linesB; - linesB = vtkCellArray::New(); - linesB->InsertNextCell(2); - linesB->InsertCellPoint(0); - linesB->InsertCellPoint(1); - _pdB = vtkPolyData::New(); - _pdB->SetPoints( _ptsB ); - _pdB->SetLines( linesB ); - linesB->Delete(); //do not delete lines ?? - _lineBActor = vtkActor::New(); - _lineBMapper = vtkPolyDataMapper::New(); - _lineBMapper->SetInput(_pdB); - _lineBMapper->ImmediateModeRenderingOn(); - _lineBActor->SetMapper(_lineBMapper); - _lineBActor->GetProperty()->BackfaceCullingOn(); - _lineBActor->GetProperty()->SetDiffuseColor(1,0,0); - _lineBActor->GetProperty()->SetLineWidth(2); - _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineBActor ); + vtkImageData* img = GetVtkmprbasedata()->GetImageData(); + if(img!=NULL){ + img->GetSpacing(spc); + x1 = (int)(x1*spc[0]); + y1 = (int)(y1*spc[1]); + z1 = (int)(z1*spc[2]); + + x2 = (int)(x2*spc[0]); + y2 = (int)(y2*spc[1]); + z2 = (int)(z2*spc[2]); + + _visibleAxis = true; + + // Axe A + _ptsA = vtkPoints::New(); + _ptsA->SetNumberOfPoints(2); + _ptsA->SetPoint(0, -1000 , -1000 , -1000 ); + _ptsA->SetPoint(1, 1000 , 1000 , 1000 ); + vtkCellArray *linesA; + linesA = vtkCellArray::New(); + linesA->InsertNextCell(2); + linesA->InsertCellPoint(0); + linesA->InsertCellPoint(1); + _pdA = vtkPolyData::New(); + _pdA->SetPoints( _ptsA ); + _pdA->SetLines( linesA ); + linesA->Delete(); //do not delete lines ?? + _lineAActor = vtkActor::New(); + _lineAMapper = vtkPolyDataMapper::New(); + _lineAMapper->SetInput(_pdA); + _lineAMapper->ImmediateModeRenderingOn(); + _lineAActor->SetMapper(_lineAMapper); +// _lineAActor->GetProperty()->BackfaceCullingOn(); + _lineAActor->GetProperty()->SetDiffuseColor(1,0,0); + _lineAActor->GetProperty()->SetLineWidth(2); + _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineAActor ); + + // Axe B + _ptsB = vtkPoints::New(); + _ptsB->SetNumberOfPoints(2); + _ptsB->SetPoint(0, -1000 , -1000 , -1000 ); + _ptsB->SetPoint(1, 1000 , 1000 , 1000 ); + vtkCellArray *linesB; + linesB = vtkCellArray::New(); + linesB->InsertNextCell(2); + linesB->InsertCellPoint(0); + linesB->InsertCellPoint(1); + _pdB = vtkPolyData::New(); + _pdB->SetPoints( _ptsB ); + _pdB->SetLines( linesB ); + linesB->Delete(); //do not delete lines ?? + _lineBActor = vtkActor::New(); + _lineBMapper = vtkPolyDataMapper::New(); + _lineBMapper->SetInput(_pdB); + _lineBMapper->ImmediateModeRenderingOn(); + _lineBActor->SetMapper(_lineBMapper); +// _lineBActor->GetProperty()->BackfaceCullingOn(); + _lineBActor->GetProperty()->SetDiffuseColor(1,0,0); + _lineBActor->GetProperty()->SetLineWidth(2); + _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineBActor ); - vtkCamera *camera =_imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->GetActiveCamera(); - if (_direction==0) { - camera->SetViewUp ( 0 , -1 , 0 ); - camera->SetPosition ( -10000,(y1+y2)/2 , (z1+z2)/2 ); - camera->SetFocalPoint ( 0 , (y1+y2)/2 , (z1+z2)/2 ); - camera->SetParallelScale( (z2-z1)/3.0 ); - } - - if (_direction==1) { - camera->SetViewUp ( 0 , 0 , -1 ); - camera->SetPosition ((x1+x2)/2 , 10000 , (z1+z2)/2 ); - camera->SetFocalPoint ((x1+x2)/2 , 0 , (z1+z2)/2 ); - camera->SetParallelScale( (x2-x1)/3.0 ); - } + + vtkCamera *camera =_imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->GetActiveCamera(); + +//EED 17Avril2009 +/* + if (_direction==0) { + camera->SetViewUp ( 0 , -1 , 0 ); + camera->SetPosition ( -10000,(y1+y2)/2 , (z1+z2)/2 ); + camera->SetFocalPoint ( 0 , (y1+y2)/2 , (z1+z2)/2 ); + camera->SetParallelScale( (z2-z1)/3.0 ); + } - if (_direction==2) { - camera->SetViewUp ( 0 , -1 , 0 ); - camera->SetPosition ((x1+x2)/2 , (y1+y2)/2 , -10000); - camera->SetFocalPoint ((x1+x2)/2 , (y1+y2)/2 , 0 ); - camera->SetParallelScale( (x2-x1)/3.0 ); - } + if (_direction==1) { + camera->SetViewUp ( 0 , 0 , -1 ); + camera->SetPosition ((x1+x2)/2 , 10000 , (z1+z2)/2 ); + camera->SetFocalPoint ((x1+x2)/2 , 0 , (z1+z2)/2 ); + camera->SetParallelScale( (x2-x1)/3.0 ); + } + if (_direction==2) { + camera->SetViewUp ( 0 , -1 , 0 ); + camera->SetPosition ((x1+x2)/2 , (y1+y2)/2 , -10000); + camera->SetFocalPoint ((x1+x2)/2 , (y1+y2)/2 , 0 ); + camera->SetParallelScale( (x2-x1)/3.0 ); + } + */ + if (_direction==0) { + camera->SetViewUp ( 0 , 1 , 0 ); + camera->SetPosition ( 10000,(y1+y2)/2 , (z1+z2)/2 ); + camera->SetFocalPoint ( 0 , (y1+y2)/2 , (z1+z2)/2 ); + camera->SetParallelScale( (z2-z1)/3.0 ); + } + + if (_direction==1) { + camera->SetViewUp ( 0 , 0 , -1 ); + camera->SetPosition ((x1+x2)/2 , 10000 , (z1+z2)/2 ); + camera->SetFocalPoint ((x1+x2)/2 , 0 , (z1+z2)/2 ); + camera->SetParallelScale( (x2-x1)/3.0 ); + } + + if (_direction==2) { + camera->SetViewUp ( 0 , 1 , 0 ); + camera->SetPosition ((x1+x2)/2 , (y1+y2)/2 , 10000); + camera->SetFocalPoint ((x1+x2)/2 , (y1+y2)/2 , 0 ); + camera->SetParallelScale( (x2-x1)/3.0 ); + } + + + + } // _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow (160); // _imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel (800); @@ -2094,61 +2132,71 @@ void wxVtkMPR2DView::Refresh() //wxVtk2DBaseView::Refresh(); - //vtkImageViewer2 *IV2=_imageViewer2XYZ->GetVtkImageViewer2(); - //vtkCamera *camera = IV2->GetRenderer()->GetActiveCamera(); + //vtkImageViewer2 *IV2=_imageViewer2XYZ->GetVtkImageViewer2(); // JPRx + //vtkCamera *camera = IV2->GetRenderer()->GetActiveCamera(); // JPRx int x1,x2,y1,y2,z1,z2; GetVtkmprbasedata()->GetDimensionExtention(&x1,&x2,&y1,&y2,&z1,&z2); double spc[3]; - GetVtkmprbasedata()->GetImageData()->GetSpacing(spc); - x1 = (int)(x1*spc[0]); - y1 = (int)(y1*spc[1]); - z1 = (int)(z1*spc[2]); + + vtkImageData* img = GetVtkmprbasedata()->GetImageData(); + if(img!=NULL){ + img->GetSpacing(spc); + x1 = (int)(x1*spc[0]); + y1 = (int)(y1*spc[1]); + z1 = (int)(z1*spc[2]); - x2 = (int)(x2*spc[0]); - y2 = (int)(y2*spc[1]); - z2 = (int)(z2*spc[2]); + x2 = (int)(x2*spc[0]); + y2 = (int)(y2*spc[1]); + z2 = (int)(z2*spc[2]); - int x = (int)(GetVtkmprbasedata()->GetX()); - int y = (int)(GetVtkmprbasedata()->GetY()); - int z = (int)(GetVtkmprbasedata()->GetZ()); + int x = (int)(GetVtkmprbasedata()->GetX()); + int y = (int)(GetVtkmprbasedata()->GetY()); + int z = (int)(GetVtkmprbasedata()->GetZ()); - x = (int)(x*spc[0]); - y = (int)(y*spc[1]); - z = (int)(z*spc[2]); + x = (int)(x*spc[0]); + y = (int)(y*spc[1]); + z = (int)(z*spc[2]); - if ((x!=_backX) || (y!=_backY) || (z!=_backZ)) { + if ((x!=_backX) || (y!=_backY) || (z!=_backZ)) { - if (_direction==0) { - _imageViewer2XYZ->SetXSlice( (int)(GetVtkmprbasedata()->GetX()) ); - _ptsA->SetPoint(0, -x2, y1 , z ); - _ptsA->SetPoint(1, -x2, y2 , z ); - _ptsB->SetPoint(0, -x2, y , z1); - _ptsB->SetPoint(1, -x2, y , z2); - } - if (_direction==1) { - _imageViewer2XYZ->SetYSlice( (int)(GetVtkmprbasedata()->GetY()) ); - _ptsA->SetPoint(0, x1 , y2 , z ); - _ptsA->SetPoint(1, x2 , y2 , z ); - _ptsB->SetPoint(0, x , y2 , z1); - _ptsB->SetPoint(1, x , y2 , z2); - } - if (_direction==2) { - _imageViewer2XYZ->SetZSlice( (int)(GetVtkmprbasedata()->GetZ()) ); - _ptsA->SetPoint(0, x1 , y , -z2 ); - _ptsA->SetPoint(1, x2 , y , -z2 ); - _ptsB->SetPoint(0, x , y1, -z2 ); - _ptsB->SetPoint(1, x , y2, -z2 ); + if (_direction==0) { + _imageViewer2XYZ->SetXSlice( (int)(GetVtkmprbasedata()->GetX()) ); + _ptsA->SetPoint(0, -x2, y1 , z ); + _ptsA->SetPoint(1, -x2, y2 , z ); + _ptsB->SetPoint(0, -x2, y , z1); + _ptsB->SetPoint(1, -x2, y , z2); + } + if (_direction==1) { + _imageViewer2XYZ->SetYSlice( (int)(GetVtkmprbasedata()->GetY()) ); + _ptsA->SetPoint(0, x1 , y2 , z ); + _ptsA->SetPoint(1, x2 , y2 , z ); + _ptsB->SetPoint(0, x , y2 , z1); + _ptsB->SetPoint(1, x , y2 , z2); + } + if (_direction==2) { + _imageViewer2XYZ->SetZSlice( (int)(GetVtkmprbasedata()->GetZ()) ); + _imageViewer2XYZ->SetZSlice( (int)(GetVtkmprbasedata()->GetZ()) ); + // _ptsA->SetPoint(0, x1 , y , -z2 ); + // _ptsA->SetPoint(1, x2 , y , -z2 ); + // _ptsB->SetPoint(0, x , y1, -z2 ); + // _ptsB->SetPoint(1, x , y2, -z2 ); + + _ptsA->SetPoint(0, x1 , y , z2 ); + _ptsA->SetPoint(1, x2 , y , z2 ); + _ptsB->SetPoint(0, x , y1, z2 ); + _ptsB->SetPoint(1, x , y2, z2 ); + } + _backX=x; + _backY=y; + _backZ=z; } - _backX=x; - _backY=y; - _backZ=z; + wxVtkBaseView::Refresh(); } - wxVtkBaseView::Refresh(); } //------------------------------------------------------------------- int wxVtkMPR2DView::GetActualSlice() // virtual @@ -2451,9 +2499,14 @@ wxVtkMPR3DViewCntrlPanel::wxVtkMPR3DViewCntrlPanel(wxWindow *parent, wxVtkMPR3DV wxPanel *panel = this; _wxvtkmpr3Dview = wxvtkmpr3Dview; - int maxX = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetMaxPositionX(); + /*int maxX = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetMaxPositionX(); int maxY = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetMaxPositionY(); - int maxZ = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetMaxPositionZ(); + int maxZ = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetMaxPositionZ();*/ + + int maxX = 1; + int maxY = 1; + int maxZ = 1; + wxCheckBox *ckBoxX = new wxCheckBox(panel,-1,_T("X ")); _positionX = new wxSlider(panel,-1,maxX/2,0,maxX, wxDefaultPosition, wxSize(150,40), wxSL_HORIZONTAL | wxSL_LABELS); wxCheckBox *ckBoxY = new wxCheckBox(panel,-1,_T("Y ")); @@ -2468,7 +2521,7 @@ wxVtkMPR3DViewCntrlPanel::wxVtkMPR3DViewCntrlPanel(wxWindow *parent, wxVtkMPR3DV ckBoxX->SetValue(false); ckBoxY->SetValue(false); ckBoxZ->SetValue(false); - _ckBoxXYZ->SetValue(true); + _ckBoxXYZ->SetValue(false); _ckBoxPlane->SetValue(false); _positionX->SetSize(400,20); @@ -2546,6 +2599,45 @@ wxVtkMPR3DViewCntrlPanel::wxVtkMPR3DViewCntrlPanel(wxWindow *parent, wxVtkMPR3DV panel->SetEventHandler((wxEvtHandler*)this); + //this->UpdateControlPanel(); + +} +void wxVtkMPR3DViewCntrlPanel::UpdateControlPanel() +{ + + vtkMPRBaseData* basedata = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData(); + if(basedata != NULL){ + + /*int maxX = basedata->GetMaxPositionX(); + int maxY = basedata->GetMaxPositionY(); + int maxZ = basedata->GetMaxPositionZ();*/ + int x0,x1,y0,y1,z0,z1; + + basedata->GetDimensionExtention(&x0,&x1,&y0,&y1,&z0,&z1); + /*int maxX = x1-x0;//basedata->GetMaxPositionX(); + int maxY = y1-y0;//basedata->GetMaxPositionY(); + int maxZ = z1-z0;//basedata->GetMaxPositionZ();*/ + + + + //std::cout<<"wxVtkMPR3DViewCntrlPanel::UpdateControlPanel() maxX="<_wxvtkmpr3Dview->GetVtkMPR3DDataViewer(); // JPRx int i=0,xi,r,g,b; @@ -2704,7 +2803,12 @@ void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisX(wxCommandEvent& event) _wxvtkmpr3Dview->Refresh(); wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh - _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1); + + try{ + _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1); + }catch(char* e){ + std::cout<Add( ckVolum , 1, wxALL|wxEXPAND, 0); sizerH0->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND, 0); @@ -3275,7 +3379,7 @@ void wxVtkClipping3DViewCntrlPanel::OnBtnSaveRawVolume(wxCommandEvent& event) void wxVtkClipping3DViewCntrlPanel::OnBtnVolumeFunctions(wxCommandEvent& event) { - int /*i=0,*/ xi,yi,r,g,b; + int /*i=0,*/ xi,yi,r,g,b; // JPRx vtkColorTransferFunction* ctfun = this->_wxvtkclipping3Dview->GetVtkClipping3DDataViewer()->GetColorTransferenceFunction(); vtkPiecewiseFunction* tfun = this->_wxvtkclipping3Dview->GetVtkClipping3DDataViewer()->GetTransferencefunction(); std::vector* gtf = this->_wxvtkclipping3Dview->GetVtkClipping3DDataViewer()->GetGreyValuesTransferenceFVector(); @@ -3286,6 +3390,8 @@ void wxVtkClipping3DViewCntrlPanel::OnBtnVolumeFunctions(wxCommandEvent& event) std::vector* bctf = this->_wxvtkclipping3Dview->GetVtkClipping3DDataViewer()->GetBlueColorsOfColorTransferenceFVector(); vtkImageData *imagedata = this->_wxvtkclipping3Dview->GetVtkClipping3DDataViewer()->GetVtkMPRBaseData()->GetImageData(); + + //use for update in the refresh /* vtkVolumeRayCastMapper* volumeMapper = this->_wxvtkclipping3Dview->GetVtkClipping3DDataViewer()->GetVolumeMapper(); @@ -3472,87 +3578,69 @@ wxVtkMPR3DView::wxVtkMPR3DView( wxVtk3DBaseView *wxvtk3Dbaseview ) { _wxvtk3Dbaseview = wxvtk3Dbaseview; _vtkmpr3Ddataviewer = NULL; - _wxvtkmpr3DviewCntrlPanel = NULL; -} - -//------------------------------------------------------------------- -wxVtkMPR3DView::~wxVtkMPR3DView() -{ -} - -//------------------------------------------------------------------- -void wxVtkMPR3DView::Refresh() // virtual -{ - _vtkmpr3Ddataviewer -> Refresh(); - if (_wxvtkmpr3DviewCntrlPanel!=NULL) - { - _wxvtkmpr3DviewCntrlPanel->Refresh(); + _wxvtkmpr3DviewCntrlPanel = NULL; + _myCallback=NULL; + _pointWidget=NULL; + _planeWidget=NULL; + _vtkplane=NULL; + _probe=NULL; + _contourMapper=NULL; +} +void wxVtkMPR3DView::RemoveActor(vtkActor* actor){ + + _wxvtk3Dbaseview->GetRenderer()->RemoveActor(actor); + + +} +void wxVtkMPR3DView::ResetCamera(int* ext, double* origin,double* spc){ + if(ext == NULL){ + + _wxvtk3Dbaseview->GetRenderer()->ResetCamera (); + _wxvtk3Dbaseview->GetCamera()->Dolly(1.5); + }else{ + /*double x = (spc[0])*(origin[0]+(((double)ext[1]-(double)ext[0])/2.0)); + double y = (spc[1])*(origin[1]+(double)ext[3]); + double z = (spc[2])*(origin[2]+(((double)ext[5]-(double)ext[4])/2.0));*/ + /*double x0=(spc[0])*((double)ext[0]+origin[0]); + double x1=(spc[0])*((double)ext[1]+origin[0]); + double y0=(spc[1])*((double)ext[2]+origin[1]); + double y1=(spc[1])*((double)ext[3]+origin[1]); + double z0=(spc[2])*((double)ext[4]+origin[2]); + double z1=(spc[2])*((double)ext[5]+origin[2]);*/ + double x0=(spc[0])*((double)ext[0]); + double x1=(spc[0])*((double)ext[1]); + double y0=(spc[1])*((double)ext[2]); + double y1=(spc[1])*((double)ext[3]); + double z0=(spc[2])*((double)ext[4]); + double z1=(spc[2])*((double)ext[5]); + + _wxvtk3Dbaseview->GetRenderer()->ResetCamera(x0,x1,y0,y1,z0,z1); + //_wxvtk3Dbaseview->GetCamera()->SetPosition(x,y,z); + _wxvtk3Dbaseview->GetCamera()->Dolly(1.5); } - -} -//------------------------------------------------------------------- -void wxVtkMPR3DView::RefreshView() // virtual -{ - double spc[3]; - this->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData()->GetSpacing(spc); - - //double nx=1,ny=0,nz=0; - Refresh(); - double x=GetVtkMPR3DDataViewer ()->GetVtkMPRBaseData()->GetX(); - double y=GetVtkMPR3DDataViewer ()->GetVtkMPRBaseData()->GetY(); - double z=GetVtkMPR3DDataViewer ()->GetVtkMPRBaseData()->GetZ(); - - x=x*spc[0]; - y=y*spc[1]; - z=z*spc[2]; - - _pointWidget->SetPosition( x,y,z ); - - - double in[3]; - double normal[3]; - vtkTransform *transform = GetVtkMPR3DDataViewer ()->GetVtkMPRBaseData()->GetTransformOrientation(); - in[0]=1; in[1]=0; in[2]=0; - transform->TransformPoint(in,normal); - _planeWidget->SetNormal( normal[0],normal[1],normal[2] ); - - - _planeWidget->SetCenter( x,y,z ); - _planeWidget->UpdatePlacement(); - _planeWidget->GetPolyData(_vtkplane); -} -//------------------------------------------------------------------- -wxPanel* wxVtkMPR3DView::CreateControlPanel(wxWindow *parent) -{ - _wxvtkmpr3DviewCntrlPanel = new wxVtkMPR3DViewCntrlPanel(parent,this); - return _wxvtkmpr3DviewCntrlPanel; -} -//------------------------------------------------------------------- -vtkMPR3DDataViewer* wxVtkMPR3DView::GetVtkMPR3DDataViewer() -{ - return _vtkmpr3Ddataviewer; -} -//------------------------------------------------------------------- -wxVtk3DBaseView* wxVtkMPR3DView::GetWxvtk3Dbaseview() -{ - return _wxvtk3Dbaseview; } -//------------------------------------------------------------------- void wxVtkMPR3DView::Configure(){ + _wxvtk3Dbaseview->Configure(); + _wxvtkmpr3DviewCntrlPanel->UpdateControlPanel(); + +//EED ?????? 07Mai2009 +// _wxvtk3Dbaseview->GetRenderer()->Clear(); + // Actors are added to the renderer. - _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkmpr3Ddataviewer->GetOutlineActor() ); + vtkActor* _outlineActor = _vtkmpr3Ddataviewer->GetOutlineActor(); + _wxvtk3Dbaseview->GetRenderer()->AddActor( _outlineActor ); // _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkmpr3Ddataviewer->GetImageActor(0) ); // _saggital // _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkmpr3Ddataviewer->GetImageActor(1) ); // _axial // _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkmpr3Ddataviewer->GetImageActor(2) ); // _coronal // An initial camera view is created. The Dolly() method moves - // the camera towards the FocalPoint, thereby enlarging the image. + // the camera towards the FocalPoint, thereby enlarging the image. _wxvtk3Dbaseview->GetRenderer()->SetActiveCamera(_wxvtk3Dbaseview->GetCamera()); - _wxvtk3Dbaseview->GetRenderer()->ResetCamera (); - _wxvtk3Dbaseview->GetCamera()->Dolly(1.5); + this->ResetCamera(); + // Set a background color for the renderer and set the size of the // render window (expressed in pixels). @@ -3568,23 +3656,38 @@ void wxVtkMPR3DView::Configure(){ _wxvtk3Dbaseview->GetRenderer()->ResetCameraClippingRange(); - // vtkPointWidget + if(_myCallback!=NULL){ + _myCallback->Delete(); + + } _myCallback = vtkmyPWCallback_3DPointWidget::New(); _myCallback->SetWxVtkMPR3DView(this); + if(_pointWidget!=NULL){ + _pointWidget->Delete(); + } _pointWidget = vtkPointWidget::New(); _myCallback->SetVtkPointWidget(_pointWidget); _pointWidget->SetInteractor( GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor() ); _pointWidget->SetInput( GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData() ); + _pointWidget->AllOff(); + _pointWidget->PlaceWidget(); // _pointWidget->SetPosition( x,y,z ); - _pointWidget->On(); + +//EED01 29Mars2009 +// MACOS probleme vtk-window out of wx-window +// _pointWidget->On(); + _pointWidget->AddObserver(vtkCommand::InteractionEvent,_myCallback); // PlaneWidget + if(_planeWidget!=NULL){ + _planeWidget->Delete(); + } _planeWidget = vtkPlaneWidget::New(); _myCallback->SetVtkPlaneWidget(_planeWidget); _planeWidget->SetInput( GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData() ); @@ -3598,28 +3701,112 @@ void wxVtkMPR3DView::Configure(){ int pz=(dim[2]/2); int dd=20; _planeWidget->PlaceWidget( px-dd , px+dd , py-dd , py+dd , pz-dd , pz+dd ); - _vtkplane = vtkPolyData::New(); + + + if(_vtkplane==NULL){ + _vtkplane = vtkPolyData::New(); + + _probe = vtkProbeFilter::New(); + _probe->SetInput(_vtkplane); + + _contourMapper = vtkPolyDataMapper::New(); + + _contourMapper->SetInput( _probe->GetPolyDataOutput() ); + + _contourPlaneActor = vtkActor::New(); + _contourPlaneActor->SetMapper(_contourMapper); + + _contourPlaneActor->VisibilityOff(); + + _planeWidget->SetInteractor( GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor() ); + _planeWidget->AddObserver(vtkCommand::InteractionEvent,_myCallback); + + _planeWidget->Off(); + _wxvtk3Dbaseview->GetRenderer()->AddActor( _contourPlaneActor ); + + }else{ + + } _planeWidget->GetPolyData(_vtkplane); - vtkProbeFilter *probe = vtkProbeFilter::New(); - probe->SetInput(_vtkplane); - vtkImageData *imageData = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData(); - probe->SetSource( imageData ); + + vtkImageData *imageData = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData(); + _probe->SetSource( imageData ); + + + _contourMapper->SetScalarRange( imageData->GetScalarRange() ); + + + + +} +//------------------------------------------------------------------- +wxVtkMPR3DView::~wxVtkMPR3DView() +{ +} + +//------------------------------------------------------------------- +void wxVtkMPR3DView::Refresh() // virtual +{ + _vtkmpr3Ddataviewer -> Refresh(); + if (_wxvtkmpr3DviewCntrlPanel!=NULL) + { + _wxvtkmpr3DviewCntrlPanel->Refresh(); + } + +} +//------------------------------------------------------------------- +void wxVtkMPR3DView::RefreshView() // virtual +{ + double spc[3]; + this->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData()->GetSpacing(spc); + + //double nx=1,ny=0,nz=0; // JPRx + Refresh(); + double x=GetVtkMPR3DDataViewer ()->GetVtkMPRBaseData()->GetX(); + double y=GetVtkMPR3DDataViewer ()->GetVtkMPRBaseData()->GetY(); + double z=GetVtkMPR3DDataViewer ()->GetVtkMPRBaseData()->GetZ(); + + x=x*spc[0]; + y=y*spc[1]; + z=z*spc[2]; - vtkPolyDataMapper *contourMapper = vtkPolyDataMapper::New(); + _pointWidget->SetPosition( x,y,z ); - contourMapper->SetInput( probe->GetPolyDataOutput() ); - contourMapper->SetScalarRange( imageData->GetScalarRange() ); - _contourPlaneActor = vtkActor::New(); - _contourPlaneActor->SetMapper(contourMapper); - _contourPlaneActor->VisibilityOff(); + double in[3]; + double normal[3]; + vtkTransform *transform = GetVtkMPR3DDataViewer ()->GetVtkMPRBaseData()->GetTransformOrientation(); + in[0]=1; in[1]=0; in[2]=0; + transform->TransformPoint(in,normal); + _planeWidget->SetNormal( normal[0],normal[1],normal[2] ); + - _planeWidget->SetInteractor( GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor() ); - _planeWidget->AddObserver(vtkCommand::InteractionEvent,_myCallback); - _planeWidget->Off(); - _wxvtk3Dbaseview->GetRenderer()->AddActor( _contourPlaneActor ); + _planeWidget->SetCenter( x,y,z ); + _planeWidget->UpdatePlacement(); + _planeWidget->GetPolyData(_vtkplane); +} +//------------------------------------------------------------------- +wxPanel* wxVtkMPR3DView::CreateControlPanel(wxWindow *parent) +{ + _wxvtkmpr3DviewCntrlPanel = new wxVtkMPR3DViewCntrlPanel(parent,this); + return _wxvtkmpr3DviewCntrlPanel; +} +//------------------------------------------------------------------- +vtkMPR3DDataViewer* wxVtkMPR3DView::GetVtkMPR3DDataViewer() +{ + return _vtkmpr3Ddataviewer; } +//------------------------------------------------------------------- +wxVtk3DBaseView* wxVtkMPR3DView::GetWxvtk3Dbaseview() throw (char*) +{ + if(_wxvtk3Dbaseview==NULL){ + throw "wxVtk3DBaseView* wxVtkMPR3DView::GetWxvtk3Dbaseview() _wxvtk3Dbaseview=NULL"; + } + return _wxvtk3Dbaseview; +} +//------------------------------------------------------------------- + //------------------------------------------------------------------- void wxVtkMPR3DView::VisibleImageActor(int idPosition, bool visible){ if (visible!=_vtkmpr3Ddataviewer->GetVisiblePosition(idPosition)){ @@ -3969,8 +4156,11 @@ void wxVtkClipping3DView::VisibleVolumeActor( bool visVolume){ } } //------------------------------------------------------------------- -wxVtk3DBaseView* wxVtkClipping3DView::GetWxvtk3Dbaseview() +wxVtk3DBaseView* wxVtkClipping3DView::GetWxvtk3Dbaseview()throw(char*) { + if(_wxvtk3Dbaseview==NULL){ + throw "wxVtk3DBaseView* wxVtkClipping3DView::GetWxvtk3Dbaseview() _wxvtk3Dbaseview=NULL"; + } return _wxvtk3Dbaseview; } //------------------------------------------------------------------- @@ -4011,7 +4201,10 @@ void wxVtkClipping3DView::Configure(){ VisibleActor(3, false ); _boxWidgetS1->HandlesOn (); - _boxWidgetS1->On(); + +//EED 29Mars2009 +// _boxWidgetS1->On(); + _boxWidgetS1->Off(); _boxWidgetS1->GetPlanes( this->GetVtkClipping3DDataViewer()->GetTissuePlanes(0) ); @@ -4031,7 +4224,10 @@ void wxVtkClipping3DView::Configure(){ _boxWidgetVolume->AddObserver( vtkCommand::InteractionEvent , _vtkclipping3Ddataviewer->GetObserverV() ); _boxWidgetVolume->HandlesOn (); - _boxWidgetVolume->On(); + +//EED 29Mars2009 +// _boxWidgetVolume->On(); + _boxWidgetVolume->Off(); @@ -4263,6 +4459,8 @@ wxPanelCuttingImageData::wxPanelCuttingImageData (wxWindow *parent) { _imageData=NULL; _histogrammeVector=NULL; + _wxvtk3Dbaseview=NULL; + _wxvtkbaseView=NULL; CreateInterface(); CreateModel(); Create3DViewObjects(); @@ -4272,24 +4470,31 @@ wxPanelCuttingImageData::wxPanelCuttingImageData (wxWindow *parent) wxPanelCuttingImageData::~wxPanelCuttingImageData() { - delete _modelCube; - delete _modelSphere; - delete _modelCylinder; - _vtkcube -> Delete(); - _vtksphere -> Delete(); - _vtkcylinder -> Delete(); - _cubeMapper -> Delete(); - _sphereMapper -> Delete(); - _cylinderMapper -> Delete(); - _cubeActor -> Delete(); - _sphereActor -> Delete(); - _cylinderActor -> Delete(); -// _xyplot->RemoveAllInputs(); - _xyplot -> Delete(); - _histogrammeVector->Delete(); + delete _modelCube; + delete _modelSphere; + delete _modelCylinder; + _vtkcube -> Delete(); + _vtksphere -> Delete(); + _vtkcylinder -> Delete(); + _cubeMapper -> Delete(); + _sphereMapper -> Delete(); + _cylinderMapper -> Delete(); + _cubeActor -> Delete(); + _sphereActor -> Delete(); + _cylinderActor -> Delete(); +// _xyplot->RemoveAllInputs(); + _xyplot -> Delete(); + _histogrammeVector->Delete(); + _renplotter->Delete(); + + if(_wxvtkbaseView!=NULL){ + delete _wxvtkbaseView; + } + //delete _vtkclipping3Ddataviewer; + - delete _wxvtkbaseView; + //fclose(file); } @@ -4432,10 +4637,10 @@ wxWindow *wxPanelCuttingImageData::CreatePlotHistogrammeInterface() _wxvtkbaseView = new wxVtkBaseView(this); _wxvtkbaseView->Configure(); - vtkRenderer *ren = vtkRenderer::New(); + _renplotter = vtkRenderer::New(); vtkRenderWindow *renWin = _wxvtkbaseView->GetRenWin(); - renWin->AddRenderer( ren ); - ren->AddActor2D( _xyplot ); + renWin->AddRenderer( _renplotter ); + _renplotter->AddActor2D( _xyplot ); return _wxvtkbaseView->GetWxVTKRenderWindowInteractor(); } @@ -4485,7 +4690,7 @@ void wxPanelCuttingImageData::CreateInterface() _infoPixHi = new wxStaticText(this,-1,_T("############")); - wxWindow *panelPlotHistogramme = CreatePlotHistogrammeInterface(); + _typeFig->Append(_T("Cylindre")); _typeFig->Append(_T("Cube")); @@ -4577,6 +4782,9 @@ void wxPanelCuttingImageData::CreateInterface() // wxBoxSizer *sizerHor = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *sizerHor = new wxBoxSizer(wxVERTICAL); sizerHor -> Add( topsizer , 1 , wxALL | wxEXPAND ,0); + + + wxWindow *panelPlotHistogramme = CreatePlotHistogrammeInterface(); sizerHor -> Add( panelPlotHistogramme , 1 , wxGROW ,0); @@ -4666,10 +4874,10 @@ void wxPanelCuttingImageData::OnExtract(wxCommandEvent& event) double contBeforPorc = 100*(double)contBefor/(double)totalSubVolume; double contAfterPorc = 100*(double)contAfter/(double)totalSubVolume; infoToVo.Printf(_T("%dx%dx%d = %d"),dim[0],dim[1],dim[2], dim[0]*dim[1]*dim[2] ); - infoSuVo.Printf(_T("%d") , totalSubVolume); + infoSuVo.Printf(_T("%ld") , totalSubVolume); infoSuVoA.Printf(_T("%.2f"), _actualCuttingModel->GetTheoricVolume() ); - infoPixLe.Printf(_T("%d pix. (%.2f %s) - %.2f mm^3"),contBefor, contBeforPorc ,_T("%"),contBefor*volumeUnit); - infoPixHi.Printf(_T("%d pix. (%.2f %s) - %.2f mm^3"),contAfter, contAfterPorc ,_T("%"),contAfter*volumeUnit); + infoPixLe.Printf(_T("%ld pix. (%.2f %s) - %.2f mm^3"),contBefor, contBeforPorc ,_T("%"),contBefor*volumeUnit); + infoPixHi.Printf(_T("%ld pix. (%.2f %s) - %.2f mm^3"),contAfter, contAfterPorc ,_T("%"),contAfter*volumeUnit); _infoToVo->SetLabel(infoToVo); _infoSuVo->SetLabel(infoSuVo); @@ -5385,38 +5593,74 @@ wxMPRWidget::wxMPRWidget( wxWindow* parent, _vtkmprbasedata = NULL; - _voxelSize = voxelSize; - _framePanelCutting = NULL; + + _framePanelCutting = NULL; _panelCutting = NULL; - _marImageData = marimageData; - _vtkmprbasedata = new vtkMPRBaseData(); - _vtkmprbasedata->SetMarImageData(_marImageData); - wxSplitterWindow *pnlSplitter = new wxSplitterWindow( this , -1); - - wxPanel *MPRPanel = CreateMPRPanel(pnlSplitter,_vtkmprbasedata); - wxPanel *controlPanel = CreateControlPanel(pnlSplitter); wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL ); - sizer -> Add( pnlSplitter ,1,wxGROW ,0); + _marImageData=NULL; + + if(marimageData!=NULL){ + _marImageData = marimageData; + _voxelSize = voxelSize; + _vtkmprbasedata = new vtkMPRBaseData(); + _vtkmprbasedata->SetMarImageData(_marImageData); + + + + + wxSplitterWindow *pnlSplitter = new wxSplitterWindow( this , -1); + pnlSplitter -> SetMinimumPaneSize( 2 ); + + wxPanel *MPRPanel = CreateMPRPanel(pnlSplitter,_vtkmprbasedata); + wxPanel *controlPanel = CreateControlPanel(pnlSplitter); + pnlSplitter -> SplitVertically( MPRPanel, controlPanel, 550 ); - int ww,hh; - wxWindow *pp=this; - while (pp->GetParent()!=NULL) pp=pp->GetParent(); - pp->GetSize(&ww,&hh); + sizer -> Add( pnlSplitter ,1,wxGROW ,0); - pnlSplitter -> SetMinimumPaneSize( 2 ); + } - pnlSplitter -> SplitVertically( MPRPanel, controlPanel, 550 ); + //int ww,hh; + //wxWindow *pp=this; + //while (pp->GetParent()!=NULL) pp=pp->GetParent(); + //pp->GetSize(&ww,&hh); + this -> SetAutoLayout( true ); this -> SetSizer(sizer); // sizer -> Fit( this ); - _refreshAPage=0; _refreshBPage=0; } +void wxMPRWidget::setImageData(vtkImageData * img, double voxelsize){ + + if(_marImageData!=NULL){ + _marImageData->removeImageData(0); + _marImageData->AddImageData(img); + }else{ + _marImageData = new marImageData(img); + } + + _voxelSize = voxelsize; + + if(_vtkmprbasedata==NULL){ + _vtkmprbasedata = new vtkMPRBaseData(); + _vtkmprbasedata->SetMarImageData(_marImageData); + + wxSplitterWindow *pnlSplitter = new wxSplitterWindow( this , -1); + pnlSplitter -> SetMinimumPaneSize( 2 ); + wxPanel *MPRPanel = CreateMPRPanel(pnlSplitter,_vtkmprbasedata); + wxPanel *controlPanel = CreateControlPanel(pnlSplitter); + pnlSplitter -> SplitVertically( MPRPanel, controlPanel, 550 ); + + this->GetSizer() -> Add( pnlSplitter ,1,wxGROW ,0); + } + + + +} //---------------------------------------------------------------------------- wxMPRWidget::~wxMPRWidget( ) @@ -5804,11 +6048,16 @@ wxPanel* wxMPRWidget::CreateMPRPanel4View(wxWindow *parent, vtkMPRBaseData *vtkm //---------------------------------------------------------------------------- void wxMPRWidget::OnCutImagaData(wxCommandEvent &event) { - if (_btnCutImageData->GetValue()==true){ + if (_btnCutImageData->GetValue()==true){ + _framePanelCutting = new wxFrame(this,-1,_T("Cutting Module"),wxDefaultPosition,wxDefaultSize,wxCAPTION|wxSTAY_ON_TOP| wxRESIZE_BORDER ); + _framePanelCutting->SetSize(550,400); - _panelCutting = new wxPanelCuttingImageData(_framePanelCutting); - _panelCutting->SetWxVtk3DBaseView( _wxvtk3Dbaseview_Clipping3D_BB ); + + _panelCutting = new wxPanelCuttingImageData(_framePanelCutting); + if(_wxvtk3Dbaseview_Clipping3D_BB!=NULL){ + _panelCutting->SetWxVtk3DBaseView( _wxvtk3Dbaseview_Clipping3D_BB ); + } _panelCutting->SetVtkMPRBaseData( GetVtkMPRBaseData() ); _panelCutting->SetVtkClipping3DDataViewer( this->_wxvtkclipping3Dview_BB->GetVtkClipping3DDataViewer() ); _panelCutting->Configure( ); @@ -5822,12 +6071,14 @@ void wxMPRWidget::OnCutImagaData(wxCommandEvent &event) // _framePanelCutting->FitInside(); */ _framePanelCutting->Show(); + + } else { if (_framePanelCutting!=NULL){ - _panelCutting->RemoveActors(); - _framePanelCutting->Close(); - _framePanelCutting = NULL; - _panelCutting = NULL; + _panelCutting->RemoveActors(); + _framePanelCutting->Destroy(); + _framePanelCutting=NULL; + _panelCutting=NULL; } } } @@ -5838,9 +6089,14 @@ void wxMPRWidget::ConfigureVTK(){ if (_vtkmprbasedata!=NULL) { + _vtkmprbasedata->Configure(); x=_vtkmprbasedata -> GetMaxPositionX()/2; y=_vtkmprbasedata -> GetMaxPositionY()/2; - z=_vtkmprbasedata -> GetMaxPositionZ()/2; + z=_vtkmprbasedata -> GetMaxPositionZ()/2; + _vtkmprbasedata->SetX( x ); + _vtkmprbasedata->SetY( y ); + _vtkmprbasedata->SetZ( z ); + } if(_vtkmpr2Dview[0]!=NULL) {_vtkmpr2Dview[0] -> Configure();} @@ -5853,12 +6109,7 @@ void wxMPRWidget::ConfigureVTK(){ if (_vtkmpr2Dview_B[2]!=NULL) { _vtkmpr2Dview_B[2] -> Configure(); } - if (_vtkmprbasedata!=NULL) - { - _vtkmprbasedata->SetX( x ); - _vtkmprbasedata->SetY( y ); - _vtkmprbasedata->SetZ( z ); - } + if (_vtkplane2Dview!=NULL){_vtkplane2Dview -> Configure();} if (_widgetMesure!=NULL){_widgetMesure -> ConfigureA(_vtkplane2Dview);} @@ -5908,8 +6159,10 @@ void wxMPRWidget::ConfigureVTK(){ { _wxvtk3Dbaseview_Clipping3D_BB->GetInteractorStyleBaseView()->AddInteractorStyleMaracas( vtkinteractorstyle3Dview ); } - - RefreshView(true); + +//EED 29Mars2009 +// RefreshView(true); + } //---------------------------------------------------------------------------- @@ -6030,7 +6283,7 @@ void wxMPRWidget::RefreshView(bool firsttime){ } //---------------------------------------------------------------------------- -vtkMPRBaseData *wxMPRWidget::GetVtkMPRBaseData(){ +vtkMPRBaseData *wxMPRWidget::GetVtkMPRBaseData(){ return _vtkmprbasedata; } //----------------------------------------------------------------------------