1 #include "bbvtkSliceImage.h"
2 #include "bbvtkPackage.h"
6 BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,SliceImage)
7 BBTK_BLACK_BOX_IMPLEMENTATION(SliceImage,bbtk::AtomicBlackBox);
8 void SliceImage::Process()
10 vtkImageData* original = bbGetInputIn();
14 std::cout << "Set In" << std::endl;
18 //if (lastId == bbGetInputZ())
21 int z = bbGetInputZ();
29 original->GetSpacing(space);
30 original->GetExtent(ext);
31 original->GetOrigin(origin);
32 original->GetDimensions(newDim);
36 int scalar_type = original->GetScalarType();
40 final = vtkImageData::New();
41 final->SetSpacing(space);
42 final->SetDimensions(newDim);
43 final->SetScalarType(scalar_type);
44 final->AllocateScalars();
50 bbSetOutputMax(max_z);
57 for (int i=0; i<newDim[0]; i++){
58 for (int j=0; j<newDim[1]; j++){
63 ap2 = (char *) final->GetScalarPointer(i,j,0);
64 *ap2 = *((char*) (original->GetScalarPointer(i,j,z)));
66 case VTK_UNSIGNED_CHAR:
68 ap3 = (unsigned char *) final->GetScalarPointer(i,j,0);
69 *ap3 = *((unsigned char *)(original->GetScalarPointer(i,j,z)));
73 ap4 = (short *) final->GetScalarPointer(i,j,0);
74 *ap4 = *((short *)(original->GetScalarPointer(i,j,z)));
76 case VTK_UNSIGNED_SHORT:
78 ap5 = (unsigned short *) final->GetScalarPointer(i,j,0);
79 *ap5 = *((unsigned short *)(original->GetScalarPointer(i,j,z)));
83 ap6 = (int *) final->GetScalarPointer(i,j,0);
84 *ap6 = *((int *)(original->GetScalarPointer(i,j,z)));
86 case VTK_UNSIGNED_INT:
88 ap7 = (unsigned int *) final->GetScalarPointer(i,j,0);
89 *ap7 = *((unsigned int *)(original->GetScalarPointer(i,j,z)));
93 ap8 = (long *) final->GetScalarPointer(i,j,0);
94 *ap8 = *((long *)(original->GetScalarPointer(i,j,z)));
96 case VTK_UNSIGNED_LONG:
98 ap9 = (unsigned long *) final->GetScalarPointer(i,j,0);
99 *ap9 = *((unsigned long *)(original->GetScalarPointer(i,j,z)));
103 ap10 = (float *) final->GetScalarPointer(i,j,0);
104 *ap10 = *((float *)(original->GetScalarPointer(i,j,z)));
108 ap11 = (double *) final->GetScalarPointer(i,j,0);
109 *ap11 = *((double *)(original->GetScalarPointer(i,j,z)));
115 caster = vtkImageCast::New();
116 caster->SetInput(final);
117 caster->SetOutputScalarTypeToShort();
120 bbSetOutputOut(caster->GetOutput());
122 std::cout << "updated slice " << z << std::endl;
123 bbSignalOutputModification();
124 lastId = bbGetInputZ();
126 void SliceImage::bbUserSetDefaultValues()
129 // SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX
130 // Here we initialize the input 'In' to 0
132 bbSetOutputOut(NULL);
136 void SliceImage::bbUserInitializeProcessing()
139 // THE INITIALIZATION METHOD BODY :
141 // but this is where you should allocate the internal/output pointers
146 void SliceImage::bbUserFinalizeProcessing()
149 // THE FINALIZATION METHOD BODY :
151 // but this is where you should desallocate the internal/output pointers
156 // EO namespace bbvtk