]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/kernel/marImageData.cpp
creaMaracasVisu Library
[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 int marImageData::GetXOriginal(int value)
83 {
84         double min=_spcOriginal[0];
85         if (_spcOriginal[1]<min)
86         {
87                 min = _spcOriginal[1];
88         }
89         if (_spcOriginal[2]<min)
90         {
91                 min = _spcOriginal[2];
92         }
93         double result = value / (  _spcOriginal[0] / min ) ;
94         result=result + _voiOriginal[0];
95         return (int)result;
96 }
97 // ----------------------------------------------------------------------------------------------
98 int marImageData::GetYOriginal(int value)
99 {
100         double min=_spcOriginal[0];
101         if (_spcOriginal[1]<min)
102         {
103                 min = _spcOriginal[1];
104         }
105         if (_spcOriginal[2]<min)
106         {
107                 min = _spcOriginal[2];
108         }
109         double result = value / (  _spcOriginal[1] / min ) ;
110         result=result + _voiOriginal[2];
111         return (int)result;
112 }
113 // ----------------------------------------------------------------------------------------------
114 int marImageData::GetZOriginal(int value)
115 {
116         double min=_spcOriginal[0];
117         if (_spcOriginal[1]<min)
118         {
119                 min = _spcOriginal[1];
120         }
121         if (_spcOriginal[2]<min)
122         {
123                 min = _spcOriginal[2];
124         }
125         double result = value / (  _spcOriginal[2] / min ) ;
126         result=result + _voiOriginal[4];
127         return (int)result;
128 }
129 // ----------------------------------------------------------------------------------------------
130 int marImageData::GetMaxT()
131 {
132         return _imagedataLST.size();
133 }