]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/kernel/marImageData.cpp
*** empty log message ***
[creaMaracasVisu.git] / lib / maracasVisuLib / src / kernel / marImageData.cpp
1 /*=========================================================================
2
3
4 =========================================================================*/
5 #include "marImageData.h"
6
7 // ----------------------------------------------------------------------------------------------
8 marImageData::marImageData(vtkImageData *imagedata)
9 {
10         _spcOriginal[0] = 1;
11         _spcOriginal[1] = 1;
12         _spcOriginal[2] = 1;
13         _voiOriginal[0] = 0;
14         _voiOriginal[1] = 0;
15         _voiOriginal[2] = 0;
16         _voiOriginal[3] = 0;
17         _voiOriginal[4] = 0;
18         _voiOriginal[5] = 0;
19         if(imagedata!=NULL){
20                 AddImageData(imagedata);
21         }
22 }
23 // ----------------------------------------------------------------------------------------------
24 marImageData::~marImageData()
25 {
26         int i,size=_imagedataLST.size();
27         for (i=0;i<size;i++)
28         {
29                 //_imagedataLST[i]->Delete();
30         }
31         _imagedataLST.clear();
32 }
33
34 // ----------------------------------------------------------------------------------------------
35 void marImageData::SetSpcOriginal(double spc[3])
36 {
37         this->_spcOriginal[0]=spc[0];
38         this->_spcOriginal[1]=spc[1];
39         this->_spcOriginal[2]=spc[2];
40 }
41 // ----------------------------------------------------------------------------------------------
42 void marImageData::SetVoiOriginal(int voi[6])
43 {
44         int i;
45         for (i=0;i<6;i++)
46         {
47                 this->_voiOriginal[i] = voi[i];
48         }
49 }
50 // ----------------------------------------------------------------------------------------------
51 void marImageData::AddImageData(vtkImageData *imagedata)
52 {
53         if (imagedata!=NULL){
54                 _imagedataLST.push_back( imagedata );
55         }
56 }
57 // ----------------------------------------------------------------------------------------------
58 void marImageData::GetSpcOriginal(double spc[3])
59 {
60         spc[0] = this->_spcOriginal[0];
61         spc[1] = this->_spcOriginal[1];
62         spc[2] = this->_spcOriginal[2];
63 }
64 // ----------------------------------------------------------------------------------------------
65 void marImageData::GetVoiOriginal(int voi[6])
66 {
67         int i;
68         for (i=0;i<6;i++)
69         {
70                 voi[i] = this->_voiOriginal[i];
71         }
72 }
73 // ----------------------------------------------------------------------------------------------
74 vtkImageData *marImageData::GetImageDataT(int t)
75 {
76         if(_imagedataLST.size() > t){
77                 return _imagedataLST[t];
78         }
79         return NULL;
80 }
81 // ----------------------------------------------------------------------------------------------
82 vtkImageData *marImageData::GetImageData()
83 {
84         if(_imagedataLST.size()>0){
85                 return _imagedataLST[0];
86         }
87         return NULL;
88 }
89
90 void marImageData::removeImageData(int index)
91 {
92         if(index < _imagedataLST.size()){
93
94                 //vtkImageData* img = _imagedataLST[index];
95                 for(int i = index; i < _imagedataLST.size()-1; i++){                    
96                         _imagedataLST[i] = _imagedataLST[i+1];
97                 }
98                 _imagedataLST.pop_back();
99                 //delete img;
100         }       
101 }
102 // ----------------------------------------------------------------------------------------------
103 int marImageData::GetXOriginal(int value)
104 {
105         double min=_spcOriginal[0];
106         if (_spcOriginal[1]<min)
107         {
108                 min = _spcOriginal[1];
109         }
110         if (_spcOriginal[2]<min)
111         {
112                 min = _spcOriginal[2];
113         }
114         double result = value / (  _spcOriginal[0] / min ) ;
115         result=result + _voiOriginal[0];
116         return (int)result;
117 }
118 // ----------------------------------------------------------------------------------------------
119 int marImageData::GetYOriginal(int value)
120 {
121         double min=_spcOriginal[0];
122         if (_spcOriginal[1]<min)
123         {
124                 min = _spcOriginal[1];
125         }
126         if (_spcOriginal[2]<min)
127         {
128                 min = _spcOriginal[2];
129         }
130         double result = value / (  _spcOriginal[1] / min ) ;
131         result=result + _voiOriginal[2];
132         return (int)result;
133 }
134 // ----------------------------------------------------------------------------------------------
135 int marImageData::GetZOriginal(int value)
136 {
137         double min=_spcOriginal[0];
138         if (_spcOriginal[1]<min)
139         {
140                 min = _spcOriginal[1];
141         }
142         if (_spcOriginal[2]<min)
143         {
144                 min = _spcOriginal[2];
145         }
146         double result = value / (  _spcOriginal[2] / min ) ;
147         result=result + _voiOriginal[4];
148         return (int)result;
149 }
150 // ----------------------------------------------------------------------------------------------
151 int marImageData::GetMaxT()
152 {
153         return _imagedataLST.size();
154 }