]> Creatis software - creaMaracasVisu.git/blob - bbtk/src/bbmaracasvisuDrawAxe3D.cxx
no message
[creaMaracasVisu.git] / bbtk / src / bbmaracasvisuDrawAxe3D.cxx
1 #include "bbmaracasvisuDrawAxe3D.h"
2 #include "bbcreaMaracasVisuPackage.h"
3
4 #include "vtkImageData.h"
5 #include "vtkActor.h"
6 #include "vtkPoints.h"
7 #include "vtkCellArray.h"
8 #include "vtkProperty.h"
9
10 #include "vtkLinearTransform.h"
11 namespace bbcreaMaracasVisu
12 {
13
14 BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaMaracasVisu,DrawAxe3D)
15 BBTK_BLACK_BOX_IMPLEMENTATION(DrawAxe3D,bbtk::AtomicBlackBox);
16 void DrawAxe3D::Process()
17 {
18         printf("EED DrawAxe3D::Process start \n");
19         
20         std::vector< double > vectx = bbGetInputlstPointX();
21         std::vector< double > vecty = bbGetInputlstPointY();
22         std::vector< double > vectz = bbGetInputlstPointZ();    
23
24 //      vtkImageData* img = bbGetInputImage();  
25         unsigned int i;
26         double spc[3];  
27 //      img->GetSpacing(spc);
28         spc[0]=1;
29         spc[1]=1;
30         spc[2]=1;
31
32         if(!vectx.empty()&&!vecty.empty()&&!vectz.empty()){
33                 vtkPoints* allPoints = vtkPoints::New( );
34                 vtkCellArray* allTopology = vtkCellArray::New( );
35                 allTopology->InsertNextCell( vectx.size() );
36
37                 for( i = 0; i < vectx.size( ); i++) {   
38                         //multiplicar ver parametros spacing, en maracas cuando se toca la imagen y se ve dycom
39                         //hay parametro dicom, vtkImagedata valor spacing y esos datos hay que multiplicar al polydata
40                         allPoints->InsertNextPoint( vectx[i]*spc[0],  vecty[i]*spc[1], vectz[i]*spc[2] );
41                         allTopology->InsertCellPoint( i );
42                 } // rof
43                 mallData->SetPoints( allPoints );
44                 mallData->SetLines( allTopology );
45                 allPoints->Delete();
46                 allTopology->Delete();  
47         }
48
49         mvtkactor->GetProperty()->SetColor( bbGetInputColour()[0],  
50                                 bbGetInputColour()[1], 
51                                 bbGetInputColour()[2] );
52
53         if ( bbGetInputTransform()!=NULL )
54         {
55                 mvtkactor->SetUserTransform( bbGetInputTransform() );
56         }
57
58      // Interface Update
59      if ((firsttime==true) && (bbGetInputRenderer()!=NULL ))
60      {
61                 firsttime=false;
62             bbGetInputRenderer()->AddActor( mvtkactor );
63      }
64         
65         printf("EED DrawAxe3D::Process end \n");
66
67 }
68
69 void DrawAxe3D::bbUserSetDefaultValues()
70 {
71         firsttime        = true;
72         mallData         = NULL;
73         polydatamapper   = NULL;
74         mvtkactor        = NULL;
75
76     std::vector<double> colour;
77     colour.push_back(1.0);
78     colour.push_back(0.0);
79     colour.push_back(0.0);
80     bbSetInputColour(colour);
81 }
82
83
84
85         //-----------------------------------------------------------------     
86         void DrawAxe3D::bbUserInitializeProcessing()
87         {
88                 mallData       = vtkPolyData::New( );
89                 polydatamapper = vtkPolyDataMapper::New();
90                 mvtkactor      = vtkActor::New();
91                 
92                 polydatamapper->SetInput(mallData);
93                 mvtkactor->SetMapper(polydatamapper);
94                 bbSetOutputOut(mvtkactor);
95         }
96
97         //-----------------------------------------------------------------     
98         void DrawAxe3D::bbUserFinalizeProcessing()
99         {
100                 if (mallData!=NULL)
101                 {
102                         mallData->Delete();
103                         mallData=NULL;
104                 }
105                 
106                 if (polydatamapper!=NULL)
107                 {
108                         polydatamapper->Delete();
109                         polydatamapper=NULL;
110                 }
111                 
112                 if (mvtkactor!=NULL)
113                 {
114                         mvtkactor->Delete();
115                         mvtkactor=NULL;
116                 }
117         }
118
119         //-----------------------------------------------------------------     
120 }
121
122 // EO namespace bbcreaMaracasVisu
123
124