]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.cxx
surface box y widget carole
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxMaracasSurfaceRenderingManagerDataMhd.cxx
1
2 #include "wxMaracasSurfaceRenderingManagerDataMhd.h"
3
4 wxMaracasSurfaceRenderingManagerDataMhd::wxMaracasSurfaceRenderingManagerDataMhd(vtkImageData* imagedata, std::string dataname, vtkRenderWindowInteractor*  interactor)
5 : wxMaracasSurfaceRenderingManagerData(NULL, dataname, interactor)
6 {
7
8         this->setVtkImageData(imagedata);
9         _dataname = dataname;
10         
11         _maxgreylevel = getMaxLevel(imagedata);
12         _prop3D=NULL;                   
13
14         _cubesFilter = vtkMarchingCubes::New();
15         _cleanFilter = vtkCleanPolyData::New();         
16         _dataMapper = vtkPolyDataMapper::New();
17         vtkActor* dataActor = vtkActor::New();
18         
19         _cubesFilter->SetInput(this->_imagedata);
20         _cubesFilter->ComputeGradientsOn ();
21         _cubesFilter->ComputeScalarsOn ();
22         _cubesFilter->SetNumberOfContours( 1 );
23         _cleanFilter->SetInput ( _cubesFilter->GetOutput() );
24         _dataMapper->SetInput(_cleanFilter->GetOutput());
25         _dataMapper->ScalarVisibilityOff();
26         _dataMapper->ImmediateModeRenderingOn();
27         dataActor->SetMapper(_dataMapper);      
28
29         if(_boxWidgetS1){
30                 _boxWidgetS1->SetInput(imagedata);
31         }
32
33         this->_prop3D = dataActor;
34
35         this->changeIsoValue(this->_maxgreylevel);      
36
37
38 }
39
40 wxMaracasSurfaceRenderingManagerDataMhd::~wxMaracasSurfaceRenderingManagerDataMhd(){    
41         _cubesFilter->Delete();
42         _cleanFilter->Delete();
43         _dataMapper->Delete();
44 }
45         
46 void wxMaracasSurfaceRenderingManagerDataMhd::UpdateSurface(){
47         _cubesFilter->Update();    
48         _cleanFilter->Update();
49         _dataMapper->Update();  
50 }
51 /**
52 **      changes the isovalue in a prop3D
53 **/
54 void wxMaracasSurfaceRenderingManagerDataMhd::changeIsoValue(double value){     
55                 
56    
57     _cubesFilter->SetValue(0,value);            
58         _cubesFilter->Update();    
59         _cleanFilter->Update();
60         _dataMapper->Update();  
61         
62         
63         
64 }
65 int wxMaracasSurfaceRenderingManagerDataMhd::getMaxGreyLevel(){
66         return _maxgreylevel;
67 }
68
69 /**
70         ** Get's the max grey level of the image
71         **/
72 int wxMaracasSurfaceRenderingManagerDataMhd::getMaxLevel(vtkImageData* img){
73
74         int ext[6], i, j, k,max=0;
75         img->GetExtent(ext);
76
77         for(i = ext[0]; i < ext[1];i++){
78                 for(j = ext[2]; j < ext[3];j++){
79                         for(k = ext[4]; k < ext[5];k++){
80                 unsigned short* ptr = (unsigned short*)img->GetScalarPointer(i,j,k);
81                                 int temp = (int)*ptr;
82                                 if(temp > max){
83                     max = temp;
84                                 }
85                         }
86                 }
87         }
88         return max;
89
90
91 }
92
93 /**
94 **      Sets the VTK image data
95 **/
96
97 void wxMaracasSurfaceRenderingManagerDataMhd::setVtkImageData(vtkImageData* imagedata){
98         _imagedata = imagedata;
99 }
100