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