X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FwxVtkMPR3DView.cxx;h=23b6ce1ad4b199dde4a41aa3525362bc8b08d38b;hb=15112ae15da4222831b0e8e7c9be87daf9e99a1c;hp=3703011e6b5c35dbfc04b34c2d52cf076a99ff3c;hpb=e263b7ace0f53d647a731553a3f67700838ad146;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR3DView.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR3DView.cxx index 3703011..23b6ce1 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR3DView.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR3DView.cxx @@ -41,6 +41,7 @@ #include "vtkCellPicker.h" #include "vtkInteractorStyleBaseView.h" #include +#include "vtkTexture.h" @@ -142,14 +143,17 @@ wxVtkMPR3DView::wxVtkMPR3DView( wxVtk3DBaseView *wxvtk3Dbaseview ) wxVtkMPR3DView::~wxVtkMPR3DView() { VisiblePointWidget( false ); - VisiblePlaneWidget( false ); - if(_pointWidget!=NULL){ +// VisiblePlaneWidget( false ); + if(_pointWidget!=NULL) + { _pointWidget->Delete(); } - if(_planeWidget!=NULL){ + if(_planeWidget!=NULL) + { _planeWidget->Delete(); } - if(_vtkplane!=NULL){ + if(_vtkplane!=NULL) + { _vtkplane->Delete(); _probe->Delete(); _contourMapper->Delete(); @@ -327,22 +331,74 @@ void wxVtkMPR3DView::SetImage() // -- Plane widget _probe->SetSource( imageData ); #else + + +// double colorWindow = _vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetColorWindow(); +// double colorLevel = _vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetColorLevel(); + + double spc[3]; + vtkImageData *image = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData(); + if(image) + { + image->GetSpacing(spc); + }else{ + spc[0] = 0; + spc[1] = 0; + spc[2] = 0; + } + double x = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetX(); + double y = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetY(); + double z = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetZ(); + + +/* + if (mchange==NULL) + { + mchange = vtkImageChangeInformation::New(); + mchange->SetInputData( imageData ); + mchange->Modified(); //important + mchange->Update(); //important + _planeWidgetX->SetInputData( mchange->GetOutput() ); + _planeWidgetY->SetInputData( mchange->GetOutput() ); + _planeWidgetZ->SetInputData( mchange->GetOutput() ); + } else { + mchange->SetInputData( imageData ); + mchange->Modified(); //important + mchange->Update(); //important + } + +*/ + + + + _planeWidgetX->SetInputData( imageData ); _planeWidgetY->SetInputData( imageData ); _planeWidgetZ->SetInputData( imageData ); +//EED 2021-06-23 +// _planeWidgetX->SetWindowLevel(colorLevel,colorWindow,1); +// _planeWidgetY->SetWindowLevel(colorLevel,colorWindow,1); +// _planeWidgetY->SetWindowLevel(colorLevel,colorWindow,1); + _planeWidgetX->SetSlicePosition( x*spc[0] ); + _planeWidgetY->SetSlicePosition( y*spc[1] ); + _planeWidgetZ->SetSlicePosition( z*spc[2] ); + + _planeWidgetX->GetTexture()->SetInterpolate( _vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetInterpolate() ); + _planeWidgetY->GetTexture()->SetInterpolate( _vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetInterpolate() ); + _planeWidgetZ->GetTexture()->SetInterpolate( _vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetInterpolate() ); + + // -- Plane widget _probe->SetSourceData( imageData ); #endif - _vtkmpr3Ddataviewer->SetImage(); } //------------------------------------------------------------------- vtkImagePlaneWidget* wxVtkMPR3DView::GetPlaneWidget(unsigned char activationkey, double r, double g, double b, vtkCellPicker* picker) { - vtkProperty* prop1 = 0; - vtkImagePlaneWidget* planeWidget = 0; - planeWidget = vtkImagePlaneWidget::New(); + vtkProperty* prop1 = NULL; + vtkImagePlaneWidget* planeWidget = vtkImagePlaneWidget::New(); planeWidget->SetInteractor( GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor() ); planeWidget->EnabledOff(); vtkImageData *image = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData(); @@ -458,7 +514,7 @@ void wxVtkMPR3DView::FreePlaneInteraction(bool ok) _planeWidgetY->InteractionOff(); _planeWidgetZ->InteractionOff(); } - } // if _planeWidgetX + } // if _planeWidgetXVisiblePointWidget } @@ -484,7 +540,6 @@ void wxVtkMPR3DView::RefreshView() // virtual { double spc[3]; vtkImageData *image = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData(); - if(image) { image->GetSpacing(spc); @@ -493,18 +548,13 @@ void wxVtkMPR3DView::RefreshView() // virtual spc[1] = 0; spc[2] = 0; } - // GetVtkMPR3DDataViewer()->Configure(); - //double nx=1,ny=0,nz=0; // JPRx Refresh(); - double x=GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetX(); - double y=GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetY(); - double z=GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetZ(); - - SetColorWindow( _vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetColorWindow() ); - SetColorLevel( _vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetColorLevel() ); + double x = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetX(); + double y = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetY(); + double z = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetZ(); double normal[3]; // FreePlaneX @@ -513,7 +563,7 @@ void wxVtkMPR3DView::RefreshView() // virtual { _planeWidgetX->SetSlicePosition( x*spc[0] ); //EED 2016/02/19 -// _planeWidgetX->GetReslice()->SetInterpolate( _vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetInterpolate() ); + _planeWidgetX->GetReslice()->SetInterpolate( _vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetInterpolate() ); _planeWidgetX->GetTexture()->SetInterpolate( _vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetInterpolate() ); } // FreePlaneY @@ -534,11 +584,12 @@ void wxVtkMPR3DView::RefreshView() // virtual _planeWidgetZ->GetReslice()->SetInterpolate( _vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetInterpolate() ); _planeWidgetZ->GetTexture()->SetInterpolate( _vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetInterpolate() ); } - - x=x*spc[0]; - y=y*spc[1]; - z=z*spc[2]; - + + SetWindowColorLevel(_vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetColorWindow() , _vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetColorLevel() ); + + x = x*spc[0]; + y = y*spc[1]; + z = z*spc[2]; if(_pointWidget) { //EED 2017-01-01 Migration VTK7 @@ -565,7 +616,7 @@ void wxVtkMPR3DView::RefreshView() // virtual #else _probe->Update(); #endif - } + } //_pointWidget if (_wxvtkmpr3DviewCntrlPanel!=NULL) { @@ -596,7 +647,8 @@ wxVtk3DBaseView* wxVtkMPR3DView::GetWxvtk3Dbaseview() throw (char*) //------------------------------------------------------------------- //------------------------------------------------------------------- -void wxVtkMPR3DView::VisibleImageActor(int idPosition, bool visible){ +void wxVtkMPR3DView::VisibleImageActor(int idPosition, bool visible) +{ /*if(visible == false) printf("CPR: wxVtkMPR3DView::VisibleImageActor-> visibleActor == false \n"); else @@ -606,7 +658,8 @@ void wxVtkMPR3DView::VisibleImageActor(int idPosition, bool visible){ } */ if (visible!=_vtkmpr3Ddataviewer->GetVisiblePosition(idPosition)){ - if (visible==false){ + if (visible==false) + { _wxvtk3Dbaseview->GetRenderer()->RemoveActor( _vtkmpr3Ddataviewer->GetImageActor(idPosition) ); } else { //EED 21/07/2013 @@ -620,7 +673,6 @@ void wxVtkMPR3DView::VisibleImageActor(int idPosition, bool visible){ // This works in ViewerNV with nTymeView=6 // Because the others modules (5) generate also more actors with an OutLineFilter -> Actor //showOutlineActor(false); - // step 1, step 2 vtkActorCollection *tmpCollection = vtkActorCollection::New(); vtkActorCollection *collectionActors = _wxvtk3Dbaseview->GetRenderer()->GetActors(); @@ -630,20 +682,16 @@ void wxVtkMPR3DView::VisibleImageActor(int idPosition, bool visible){ tmpCollection->AddItem ( (vtkActor*)collectionActors->GetItemAsObject(0) ); _wxvtk3Dbaseview->GetRenderer()->RemoveActor( (vtkProp*)tmpCollection->GetItemAsObject(i) ); } // for - // step 3 _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkmpr3Ddataviewer->GetImageActor(idPosition) ); - // step 4 for (i=0; iGetRenderer()->AddActor( (vtkProp*)tmpCollection->GetItemAsObject(i) ); } // for tmpCollection->Delete(); - // step 5 Refresh _wxvtk3Dbaseview->GetRenderer()->GetRenderWindow()->Render(); - } // if visible _vtkmpr3Ddataviewer->SetVisiblePosition(idPosition,visible); } // if visible @@ -671,7 +719,6 @@ void wxVtkMPR3DView::VisiblePlaneWidget( bool visible ) { _planeWidget->On(); _contourPlaneActor->VisibilityOn(); - } else { _planeWidget->Off(); _contourPlaneActor->VisibilityOff(); @@ -681,7 +728,7 @@ void wxVtkMPR3DView::VisiblePlaneWidget( bool visible ) } //CPR: Method added 30 Nov 2009 -void wxVtkMPR3DView::showOutlineActor(bool value) +void wxVtkMPR3DView::showOutlineBoxActor(bool value) { vtkActor* _outlineActor = _vtkmpr3Ddataviewer->GetOutlineActor(); if(value == true) @@ -692,6 +739,29 @@ void wxVtkMPR3DView::showOutlineActor(bool value) } // value } +//------------------------------------------------------------------- +void wxVtkMPR3DView::showOutlinePlaneActor(bool value) +{ + vtkProperty *prop1=NULL; + if(value == true) + { + prop1 = _planeWidgetX ->GetPlaneProperty(); + prop1->SetOpacity(1); + prop1 = _planeWidgetY ->GetPlaneProperty(); + prop1->SetOpacity(1); + prop1 = _planeWidgetZ ->GetPlaneProperty(); + prop1->SetOpacity(1); + } else { + prop1 = _planeWidgetX ->GetPlaneProperty(); + prop1->SetOpacity(0); + prop1 = _planeWidgetY ->GetPlaneProperty(); + prop1->SetOpacity(0); + prop1 = _planeWidgetZ ->GetPlaneProperty(); + prop1->SetOpacity(0); + } // value +} + + //------------------------------------------------------------------- void wxVtkMPR3DView::SetVtkMPR3DDataViewer(vtkMPR3DDataViewer *vtkmpr3Ddataviewer) { @@ -705,18 +775,13 @@ void wxVtkMPR3DView::InitOrientationPointWidget() } //------------------------------------------------------------------- -void wxVtkMPR3DView::SetColorWindow(double colorWindow) +void wxVtkMPR3DView::SetWindowColorLevel(double colorWindow , double colorLevel) { - double colorLevel = _planeWidgetX->GetLevel(); _planeWidgetX->SetWindowLevel(colorWindow,colorLevel); + _planeWidgetY->SetWindowLevel(colorWindow,colorLevel); + _planeWidgetZ->SetWindowLevel(colorWindow,colorLevel); } -//------------------------------------------------------------------- -void wxVtkMPR3DView::SetColorLevel(double colorLevel) -{ - double colorWindow = _planeWidgetX->GetWindow(); - _planeWidgetX->SetWindowLevel(colorWindow,colorLevel); -} //------------------------------------------------------------------- // EED 25 Janvier 2007 testLoic @@ -831,13 +896,13 @@ void wxVtkMPR3DView::TestLoic1() //EED 2017-01-01 Migration VTK7 #if VTK_MAJOR_VERSION <= 5 _3DSliceMapper->SetInput(change->GetOutput( ) ); + _3DSliceMapper->ImmediateModeRenderingOn( ); #else _3DSliceMapper->SetInputData(change->GetOutput( ) ); #endif _3DSliceMapper->SetLookupTable( _bwlookup ); _3DSliceMapper->SetScalarRange( _range ); - _3DSliceMapper->ImmediateModeRenderingOn( ); vtkActor *_3DSliceActor = vtkActor::New( ); _3DSliceActor->SetMapper( _3DSliceMapper ); @@ -963,15 +1028,20 @@ void wxVtkMPR3DView::SetBackGroundType(int type) if (_wxvtk3Dbaseview!=NULL) { if (type==0) + { + _wxvtk3Dbaseview->GetRenderer()->GradientBackgroundOn(); + _wxvtk3Dbaseview->GetRenderer()->SetBackground( 0.33 , 0.33 , 0.33 ); + _wxvtk3Dbaseview->GetRenderer()->SetBackground2( 0.66 , 0.66 , 0.66 ); + } // if type + else if (type==1) { _wxvtk3Dbaseview->GetRenderer()->GradientBackgroundOff(); _wxvtk3Dbaseview->GetRenderer()->SetBackground( 0 , 0 , 0 ); } // if type - if (type==1) + else if (type==2) { - _wxvtk3Dbaseview->GetRenderer()->GradientBackgroundOn(); - _wxvtk3Dbaseview->GetRenderer()->SetBackground( 0.33 , 0.33 , 0.33 ); - _wxvtk3Dbaseview->GetRenderer()->SetBackground2( 0.66 , 0.66 , 0.66 ); + _wxvtk3Dbaseview->GetRenderer()->GradientBackgroundOff(); + _wxvtk3Dbaseview->GetRenderer()->SetBackground( 1 , 1 , 1 ); } // if type _wxvtk3Dbaseview->Refresh(); }// if _wxvtk3Dbaseview