1 #include "surfacerenderingimagestencilexport.h"
3 #include "vtkObjectFactory.h"
4 #include "vtkMetaImageWriter.h"
8 vtkStandardNewMacro(SurfaceRenderingImageStencilExport)
10 SurfaceRenderingImageStencilExport::SurfaceRenderingImageStencilExport()
15 SurfaceRenderingImageStencilExport::~SurfaceRenderingImageStencilExport(){
18 ImageOutput->Delete();
22 void SurfaceRenderingImageStencilExport::Update(){
26 void SurfaceRenderingImageStencilExport::Execute(vtkImageData *data){
28 vtkPolyData* polydata = (vtkPolyData*)this->GetInput();
30 vtkSmartPointer<vtkPolyDataToImageStencil> polytostencil = vtkSmartPointer<vtkPolyDataToImageStencil>::New();
31 polytostencil->SetInput(polydata);
32 polytostencil->Update();
34 double *bounds = polydata->GetBounds();
35 vtkSmartPointer<vtkImageData> imagein = vtkSmartPointer<vtkImageData>::New();
37 imagein->SetExtent(bounds[0] - 1, bounds[1] + 1, bounds[2] - 1, bounds[3] + 1, bounds[4] - 1, bounds[5] + 1);
38 imagein->SetScalarTypeToUnsignedShort();
39 imagein->AllocateScalars();
42 int* extent = imagein->GetExtent();
44 for (int x = extent[0]; x <= extent[1]; x++){
45 for (int y = extent[2]; y <= extent[3]; y++){
46 for (int z =extent[4]; z <= extent[5]; z++){
47 unsigned short* pixel = static_cast<unsigned short*>(imagein->GetScalarPointer(x,y,z));
53 vtkSmartPointer<vtkImageStencil> stencil = vtkSmartPointer<vtkImageStencil>::New();
54 stencil->SetInput(imagein);
55 stencil->SetStencil(polytostencil->GetOutput());
56 stencil->ReverseStencilOn();
57 stencil->SetBackgroundValue(128);
61 ImageOutput->Delete();
63 ImageOutput = vtkImageData::New();
64 ImageOutput->DeepCopy(stencil->GetOutput());
68 vtkImageData* SurfaceRenderingImageStencilExport::GetOutput(){