]> Creatis software - creaMaracasVisu.git/blob - bbtk/src/bbmaracasvisuDrawAxe3D.cxx
.
[creaMaracasVisu.git] / bbtk / src / bbmaracasvisuDrawAxe3D.cxx
1 #include "bbmaracasvisuDrawAxe3D.h"
2 #include "bbcreaMaracasVisuPackage.h"
3
4
5 #include "vtkImageData.h"
6 #include "vtkActor.h"
7 #include "vtkPoints.h"
8 #include "vtkCellArray.h"
9 #include "vtkProperty.h"
10
11
12 #include "vtkLinearTransform.h"
13 namespace bbcreaMaracasVisu
14 {
15
16
17 BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaMaracasVisu,DrawAxe3D)
18 BBTK_BLACK_BOX_IMPLEMENTATION(DrawAxe3D,bbtk::AtomicBlackBox);
19 void DrawAxe3D::Process()
20 {
21
22         std::vector< double > vectx = bbGetInputlstPointX();
23         std::vector< double > vecty = bbGetInputlstPointY();
24         std::vector< double > vectz = bbGetInputlstPointZ();    
25
26 //      vtkImageData* img = bbGetInputImage();  
27         unsigned int i;
28         double spc[3];  
29 //      img->GetSpacing(spc);
30         spc[0]=1;
31         spc[1]=1;
32         spc[2]=1;
33
34         if(!vectx.empty()&&!vecty.empty()&&!vectz.empty()){
35                 vtkPoints* allPoints = vtkPoints::New( );
36                 vtkCellArray* allTopology = vtkCellArray::New( );
37                 allTopology->InsertNextCell( vectx.size() );
38
39                 for( i = 0; i < vectx.size( ); i++) {   
40                         //multiplicar ver parametros spacing, en maracas cuando se toca la imagen y se ve dycom
41                         //hay parĀ·metro dycom, vtkImagedata valor spacing y esos datos hay que multiplicar al polydata
42                         allPoints->InsertNextPoint( vectx[i]*spc[0],  vecty[i]*spc[1], vectz[i]*spc[2] );
43                         allTopology->InsertCellPoint( i );
44                 } // rof
45                 mallData->SetPoints( allPoints );
46                 mallData->SetLines( allTopology );
47                 allPoints->Delete();
48                 allTopology->Delete();  
49         }
50
51         mvtkactor->GetProperty()->SetColor( bbGetInputColour()[0],  
52                                                                                 bbGetInputColour()[1], 
53                                                                                 bbGetInputColour()[2] );
54
55         if ( bbGetInputTransform()!=NULL )
56         {
57                 mvtkactor->SetUserTransform( bbGetInputTransform() );
58         }
59
60      // Interface Update
61      if ((firsttime==true) && (bbGetInputRenderer()!=NULL ))
62      {
63                 firsttime=false;
64             bbGetInputRenderer()->AddActor( mvtkactor );
65      }
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         
123
124
125 }
126
127 // EO namespace bbcreaMaracasVisu
128
129