X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FwxVtkMPR2DView.cxx;h=517ca87925bd997bb706ddf1109daea013f4478c;hb=f9901e756bb82bd333310b47607875331616bb29;hp=96fad29aab966c22e5198c8c3bebe152cf7bf4dd;hpb=b6acee59da3bb94b6619f79705580d5a3a1cc997;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR2DView.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR2DView.cxx index 96fad29..517ca87 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR2DView.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR2DView.cxx @@ -56,14 +56,14 @@ wxVtkMPR2DView::wxVtkMPR2DView( wxWindow *parent, int direction) //------------------------------------------------------------------- wxVtkMPR2DView::~wxVtkMPR2DView() { - if (_ptsA!=NULL) { _ptsA -> Delete(); } - if (_lineAActor!=NULL) { _lineAActor -> Delete(); } - if (_lineAMapper!=NULL) { _lineAMapper -> Delete(); } - if (_pdA!=NULL) { _pdA -> Delete(); } - if (_ptsB!=NULL) { _ptsB -> Delete(); } - if (_lineBActor!=NULL) { _lineBActor -> Delete(); } - if (_lineBMapper!=NULL) { _lineBMapper -> Delete(); } - if (_pdB!=NULL) { _pdB -> Delete(); } + if (_ptsA!=NULL) { _ptsA->Delete(); } + if (_lineAActor!=NULL) { _lineAActor->Delete(); } + if (_lineAMapper!=NULL) { _lineAMapper->Delete(); } + if (_pdA!=NULL) { _pdA->Delete(); } + if (_ptsB!=NULL) { _ptsB->Delete(); } + if (_lineBActor!=NULL) { _lineBActor->Delete(); } + if (_lineBMapper!=NULL) { _lineBMapper->Delete(); } + if (_pdB!=NULL) { _pdB->Delete(); } } //------------------------------------------------------------------- vtkMPRBaseData *wxVtkMPR2DView::GetVtkmprbasedata() @@ -84,7 +84,8 @@ void wxVtkMPR2DView::Configure() ((vtkInteractorStyleBaseView*)GetInteractorStyleBaseView())->AddInteractorStyleMaracas( _interactorstylemprview ); } - if(img!=NULL){ + if(img!=NULL) + { double* origin = img->GetOrigin(); img->GetExtent(x1,x2,y1,y2,z1,z2); img->GetSpacing(spc); @@ -115,7 +116,14 @@ void wxVtkMPR2DView::Configure() _ptsA->SetPoint(1, 1000 , 1000 , 1000 ); _pdA = vtkPolyData::New(); _lineAMapper = vtkPolyDataMapper::New(); + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 _lineAMapper->SetInput(_pdA); +#else + _lineAMapper->SetInputData(_pdA); +#endif + _lineAMapper->ImmediateModeRenderingOn(); _lineAActor->SetMapper(_lineAMapper); } @@ -131,7 +139,8 @@ void wxVtkMPR2DView::Configure() // Axe B - if(_lineBActor==NULL){ + if(_lineBActor==NULL) + { _lineBActor = vtkActor::New(); _lineBActor->GetProperty()->SetDiffuseColor(1,0,0); _lineBActor->GetProperty()->SetLineWidth(0.5); @@ -153,9 +162,17 @@ void wxVtkMPR2DView::Configure() _pdB->SetPoints( _ptsB ); _pdB->SetLines( linesB ); linesB->Delete(); //do not delete lines ?? + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 _lineBMapper->SetInput(_pdB); +#else + _lineBMapper->SetInputData(_pdB); +#endif + _lineBMapper->ImmediateModeRenderingOn(); - if(_imageViewer2XYZ){ + if(_imageViewer2XYZ) + { _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineAActor ); _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineBActor ); vtkCamera *camera =_imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->GetActiveCamera(); @@ -163,21 +180,22 @@ void wxVtkMPR2DView::Configure() //EED 17Avril2009 //EED 21 mars 2012 FLIP problem ..PLOP.. - if (_direction==0) { // YZ + if (_direction==0) + { // YZ camera->SetViewUp ( 0 , 0 , 1 ); 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) { // XZ + if (_direction==1) + { // XZ 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) { // XY + if (_direction==2) + { // XY camera->SetViewUp ( 0 , -1 , 0 ); camera->SetPosition ((x1+x2)/2 , (y1+y2)/2 , -10000); camera->SetFocalPoint ((x1+x2)/2 , (y1+y2)/2 , 0 ); @@ -214,9 +232,9 @@ void wxVtkMPR2DView::Configure() void wxVtkMPR2DView::SetVisibleAxis(bool ok) { - if (ok!=_visibleAxis) + if (ok != _visibleAxis) { - _visibleAxis=ok; + _visibleAxis = ok; if (_visibleAxis==true) { _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineAActor ); @@ -226,29 +244,37 @@ void wxVtkMPR2DView::SetVisibleAxis(bool ok) { _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->RemoveActor( _lineAActor ); _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->RemoveActor( _lineBActor ); - } + } // if visible + } // ok +} - } + +//------------------------------------------------------------------- +void wxVtkMPR2DView::ResetBackXYZ() +{ + _backX=-9999; + _backY=-9999; + _backZ=-9999; } + //------------------------------------------------------------------- void wxVtkMPR2DView::Refresh() { //wxVtk2DBaseView::Refresh(); int x1 = 0,x2 = 0,y1 = 0,y2 = 0,z1 = 0,z2 = 0; - //EED 02/08/2013 // int x = 0, y = 0, z = 0; - double x = 0, y = 0, z = 0; - - int xx = 0, yy = 0, zz = 0; + double x = 0, y = 0, z = 0; + int xx = 0, yy = 0, zz = 0; double *spc = 0; double *origin = 0; - double xx1,yy1,zz1,xx2,yy2,zz2; - + bool fixAxis2D; + double opacityAxis; vtkImageData* img = GetVtkmprbasedata()->GetImageData(); - if(img!=NULL){ + if(img!=NULL) + { origin = img->GetOrigin(); img->GetExtent(x1,x2,y1,y2,z1,z2); spc = img->GetSpacing(); @@ -258,38 +284,32 @@ void wxVtkMPR2DView::Refresh() y2 += origin[1]; z1 += origin[2]; z2 += origin[2]; - - xx1 = x1*spc[0]; - yy1 = y1*spc[1]; - zz1 = z1*spc[2]; - - xx2 = x2*spc[0]; - yy2 = y2*spc[1]; - zz2 = z2*spc[2]; - - x1 = (int)(x1*spc[0]); - y1 = (int)(y1*spc[1]); - z1 = (int)(z1*spc[2]); - + xx1 = x1*spc[0]; + yy1 = y1*spc[1]; + zz1 = z1*spc[2]; + xx2 = x2*spc[0]; + yy2 = y2*spc[1]; + zz2 = z2*spc[2]; + 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]); - - xx = (int)(GetVtkmprbasedata()->GetX()); - yy = (int)(GetVtkmprbasedata()->GetY()); - zz = (int)(GetVtkmprbasedata()->GetZ()); - -//EED 02/08/2013 -// x = round(xx*spc[0]); -// y = round(yy*spc[1]); -// z = round(zz*spc[2]); - - x = xx*spc[0]; - y = yy*spc[1]; - z = zz*spc[2]; - - - if ((xx!=_backX) || (yy!=_backY) || (zz!=_backZ) ) { + xx = (int)(GetVtkmprbasedata()->GetX()); + yy = (int)(GetVtkmprbasedata()->GetY()); + zz = (int)(GetVtkmprbasedata()->GetZ()); + x = xx*spc[0]; + y = yy*spc[1]; + z = zz*spc[2]; + fixAxis2D = GetVtkmprbasedata()->GetFixAxis2D(); + opacityAxis = GetVtkmprbasedata()->GetOpacityAxis(); + if ((xx!=_backX) || (yy!=_backY) || (zz!=_backZ) || (fixAxis2D!=_backFixAxis2D) || (opacityAxis!=_backOpacityAxis)) + { + double position[3]; + double focalpoint[3]; + GetRenderer()->GetActiveCamera()->GetPosition(position); + GetRenderer()->GetActiveCamera()->GetFocalPoint(focalpoint); if (_direction==0) { // YZ if(_imageViewer2XYZ) { @@ -304,6 +324,10 @@ void wxVtkMPR2DView::Refresh() _ptsA->SetPoint(1, xx2, yy2 , z ); _ptsB->SetPoint(0, xx2, y , zz1); _ptsB->SetPoint(1, xx2, y , zz2); + position[1] = y; + position[2] = z; + focalpoint[1] = y; + focalpoint[2] = z; } if (_direction==1) { // XZ if(_imageViewer2XYZ) @@ -319,6 +343,10 @@ void wxVtkMPR2DView::Refresh() _ptsA->SetPoint(1, xx2 , y1 , z ); _ptsB->SetPoint(0, x , y1 , zz1); _ptsB->SetPoint(1, x , y1 , zz2); + position[0] = x; + position[2] = z; + focalpoint[0] = x; + focalpoint[2] = z; } if (_direction==2) { // XY if(_imageViewer2XYZ) @@ -336,23 +364,45 @@ void wxVtkMPR2DView::Refresh() //_ptsA->SetPoint(1, x2 , y , z2 ); //_ptsB->SetPoint(0, x , y1, z2 ); //_ptsB->SetPoint(1, x , y2, z2 ); - _ptsA->SetPoint(0, xx1 , y , z1 ); _ptsA->SetPoint(1, xx2 , y , z1 ); _ptsB->SetPoint(0, x , yy1, z1 ); _ptsB->SetPoint(1, x , yy2, z1 ); - - - } - _backX=xx; - _backY=yy; - _backZ=zz; - } + position[0] = x; + position[1] = y; + focalpoint[0] = x; + focalpoint[1] = y; + } // if back + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 + // .. +#else + _ptsA->Modified(); + _ptsB->Modified(); +#endif + + if (fixAxis2D == true) + { + GetRenderer()->GetActiveCamera()->SetPosition(position); + GetRenderer()->GetActiveCamera()->SetFocalPoint(focalpoint); + } // if GetFixAxis2D + _lineAActor->GetProperty()->SetOpacity( opacityAxis ); + _lineBActor->GetProperty()->SetOpacity( opacityAxis ); + _backX = xx; + _backY = yy; + _backZ = zz; + _backFixAxis2D = fixAxis2D; + _backOpacityAxis= opacityAxis; + } // if image + //EED 2016/02/19 vtkImageActor *imageactor = _imageViewer2XYZ->GetVtkImageViewer2()->GetImageActor(); imageactor->SetInterpolate( GetVtkBaseData()->GetInterpolate() ); //EED 01nov2012 UpdateColorWindowLevel(); +//EED 05juin2019 + UpdateCameraParallelScale(); wxVtkBaseView::Refresh(); } }