X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FwxVtkMPR3DView.cxx;h=a55a101ec4311dce7ce0ebf69a6ae8d80efe0425;hb=70a5e2bac1fe33d240ff5632d65a915269ff69e3;hp=e67cc22c0b5b7b4898c38685eaf9de4657c8f699;hpb=4ebf92429cae4c60761aa8798a5135c7512d83bc;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR3DView.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR3DView.cxx index e67cc22..a55a101 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 @@ -215,7 +218,12 @@ void wxVtkMPR3DView::Configure() if(_pointWidget==NULL){ _pointWidget = vtkPointWidget::New(); } +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 _pointWidget->SetInput( imageData ); +#else + _pointWidget->SetInputData( imageData ); +#endif _myCallback->SetVtkPointWidget(_pointWidget); _pointWidget->SetInteractor( GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor() ); _pointWidget->AllOff(); @@ -227,7 +235,12 @@ void wxVtkMPR3DView::Configure() { _planeWidget = vtkPlaneWidget::New(); } +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 _planeWidget->SetInput( imageData ); +#else + _planeWidget->SetInputData( imageData ); +#endif _myCallback->SetVtkPlaneWidget(_planeWidget); @@ -248,11 +261,17 @@ void wxVtkMPR3DView::Configure() _vtkplane = vtkPolyData::New(); _probe = vtkProbeFilter::New(); - _probe->SetInput(_vtkplane); - _contourMapper = vtkPolyDataMapper::New(); + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 + _probe->SetInput(_vtkplane); _contourMapper->SetInput( _probe->GetPolyDataOutput() ); +#else + _probe->SetInputData(_vtkplane); + _contourMapper->SetInputData( _probe->GetPolyDataOutput() ); +#endif _contourPlaneActor = vtkActor::New(); _contourPlaneActor->SetMapper(_contourMapper); @@ -268,7 +287,13 @@ void wxVtkMPR3DView::Configure() } _planeWidget->GetPolyData(_vtkplane); + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 _probe->SetSource( imageData ); +#else + _probe->SetSourceData( imageData ); +#endif _contourMapper->SetScalarRange( imageData->GetScalarRange() ); ConfigureFreePlanes(); @@ -340,6 +365,30 @@ void wxVtkMPR3DView::ConfigureFreePlanes() _planeWidgetZ->AddObserver(vtkCommand::InteractionEvent, wlipwc ); } + +//------------------------------------------------------------------- +void wxVtkMPR3DView::SetImage() +{ + vtkImageData *imageData = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData(); + // Orthogonal planes B&W +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 + _planeWidgetX->SetInput( imageData ); + _planeWidgetY->SetInput( imageData ); + _planeWidgetZ->SetInput( imageData ); + // -- Plane widget + _probe->SetSource( imageData ); +#else + _planeWidgetX->SetInputData( imageData ); + _planeWidgetY->SetInputData( imageData ); + _planeWidgetZ->SetInputData( imageData ); + // -- Plane widget + _probe->SetSourceData( imageData ); +#endif + + _vtkmpr3Ddataviewer->SetImage(); +} + //------------------------------------------------------------------- vtkImagePlaneWidget* wxVtkMPR3DView::GetPlaneWidget(unsigned char activationkey, double r, double g, double b, vtkCellPicker* picker) { @@ -353,7 +402,13 @@ vtkImagePlaneWidget* wxVtkMPR3DView::GetPlaneWidget(unsigned char activationkey, double xSpacing = 0, ySpacing = 0, zSpacing = 0; if(image) { + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 planeWidget->SetInput( image ); +#else + planeWidget->SetInputData( image ); +#endif image->GetExtent(xMin, xMax, yMin, yMax, zMin, zMax); image->GetSpacing(xSpacing, ySpacing, zSpacing); } @@ -387,9 +442,6 @@ vtkImagePlaneWidget* wxVtkMPR3DView::GetPlaneWidget(unsigned char activationkey, //------------------------------------------------------------------- void wxVtkMPR3DView::SetFreePlanesOrtho() { - - - _planeWidgetX->SetPlaneOrientationToXAxes(); _planeWidgetY->SetPlaneOrientationToYAxes(); _planeWidgetZ->SetPlaneOrientationToZAxes(); @@ -403,8 +455,8 @@ void wxVtkMPR3DView::FreePlaneVisible(int plane, bool ok) { if(_planeWidgetX) { - if (ok==true) - { + if (ok==true) + { //EED 21/07/2013 // 1. Make backup of actors // 2. Putting out all the actors @@ -413,9 +465,9 @@ void wxVtkMPR3DView::FreePlaneVisible(int plane, bool ok) // 5. Refresh // step 1, step 2 - vtkActorCollection *tmpCollection = vtkActorCollection::New(); + vtkActorCollection *tmpCollection = vtkActorCollection::New(); vtkActorCollection *collectionActors = _wxvtk3Dbaseview->GetRenderer()->GetActors(); - int i,size=collectionActors->GetNumberOfItems(); + int i,size=collectionActors->GetNumberOfItems(); for (i=0; iAddItem ( (vtkActor*)collectionActors->GetItemAsObject(0) ); @@ -436,7 +488,7 @@ void wxVtkMPR3DView::FreePlaneVisible(int plane, bool ok) // step 5 Refresh _wxvtk3Dbaseview->GetRenderer()->GetRenderWindow()->Render(); - } // if ok + } // if ok if ((plane==1) && (ok==false)) _planeWidgetX->EnabledOff(); if ((plane==2) && (ok==false)) _planeWidgetY->EnabledOff(); if ((plane==3) && (ok==false)) _planeWidgetZ->EnabledOff(); @@ -472,12 +524,11 @@ void wxVtkMPR3DView::setColorTransferFunction(vtkColorTransferFunction* colortab //------------------------------------------------------------------- void wxVtkMPR3DView::Refresh() // virtual { - _vtkmpr3Ddataviewer -> Refresh(); + _vtkmpr3Ddataviewer->Refresh(); if (_wxvtkmpr3DviewCntrlPanel!=NULL) { _wxvtkmpr3DviewCntrlPanel->Refresh(); } - } //------------------------------------------------------------------- @@ -486,14 +537,17 @@ void wxVtkMPR3DView::RefreshView() // virtual double spc[3]; vtkImageData *image = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData(); - if(image){ + if(image) + { image->GetSpacing(spc); }else{ spc[0] = 0; spc[1] = 0; spc[2] = 0; } - //this->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData()->GetSpacing(spc); + +// GetVtkMPR3DDataViewer()->Configure(); + //double nx=1,ny=0,nz=0; // JPRx Refresh(); @@ -504,32 +558,49 @@ void wxVtkMPR3DView::RefreshView() // virtual SetColorWindow( _vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetColorWindow() ); SetColorLevel( _vtkmpr3Ddataviewer->GetVtkMPRBaseData()->GetColorLevel() ); - double normal[3]; // FreePlaneX _planeWidgetX->GetNormal(normal); 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]; y=y*spc[1]; z=z*spc[2]; - if(_pointWidget){ + if(_pointWidget) + { +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 + _pointWidget->SetInput( image ); +#else + _pointWidget->SetInputData( image ); +#endif + _pointWidget->PlaceWidget(); + _pointWidget->SetPosition( x,y,z ); double in[3]; double normal[3]; @@ -541,6 +612,11 @@ void wxVtkMPR3DView::RefreshView() // virtual _planeWidget->UpdatePlacement(); _planeWidget->GetPolyData(_vtkplane); } + + if (_wxvtkmpr3DviewCntrlPanel!=NULL) + { + _wxvtkmpr3DviewCntrlPanel->UpdateControlPanel(false); + } // if _wxvtkmpr3DviewCntrlPanel } //------------------------------------------------------------------- @@ -557,7 +633,8 @@ vtkMPR3DDataViewer* wxVtkMPR3DView::GetVtkMPR3DDataViewer() //------------------------------------------------------------------- wxVtk3DBaseView* wxVtkMPR3DView::GetWxvtk3Dbaseview() throw (char*) { - if(_wxvtk3Dbaseview==NULL){ + if(_wxvtk3Dbaseview==NULL) + { throw "wxVtk3DBaseView* wxVtkMPR3DView::GetWxvtk3Dbaseview() _wxvtk3Dbaseview=NULL"; } return _wxvtk3Dbaseview; @@ -585,6 +662,11 @@ void wxVtkMPR3DView::VisibleImageActor(int idPosition, bool visible){ // 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(); @@ -646,6 +728,7 @@ void wxVtkMPR3DView::VisiblePlaneWidget( bool visible ) //CPR: Method added 30 Nov 2009 void wxVtkMPR3DView::showOutlineActor(bool value) { + vtkActor* _outlineActor = _vtkmpr3Ddataviewer->GetOutlineActor(); if(value == true) { @@ -655,6 +738,7 @@ void wxVtkMPR3DView::showOutlineActor(bool value) { _wxvtk3Dbaseview->GetRenderer()->RemoveActor( _outlineActor ); } + } //------------------------------------------------------------------- @@ -696,7 +780,12 @@ void wxVtkMPR3DView::TestLoic1() double spc[3]; vtkimagedata->GetSpacing(spc); +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 vtkimagedata->Update(); +#else + // .. +#endif double p[3], n[3]; @@ -716,20 +805,41 @@ void wxVtkMPR3DView::TestLoic1() pSource->Update( ); vtkProbeFilter* slices = vtkProbeFilter::New(); + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 slices->SetInput( ( vtkDataSet* )pSource->GetOutput( ) ); slices->SetSource( vtkimagedata ); slices->Update( ); pSource->Delete( ); +#else + slices->SetInputData( ( vtkDataSet* )pSource->GetOutput( ) ); + slices->SetSourceData( vtkimagedata ); +#endif vtkStructuredPoints *stPoints = vtkStructuredPoints::New(); stPoints -> GetPointData( )->SetScalars( slices->GetOutput()->GetPointData()->GetScalars() ); stPoints -> SetDimensions( sizeIma, sizeIma, 1 ); + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 stPoints -> SetScalarType( vtkimagedata->GetScalarType() ); stPoints -> SetScalarTypeToShort(); stPoints -> Update(); +#else + vtkInformation* info=stPoints->GetInformation(); + vtkDataObject::SetPointDataActiveScalarInfo(info, VTK_SHORT, 1); +#endif + + vtkImageChangeInformation *change = vtkImageChangeInformation ::New(); +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 change -> SetInput( stPoints ); +#else + change -> SetInputData( stPoints ); +#endif change -> Update(); //important double _range[2]; @@ -753,7 +863,12 @@ void wxVtkMPR3DView::TestLoic1() vtkMetaImageWriter *writer = vtkMetaImageWriter::New( ); +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 writer->SetInput( stPoints ); +#else + writer->SetInputData( stPoints ); +#endif writer->SetFileName( "C:/Users/Images/temp_EED/image.mhd" ); writer->SetFileDimensionality( 2 ); writer->Write( ); @@ -761,7 +876,14 @@ void wxVtkMPR3DView::TestLoic1() vtkDataSetMapper *_3DSliceMapper = vtkDataSetMapper::New( ); + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 _3DSliceMapper->SetInput(change->GetOutput( ) ); +#else + _3DSliceMapper->SetInputData(change->GetOutput( ) ); +#endif + _3DSliceMapper->SetLookupTable( _bwlookup ); _3DSliceMapper->SetScalarRange( _range ); _3DSliceMapper->ImmediateModeRenderingOn( ); @@ -812,18 +934,26 @@ void wxVtkMPR3DView::TestLoic2() vtkPlane *slicePlane = vtkPlane::New(); this->_planeWidget->GetPlane( slicePlane ); - vtkCutter* sliceCutter = vtkCutter::New(); vtkImageData *vtkimagedata = this->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData(); +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 sliceCutter->SetInput( vtkimagedata ); +#else + sliceCutter->SetInputData( vtkimagedata ); +#endif sliceCutter->SetCutFunction( slicePlane ); //EED // vtkLookupTable *lut = BuildHueWeightBaseMap(); - vtkPolyDataMapper *slice = vtkPolyDataMapper::New(); - slice->SetInput( sliceCutter->GetOutput() ); +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 + slice->SetInput( sliceCutter->GetOutput() ); +#else + slice->SetInputData( sliceCutter->GetOutput() ); +#endif double range[2]; // EED // slice->Update(); @@ -837,16 +967,20 @@ void wxVtkMPR3DView::TestLoic2() // sliceActor->SetMapper( slice ); vtkPolyDataMapper *contourMapper = vtkPolyDataMapper::New(); + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 contourMapper->SetInput( sliceCutter->GetOutput() ); +#else + contourMapper->SetInputData( sliceCutter->GetOutput() ); +#endif + 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); @@ -872,5 +1006,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 + +}