X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FwxVtk2DBaseView.cxx;h=4203d27b4a45884df23c9a168dbec48283fbbcad;hb=b0230890274e619c44f9ac7e1fd277ef28c18108;hp=18bdf5ac83534fa7bc754a2c3c72e19dfc918a8d;hpb=fe5ff4386e982e131337b3324b787118cbc8df8a;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtk2DBaseView.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtk2DBaseView.cxx index 18bdf5a..4203d27 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtk2DBaseView.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtk2DBaseView.cxx @@ -33,7 +33,16 @@ void wxVtk2DBaseView::TransformCoordinate_spacing_ViewToModel(double &X,double & //EEDx5 double spc[3]; // GetVtkBaseData()->GetImageData()->GetSpacing(spc); - this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput()->GetSpacing(spc); +//JCP 04/08/10 W/O Image this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput()->GetSpacing(spc); + vtkImageData* image = this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput(); + if(image){ + image->GetSpacing(spc); + }else{ + spc[0] = 1; + spc[1] = 1; + spc[2] = 1; + } + X = X / spc[0]; Y = Y / spc[1]; @@ -47,8 +56,16 @@ void wxVtk2DBaseView::TransformCoordinate_spacing_ModelToView(double &X,double & //EEDx5 double spc[3]; // GetVtkBaseData()->GetImageData()->GetSpacing(spc); - this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput()->GetSpacing(spc); - +//JCP 04/08/10 W/O Image this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput()->GetSpacing(spc); + vtkImageData* image = this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput(); + 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]; @@ -58,24 +75,46 @@ void wxVtk2DBaseView::TransformCoordinate_spacing_ModelToView(double &X,double & //------------------------------------------------------------------- void wxVtk2DBaseView::ResetView() { - double spx,spy,spz; - int x1,x2,y1,y2,z1,z2; + double spx = 0,spy = 0,spz = 0; + int x1 = 1,x2 = 1,y1 = 1,y2 = 1,z1 = 1,z2 = 1; wxVtkBaseView::Configure(); wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor(); vtkImageData *imageData = GetVtkBaseData()->GetImageData(); - imageData->UpdateInformation(); - imageData->SetUpdateExtent( imageData->GetWholeExtent()); - imageData->Update(); + if(imageData){ + imageData->UpdateInformation(); + imageData->SetUpdateExtent( imageData->GetWholeExtent()); + imageData->Update(); + _imageViewer2XYZ->GetVtkImageViewer2()->SetInput(imageData ); + imageData->GetSpacing (spx,spy,spz); + imageData->GetExtent (x1,x2,y1,y2,z1,z2); + } - _imageViewer2XYZ->GetVtkImageViewer2()->SetInput(imageData ); - imageData->GetSpacing (spx,spy,spz); - imageData->GetExtent (x1,x2,y1,y2,z1,z2); + _imageViewer2XYZ -> SetExtentDimension(x1,x2,y1,y2,z1,z2); _imageViewer2XYZ -> GetVtkImageViewer2()->SetupInteractor ( iren ); _imageViewer2XYZ->GetVtkImageViewer2()->Render(); - SetInteractorStyleImage( vtkInteractorStyleBaseView2D::New() ); + + ////////////// + //RaC 04-2010 Look for the description of new changes in vtkInteractorStyleBaseView2D constructor. + // + // Previous version + // SetInteractorStyleImage( vtkInteractorStyleBaseView2D::New() ); + // + // Actual version + vtkInteractorStyleBaseView2D *style2D = vtkInteractorStyleBaseView2D::New(); + + manualInteractorWindowLevel *_manualinteractorwindowlevel= new manualInteractorWindowLevel(); + style2D->SetInteractorWindowLevel( _manualinteractorwindowlevel ); + + vtkInteractorScrollZ *_vtkInteractorScrollZ = new vtkInteractorScrollZ(); + style2D->SetInteractorScrollZ(_vtkInteractorScrollZ); + + SetInteractorStyleImage( style2D ); + + // RaC + ////////////// } @@ -93,31 +132,49 @@ void wxVtk2DBaseView::Configure(bool okimage) _imageViewer2XYZ = new vtkImageViewer2_XYZ(); wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor(); _imageViewer2XYZ -> GetVtkImageViewer2()->SetupInteractor ( iren ); - SetInteractorStyleImage( vtkInteractorStyleBaseView2D::New() ); + + ////////////// + //RaC 04-2010 Look for the description of new changes in vtkInteractorStyleBaseView2D constructor. + // + // Previous version + // SetInteractorStyleImage( vtkInteractorStyleBaseView2D::New() ); + // + // Actual version + vtkInteractorStyleBaseView2D *style2D = vtkInteractorStyleBaseView2D::New(); + + manualInteractorWindowLevel *_manualinteractorwindowlevel= new manualInteractorWindowLevel(); + style2D->SetInteractorWindowLevel( _manualinteractorwindowlevel ); + + vtkInteractorScrollZ *_vtkInteractorScrollZ = new vtkInteractorScrollZ(); + style2D->SetInteractorScrollZ(_vtkInteractorScrollZ); + + SetInteractorStyleImage( style2D ); + + // RaC + ////////////// } vtkImageData *imageData = GetVtkBaseData()->GetMarImageData()->GetImageData(); if (imageData!=NULL){ + imageData->UpdateInformation(); imageData->SetUpdateExtent( imageData->GetWholeExtent()); imageData->Update(); if (okimage==true){ imageData->GetSpacing (spx,spy,spz); imageData->GetExtent (x1,x2,y1,y2,z1,z2); - - _imageViewer2XYZ->GetVtkImageViewer2()->SetInput(imageData ); _imageViewer2XYZ->SetExtentDimension(x1,x2,y1,y2,z1,z2); double range[2]; - imageData->GetScalarRange(range); - if (range[1]<20000){ + imageData->GetScalarRange(range); + if (range[1]<20000){ _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow( (range[1]-range[0])/2 ); _imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel( (range[1]+range[0])/4 ); - } else { + } else { _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow( 1000 ); _imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel( 500 ); - } + } // EED 31 Janvier 2007 //vtkImageActor *vtkimageactor = _imageViewer2XYZ->GetVtkImageViewer2()->GetImageActor (); //vtkimageactor->InterpolateOff (); @@ -166,7 +223,6 @@ void wxVtk2DBaseView::Configure(bool okimage) } // okimage } // imageData - } //------------------------------------------------------------------- @@ -241,7 +297,13 @@ vtkRenderWindow* wxVtk2DBaseView::GetRenWin() // virtual void wxVtk2DBaseView::GetSpacing(double spc[3]) // virtual { vtkImageData *imageData = GetVtkBaseData()->GetImageData(); - imageData->GetSpacing(spc); + if(imageData){ + imageData->GetSpacing(spc); + }else{ + spc[0] = 0; + spc[1] = 0; + spc[2] = 0; + } } void wxVtk2DBaseView::setColorTransferFunction(vtkColorTransferFunction* colortable){ @@ -252,12 +314,16 @@ void wxVtk2DBaseView::setColorTransferFunction(vtkColorTransferFunction* colorta } void wxVtk2DBaseView::setWindowLevel(double level){ - _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow(level); - +// _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow(level); + + vtkImageMapToWindowLevelColors* imagemaptowindowlevel = _imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel(); + imagemaptowindowlevel->SetWindow(level); this->Refresh(); } void wxVtk2DBaseView::setColorLevel(double level){ - _imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel(level); +// _imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel(level); + vtkImageMapToWindowLevelColors* imagemaptowindowlevel = _imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel(); + imagemaptowindowlevel->SetLevel(level); this->Refresh(); }