]> Creatis software - creaImageIO.git/blob - bbtk_Transform3Ddicom_PKG/src/bbTransform3DdicomCreateComplementImage.cxx_eed
Clean code
[creaImageIO.git] / bbtk_Transform3Ddicom_PKG / src / bbTransform3DdicomCreateComplementImage.cxx_eed
1 #include "bbTransform3DdicomCreateComplementImage.h"
2 #include "bbTransform3DdicomPackage.h"
3
4
5
6 namespace bbTransform3Ddicom
7 {
8
9 BBTK_ADD_BLACK_BOX_TO_PACKAGE(Transform3Ddicom,CreateComplementImage)
10 BBTK_BLACK_BOX_IMPLEMENTATION(CreateComplementImage,bbtk::AtomicBlackBox);
11 void CreateComplementImage::Process()
12 {
13         if (( bbGetInputInImage1()!=NULL ) && ( bbGetInputInImage2()!=NULL ))
14         {
15                 creaimage1->SetvtkImageData( bbGetInputImage1() );
16                 creaimage1->SetImagePositionPatient( bbGetInputPosition1()[0] , 
17                                 bbGetInputPosition1()[1] , 
18                                 bbGetInputPosition1()[2] );\r
19                 creaimage1->SetImageSpacing( bbGetInputSpacing1()[0] , bbGetInputSpacing1()[1] , bbGetInputSpacing1()[2]  );\r
20                 creaimage1->SetImageOrientation(  bbGetInputOrientation1Vec1()[0] , bbGetInputOrientation1Vec1()[1] , bbGetInputOrientation1Vec1()[2] , 
21                                                                                 bbGetInputOrientation1Vec2()[0] , bbGetInputOrientation1Vec2()[1] , bbGetInputOrientation1Vec2()[2]  );         \r
22                 
23                 creaimage2->SetvtkImageData( bbGetInputImage1() );
24                 creaimage2->SetImagePositionPatient( bbGetInputPosition1()[0] , bbGetInputPosition1()[1] , bbGetInputPosition1()[2] );\r
25                 creaimage2->SetImageSpacing( bbGetInputSpacing1()[0] , bbGetInputSpacing1()[1] , bbGetInputSpacing1()[2]  );\r
26                 creaimage2->SetImageOrientation(  bbGetInputOrientation1Vec1()[0] , bbGetInputOrientation1Vec1()[1] , bbGetInputOrientation1Vec1()[2] , 
27                                                                                 bbGetInputOrientation1Vec2()[0] , bbGetInputOrientation1Vec2()[1] , bbGetInputOrientation1Vec2()[2]  );
28                 
29                 \r
30                 creaimagecomplement->SetBaseCreaImage( creaimage1 );
31                 creaimagecomplement->SetComplementCreaImage( creaimage2 );
32                 creaimagecomplement->Update();
33                 
34                 imageresult->SetSpacing(1,1,1);
35                 imageresult->SetScalarTypeUnsignedShort();
36                 dimx= (bbGetInputExtOut()[1] - bbGetInputExtOut()[0]) / bbGetInputSpcOut()[0];
37                 dimy= (bbGetInputExtOut()[3] - bbGetInputExtOut()[2]) / bbGetInputSpcOut()[1];
38                 dimz= (bbGetInputExtOut()[5] - bbGetInputExtOut()[4]) / bbGetInputSpcOut()[2];
39                 imageresult->SetDimensions(dimx,dimy,dimz);
40                 imageresult->AllocateMemory();  
41                 
42                 int x,y,z;
43                 double xx,yy,zz;
44                 for (x=0;x<dimx;x++)
45                 {
46                         for (y=0;y<dimy;y++)
47                         {
48                                 for (z=0;z<dimz;z++)
49                                 {
50                                         xx = (double)x * bbGetInputSpcOut()[0] + bbGetInputExtOut()[0] ;
51                                         yy = (double)y * bbGetInputSpcOut()[1] + bbGetInputExtOut()[2] ;
52                                         zz = (double)z * bbGetInputSpcOut()[2] + bbGetInputExtOut()[4] ;
53                                         unsigned short value=creaimagecomplement->GetVoxelFromComplementImage_In_BaseCreaImage_Universe(xx,yy,zz);
54                                         unsigned short *p = (unsigned short *)imageresult->GetScalarPointer( x,y,z );
55                                         *p = value;
56                                 }// for z
57                         } // for y
58                 }// for x
59                 bbSetOutputOut(imageresult);
60         } else  {
61                 bbSetOutputOut(NULL);
62         }
63 }
64
65 void CreateComplementImage::bbUserConstructor()
66 {  
67         creaimage1                      = new CreaImage();
68         creaimage2                      = new CreaImage();
69         creaimagecomplement = new CreaImageComplement();
70         imageresult                     = vtkImageData::New();
71 }
72
73 void CreateComplementImage::bbUserCopyConstructor(bbtk::BlackBox::Pointer)
74
75 }
76
77 void CreateComplementImage::bbUserDestructor()
78 {  
79         delete creaimage1;
80         delete creaimage2;
81 }
82
83 }
84 // EO namespace bbTransform3Ddicom
85
86