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