1 /*# ---------------------------------------------------------------------
3 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
5 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
6 # Previous Authors : Laurent Guigues, Jean-Pierre Roux
7 # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
9 # This software is governed by the CeCILL-B license under French law and
10 # abiding by the rules of distribution of free software. You can use,
11 # modify and/ or redistribute the software under the terms of the CeCILL-B
12 # license as circulated by CEA, CNRS and INRIA at the following URL
13 # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
14 # or in the file LICENSE.txt.
16 # As a counterpart to the access to the source code and rights to copy,
17 # modify and redistribute granted by the license, users are provided only
18 # with a limited warranty and the software's author, the holder of the
19 # economic rights, and the successive licensors have only limited
22 # The fact that you are presently reading this means that you have had
23 # knowledge of the CeCILL-B license and that you accept its terms.
24 # ------------------------------------------------------------------------ */
27 #include "vtkClipping3DDataViewer.h"
28 #include "vtkDataSetReader.h"
29 #include "vtkProperty.h"
31 vtkClipping3DDataViewer::vtkClipping3DDataViewer()
34 for (i=0; i<VTKMPRDATA_MAXTISSUE; i++){
35 _visibleTissue[i] = false;
36 _representationType[i] = true;
38 _visibleVolume = false;
41 _interpolation = false;
44 _volumerendererdata = VolumeRendererData::New();
45 _volumeMapper = vtkVolumeRayCastMapper::New();
46 _newvol = vtkVolume::New();
47 _volumeProperty = vtkVolumeProperty::New();
48 _compositeFunction = vtkVolumeRayCastCompositeFunction::New();
49 _compositeFunctionMIP = vtkVolumeRayCastMIPFunction::New();
52 //-------------------------------------------------------------------
53 vtkClipping3DDataViewer::~vtkClipping3DDataViewer()
56 for (i=0; i< VTKMPRDATA_MAXTISSUE ; i++){
58 _tissueStripper[i]->Delete();
59 _tissueMapper[i]->Delete();
60 _tissuePlanes[i]->Delete();
61 _tissueClipper[i]->Delete();
67 _compositeFunction->Delete();
68 _volumeMapper->Delete();
69 _volumeProperty->Delete();
71 _volumePlanes->Delete();
73 for (i=0; i< VTKMPRDATA_MAXTISSUE ; i++){
74 _tissue[i]-> Delete();
75 _observerS[i]-> Delete();
77 _observerV-> Delete();
80 //-------------------------------------------------------------------
81 vtkClipPolyData* vtkClipping3DDataViewer::GetTissueClipper(int id)
83 return this->_tissueClipper[id];
85 //-------------------------------------------------------------------
86 vtkPolyDataMapper* vtkClipping3DDataViewer::GetTissueMapper(int id)
88 return _tissueMapper[id];
90 //-------------------------------------------------------------------
91 vtkPlanes* vtkClipping3DDataViewer::GetTissuePlanes(int id)
93 return _tissuePlanes[id];
95 //-------------------------------------------------------------------
96 vtkStripper* vtkClipping3DDataViewer::GetTissueStripper(int id)
98 return _tissueStripper[id];
100 //-------------------------------------------------------------------
101 void vtkClipping3DDataViewer::Refresh()
103 // _volumeMapper->SetClippingPlanes(_volumePlanes);
105 // this->_volumeMapper->Update();
106 // this->_newvol->Update();
108 // _newvol->VisibilityOn();
111 // _volumeMapper = vtkVolumeRayCastMapper::New();
112 // _volumeMapper->SetInput( this->GetVtkMPRBaseData()->GetImageData() );
113 // _volumeMapper->SetVolumeRayCastFunction(_compositeFunction);
114 // _volumeMapper->SetClippingPlanes( _volumePlanes );
115 // _newvol->SetMapper(_volumeMapper );
119 //-------------------------------------------------------------------
120 void vtkClipping3DDataViewer::RefreshSurface()
123 for (i=0; i< VTKMPRDATA_MAXTISSUE ; i++)
125 SetIsovalue(i, (int) (GetIsovalue(i)+1) );
126 // this->GetMCubes(i)->Update();
129 //-------------------------------------------------------------------
130 void vtkClipping3DDataViewer::SetVtkMPRBaseData(vtkMPRBaseData *vtkmprbasedata)
132 _vtkmprbasedata=vtkmprbasedata;
134 //-------------------------------------------------------------------
135 vtkMPRBaseData* vtkClipping3DDataViewer::GetVtkMPRBaseData()
137 return _vtkmprbasedata;
141 //-------------------------------------------------------------------
142 void vtkClipping3DDataViewer::SetVisibleTissue(int idTissue, bool visible)
144 _visibleTissue[idTissue]=visible;
146 //-------------------------------------------------------------------
147 bool vtkClipping3DDataViewer::GetVisibleTissue(int idTissue){
148 return _visibleTissue[idTissue];
150 //-------------------------------------------------------------------
151 void vtkClipping3DDataViewer::SetRepresentationType(int idTissue, bool representationType)
153 _representationType[idTissue]=representationType;
155 //-------------------------------------------------------------------
156 bool vtkClipping3DDataViewer::GetRepresentationType(int idTissue)
158 return _representationType[idTissue];
161 //-------------------------------------------------------------------
162 vtkActor* vtkClipping3DDataViewer::GetTissueActor(int id){
166 //-------------------------------------------------------------------
167 boxSurfaceObserver *vtkClipping3DDataViewer::GetObserverS(int idObserverS)
169 return _observerS[idObserverS];
171 //-------------------------------------------------------------------
172 boxSurfaceObserver *vtkClipping3DDataViewer::GetObserverV()
177 //-------------------------------------------------------------------
178 bool vtkClipping3DDataViewer::GetVisibleVolume()
180 return _visibleVolume;
182 //-------------------------------------------------------------------
183 void vtkClipping3DDataViewer::SetVisibleVolume(bool visiblevolume)
185 _visibleVolume = visiblevolume;
188 bool vtkClipping3DDataViewer::GetVisibleVolumeBox()
190 return _visibleVolumeBox;
192 //-------------------------------------------------------------------
193 void vtkClipping3DDataViewer::SetVisibleVolumeBox(bool visibleBox)
195 _visibleVolumeBox = visibleBox;
199 //-------------------------------------------------------------------
200 void vtkClipping3DDataViewer::SetImage()
203 vtkImageData *imagedata=_vtkmprbasedata->GetImageData();
204 for (i=0; i< VTKMPRDATA_MAXTISSUE ; i++)
206 //EED 2017-01-01 Migration VTK7
207 #if VTK_MAJOR_VERSION <= 5
208 _mCubes[i]->SetInput( imagedata );
210 _mCubes[i]->SetInputData( imagedata );
213 //EED 2017-01-01 Migration VTK7
214 #if VTK_MAJOR_VERSION <= 5
215 _volumeMapper->SetInput( imagedata );
217 _volumeMapper->SetInputData( imagedata );
219 _volumerendererdata->SetImageData( imagedata );
222 //-------------------------------------------------------------------
223 void vtkClipping3DDataViewer::Configure_Tissue()
227 vtkImageData *imagedata=_vtkmprbasedata->GetImageData();
228 imagedata->GetScalarRange( range );
229 for (i=0; i< VTKMPRDATA_MAXTISSUE ; i++)
231 // Visualisation - original volume
232 _mCubes[i] = vtkMarchingCubes::New( );
234 //EED 2017-01-01 Migration VTK7
235 #if VTK_MAJOR_VERSION <= 5
236 _mCubes[i]->SetInput( imagedata );
238 _mCubes[i]->SetInputData( imagedata );
241 _mCubes[i]->SetValue( 0, range[1]*(4+i) / 8 );
242 // _mCubes[i]->SetValue( 0, 1500 );
243 _tissueStripper[i] = vtkStripper::New();
245 //EED 2017-01-01 Migration VTK7
246 #if VTK_MAJOR_VERSION <= 5
247 _tissueStripper[i]->SetInput( _mCubes[i]->GetOutput( ) );
249 _tissueStripper[i]->SetInputData( _mCubes[i]->GetOutput( ) );
252 _tissuePlanes[i] = vtkPlanes::New();
253 int x1,x2,y1,y2,z1,z2;
254 imagedata->GetExtent(x1,x2,y1,y2,z1,z2);
255 _tissuePlanes[i]->SetBounds(x1,x2,y1,y2,z1,z2);
256 _tissueClipper[i] = vtkClipPolyData::New();
257 _tissueClipper[i]->SetClipFunction( _tissuePlanes[i] );
258 _tissueClipper[i]->InsideOutOn( );
260 //EED 2017-01-01 Migration VTK7
261 #if VTK_MAJOR_VERSION <= 5
262 _tissueClipper[i]->SetInput( _tissueStripper[i]->GetOutput() );
264 _tissueClipper[i]->SetInputData( _tissueStripper[i]->GetOutput() );
267 _tissueMapper[i] = vtkPolyDataMapper::New( );
269 //EED 2017-01-01 Migration VTK7
270 #if VTK_MAJOR_VERSION <= 5
271 _tissueMapper[i]->SetInput( _tissueClipper[i]->GetOutput() );
273 _mCubes[i]->Update();
274 _tissueStripper[i]->Update();
275 _tissueClipper[i]->Update();
276 _tissueMapper[i]->SetInputData( _tissueClipper[i]->GetOutput() );
277 _tissueMapper[i]->Update();
281 _tissueMapper[i]->ScalarVisibilityOff( );
282 // _tissueMapper[i]->Update();
286 for (i=0; i< VTKMPRDATA_MAXTISSUE ; i++){
288 _tissue[i] = vtkActor::New();
289 _tissue[i]->SetMapper( GetTissueMapper(i) );
290 float cr=1,cg=0.5,cb=0.5;
291 _tissue[i]->GetProperty()->SetDiffuseColor(cr/255, cg/255 , cb/255 );
292 _tissue[i]->GetProperty()->SetSpecular(.3);
293 _tissue[i]->GetProperty()->SetSpecularPower(20);
294 _tissue[i]->GetProperty()->SetOpacity(0.5);
295 if (i==0) { _tissue[i]->GetProperty()->SetColor(0.85, 0.85 , 0.85 ); }
296 if (i==1) { _tissue[i]->GetProperty()->SetColor(0, 0 , 1 ); }
297 if (i==2) { _tissue[i]->GetProperty()->SetColor(0.85, 0.20 , 0.20 ); }
298 if (i==3) { _tissue[i]->GetProperty()->SetColor(0, 1 , 0 ); }
301 for (i=0; i< VTKMPRDATA_MAXTISSUE ; i++)
303 _observerS[i] = boxSurfaceObserver::New();
304 _observerS[i]->SetPlanes( GetTissuePlanes(i) );
305 _observerS[i]->SetActor( _tissue[i] );
306 _observerS[i]->SetFilters( _mCubes[i], _tissueStripper[i] ,_tissueClipper[i] );
310 //-----------------------------------------------------------------------------
312 void vtkClipping3DDataViewer::Configure_Volume()
316 /** if(_newvol != NULL)
319 _volumeMapper->Delete();
320 _volumeProperty->Delete();
323 _tfun = vtkPiecewiseFunction::New();
324 _ctfun = vtkColorTransferFunction::New();
327 this->_vtkmprbasedata->GetImageData()->GetScalarRange(range);
328 double max = range[1];
331 adding the poinst of the transference function
334 greyValuesTransferenceFVector.push_back(max * 0/2); // JPR ?? 0/2
335 greyValuesTransferenceFVector.push_back(max * 1/2); // JPR ?? division entiere?
336 greyValuesTransferenceFVector.push_back(max * 2/2);
338 intensityValuesTransferenceFVector.push_back(0.0);
339 intensityValuesTransferenceFVector.push_back(1.0);
340 intensityValuesTransferenceFVector.push_back(1.0);
342 _tfun->AddPoint(max * 0/2 , 0.0);
343 _tfun->AddPoint(max * 1/2 , 1.0);
344 _tfun->AddPoint(max * 2/2 , 1.0);
347 Adding the colors to the vectors
350 redColorsOfColorTransferenceFVector.push_back(0.0);
351 redColorsOfColorTransferenceFVector.push_back(1.0);
352 redColorsOfColorTransferenceFVector.push_back(0.0);
353 redColorsOfColorTransferenceFVector.push_back(0.0);
354 redColorsOfColorTransferenceFVector.push_back(0.0);
357 greenColorsOfColorTransferenceFVector.push_back(0.0);
358 greenColorsOfColorTransferenceFVector.push_back(0.0);
359 greenColorsOfColorTransferenceFVector.push_back(0.0);
360 greenColorsOfColorTransferenceFVector.push_back(1.0);
361 greenColorsOfColorTransferenceFVector.push_back(0.2);
364 blueColorsOfColorTransferenceFVector.push_back(0.0);
365 blueColorsOfColorTransferenceFVector.push_back(0.0);
366 blueColorsOfColorTransferenceFVector.push_back(1.0);
367 blueColorsOfColorTransferenceFVector.push_back(0.0);
368 blueColorsOfColorTransferenceFVector.push_back(0.0);
370 greyValueColorsOfColorTransferenceFVector.push_back(max*0/4);
371 greyValueColorsOfColorTransferenceFVector.push_back(max*1/4);
372 greyValueColorsOfColorTransferenceFVector.push_back(max*2/4);
373 greyValueColorsOfColorTransferenceFVector.push_back(max*3/4);
374 greyValueColorsOfColorTransferenceFVector.push_back(max*4/4);
376 _ctfun->AddRGBPoint( max*0/4 , 0.0, 0.0, 0.0);
377 _ctfun->AddRGBPoint( max*1/4 , 1.0, 0.0, 0.0);
378 _ctfun->AddRGBPoint( max*2/4 , 0.0, 0.0, 1.0);
379 _ctfun->AddRGBPoint( max*3/4 , 0.0, 1.0, 0.0);
380 _ctfun->AddRGBPoint( max*4/4 , 0.0, 0.2, 0.0);
382 _volumePlanes = vtkPlanes::New();
383 // int x1,x2,y1,y2,z1,z2;
384 // vtkImageData *imagedata=_vtkmprbasedata->GetImageData();
385 // imagedata->GetExtent(x1,x2,y1,y2,z1,z2);
386 // _volumePlanes->SetBounds(x1,x2,y1,y2,z1,z2);
390 // _volumeMapper = vtkVolumeRayCastMapper::New();
393 //EED 2017-01-01 Migration VTK7
394 #if VTK_MAJOR_VERSION <= 5
395 _volumeMapper->SetInput( this->GetVtkMPRBaseData()->GetImageData() );
397 _volumeMapper->SetInputData( this->GetVtkMPRBaseData()->GetImageData() );
401 _volumeMapper->SetVolumeRayCastFunction(_compositeFunction);
403 // _volumeMapper->SetVolumeRayCastFunction(_compositeFunctionMIP);
406 _volumeMapper->SetClippingPlanes( _volumePlanes );
407 _volumeMapper->AutoAdjustSampleDistancesOn();
409 _volumeProperty->SetInterpolationTypeToNearest();
410 //_volumeProperty = vtkVolumeProperty::New();
411 _volumeProperty->SetColor(_ctfun);
412 _volumeProperty->SetScalarOpacity( _tfun );
415 _volumeProperty->DisableGradientOpacityOn();
418 // _volumeProperty->SetInterpolationTypeToNearest();
419 // _volumeProperty->ShadeOff();
420 // _volumeProperty->SetAmbient(0.3);
421 // _volumeProperty->SetDiffuse(0.1);
422 // _volumeProperty->SetSpecular(0.8);
423 // _volumeProperty->DisableGradientOpacityOn();
425 // _newvol = vtkVolume::New();
426 _newvol->SetMapper(_volumeMapper );
427 _newvol->SetProperty(_volumeProperty );
429 _observerV = boxSurfaceObserver::New();
430 _observerV->SetPlanes( _volumePlanes );
431 _observerV->SetActor( _newvol );
432 _observerV->SetvtkVolumeRayCastMapper( _volumeMapper );
435 //-----------------------------------------------------------------------------
437 void vtkClipping3DDataViewer::Configure_VolumeBox()
439 _volumerendererdata->SetImageData(_vtkmprbasedata->GetImageData());
442 vector<double> *gv = this->GetGreyValuesTransferenceFVector();
443 vector<double> *op = this->GetIntensityValuesTransferenceFVector();
445 _volumerendererdata->SetLookUpTable((vtkLookupTable*)(_ctfun));
446 _volumerendererdata->OpacityChanged(*gv, *op);
448 //_wxvtkclipping3Dview->VisibleVolumeActor( false );
449 //_volumerendererdata->ShowVolume(event.IsChecked() );
450 //_volumerendererdata->BoundingBoxChanged(event.IsChecked() );
453 //-----------------------------------------------------------------------------
455 void vtkClipping3DDataViewer::SetRenderer(vtkRenderer* renderer)
457 _volumerendererdata->SetRenderer(renderer);
461 //-----------------------------------------------------------------------------
462 void vtkClipping3DDataViewer::SetInteractor(vtkRenderWindowInteractor* interactor)
465 _volumerendererdata->SetInteractor(interactor);
469 //-----------------------------------------------------------------------------
470 void vtkClipping3DDataViewer::BoxActorChanged(bool changed)
472 vector<double> *gv = this->GetGreyValuesTransferenceFVector();
473 vector<double> *op = this->GetIntensityValuesTransferenceFVector();
475 _volumerendererdata->ShowVolume(changed);
476 _volumerendererdata->OpacityChanged(*gv, *op);
477 _volumerendererdata->BoundingBoxChanged(changed);
481 //-----------------------------------------------------------------------------
482 void vtkClipping3DDataViewer::UpdateVolumeBox(vector<double> gf, vector<double> vf, vtkColorTransferFunction* ctfun)
484 _volumerendererdata->SetLookUpTable((vtkLookupTable*)(ctfun));
485 _volumerendererdata->OpacityChanged(gf, vf);
489 //-----------------------------------------------------------------------------
490 void vtkClipping3DDataViewer::updateVolume()
495 _volumeMapper->SetVolumeRayCastFunction(_compositeFunction);
496 _volumerendererdata->changeCompositeMIPFunction(0);
500 _volumeMapper->SetVolumeRayCastFunction(_compositeFunctionMIP);
501 _volumerendererdata->changeCompositeMIPFunction(1);
506 _volumeProperty->SetInterpolationTypeToLinear();
510 _volumeProperty->SetInterpolationTypeToNearest();
515 _volumeProperty->ShadeOn();
519 _volumeProperty->ShadeOff();
524 //-------------------------------------------------------------------
525 void vtkClipping3DDataViewer::Configure()
529 Configure_VolumeBox();
533 //-------------------------------------------------------------------
534 void vtkClipping3DDataViewer::SetIsovalue(int idTissue, int isoValue)
536 _mCubes[idTissue]->SetValue(0, isoValue);
537 //EED 2017-01-01 Migration VTK7
538 #if VTK_MAJOR_VERSION <= 5
541 _mCubes[idTissue]->Update();
542 _tissueStripper[idTissue]->Update();
543 _tissueClipper[idTissue]->Update();
546 //-------------------------------------------------------------------
547 double vtkClipping3DDataViewer::GetIsovalue(int idTissue)
549 return _mCubes[idTissue]->GetValue(0);
551 //-------------------------------------------------------------------
552 vtkVolume* vtkClipping3DDataViewer::GetVolumeActor()
556 //-------------------------------------------------------------------
557 vtkVolumeRayCastMapper* vtkClipping3DDataViewer::GetVolumeMapper(){
558 return _volumeMapper;
560 //-------------------------------------------------------------------
561 vtkPlanes* vtkClipping3DDataViewer::GetVolumePlanes()
563 return _volumePlanes;
566 //-------------------------------------------------------------------
567 vtkMarchingCubes *vtkClipping3DDataViewer::GetMCubes(int idTissue)
569 return _mCubes[idTissue];
571 //--------------------------------------------------------------------
572 //-------------------
574 //-------------------
576 std::vector<double>* vtkClipping3DDataViewer::GetGreyValuesTransferenceFVector()
578 return &greyValuesTransferenceFVector;
580 //--------------------------------------------------------------------
581 std::vector<double>* vtkClipping3DDataViewer::GetIntensityValuesTransferenceFVector()
583 return &intensityValuesTransferenceFVector;
585 //--------------------------------------------------------------------
586 std::vector<double>* vtkClipping3DDataViewer::GetRedColorsOfColorTransferenceFVector()
588 return &redColorsOfColorTransferenceFVector;
590 //--------------------------------------------------------------------
591 std::vector<double>* vtkClipping3DDataViewer::GetGreenColorsOfColorTransferenceFVector()
593 return &greenColorsOfColorTransferenceFVector;
595 //--------------------------------------------------------------------
596 std::vector<double>* vtkClipping3DDataViewer::GetBlueColorsOfColorTransferenceFVector()
598 return &blueColorsOfColorTransferenceFVector;
600 //--------------------------------------------------------------------
601 std::vector<double>* vtkClipping3DDataViewer::GetGreyValueColorsOfColorTransferenceFVector()
603 return &greyValueColorsOfColorTransferenceFVector;
605 //--------------------------------------------------------------------
606 //--------------------------------------
607 //Getters transference function
608 //and color of the transference function
609 //---------------------------------------
610 vtkPiecewiseFunction* vtkClipping3DDataViewer::GetTransferencefunction()
614 //--------------------------------------------------------------------
615 vtkColorTransferFunction* vtkClipping3DDataViewer::GetColorTransferenceFunction()
620 //-------------------------------------------------------------------
622 void vtkClipping3DDataViewer::ReadVolumeFunctions()
625 int i=0,xi,yi,r,g,b,gValue;
626 vtkImageData *imagedata = this->_vtkmprbasedata->GetImageData();
628 HistogramDialog* hDlg=new HistogramDialog(NULL,_T("Histogram Dialog"),imagedata);
632 int tfSize=this->greyValuesTransferenceFVector.size();
636 hDlg->erasePointsTransferenceFunction();
639 double g=greyValuesTransferenceFVector[i];
640 double in=intensityValuesTransferenceFVector[i];
641 hDlg->addPointToTransferenceFunction(g,in*100);
647 int ctfSize=this->redColorsOfColorTransferenceFVector.size();
653 double gr=greyValueColorsOfColorTransferenceFVector[i];
654 double r=redColorsOfColorTransferenceFVector[i];
655 double g=greenColorsOfColorTransferenceFVector[i];
656 double b=blueColorsOfColorTransferenceFVector[i];
657 hDlg->addColorPoint(gr,r*255,g*255,b*255);
661 //If it is smooth activate next line
662 //hDlg->updatePlotter();
663 //setting variables if the user wants to do refresh
664 hDlg->setCTF(_ctfun);
668 // when the user had changed the transference Function
670 if(hDlg->ShowModal()== wxID_OK )
672 // -- vtkPiecewiseFunction --
673 this->_tfun->RemoveAllPoints();
674 greyValuesTransferenceFVector.clear();
675 intensityValuesTransferenceFVector.clear();
677 int nTFPoints=hDlg->getSizeTransferenceFunction();
681 hDlg->getTransferenceFunctionPoint(i,xi,yi);
682 this->_tfun->AddPoint( xi , yi/100.0 );
683 greyValuesTransferenceFVector.push_back(xi);
684 intensityValuesTransferenceFVector.push_back(yi/100.0);
687 // -- vtkColorTransferFunction --
688 this->_ctfun->RemoveAllPoints ();
690 redColorsOfColorTransferenceFVector.clear();
691 greenColorsOfColorTransferenceFVector.clear();
692 blueColorsOfColorTransferenceFVector.clear();
693 greyValueColorsOfColorTransferenceFVector.clear();
695 int nCTFpoints=hDlg->getSizeBarColor();
699 hDlg->getDataBarColorPoint(i,xi,r,g,b);
700 this->_ctfun->AddRGBPoint(xi,r/255.0,g/255.0,b/255.0 );
701 redColorsOfColorTransferenceFVector.push_back(r/255.0);
702 greenColorsOfColorTransferenceFVector.push_back(g/255.0);
703 blueColorsOfColorTransferenceFVector.push_back(b/255.0);
704 greyValueColorsOfColorTransferenceFVector.push_back(xi);
708 this->_volumeMapper->Update();
709 this->_newvol->Update();
715 if(hDlg->getRefreshed())
718 //--Transference Function----
719 this->_tfun->RemoveAllPoints();
721 size=greyValuesTransferenceFVector.size();
724 double grey1=greyValuesTransferenceFVector[i];
725 double in2=intensityValuesTransferenceFVector[i];
726 this->_tfun->AddPoint( grey1 , in2 );
729 // -- vtkColorTransferFunction --
730 _ctfun->RemoveAllPoints ();
733 size=greyValueColorsOfColorTransferenceFVector.size();
736 double grey2=(greyValueColorsOfColorTransferenceFVector)[i];
737 double red =(redColorsOfColorTransferenceFVector)[i];
738 double green =(greenColorsOfColorTransferenceFVector)[i];
739 double blue = (blueColorsOfColorTransferenceFVector)[i];
740 _ctfun->AddRGBPoint(grey2,red,green,blue);
742 this->_volumeMapper->Update();
743 this->_newvol->Update();
751 void vtkClipping3DDataViewer::ReadVolumeFunctions(char *namefile)
758 FILE *ff = fopen ( namefile ,"r");
762 if (strcmp(tmp,"MAX")==0)
764 vtkImageData *vtkimagedata = this->_vtkmprbasedata->GetImageData();
765 vtkimagedata->GetScalarRange(range);
766 max = (int) (range[1]);
771 fscanf(ff,"%s",tmp); // --
773 // -- vtkPiecewiseFunction --
774 this->_tfun->RemoveAllPoints();
776 while ( strcmp(tmp,"--")!=0 )
781 this->_tfun->AddPoint( x*max , val );
785 this->_ctfun->RemoveAllPoints ();
786 // -- vtkColorTransferFunction --
797 this->_ctfun->AddRGBPoint( x*max , r,g,b );
801 this->_volumeMapper->Update();
802 this->_newvol->Update();
809 //-------------------------------------------------------------------
811 void vtkClipping3DDataViewer::ReadMeshVTK(char *namefile)
813 vtkDataSetReader *reader = vtkDataSetReader::New();
814 reader->SetFileName(namefile);
817 //EED 2017-01-01 Migration VTK7
818 #if VTK_MAJOR_VERSION <= 5
819 _tissueStripper[3]->SetInput( reader->GetPolyDataOutput() );
821 _tissueStripper[3]->SetInputData( reader->GetPolyDataOutput() );
826 void vtkClipping3DDataViewer::setColorTransferFunction(vtkColorTransferFunction* colortable){
828 _volumeProperty->SetColor(colortable);
833 void vtkClipping3DDataViewer::SetRayCasting(bool active)
835 _isRayCasting = active;
839 void vtkClipping3DDataViewer::SetMIPActive(bool active)
844 void vtkClipping3DDataViewer::SetInterpolation(bool active)
846 _interpolation = active;
849 void vtkClipping3DDataViewer::SetShade(bool active)