14 #include "vtkPolyDataMapper.h" 15 #include "vtkProperty.h" 16 #include "vtkRenderWindow.h" 17 #include "vtkRenderWindowInteractor.h" 18 #include "vtkRenderer.h" 19 #include "vtkSphereSource.h" 20 #include "vtkUnsignedCharArray.h" 23 #include <mitkPicFileReader.h> 33 #include <itksys/SystemTools.hxx> 42 if (itksys::SystemTools::LowerCase(itksys::SystemTools::GetFilenameExtension(argv[1])).find(
".pic") !=
46 if (picheader ==
nullptr)
48 std::cout <<
"file not found/not a pic-file - test not applied [PASSED]" << std::endl;
49 std::cout <<
"[TEST DONE]" << std::endl;
53 static long int sum_orig_Pic3D_pic_gz = 14685408;
58 std::cout <<
"Reading image: ";
59 mitk::PicFileReader::Pointer reader = mitk::PicFileReader::New();
60 reader->SetFileName(argv[1]);
62 std::cout <<
"[PASSED]" << std::endl;
66 std::cout <<
"Creating node: ";
69 std::cout <<
"[PASSED]" << std::endl;
71 std::cout <<
"Creating DataStorage: ";
73 std::cout <<
"[PASSED]" << std::endl;
75 std::cout <<
"Adding node via DataStorage: ";
77 std::cout <<
"[PASSED]" << std::endl;
79 std::cout <<
"Adding level-window property: ";
83 levWinProp->SetLevelWindow(levelwindow);
84 node->GetPropertyList()->SetProperty(
"levelwindow", levWinProp);
85 std::cout <<
"[PASSED]" << std::endl;
87 std::cout <<
"Creating a vtk sphere: ";
88 vtkSphereSource *sphere = vtkSphereSource::New();
89 sphere->SetRadius(1.0);
90 sphere->SetThetaResolution(18);
91 sphere->SetPhiResolution(18);
93 vtkPolyDataMapper *
map = vtkPolyDataMapper::New();
94 map->SetInput(sphere->GetOutput());
97 vtkActor *aSphere = vtkActor::New();
98 aSphere->SetMapper(map);
100 aSphere->GetProperty()->SetColor(0, 0, 1);
101 std::cout <<
"[PASSED]" << std::endl;
103 std::cout <<
"Creating a renderer for the sphere: ";
104 vtkRenderer *sphereRenderer = vtkRenderer::New();
105 sphereRenderer->AddActor(aSphere);
108 std::cout <<
"[PASSED]" << std::endl;
110 std::cout <<
"Creating vtkRenderWindow and VtkPropRenderer: ";
111 vtkRenderWindow *renderWindow = vtkRenderWindow::New();
114 std::cout <<
"[PASSED]" << std::endl;
119 std::cout <<
"BaseRenderer::SetData(iterator): ";
120 propRenderer->SetDataStorage(ds);
121 std::cout <<
"[PASSED]" << std::endl;
123 std::cout <<
"Creating vtkMitkRenderProp and connecting it to the VtkPropRenderer: ";
126 propRenderer->GetVtkRenderer()->AddViewProp(renderProp);
127 std::cout <<
"[PASSED]" << std::endl;
129 std::cout <<
"Inserting the sphere into the foreground of the VtkLayerController: ";
131 std::cout <<
"[PASSED]" << std::endl;
137 std::cout <<
"Setting and getting size of renderWindow: ";
138 renderWindow->SetSize(400, 400);
139 int *size = renderWindow->GetSize();
140 std::cout <<
"[PASSED]" << std::endl;
142 std::cout <<
"Do the rendering: ";
143 renderWindow->Render();
144 std::cout <<
"[PASSED]" << std::endl;
148 std::cout <<
"Testing to pick a world position: ";
153 propRenderer->PickWorldPoint(p, p_mm);
154 std::cout <<
"returned world position: " << p_mm <<
"\n";
156 std::cout <<
"Creating vtkUnsignedCharArray: ";
157 vtkUnsignedCharArray *vtkImage = vtkUnsignedCharArray::New();
158 std::cout <<
"[PASSED]" << std::endl;
160 cout <<
"Reading image from renderWindow" << std::endl;
161 renderWindow->GetRGBACharPixelData(0, 0, size[0] - 1, size[1] - 1, 0, vtkImage);
162 cout <<
"Read " << size[0] * size[1] <<
" data points\n";
164 cout <<
"Computing sum of all RGBA values..\n";
165 long int sum_now = 0;
166 for (
int i = 0; i < size[0] * size[1]; i++)
167 sum_now += vtkImage->GetValue(i);
168 std::cout <<
"Sum of all RGBA values: " << sum_now <<
"\n";
169 std::cout <<
"Sum should be: " << sum_orig_Pic3D_pic_gz <<
"\n";
193 propRenderer->GetVtkRenderer()->RemoveViewProp(renderProp);
194 renderProp->Delete();
195 propRenderer =
nullptr;
196 sphereRenderer->Delete();
198 renderWindow->Delete();
203 std::cout <<
"[TEST DONE]" << std::endl;
void SetPropRenderer(mitk::VtkPropRenderer::Pointer propRenderer)
mitkIpPicDescriptor * mitkIpPicGetHeader(const char *picfile_name, mitkIpPicDescriptor *pic)
void InsertForegroundRenderer(vtkSmartPointer< vtkRenderer > renderer, bool forceAbsoluteForeground)
mitkIpPicDescriptor * mitkIpPicGetTags(const char *picfile_name, mitkIpPicDescriptor *pic)
The LevelWindow class Class to store level/window values.
static VtkLayerController * GetInstance(vtkSmartPointer< vtkRenderWindow > renWin)
void SetAuto(const Image *image, bool tryPicTags=true, bool guessByCentralSlice=true, unsigned selectedComponent=0)
sets level/window to optimize the contrast of the given Image
mitk::Image::Pointer image
int mitkVtkPropRendererTest(int argc, char *argv[])
static vtkMitkRenderProp * New()
static Pointer New(const char *_arga, vtkRenderWindow *_argb)