X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FwxVtkMPR3DView.cxx;h=378dadec80206f992eda9fbe9c3a01ebb9a64f70;hb=4dcdcabb81ce9f9e9b7ccdb86a64995d7b18ea23;hp=6bdef1c10575013b16d158e0aee15f168e9ccc89;hpb=d341ae08f29d0b48044dcee9b4d7399c4b895e52;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR3DView.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR3DView.cxx index 6bdef1c..378dade 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR3DView.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR3DView.cxx @@ -195,7 +195,10 @@ void wxVtkMPR3DView::Configure() // Actors are added to the renderer. 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 @@ -387,6 +390,9 @@ vtkImagePlaneWidget* wxVtkMPR3DView::GetPlaneWidget(unsigned char activationkey, //------------------------------------------------------------------- void wxVtkMPR3DView::SetFreePlanesOrtho() { + + + _planeWidgetX->SetPlaneOrientationToXAxes(); _planeWidgetY->SetPlaneOrientationToYAxes(); _planeWidgetZ->SetPlaneOrientationToZAxes(); @@ -400,13 +406,44 @@ void wxVtkMPR3DView::FreePlaneVisible(int plane, bool ok) { if(_planeWidgetX) { - if ((plane==1) && (ok==true)) _planeWidgetX->EnabledOn(); - if ((plane==2) && (ok==true)) _planeWidgetY->EnabledOn(); - if ((plane==3) && (ok==true)) _planeWidgetZ->EnabledOn(); + if (ok==true) + { +//EED 21/07/2013 +// 1. Make backup of actors +// 2. Putting out all the actors +// 3. Add vtkImagageActor in first place +// 4. Putting again the originals actors +// 5. Refresh + + // step 1, step 2 + vtkActorCollection *tmpCollection = vtkActorCollection::New(); + vtkActorCollection *collectionActors = _wxvtk3Dbaseview->GetRenderer()->GetActors(); + int i,size=collectionActors->GetNumberOfItems(); + for (i=0; iAddItem ( (vtkActor*)collectionActors->GetItemAsObject(0) ); + _wxvtk3Dbaseview->GetRenderer()->RemoveActor( (vtkProp*)tmpCollection->GetItemAsObject(i) ); + } // for + + // step 3 + if ((plane==1) && (ok==true)) _planeWidgetX->EnabledOn(); + if ((plane==2) && (ok==true)) _planeWidgetY->EnabledOn(); + if ((plane==3) && (ok==true)) _planeWidgetZ->EnabledOn(); + + // step 4 + for (i=0; iGetRenderer()->AddActor( (vtkProp*)tmpCollection->GetItemAsObject(i) ); + } // for + tmpCollection->Delete(); + + // step 5 Refresh + _wxvtk3Dbaseview->GetRenderer()->GetRenderWindow()->Render(); + } // if ok if ((plane==1) && (ok==false)) _planeWidgetX->EnabledOff(); if ((plane==2) && (ok==false)) _planeWidgetY->EnabledOff(); if ((plane==3) && (ok==false)) _planeWidgetZ->EnabledOff(); - } + } // if _planeWidgetX } //------------------------------------------------------------------- @@ -438,7 +475,7 @@ void wxVtkMPR3DView::setColorTransferFunction(vtkColorTransferFunction* colortab //------------------------------------------------------------------- void wxVtkMPR3DView::Refresh() // virtual { - _vtkmpr3Ddataviewer -> Refresh(); + _vtkmpr3Ddataviewer->Refresh(); if (_wxvtkmpr3DviewCntrlPanel!=NULL) { _wxvtkmpr3DviewCntrlPanel->Refresh(); @@ -477,18 +514,27 @@ void wxVtkMPR3DView::RefreshView() // virtual if ((normal[0]==1)&&(normal[1]==0)&&(normal[2]==0)) { _planeWidgetX->SetSlicePosition( x*spc[0] ); +//EED 2016/02/19 +// _planeWidgetX->GetReslice()->SetInterpolate( _vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetInterpolate() ); + _planeWidgetX->GetTexture()->SetInterpolate( _vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetInterpolate() ); } // FreePlaneY _planeWidgetY->GetNormal(normal); if ((normal[0]==0)&&(normal[1]==1)&&(normal[2]==0)) { _planeWidgetY->SetSlicePosition( y*spc[1] ); +//EED 2016/02/19 + _planeWidgetY->GetReslice()->SetInterpolate( _vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetInterpolate() ); + _planeWidgetY->GetTexture()->SetInterpolate( _vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetInterpolate() ); } // FreePlaneZ _planeWidgetZ->GetNormal(normal); if ((normal[0]==0)&&(normal[1]==0)&&(normal[2]==1)) { _planeWidgetZ->SetSlicePosition( z*spc[2] ); +//EED 2016/02/19 + _planeWidgetZ->GetReslice()->SetInterpolate( _vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetInterpolate() ); + _planeWidgetZ->GetTexture()->SetInterpolate( _vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetInterpolate() ); } x=x*spc[0]; @@ -523,7 +569,8 @@ vtkMPR3DDataViewer* wxVtkMPR3DView::GetVtkMPR3DDataViewer() //------------------------------------------------------------------- wxVtk3DBaseView* wxVtkMPR3DView::GetWxvtk3Dbaseview() throw (char*) { - if(_wxvtk3Dbaseview==NULL){ + if(_wxvtk3Dbaseview==NULL) + { throw "wxVtk3DBaseView* wxVtkMPR3DView::GetWxvtk3Dbaseview() _wxvtk3Dbaseview=NULL"; } return _wxvtk3Dbaseview; @@ -544,7 +591,42 @@ void wxVtkMPR3DView::VisibleImageActor(int idPosition, bool visible){ if (visible==false){ _wxvtk3Dbaseview->GetRenderer()->RemoveActor( _vtkmpr3Ddataviewer->GetImageActor(idPosition) ); } else { +//EED 21/07/2013 +// 1. Make backup of actors +// 2. Putting out all the actors +// 3. Add vtkImagageActor in first place +// 4. Putting again the originals actors +// 5. Refresh + +//EED 4 nov 2015 (For Estelle) +// 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(); + int i,size=collectionActors->GetNumberOfItems(); + for (i=0; iAddItem ( (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(); + } _vtkmpr3Ddataviewer->SetVisiblePosition(idPosition,visible); } @@ -583,6 +665,7 @@ void wxVtkMPR3DView::VisiblePlaneWidget( bool visible ) //CPR: Method added 30 Nov 2009 void wxVtkMPR3DView::showOutlineActor(bool value) { + vtkActor* _outlineActor = _vtkmpr3Ddataviewer->GetOutlineActor(); if(value == true) { @@ -592,6 +675,7 @@ void wxVtkMPR3DView::showOutlineActor(bool value) { _wxvtk3Dbaseview->GetRenderer()->RemoveActor( _outlineActor ); } + } //------------------------------------------------------------------- @@ -749,7 +833,6 @@ void wxVtkMPR3DView::TestLoic2() vtkPlane *slicePlane = vtkPlane::New(); this->_planeWidget->GetPlane( slicePlane ); - vtkCutter* sliceCutter = vtkCutter::New(); vtkImageData *vtkimagedata = this->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData(); sliceCutter->SetInput( vtkimagedata ); @@ -758,7 +841,6 @@ void wxVtkMPR3DView::TestLoic2() //EED // vtkLookupTable *lut = BuildHueWeightBaseMap(); - vtkPolyDataMapper *slice = vtkPolyDataMapper::New(); slice->SetInput( sliceCutter->GetOutput() ); double range[2]; @@ -778,12 +860,9 @@ void wxVtkMPR3DView::TestLoic2() contourMapper->SetScalarRange( range ); // contourMapper->SetLookupTable( lut ); - vtkActor *contourActor = vtkActor::New(); contourActor->SetMapper( contourMapper ); - - // The usual rendering stuff. vtkCamera *camera = vtkCamera::New(); camera->SetPosition(1,1,1); @@ -809,5 +888,25 @@ void wxVtkMPR3DView::TestLoic2() iren->Start(); } +//------------------------------------------------------------------- +void wxVtkMPR3DView::SetBackGroundType(int type) +{ + if (_wxvtk3Dbaseview!=NULL) + { + if (type==0) + { + _wxvtk3Dbaseview->GetRenderer()->GradientBackgroundOff(); + _wxvtk3Dbaseview->GetRenderer()->SetBackground( 0 , 0 , 0 ); + } // if type + if (type==1) + { + _wxvtk3Dbaseview->GetRenderer()->GradientBackgroundOn(); + _wxvtk3Dbaseview->GetRenderer()->SetBackground( 0.33 , 0.33 , 0.33 ); + _wxvtk3Dbaseview->GetRenderer()->SetBackground2( 0.66 , 0.66 , 0.66 ); + } // if type + _wxvtk3Dbaseview->Refresh(); + }// if _wxvtk3Dbaseview + +}