]> Creatis software - creaMaracasVisu.git/blob - bbtk/src/bbmaracasvisuContourToControlPoints.cxx
Changed bbtk package name to comply to coding style
[creaMaracasVisu.git] / bbtk / src / bbmaracasvisuContourToControlPoints.cxx
1 #ifdef _USE_VTK_
2 #ifdef _USE_ITK_
3
4 #include "bbmaracasvisuContourToControlPoints.h"
5 #include "bbcreaMaracasVisuPackage.h"
6 namespace bbcreaMaracasVisu
7 {
8
9 BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaMaracasVisu,ContourToControlPoints)
10 //BBTK_USER_BLACK_BOX_IMPLEMENTATION(ContourToControlPoints,bbtk::AtomicBlackBox);
11 BBTK_BLACK_BOX_IMPLEMENTATION(ContourToControlPoints,bbtk::AtomicBlackBox);
12
13 //------------------------------------------------------------
14 void ContourToControlPoints::Process()
15 {
16                 if ( bbGetInputSampling() >= 3.0 )
17                 {
18                         OutContourX.clear();
19                         OutContourY.clear();
20                         OutContourZ.clear();
21                         _ext2D->SetContour( bbGetInputInContourX(),bbGetInputInContourY(),bbGetInputInContourZ() );
22                         _ext2D->SetSamplingControlPoints( bbGetInputSampling() );
23                         _ext2D->GetSamplingControlPoints( &OutContourX,&OutContourY,&OutContourZ );
24                 }
25                 if(bbGetInputSampling() == 2.0)
26                 {
27                         OutContourX.clear();
28                         OutContourY.clear();
29                         OutContourZ.clear();
30                         _ext2D->SetContour( bbGetInputInContourX(),bbGetInputInContourY(),bbGetInputInContourZ() );
31                         _ext2D->GetControlPoints( &OutContourX,&OutContourY,&OutContourZ );
32                 }
33                 
34                 //Liberates the memory from the VTK's objects. Always must do that!!    
35                 if ( bbGetInputLoadContour()== 1 )
36                 {
37                         if (_imagedata!=NULL)
38                         {
39                                 _imagedata->Delete();
40                         }
41                         KeyContourX.clear();
42                         KeyContourY.clear();
43                         KeyContourZ.clear();
44                         KeySizes.clear();
45                         FILE* fd;
46                         fd = fopen("C:/bbtk_JS/data/SavedContours.txt","r"); 
47                         _propgdata->ReadKeyContour( fd );
48                         fclose(fd);
49                         _propgdata->GetKeyContours(&KeyContourX,&KeyContourY,&KeyContourZ,&KeySizes);
50                         if(KeySizes.size() == 1)
51                         {
52                                 //Method for 2D
53                         //      _imagedata = _propgdata->method_RBF(bbGetInputRadRBF(),&KeyContourX,&KeyContourY,&KeyContourZ);
54                         }
55                         if(KeySizes.size() >= 2)
56                         {
57                                 //Method for 3D
58                                 //_imagedata = _propgdata->method_RBF_3D(bbGetInputRadRBF(),&KeyContourX,&KeyContourY,&KeyContourZ);
59                         //      _imagedata = _propgdata->method_RBF_3D_ThinPlate(bbGetInputRadRBF(),&KeyContourX,&KeyContourY,&KeyContourZ);
60                         }
61                 }
62                 if ( bbGetInputLoadContour()== 2 )
63                 {
64                         if (_imagedata!=NULL)
65                         {
66                                 _imagedata->Delete();
67                         }
68                         FILE* fd;
69                         fd = fopen("C:/bbtk_JS/data/SavedManualPoints.txt","r"); 
70                         _propgdata->ReadKeyContour( fd );
71                         fclose(fd);
72                         _propgdata->GetKeyContours(&KeyContourX,&KeyContourY,&KeyContourZ,&KeySizes);
73                         if(KeySizes.size() == 1)
74                         {
75                                 //Method for 2D
76                         //      _imagedata = _propgdata->method_RBF(bbGetInputRadRBF(),&KeyContourX,&KeyContourY,&KeyContourZ);
77                         }
78                         if(KeySizes.size() >= 2)
79                         {
80                                 //Method for 3D
81                                 //_imagedata = _propgdata->method_RBF_3D(bbGetInputRadRBF(),&KeyContourX,&KeyContourY,&KeyContourZ);
82                         //      _imagedata = _propgdata->method_RBF_3D_ThinPlate(bbGetInputRadRBF(),&KeyContourX,&KeyContourY,&KeyContourZ);
83                         }
84                 }
85
86                 if ( bbGetInputLoadContour()== 3 )
87                 {
88                         if (_imagedata!=NULL)
89                         {
90                                 _imagedata->Delete();
91                         }
92                         vtkImageData *itemp = vtkImageData::New();
93                         _contprop->appendContour();
94                         _contprop->setInterpolationNumber(300);
95                         itemp = _contprop->GetKeyContours(&KeyContourX,&KeyContourY,&KeyContourZ,&KeySizes);
96                         if(KeySizes.size() == 1)
97                         {
98                         }
99                         if(KeySizes.size() >= 2)
100                         {
101                                 //Method for 3D
102                                 _imagedata = itemp;
103                                 _contprop->resetAppend();
104                                 _contprop->appendContour(&KeyContourX,&KeyContourY,&KeyContourZ);
105                                 //_contprop->GetContour(bbGetInputSlice(),&OutContourX,&OutContourY,&OutContourZ);
106                                 _contprop->GetControlPoints(bbGetInputSlice(),&OutContourX,&OutContourY,&OutContourZ);
107                                 printf("\n Size OutContourX = %d",OutContourX.size());
108                         }
109                 }
110
111                 bbSetOutputControlPointX( &OutContourX );
112                 bbSetOutputControlPointY( &OutContourY );
113                 bbSetOutputControlPointZ( &OutContourZ );
114                 bbSetOutputImagePropg( _imagedata );
115 }
116 //------------------------------------------------------------
117 void ContourToControlPoints::bbUserConstructor()
118 {
119                 bbSetInputSampling(5.0);
120                 bbSetInputSlice(0);
121                 bbSetInputInContourX(NULL);
122                 bbSetInputInContourY(NULL);
123                 bbSetInputInContourZ(NULL);
124                 bbSetInputRadRBF(1000.0);
125                 bbSetInputOption(1);
126                 bbSetInputLoadContour(0);
127
128                 _contprop       = new ContourPropagation();
129                 _propgdata      = new PropContour();
130                 _imagedata      = vtkImageData::New();
131                 _ext2D          = new ExtractControlPoints2D();
132                 _fd = NULL;
133                 pos = 0;
134                 //it = NULL;  // JPRx
135                 //bool inic = false; // JPRx
136 }
137 //------------------------------------------------------------
138 void ContourToControlPoints::bbUserCopyConstructor()
139 {
140 }
141 //------------------------------------------------------------
142 void ContourToControlPoints::bbUserDestructor()
143 {
144 }
145
146 }
147 // EO namespace bbcreaMaracasVisu
148
149 #endif //_USE_ITK_
150 #endif //_USE_VTK_