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