]> Creatis software - bbtk.git/blob - packages/vtk/src/bbvtkTemporalPicker.cxx
#3352 BBTK Feature New Normal - box TemporaryPicker in 3D
[bbtk.git] / packages / vtk / src / bbvtkTemporalPicker.cxx
1 /*
2  # ---------------------------------------------------------------------
3  #
4  # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
5  #                        pour la SantÈ)
6  # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
7  # Previous Authors : Laurent Guigues, Jean-Pierre Roux
8  # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
9  #
10  #  This software is governed by the CeCILL-B license under French law and
11  #  abiding by the rules of distribution of free software. You can  use,
12  #  modify and/ or redistribute the software under the terms of the CeCILL-B
13  #  license as circulated by CEA, CNRS and INRIA at the following URL
14  #  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
15  #  or in the file LICENSE.txt.
16  #
17  #  As a counterpart to the access to the source code and  rights to copy,
18  #  modify and redistribute granted by the license, users are provided only
19  #  with a limited warranty  and the software's author,  the holder of the
20  #  economic rights,  and the successive licensors  have only  limited
21  #  liability.
22  #
23  #  The fact that you are presently reading this means that you have had
24  #  knowledge of the CeCILL-B license and that you accept its terms.
25  # ------------------------------------------------------------------------ */
26
27
28 //=====
29 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
30 //===== 
31 #include "bbvtkTemporalPicker.h"
32 #include "bbvtkPackage.h"
33
34 #include "creaVtk_MACROS.h"
35
36 namespace bbvtk
37 {
38
39 BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,TemporalPicker)
40 BBTK_BLACK_BOX_IMPLEMENTATION(TemporalPicker,bbtk::AtomicBlackBox);
41 //===== 
42 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
43 //===== 
44
45
46 void TemporalPicker::Process_TemporaryPicker3DT()
47 {
48         std::vector<double> result;
49         if (bbGetInputInLst().size()>0)
50         {
51                 int ext[6];
52                 int sizeX,sizeY,sizeZ,sizeT=bbGetInputInLst().size();
53
54 //EED 2017-01-01 Migration VTK7
55 #if VTK_MAJOR_VERSION <= 5
56                 bbGetInputInLst()[0]->GetWholeExtent(ext);
57 #else
58                 bbGetInputInLst()[0]->GetExtent(ext);
59 #endif
60
61                 sizeX = ext[1]-ext[0]+1;
62                 sizeY = ext[3]-ext[2]+1;
63                 sizeZ = ext[5]-ext[4]+1;
64
65                 if (bbGetInputPoint().size()>=3)
66                 {
67                         int px   = bbGetInputPoint()[0];
68                         int py   = bbGetInputPoint()[1];
69                         int pz   = bbGetInputPoint()[2];
70                         int minX = px-bbGetInputSizeRegion()-1;
71                         int maxX = px+bbGetInputSizeRegion()-1;
72                         int minY = py-bbGetInputSizeRegion()-1;
73                         int maxY = py+bbGetInputSizeRegion()-1;
74                         int minZ = pz-bbGetInputSizeRegion()-1;
75                         int maxZ = pz+bbGetInputSizeRegion()-1;
76                         
77                         if ( (minX>=0)     && 
78                  (maxX<sizeX)  && 
79                                  (minY>=0)     && 
80                  (maxY<sizeY)  && 
81                                  (minZ>=0)     && 
82                  (maxZ<sizeZ) )
83                         {
84                                 int             i,j,k,t;
85                                 int             numElem;
86                                 double          acum;
87                                 long int        index           = px + py*sizeX + pz*sizeX*sizeY;
88
89                                 DEF_POINTER_IMAGE_VTK_CREA(vIn,ssIn,pIn,stIn,bbGetInputInLst()[0] )
90
91                                 for (t=0;t<sizeT;t++)
92                                 {
93                                         pIn=(char*)( bbGetInputInLst()[t]->GetScalarPointer() );
94                                         acum    = 0;
95                                         numElem = 0;
96
97                                         GETVALUE2_VTK_CREA(vIn,pIn,stIn,index)
98                                         numElem++;
99                                         acum    = acum  + vIn;
100 /*
101 printf("EED Warnning !!!!!!  TemporalPicker::Process Clean this method    region  3D      calcule missing ...........\n");
102 printf("EED Warnning !!!!!!  TemporalPicker::Process Clean this method    region  3D      calcule missing ...........\n");
103 printf("EED Warnning !!!!!!  TemporalPicker::Process Clean this method    region  3D      calcule missing ...........\n");
104 printf("EED Warnning !!!!!!  TemporalPicker::Process Clean this method    region  3D      calcule missing ...........\n");
105 printf("EED Warnning !!!!!!  TemporalPicker::Process Clean this method    region  3D      calcule missing ...........\n");
106 printf("EED Warnning !!!!!!  TemporalPicker::Process Clean this method    region  3D      calcule missing ...........\n");
107 printf("EED Warnning !!!!!!  TemporalPicker::Process Clean this method    region  3D      calcule missing ...........\n");
108 printf("EED Warnning !!!!!!  TemporalPicker::Process Clean this method    region  3D      calcule missing ...........\n");
109 */
110
111 /*
112                                         for(i=minX;i<=maxX;i++)
113                                         { 
114                                                 for(j=minY;j<=maxY;j++)
115                                                 { 
116 //                                                      if ((i>=0) && (i<sizeX)  && (j>=0) && (j<sizeY) )
117 //                                                      { 
118                                                                 acum = acum + bbGetInputIn()->GetScalarComponentAsDouble(i, j, k, 0);
119                                                                 numElem++;
120 //                                                      }// if i j
121                                                 }// for j
122                                         } // for i
123                                         
124 */
125                                         if (numElem>0) 
126                                         {
127                                                 result.push_back( acum/numElem );  /// ????????????  Aqui ????
128                                         } else {
129                                                 result.push_back( 0 );
130                                         } // numElem
131                                         
132                                 } // for k
133                         } // px py
134                 } else {// bbGetInputPoint
135                         printf("ERROR:  Input:Point is not good defined in TemporalPicker Box..\n ");
136                 } // bbGetInputPoint
137         } else {// bbGetInputIn
138                 printf("ERROR:  Missing Input:In vtkImageData* in TemporalPicker Box..\n ");
139         } // bbGetInputIn
140         bbSetOutputOut(result);
141 }
142
143
144 //--------------------------------------------------------------------------------------------
145 void TemporalPicker::Process_TemporaryPicker2DT()
146 {
147         std::vector<double> result;
148         if (bbGetInputIn()!=NULL)
149         {
150                 int ext[6];
151                 int sizeX,sizeY,sizeZ;
152
153 //EED 2017-01-01 Migration VTK7
154 #if VTK_MAJOR_VERSION <= 5
155                 bbGetInputIn()->GetWholeExtent(ext);
156 #else
157                 bbGetInputIn()->GetExtent(ext);
158 #endif
159
160                 sizeX=ext[1]-ext[0]+1;
161                 sizeY=ext[3]-ext[2]+1;
162                 sizeZ=ext[5]-ext[4]+1;
163                 
164
165                 if (bbGetInputPoint().size()>=2)
166                 {
167                         int px=bbGetInputPoint()[0];
168                         int py=bbGetInputPoint()[1];
169 //EED Eraseme                   int pz=bbGetInputPoint()[2];
170
171                         int minX,maxX,minY,maxY;
172                         minX = px-bbGetInputSizeRegion()-1;
173                         maxX = px+bbGetInputSizeRegion()-1;
174                         minY = py-bbGetInputSizeRegion()-1;
175                         maxY = py+bbGetInputSizeRegion()-1;
176                         
177                         if ( (minX>=0)     && 
178                  (maxX<sizeX)  && 
179                                  (minY>=0)     && 
180                  (maxY<sizeY) )
181                         {
182                                 int i,j,t;
183                                 int numElem;
184                                 double acum;
185
186                                 long int index          = px+py*sizeX;
187                                 long int stepIndex      = sizeX*sizeY;
188                                 DEF_POINTER_IMAGE_VTK_CREA(vIn,ssIn,pIn,stIn,bbGetInputIn() )
189
190                                 for (t=0;t<sizeZ;t++)
191                                 {
192                                         acum    = 0;
193                                         numElem = 0;
194
195                                         GETVALUE2_VTK_CREA(vIn,pIn,stIn,index)
196                                         numElem++;
197                                         acum    = acum  + vIn;
198                                         index   = index + stepIndex;
199 /*
200 printf("EED Warnning !!!!!!  TemporalPicker::Process Clean this method    region  ....2D......  calcule missing ...........\n");
201 printf("EED Warnning !!!!!!  TemporalPicker::Process Clean this method    region  ....2D......  calcule missing ...........\n");
202 printf("EED Warnning !!!!!!  TemporalPicker::Process Clean this method    region  ....2D......  calcule missing ...........\n");
203 printf("EED Warnning !!!!!!  TemporalPicker::Process Clean this method    region  ....2D......  calcule missing ...........\n");
204 printf("EED Warnning !!!!!!  TemporalPicker::Process Clean this method    region  ....2D......  calcule missing ...........\n");
205 printf("EED Warnning !!!!!!  TemporalPicker::Process Clean this method    region  ....2D......  calcule missing ...........\n");
206 printf("EED Warnning !!!!!!  TemporalPicker::Process Clean this method    region  ....2D......  calcule missing ...........\n");
207 printf("EED Warnning !!!!!!  TemporalPicker::Process Clean this method    region  ....2D......  calcule missing ...........\n");
208 printf("EED Warnning !!!!!!  TemporalPicker::Process Clean this method    region  ....2D......  calcule missing ...........\n");
209 */
210 /*
211                                         for(i=minX;i<=maxX;i++)
212                                         { 
213                                                 for(j=minY;j<=maxY;j++)
214                                                 { 
215 //                                                      if ((i>=0) && (i<sizeX)  && (j>=0) && (j<sizeY) )
216 //                                                      { 
217                                                                 acum = acum + bbGetInputIn()->GetScalarComponentAsDouble(i, j, k, 0);
218                                                                 numElem++;
219 //                                                      }// if i j
220                                                 }// for j
221                                         } // for i
222                                         
223 */
224                                         if (numElem>0) 
225                                         {
226                                                 result.push_back( acum/numElem );   /// Aqui ?????
227                                         } else {
228                                                 result.push_back( 0 );
229                                         } // numElem
230                                         
231                                 } // for k
232                         } // px py
233                 } else {// bbGetInputPoint
234                         printf("ERROR:  Input:Point is not good defined in TemporalPicker Box..\n ");
235                 } // bbGetInputPoint
236         } else {// bbGetInputIn
237                 printf("ERROR:  Missing Input:In vtkImageData* in TemporalPicker Box..\n ");
238         } // bbGetInputIn
239         bbSetOutputOut(result);
240 }
241
242 void TemporalPicker::Process()
243 {
244
245 // THE MAIN PROCESSING METHOD BODY
246 //   Here we simply set the input 'In' value to the output 'Out'
247 //   And print out the output value
248 // INPUT/OUTPUT ACCESSORS ARE OF THE FORM :
249 //    void bbSet{Input|Output}NAME(const TYPE&)
250 //    const TYPE& bbGet{Input|Output}NAME() const 
251 //    Where :
252 //    * NAME is the name of the input/output
253 //      (the one provided in the attribute 'name' of the tag 'input')
254 //    * TYPE is the C++ type of the input/output
255 //      (the one provided in the attribute 'type' of the tag 'input')
256
257
258         if (bbGetInputInLst().size()>0) 
259         {
260                 Process_TemporaryPicker3DT();
261         } else {
262                 Process_TemporaryPicker2DT();
263         }
264
265 }
266 //===== 
267 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
268 //===== 
269 void TemporalPicker::bbUserSetDefaultValues()
270 {
271
272 //  SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX 
273 //    Here we initialize the input 'In' to 0
274         bbSetInputIn(NULL);
275         bbSetInputSizeRegion(1);
276   
277 }
278 //===== 
279 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
280 //===== 
281 void TemporalPicker::bbUserInitializeProcessing()
282 {
283
284 //  THE INITIALIZATION METHOD BODY :
285 //    Here does nothing 
286 //    but this is where you should allocate the internal/output pointers 
287 //    if any 
288
289   
290 }
291 //===== 
292 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
293 //===== 
294 void TemporalPicker::bbUserFinalizeProcessing()
295 {
296
297 //  THE FINALIZATION METHOD BODY :
298 //    Here does nothing 
299 //    but this is where you should desallocate the internal/output pointers 
300 //    if any
301   
302 }
303 }
304 // EO namespace bbvtk
305
306