]> Creatis software - bbtk.git/blob - packages/vtk/src/bbvtkTransform.cxx
.
[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           bbUserInitializeProcessing();
66           if (bbGetInputIn()!=NULL)
67       {
68                   result->Concatenate( bbGetInputIn()->GetMatrix() );
69       }
70
71           if (bbGetInputScale().size()>=3)
72       {
73                   result->Scale(bbGetInputScale()[0], bbGetInputScale()[1], bbGetInputScale()[2]);
74       }
75     
76           if ((bbGetInputTranslate().size()>=3) && (bbGetInputSpacing().size()>=3))
77       {
78                   double tx = bbGetInputTranslate()[0] * bbGetInputSpacing()[0];
79                   double ty = bbGetInputTranslate()[1] * bbGetInputSpacing()[1];
80                   double tz = bbGetInputTranslate()[2] * bbGetInputSpacing()[2];
81                   result->Translate(tx,ty,tz);
82       }
83     
84           if (bbGetInputRotateWXYZ().size()>=4)
85       {
86                   result->RotateWXYZ(bbGetInputRotateWXYZ()[0],bbGetInputRotateWXYZ()[1], bbGetInputRotateWXYZ()[2], bbGetInputRotateWXYZ()[3]);
87       }
88     
89           result->Update();
90     
91           bbSetOutputOut(result);
92   }
93   
94 }
95 // EO namespace bbvtk
96
97