2 // 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)
4 #include "bbcreaVtkImageCutByAxis.h"
5 #include "bbcreaVtkPackage.h"
9 BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaVtk,ImageCutByAxis)
10 BBTK_BLACK_BOX_IMPLEMENTATION(ImageCutByAxis,bbtk::AtomicBlackBox);
12 // 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)
14 void ImageCutByAxis::Process()
17 // THE MAIN PROCESSING METHOD BODY
18 // Here we simply set the input 'In' value to the output 'Out'
19 // And print out the output value
20 // INPUT/OUTPUT ACCESSORS ARE OF THE FORM :
21 // void bbSet{Input|Output}NAME(const TYPE&)
22 // const TYPE& bbGet{Input|Output}NAME() const
24 // * NAME is the name of the input/output
25 // (the one provided in the attribute 'name' of the tag 'input')
26 // * TYPE is the C++ type of the input/output
27 // (the one provided in the attribute 'type' of the tag 'input')
29 // bbSetOutputOut( bbGetInputIn() );
30 // std::cout << "Output value = " <<bbGetOutputOut() << std::endl;
33 vtkImageData *newData=vtkImageData::New();
34 newData->DeepCopy( bbGetInputIn() );
38 //EED 2017-01-01 Migration VTK7
39 #if VTK_MAJOR_VERSION <= 5
40 bbGetInputIn()->GetWholeExtent(ext);
42 bbGetInputIn()->GetExtent(ext);
45 double dimX = ext[1]-ext[0]+1;
46 double dimY = ext[3]-ext[2]+1;
47 double dimZ = ext[5]-ext[4]+1;
49 int x = bbGetInputPoint()[0];
50 int y = bbGetInputPoint()[1];
51 int z = bbGetInputPoint()[2];
63 if ( bbGetInputType()=="x-y-z+" )
65 if (bbGetInputTypeOrientation()==0) { c1=false; c2=true; c3=true; c4=true; }
66 if (bbGetInputTypeOrientation()==1) { c1=true; c2=false; c3=true; c4=true; }
67 if (bbGetInputTypeOrientation()==2) { c1=true; c2=false; c3=true; c4=true; }
68 if (bbGetInputTypeOrientation()==3) { c1=false; c2=true; c3=true; c4=true; }
71 if ( bbGetInputType()=="x+y+z+" )
73 if (bbGetInputTypeOrientation()==3) { c1=false; c2=false; c3=false; c4=false; c5=true; c6=false; c7=false; c8=false; }
78 if (bbGetInputInsideVol()==true)
86 printf("EED ImageCutByAxis::Process\n");
87 if (c1==true) printf("EED ImageCutByAxis::Process flag 1\n");
88 if (c2==true) printf("EED ImageCutByAxis::Process flag 2\n");
89 if (c3==true) printf("EED ImageCutByAxis::Process flag 3\n");
90 if (c4==true) printf("EED ImageCutByAxis::Process flag 4\n");
92 int xmin,xmax,ymin,ymax,zmin,zmax;
95 // imgPtr=bbGetInputIn()->GetScalarPointer(x,y,z,0);
96 // memset( bbGetInputIn()->GetScalarPointer() );
100 if (bbGetInputTypeOrientation()==0) { xmin=0; xmax=x; ymin=0; ymax=y; zmin=0; zmax=1; }
101 if (bbGetInputTypeOrientation()==1) { xmin=0; xmax=x; ymin=dimY-z; ymax=dimY; zmin=0; zmax=1; }
102 if (bbGetInputTypeOrientation()==2) { xmin=0; xmax=y; ymin=dimY-z; ymax=dimY; zmin=0; zmax=1; }
103 if (bbGetInputTypeOrientation()==3) { xmin=0; xmax=x; ymin=0; ymax=y; zmin=0; zmax=z; } // xyz
104 printf("EED ImageCutByAxis::Process x=%d %d y= %d %d z=%d %d\n", xmin,xmax , ymin,ymax, zmin,zmax );
106 for (k=zmin;k<zmax;k++){
107 for (j=ymin;j<ymax;j++){
108 for (i=xmin;i<xmax;i++){newData->SetScalarComponentFromDouble(i,j,k,0,0);} // for i
115 if (bbGetInputTypeOrientation()==0) { xmin=0; xmax=x; ymin=y; ymax=dimY; }
116 if (bbGetInputTypeOrientation()==1) { xmin=0; xmax=x; ymin=0; ymax=dimY-z; }
117 if (bbGetInputTypeOrientation()==2) { xmin=0; xmax=y; ymin=0; ymax=dimY-z; }
118 if (bbGetInputTypeOrientation()==3) { xmin=0; xmax=x; ymin=y; ymax=dimY; }
119 for (j=ymin;j<ymax;j++){
120 for (i=xmin;i<xmax;i++){newData->SetScalarComponentFromDouble(i,j,0,0,0);} // for i
126 if (bbGetInputTypeOrientation()==0) { xmin=x; xmax=dimX; ymin=0; ymax=y; }
127 if (bbGetInputTypeOrientation()==1) { xmin=x; xmax=dimX; ymin=dimY-z; ymax=dimY; }
128 if (bbGetInputTypeOrientation()==2) { xmin=y; xmax=dimX; ymin=dimY-z; ymax=dimY; }
129 if (bbGetInputTypeOrientation()==3) { xmin=x; xmax=dimX; ymin=0; ymax=y; }
130 for (j=ymin;j<ymax;j++){
131 for (i=xmin;i<xmax;i++){newData->SetScalarComponentFromDouble(i,j,0,0,0);} // for i
137 if (bbGetInputTypeOrientation()==0) { xmin=x; xmax=dimX; ymin=y; ymax=dimY; }
138 if (bbGetInputTypeOrientation()==1) { xmin=x; xmax=dimX; ymin=0; ymax=dimY-z; }
139 if (bbGetInputTypeOrientation()==2) { xmin=y; xmax=dimX; ymin=0; ymax=dimY-z; }
140 if (bbGetInputTypeOrientation()==3) { xmin=x; xmax=dimX; ymin=y; ymax=dimY; }
141 for (j=ymin;j<ymax;j++){
142 for (i=xmin;i<xmax;i++){newData->SetScalarComponentFromDouble(i,j,0,0,0);} // for i
150 if (bbGetInputTypeOrientation()==0) { xmin=0; xmax=x; ymin=0; ymax=y; zmin=0; zmax=1; }
151 if (bbGetInputTypeOrientation()==1) { xmin=0; xmax=x; ymin=dimY-z; ymax=dimY; zmin=0; zmax=1; }
152 if (bbGetInputTypeOrientation()==2) { xmin=0; xmax=y; ymin=dimY-z; ymax=dimY; zmin=0; zmax=1; }
153 if (bbGetInputTypeOrientation()==3) { xmin=x; xmax=dimX; ymin=y; ymax=dimY; zmin=z; zmax=dimZ; } // xyz
154 printf("EED ImageCutByAxis::Process x=%d %d y= %d %d z=%d %d\n", xmin,xmax , ymin,ymax, zmin,zmax );
156 for (k=zmin;k<zmax;k++){
157 for (j=ymin;j<ymax;j++){
158 for (i=xmin;i<xmax;i++){newData->SetScalarComponentFromDouble(i,j,k,0,0);} // for i
167 bbSetOutputOut( newData );
171 // 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)
173 void ImageCutByAxis::bbUserSetDefaultValues()
176 // SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX
177 // Here we initialize the input 'In' to 0
179 bbSetInputType("x-y-z+");
180 bbSetInputInsideVol(true);
181 std::vector<int> point;
185 bbSetInputPoint(point);
188 // 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)
190 void ImageCutByAxis::bbUserInitializeProcessing()
193 // THE INITIALIZATION METHOD BODY :
195 // but this is where you should allocate the internal/output pointers
201 // 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)
203 void ImageCutByAxis::bbUserFinalizeProcessing()
206 // THE FINALIZATION METHOD BODY :
208 // but this is where you should desallocate the internal/output pointers
213 // EO namespace bbcreaVtk