]> Creatis software - bbtk.git/blob - packages/vtk/src/bbvtkTransform.cxx
*** empty log message ***
[bbtk.git] / packages / vtk / src / bbvtkTransform.cxx
1 #include "bbvtkTransform.h"
2 #include "bbvtkPackage.h"
3
4
5 namespace bbvtk
6 {
7
8   BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,Transform);
9   BBTK_BLACK_BOX_IMPLEMENTATION(Transform,bbtk::AtomicBlackBox);
10
11         
12         // --------------------------------------------------------------       
13         
14         void Transform::bbUserSetDefaultValues()
15         {
16                 bbSetInputIn(NULL);
17                 
18                 vecScale.push_back(1);  // scale x
19                 vecScale.push_back(1);  // scale y
20                 vecScale.push_back(1);  // scale z
21                 bbSetInputScale(vecScale);
22                 
23                 vecRotateWXYZ.push_back(0);  //angle 
24                 vecRotateWXYZ.push_back(1);  //vx
25                 vecRotateWXYZ.push_back(0);  //vy
26                 vecRotateWXYZ.push_back(0);  //vz
27                 bbSetInputRotateWXYZ(vecRotateWXYZ);
28                 
29                 vecTranslate.push_back(0);  //tx
30                 vecTranslate.push_back(0);  //ty
31                 vecTranslate.push_back(0);  //tz
32                 bbSetInputTranslate(vecTranslate);
33                 
34                 vecSpacing.push_back(1);  //spacing x
35                 vecSpacing.push_back(1);  //spacing y
36                 vecSpacing.push_back(1);  //spacing z
37                 bbSetInputTranslate(vecSpacing);
38                 
39                 result = NULL;  
40         }
41
42         // --------------------------------------------------------------       
43         void Transform::bbUserInitializeProcessing()
44         {
45                 bbUserFinalizeProcessing();
46                 result = vtkTransform::New();
47         }
48         
49         
50         // --------------------------------------------------------------       
51         void Transform::bbUserFinalizeProcessing()
52         {
53                 if (result!=NULL)
54                 {
55                         result->Delete();
56                         result=NULL;
57                 }
58                 
59         }
60         
61         
62         // --------------------------------------------------------------       
63   void Transform::Process()
64   {
65           printf("EED %p Transform::Process() 1\n", this);
66           bbUserInitializeProcessing();
67           if (bbGetInputIn()!=NULL)
68       {
69                   result->Concatenate( bbGetInputIn()->GetMatrix() );
70                   printf("EED %p Transform::Process() 2\n", this);
71       }
72
73           if (bbGetInputScale().size()>=3)
74       {
75                   result->Scale(bbGetInputScale()[0], bbGetInputScale()[1], bbGetInputScale()[2]);
76                   printf("EED %p Transform::Process() 3\n", this);
77       }
78     
79           if ((bbGetInputTranslate().size()>=3) && (bbGetInputSpacing().size()>=3))
80       {
81                   double tx = bbGetInputTranslate()[0] * bbGetInputSpacing()[0];
82                   double ty = bbGetInputTranslate()[1] * bbGetInputSpacing()[1];
83                   double tz = bbGetInputTranslate()[2] * bbGetInputSpacing()[2];
84                   result->Translate(tx,ty,tz);
85                   printf("EED %p Transform::Process() 4\n", this);
86       }
87     
88           if (bbGetInputRotateWXYZ().size()>=4)
89       {
90                   result->RotateWXYZ(bbGetInputRotateWXYZ()[0],bbGetInputRotateWXYZ()[1], bbGetInputRotateWXYZ()[2], bbGetInputRotateWXYZ()[3]);
91                   printf("EED %p Transform::Process() 5\n", this);
92       }
93     
94           result->Update();
95           printf("EED %p Transform::Process() 6\n", this);
96     
97           bbSetOutputOut(result);
98   }
99   
100 }
101 // EO namespace bbvtk
102
103