X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FvtkMPR3DDataViewer.cxx;h=242c9bd68a415e957e507a4b342621031bfd4746;hb=3283472f764535492122c3b2ade020a749c1bd2a;hp=d15fb27911506ce99d13e386932867ead0ddf1ed;hpb=543dfcbe8f5ff78bbed90ef1e20c722bfa0ef248;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkMPR3DDataViewer.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkMPR3DDataViewer.cxx index d15fb27..242c9bd 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkMPR3DDataViewer.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkMPR3DDataViewer.cxx @@ -1,3 +1,28 @@ +/*# --------------------------------------------------------------------- +# +# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image +# pour la Sant�) +# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton +# Previous Authors : Laurent Guigues, Jean-Pierre Roux +# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil +# +# This software is governed by the CeCILL-B license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL-B +# license as circulated by CEA, CNRS and INRIA at the following URL +# http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +# or in the file LICENSE.txt. +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL-B license and that you accept its terms. +# ------------------------------------------------------------------------ */ + #include "vtkMPR3DDataViewer.h" @@ -7,19 +32,19 @@ vtkMPR3DDataViewer::vtkMPR3DDataViewer() _visiblePosition[0]=false; _visiblePosition[1]=false; _visiblePosition[2]=false; - _ctfun = NULL; - _vtkmprbasedata=NULL; - - _ctfun=NULL; - _saggitalColors=NULL; - _saggital=NULL; - _axialColors=NULL; - _axial=NULL; - _coronalColors=NULL; - _coronal=NULL; - _mapOutline=NULL; - _outline=NULL; - _outlineData=NULL; + _ctfun = NULL; + _vtkmprbasedata = NULL; + + _ctfun = NULL; + _saggitalColors = NULL; + _saggital = NULL; + _axialColors = NULL; + _axial = NULL; + _coronalColors = NULL; + _coronal = NULL; + _mapOutline = NULL; + _outline = NULL; + _outlineData = NULL; } //------------------------------------------------------------------- vtkMPR3DDataViewer::~vtkMPR3DDataViewer() @@ -28,16 +53,16 @@ vtkMPR3DDataViewer::~vtkMPR3DDataViewer() if(_mapOutline) {_mapOutline-> Delete();} if(_outline) {_outline-> Delete();} -// if (_bwLut) _bwLut->Delete(); -// if (_hueLut) _hueLut->Delete(); -// if (_satLut) _satLut->Delete(); - if (_ctfun) _ctfun->Delete(); +// if (_bwLut) _bwLut->Delete(); +// if (_hueLut) _hueLut->Delete(); +// if (_satLut) _satLut->Delete(); + if (_ctfun) _ctfun->Delete(); if (_saggitalColors) _saggitalColors ->Delete(); - if (_saggital) _saggital->Delete(); - if (_axialColors) _axialColors->Delete(); - if (_axial) _axial->Delete(); - if (_coronalColors) _coronalColors->Delete(); - if (_coronal) _coronal->Delete(); + if (_saggital) _saggital->Delete(); + if (_axialColors) _axialColors->Delete(); + if (_axial) _axial->Delete(); + if (_coronalColors) _coronalColors->Delete(); + if (_coronal) _coronal->Delete(); } //------------------------------------------------------------------- @@ -49,17 +74,21 @@ vtkActor* vtkMPR3DDataViewer::GetOutlineActor() vtkImageActor* vtkMPR3DDataViewer::GetImageActor(int id) { vtkImageActor *tmpVtkActor=NULL; - if (id==0){ + if (id==0) + { tmpVtkActor = GetvtkActor_saggital(); } - if (id==1){ + if (id==1) + { tmpVtkActor = GetvtkActor_coronal(); } - if (id==2){ + if (id==2) + { tmpVtkActor = GetvtkActor_axial(); } return tmpVtkActor; } + //------------------------------------------------------------------- void vtkMPR3DDataViewer::Refresh() { @@ -110,6 +139,14 @@ std::vector* vtkMPR3DDataViewer::GetctFunVectorBlue() return &_ctFunVectorBlue; } +//------------------------------------------------------------------- +void vtkMPR3DDataViewer::SetImage() +{ + _saggitalColors->SetInput( _vtkmprbasedata->GetImageData() ); + _axialColors->SetInput( _vtkmprbasedata->GetImageData() ); + _coronalColors->SetInput( _vtkmprbasedata->GetImageData() ); +} + //------------------------------------------------------------------- void vtkMPR3DDataViewer::Configure() { @@ -144,39 +181,60 @@ void vtkMPR3DDataViewer::Configure() if(_vtkmprbasedata->GetImageData()) { + _vtkmprbasedata->GetImageData()->Update(); + _vtkmprbasedata->GetImageData()->Modified(); _vtkmprbasedata->GetImageData()->GetScalarRange(range); delta = range[1]-range[0]; - - + if (delta==0) + { + printf("EED vtkMPR3DDataViewer::Configure Warning! image Range [0,0] -> changed to [0,1000] \n" ); + delta=1000; + } // if delta + _ctFunVectorPoint.clear(); - _ctFunVectorPoint.push_back( range[0] + delta*0/4 ); - _ctFunVectorPoint.push_back( range[0] + delta*1/4 ); - _ctFunVectorPoint.push_back( range[0] + delta*2/4 ); - _ctFunVectorPoint.push_back( range[0] + delta*3/4 ); - _ctFunVectorPoint.push_back( range[0] + delta*4/4 ); + _ctFunVectorPoint.push_back( range[0] + delta*0/8 ); + _ctFunVectorPoint.push_back( range[0] + delta*1/8 ); + _ctFunVectorPoint.push_back( range[0] + delta*2/8 ); + _ctFunVectorPoint.push_back( range[0] + delta*3/8 ); + _ctFunVectorPoint.push_back( range[0] + delta*4/8 ); + _ctFunVectorPoint.push_back( range[0] + delta*5/8 ); + _ctFunVectorPoint.push_back( range[0] + delta*6/8 ); + _ctFunVectorPoint.push_back( range[0] + delta*7/8 ); + _ctFunVectorPoint.push_back( range[0] + delta*8/8 ); _ctFunVectorRed.clear(); _ctFunVectorRed.push_back(0.0); - _ctFunVectorRed.push_back(1.0); _ctFunVectorRed.push_back(0.0); _ctFunVectorRed.push_back(0.0); _ctFunVectorRed.push_back(0.0); + _ctFunVectorRed.push_back(0.5); + _ctFunVectorRed.push_back(1.0); + _ctFunVectorRed.push_back(1.0); + _ctFunVectorRed.push_back(1.0); + _ctFunVectorRed.push_back(0.5); _ctFunVectorGreen.clear(); _ctFunVectorGreen.push_back(0.0); _ctFunVectorGreen.push_back(0.0); - _ctFunVectorGreen.push_back(0.0); + _ctFunVectorGreen.push_back(0.5); + _ctFunVectorGreen.push_back(1.0); + _ctFunVectorGreen.push_back(1.0); _ctFunVectorGreen.push_back(1.0); - _ctFunVectorGreen.push_back(0.2); + _ctFunVectorGreen.push_back(0.5); + _ctFunVectorGreen.push_back(0.0); + _ctFunVectorGreen.push_back(0.0); _ctFunVectorBlue.clear(); + _ctFunVectorBlue.push_back(0.5); + _ctFunVectorBlue.push_back(1.0); + _ctFunVectorBlue.push_back(1.0); + _ctFunVectorBlue.push_back(1.0); + _ctFunVectorBlue.push_back(0.5); _ctFunVectorBlue.push_back(0.0); _ctFunVectorBlue.push_back(0.0); - _ctFunVectorBlue.push_back(1.0); _ctFunVectorBlue.push_back(0.0); _ctFunVectorBlue.push_back(0.0); - if(_ctfun==NULL) { _ctfun = vtkColorTransferFunction::New(); @@ -206,7 +264,8 @@ void vtkMPR3DDataViewer::Configure() // specifying the DisplayExtent, the pipeline requests data of this extent // and the vtkImageMapToColors only processes a slice of data. - if(_saggitalColors==NULL){ + if(_saggitalColors==NULL) + { _saggitalColors = vtkImageMapToColors::New(); } _saggitalColors->RemoveAllInputs(); @@ -217,7 +276,8 @@ void vtkMPR3DDataViewer::Configure() _saggitalColors->SetLookupTable(_ctfun); - if(_saggital==NULL){ + if(_saggital==NULL) + { _saggital = vtkImageActor::New(); _saggital->SetInput(_saggitalColors->GetOutput()); } @@ -229,7 +289,8 @@ void vtkMPR3DDataViewer::Configure() // same approach as before except that the extent differs. - if(_axialColors==NULL){ + if(_axialColors==NULL) + { _axialColors = vtkImageMapToColors::New(); } @@ -238,7 +299,8 @@ void vtkMPR3DDataViewer::Configure() // _axialColors->SetLookupTable(_hueLut); _axialColors->SetLookupTable(_ctfun); - if(_axial==NULL){ + if(_axial==NULL) + { _axial = vtkImageActor::New(); _axial->SetInput(_axialColors->GetOutput()); } @@ -248,7 +310,8 @@ void vtkMPR3DDataViewer::Configure() // Create the third (coronal) plane of the three planes. We use // the same approach as before except that the extent differs. - if(_coronalColors==NULL){ + if(_coronalColors==NULL) + { _coronalColors = vtkImageMapToColors::New(); } _coronalColors->RemoveAllInputs(); @@ -256,7 +319,8 @@ void vtkMPR3DDataViewer::Configure() // _coronalColors->SetLookupTable(_satLut); _coronalColors->SetLookupTable(_ctfun); - if(_coronal==NULL){ + if(_coronal==NULL) + { _coronal = vtkImageActor::New(); _coronal->SetInput(_coronalColors->GetOutput()); } @@ -265,40 +329,34 @@ void vtkMPR3DDataViewer::Configure() // An outline provides context around the data. // - if(_outlineData==NULL){ + if(_outlineData==NULL) + { _outlineData = vtkOutlineFilter::New(); } _outlineData->RemoveAllInputs(); - if(_vtkmprbasedata->GetImageData()){ + if(_vtkmprbasedata->GetImageData()) + { _outlineData->SetInput((vtkDataSet *) _vtkmprbasedata->GetImageData() ); } - if(_mapOutline==NULL){ + if(_mapOutline==NULL) + { _mapOutline = vtkPolyDataMapper::New(); _mapOutline->SetInput(_outlineData->GetOutput()); } _mapOutline->Update(); //_mapOutline->RemoveAllInputs(); - if(_outline==NULL){ + if(_outline==NULL) + { _outline = vtkActor::New(); _outline->SetMapper(_mapOutline); _outline->GetProperty()->SetColor(0,0,0); } } - - - - - - //int ext[6]; //_vtkmprbasedata->GetImageData()->GetExtent(ext); - - - - } //------------------------------------------------------------------- @@ -318,30 +376,40 @@ vtkImageActor * vtkMPR3DDataViewer::GetvtkActor_axial() } //------------------------------------------------------------------------ -void vtkMPR3DDataViewer::SetPositionX(int pos){ +void vtkMPR3DDataViewer::SetPositionX(int pos) +{ int x1,x2,y1,y2,z1,z2; _vtkmprbasedata->GetDimensionExtention(&x1,&x2,&y1,&y2,&z1,&z2); if(_saggital) { _saggital->SetDisplayExtent( pos , pos , y1 ,y2 , z1 , z2 ); +//EED 2016/02/19 + _saggital->SetInterpolate( GetVtkMPRBaseData()->GetInterpolate() ); } } + //------------------------------------------------------------------------ -void vtkMPR3DDataViewer::SetPositionY(int pos){ +void vtkMPR3DDataViewer::SetPositionY(int pos) +{ int x1,x2,y1,y2,z1,z2; _vtkmprbasedata->GetDimensionExtention(&x1,&x2,&y1,&y2,&z1,&z2); if(_coronal) { _coronal->SetDisplayExtent(x1,x2, pos,pos, z1,z2); +//EED 2016/02/19 + _coronal->SetInterpolate( GetVtkMPRBaseData()->GetInterpolate() ); } } //------------------------------------------------------------------------ -void vtkMPR3DDataViewer::SetPositionZ(int pos){ +void vtkMPR3DDataViewer::SetPositionZ(int pos) +{ int x1,x2,y1,y2,z1,z2; _vtkmprbasedata->GetDimensionExtention(&x1,&x2,&y1,&y2,&z1,&z2); if(_axial) { _axial->SetDisplayExtent(x1,x2, y1,y2, pos,pos); +//EED 2016/02/19 + _axial->SetInterpolate( GetVtkMPRBaseData()->GetInterpolate() ); } } //------------------------------------------------------------------- @@ -355,7 +423,8 @@ bool vtkMPR3DDataViewer::GetVisiblePosition(int idPosition) return _visiblePosition[idPosition]; } -void vtkMPR3DDataViewer::setColorTransferFunction(vtkColorTransferFunction* colortable){ +void vtkMPR3DDataViewer::setColorTransferFunction(vtkColorTransferFunction* colortable) +{ if(_saggitalColors) { _saggitalColors->SetLookupTable(colortable);