X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FwxVtk2DBaseView.cxx;h=5337c807149d005d81571e3b5aa476a66779726a;hb=ca35b13e046343c8b50cbd6b833828b06c9d1608;hp=393b3f1160bf84c6ea866df1e7bba3c60459cc32;hpb=56eb704bce4e7a4206ffa16c84f3000b8b8f93eb;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtk2DBaseView.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtk2DBaseView.cxx index 393b3f1..5337c80 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtk2DBaseView.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtk2DBaseView.cxx @@ -46,7 +46,6 @@ wxVtk2DBaseView::~wxVtk2DBaseView() { delete _vtkIinfoTextImage; } - if (_imageViewer2XYZ!=NULL) { delete _imageViewer2XYZ; @@ -61,19 +60,17 @@ void wxVtk2DBaseView::TransformCoordinate_spacing_ViewToModel(double &X,double & // GetVtkBaseData()->GetImageData()->GetSpacing(spc); //JCP 04/08/10 W/O Image this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput()->GetSpacing(spc); vtkImageData* image = this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput(); - if(image){ + if(image) + { image->GetSpacing(spc); }else{ spc[0] = 1; spc[1] = 1; spc[2] = 1; } - - X = X / spc[0]; Y = Y / spc[1]; Z = Z / spc[2]; - } //------------------------------------------------------------------- @@ -104,10 +101,10 @@ void wxVtk2DBaseView::ResetView() double spx = 0,spy = 0,spz = 0; int x1 = 1,x2 = 1,y1 = 1,y2 = 1,z1 = 1,z2 = 1; wxVtkBaseView::Configure(); - crea::wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor(); vtkImageData *imageData = GetVtkBaseData()->GetImageData(); - if(imageData){ + if(imageData) + { //EED 2017-01-01 Migration VTK7 #if VTK_MAJOR_VERSION <= 5 imageData->UpdateInformation(); @@ -120,7 +117,7 @@ void wxVtk2DBaseView::ResetView() imageData->GetSpacing (spx,spy,spz); imageData->GetExtent (x1,x2,y1,y2,z1,z2); } - +printf("//EED wxVtk2DBaseView::ResetView %d %d %d %d %d %d \n",x1,x2,y1,y2,z1,z2); _imageViewer2XYZ -> SetExtentDimension(x1,x2,y1,y2,z1,z2); _imageViewer2XYZ -> GetVtkImageViewer2()->SetupInteractor ( iren ); @@ -144,6 +141,11 @@ void wxVtk2DBaseView::ResetView() vtkInteractorScrollZ *_vtkInteractorScrollZ = new vtkInteractorScrollZ(); style2D->SetInteractorScrollZ(_vtkInteractorScrollZ); + vtkInteractorZoomCamera *_vtkInteractorZoomCamera = new vtkInteractorZoomCamera(); + style2D->SetInteractorZoomCamera(_vtkInteractorZoomCamera); + + + SetInteractorStyleImage( style2D ); // RaC @@ -154,15 +156,24 @@ void wxVtk2DBaseView::ResetView() //------------------------------------------------------------------- void wxVtk2DBaseView::SetImageToVtkViewer(vtkImageData *imageData) { + int ext[6]; if (_imageViewer2XYZ!=NULL) { //EED 2017-01-01 Migration VTK7 #if VTK_MAJOR_VERSION <= 5 + imageData->Update(); + imageData->GetWholeExtent(ext); + _imageViewer2XYZ->SetExtentDimension( ext[0],ext[1],ext[2],ext[3],ext[4],ext[5] ); _imageViewer2XYZ->GetVtkImageViewer2()->SetInput( imageData ); #else + imageData->GetExtent(ext); + _imageViewer2XYZ->SetExtentDimension( ext[0],ext[1],ext[2],ext[3],ext[4],ext[5] ); _imageViewer2XYZ->GetVtkImageViewer2()->SetInputData( imageData ); #endif } // if _imageViewer2XYZ + + GetRenderer()->GetActiveCamera()->SetClippingRange(0.01, 1000000); + } //------------------------------------------------------------------- @@ -194,6 +205,9 @@ void wxVtk2DBaseView::Configure(bool okimage) vtkInteractorScrollZ *_vtkInteractorScrollZ = new vtkInteractorScrollZ(); style2D->SetInteractorScrollZ(_vtkInteractorScrollZ); + vtkInteractorZoomCamera *_vtkInteractorZoomCamera = new vtkInteractorZoomCamera(); + style2D->SetInteractorZoomCamera(_vtkInteractorZoomCamera); + SetInteractorStyleImage( style2D ); // RaC @@ -253,7 +267,7 @@ void wxVtk2DBaseView::Configure(bool okimage) //EED 21 mars 2012 FLIP problem ..PLOP.. // XY - camera->SetViewUp ( spx*0 , -spy*1 , spz*0 ); + camera->SetViewUp ( spx*0 , -spy*1 , spz*0 ); camera->SetPosition ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , -spz*10000 ); camera->SetFocalPoint ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , spz*0 ); /* @@ -265,7 +279,10 @@ void wxVtk2DBaseView::Configure(bool okimage) camera->SetClippingRange( 0.01 , 1000000 ); camera->ComputeViewPlaneNormal(); - camera->SetParallelScale( spx*(x2-x1)/3.0 ); + + double cameraparallelScale=spx*(x2-x1)/3.0; + camera->SetParallelScale( cameraparallelScale ); + GetVtkBaseData()->SetCameraParallelScale( cameraparallelScale ); // text information over the graphic window if(_vtkIinfoTextImage == NULL){ @@ -301,18 +318,19 @@ void wxVtk2DBaseView::UpdateColorWindowLevel() //EED 24oct2010 //EED 02nov2012 -// vtkImageViewer2 *vtkimageviewer2 = _imageViewer2XYZ->GetVtkImageViewer2(); - vtkImageMapToWindowLevelColors* imagemaptowindowlevel = _imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel(); imagemaptowindowlevel->SetWindow( GetVtkBaseData()->GetColorWindow() ); imagemaptowindowlevel->SetLevel( GetVtkBaseData()->GetColorLevel() ); - -// EED Borrame -// vtkimageviewer2->SetColorWindow( GetVtkBaseData()->GetColorWindow() ); -// vtkimageviewer2->SetColorLevel( GetVtkBaseData()->GetColorLevel() ); _imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel()->Modified(); } +//------------------------------------------------------------------- +void wxVtk2DBaseView::UpdateCameraParallelScale() +{ + vtkCamera *camera =_imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->GetActiveCamera(); + camera->SetParallelScale( GetVtkBaseData()->GetCameraParallelScale() ); +} + //------------------------------------------------------------------- void wxVtk2DBaseView::Refresh() { @@ -323,6 +341,7 @@ void wxVtk2DBaseView::Refresh() imageactor->SetInterpolate( GetVtkBaseData()->GetInterpolate() ); //EED 01nov2012 UpdateColorWindowLevel(); + UpdateCameraParallelScale(); wxVtkBaseView::Refresh(); } @@ -394,6 +413,13 @@ void wxVtk2DBaseView::SetColorLevel(double level) this->Refresh(); } +//------------------------------------------------------------------- +void wxVtk2DBaseView::SetInterpolate(bool iterpolate) +{ + GetVtkBaseData()->SetInterpolate( iterpolate ); + this->Refresh(); +} + //------------------------------------------------------------------- int wxVtk2DBaseView::GetDirection() // virtual {