2 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
4 #include "bbvtkSurfaceTexture.h"
5 #include "bbvtkPackage.h"
7 #include <vtkPointData.h>
13 BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,SurfaceTexture)
14 BBTK_BLACK_BOX_IMPLEMENTATION(SurfaceTexture,bbtk::AtomicBlackBox);
16 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
18 void SurfaceTexture::Process()
21 // THE MAIN PROCESSING METHOD BODY
22 // Here we simply set the input 'In' value to the output 'Out'
23 // And print out the output value
24 // INPUT/OUTPUT ACCESSORS ARE OF THE FORM :
25 // void bbSet{Input|Output}NAME(const TYPE&)
26 // const TYPE& bbGet{Input|Output}NAME() const
28 // * NAME is the name of the input/output
29 // (the one provided in the attribute 'name' of the tag 'input')
30 // * TYPE is the C++ type of the input/output
31 // (the one provided in the attribute 'type' of the tag 'input')
33 // bbSetOutputOut( bbGetInputIn() );
34 // std::cout << "Output value = " <<bbGetOutputOut() << std::endl;
36 printf("EED SurfaceTexture::Process Start\n");
42 bbGetInputImage()->GetSpacing(spc);
43 bbGetInputImage()->GetScalarRange(range);
44 bbGetInputImage()->GetWholeExtent(ext);
45 int maxX = ext[1]-ext[0]+1;
46 int maxY = ext[3]-ext[2]+1;
47 int maxZ = ext[5]-ext[4]+1;
52 // Generate the colors for each point based on the color map
53 colors = vtkUnsignedCharArray::New();
54 colors->SetNumberOfComponents(3);
55 colors->SetName("Colors");
57 // Create the color map
58 if (bbGetInputColorType()==1)
60 colorLookupTableWL = vtkWindowLevelLookupTable::New();
61 colorLookupTable=colorLookupTableWL;
63 colorLookupTable = vtkLookupTable::New();
66 colorLookupTable->SetTableRange(range[0],range[1]);
67 colorLookupTable->Build();
68 bbGetInputMesh()->GetPointData()->SetScalars(colors);
70 if (bbGetInputColorType()==1)
72 colorLookupTableWL->SetLevel( bbGetInputColorLevel() );
73 colorLookupTableWL->SetWindow( bbGetInputColorWindow() );
76 int missingpoints = bbGetInputMesh()->GetNumberOfPoints() - colors->GetDataSize()/colors->GetNumberOfComponents();
77 for(i = 0; i < missingpoints; i++)
79 colors->InsertNextTuple3(0,0,0);
82 if (bbGetInputTransform()!=NULL)
84 bbGetInputTransform()->Update();
91 for(i = 0; i < bbGetInputMesh()->GetNumberOfPoints(); i++)
93 if (bbGetInputTransform()!=NULL)
95 bbGetInputMesh()->GetPoint(i,p1);
96 bbGetInputTransform()->TransformPoint(p1,p2);
98 bbGetInputMesh()->GetPoint(i,p2);
100 p2[0] = p2[0]/spc[0];
101 p2[1] = p2[1]/spc[1];
102 p2[2] = p2[2]/spc[2];
104 if ( (p2[0]>=0) && (p2[0]<maxX) && (p2[1]>=0) && (p2[1]<maxY) &&(p2[2]>=0) && (p2[2]<maxZ) )
106 gl = bbGetInputImage()->GetScalarComponentAsDouble(p2[0], p2[1], p2[2],0);
110 colorLookupTable->GetColor(gl, dcolor);
111 colors->SetTuple3(i,255*dcolor[0],255*dcolor[1],255*dcolor[2]);
113 bbGetInputMesh()->Modified();
117 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
119 void SurfaceTexture::bbUserSetDefaultValues()
122 // SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX
123 // Here we initialize the input 'In' to 0
124 bbSetInputMesh(NULL);
125 bbSetInputImage(NULL);
126 bbSetInputColorType(0);
127 bbSetInputColorLevel(500);
128 bbSetInputColorWindow(500);
129 bbSetInputTransform(NULL);
133 colorLookupTable = NULL;
134 colorLookupTableWL = NULL;
137 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
139 void SurfaceTexture::bbUserInitializeProcessing()
142 // THE INITIALIZATION METHOD BODY :
144 // but this is where you should allocate the internal/output pointers
150 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
152 void SurfaceTexture::bbUserFinalizeProcessing()
155 // THE FINALIZATION METHOD BODY :
157 // but this is where you should desallocate the internal/output pointers
162 // EO namespace bbvtk