diff --git a/Core/Code/Rendering/mitkRenderingTestHelper.cpp b/Core/Code/Rendering/mitkRenderingTestHelper.cpp index f7da8bd54d..bf6dffbbde 100644 --- a/Core/Code/Rendering/mitkRenderingTestHelper.cpp +++ b/Core/Code/Rendering/mitkRenderingTestHelper.cpp @@ -1,88 +1,87 @@ /*========================================================================= Program: Medical Imaging & Interaction Toolkit Language: C++ Date: $Date: 2010-03-31 17:34:48 +0200 (Wed, 31 Mar 2010) $ Version: $Revision: 21985 $ Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. See MITKCopyright.txt or http://www.mitk.org/copyright.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ #include "mitkRenderingTestHelper.h" #include "mitkStandaloneDataStorage.h" #include #include #include #include #include #include #include mitkRenderingTestHelper::mitkRenderingTestHelper(int width, int height, mitk::DataStorage *ds) { // Global interaction must(!) be initialized if used mitk::GlobalInteraction::GetInstance()->Initialize("global"); m_RenderWindow = mitk::RenderWindow::New(); m_RenderWindow->GetRenderer()->SetDataStorage(ds); m_RenderWindow->GetRenderer()->SetMapperID(mitk::BaseRenderer::Standard2D); - ds->Print(std::cout); this->GetVtkRenderWindow()->SetSize( width, height ); // mitk::RenderingManager::GetInstance()->InitializeViews(); mitk::BaseRenderer::GetInstance(m_RenderWindow->GetVtkRenderWindow())->GetSliceNavigationController()->SetDefaultViewDirection(mitk::SliceNavigationController::Transversal); mitk::TimeSlicedGeometry::Pointer geo = ds->ComputeBoundingGeometry3D(ds->GetAll()); mitk::RenderingManager::GetInstance()->InitializeViews( geo ); mitk::RenderingManager::GetInstance()->ForceImmediateUpdate(m_RenderWindow->GetVtkRenderWindow()); // mitk::RenderingManager::GetInstance()->InitializeViews(); // mitk::BaseRenderer::GetInstance(m_RenderWindow->GetVtkRenderWindow())->GetSliceNavigationController()->SetViewDirection(mitk::SliceNavigationController::Transversal); -// this->GetVtkRenderWindow()->Render(); + this->GetVtkRenderWindow()->Render(); // this->GetVtkRenderWindow()->GetInteractor()->Start(); } mitkRenderingTestHelper::~mitkRenderingTestHelper() { } vtkRenderer* mitkRenderingTestHelper::GetVtkRenderer() { return m_RenderWindow->GetRenderer()->GetVtkRenderer(); } vtkRenderWindow* mitkRenderingTestHelper::GetVtkRenderWindow() { return m_RenderWindow->GetRenderer()->GetVtkRenderer()->GetRenderWindow(); } void mitkRenderingTestHelper::SaveAsPNG(std::string fileName) { vtkSmartPointer renderer = this->GetVtkRenderer(); bool doubleBuffering( renderer->GetRenderWindow()->GetDoubleBuffer() ); renderer->GetRenderWindow()->DoubleBufferOff(); vtkSmartPointer magnifier = vtkSmartPointer::New(); magnifier->SetInput(renderer); magnifier->SetMagnification(1.0); vtkSmartPointer fileWriter = vtkSmartPointer::New(); fileWriter->SetInput(magnifier->GetOutput()); fileWriter->SetFileName(fileName.c_str()); fileWriter->Write(); renderer->GetRenderWindow()->SetDoubleBuffer(doubleBuffering); } diff --git a/Core/Code/Testing/mitkRenderingTest.cpp b/Core/Code/Testing/mitkRenderingTest.cpp index 878bf6d280..059e0bfe32 100644 --- a/Core/Code/Testing/mitkRenderingTest.cpp +++ b/Core/Code/Testing/mitkRenderingTest.cpp @@ -1,109 +1,119 @@ /*========================================================================= Program: Medical Imaging & Interaction Toolkit Language: C++ Date: $Date: 2008-02-25 17:27:17 +0100 (Mo, 25 Feb 2008) $ Version: $Revision: 7837 $ Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. See MITKCopyright.txt or http://www.mitk.org/copyright.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ #include "mitkTestingMacros.h" #include "mitkDataNodeFactory.h" #include "mitkStandaloneDataStorage.h" #include #include #include #include // nice one #include #include #include "mitkRenderingTestHelper.h" class mitkRenderingTestHelperClass { public: static mitk::BaseData::Pointer AddToStorage(const std::string& filename) { mitk::DataNodeFactory::Pointer reader = mitk::DataNodeFactory::New(); try { reader->SetFileName( filename ); reader->Update(); if(reader->GetNumberOfOutputs()<1) { MITK_TEST_FAILED_MSG(<< "Could not find test data '" << filename << "'"); } mitk::DataNode::Pointer node = reader->GetOutput( 0 ); mitkRenderingTestHelperClass::s_DataStorage->Add(node); return node->GetData(); } catch ( itk::ExceptionObject & e ) { MITK_TEST_FAILED_MSG(<< "Failed loading test data '" << filename << "': " << e.what()); } } static mitk::DataStorage::Pointer s_DataStorage; }; // end test helper class mitk::DataStorage::Pointer mitkRenderingTestHelperClass::s_DataStorage; int mitkRenderingTest(int argc, char* argv[]) { // load all arguments into a datastorage, take last argument as reference rendering // setup a renderwindow of fixed size 800x800 // render the datastorage // compare rendering to reference image MITK_TEST_BEGIN("RenderingTest") // enough parameters? if ( argc < 2 ) { MITK_TEST_OUTPUT( << "Usage: " << std::string(*argv) << " [file1 file2 ...] outputfile" ) MITK_TEST_OUTPUT( << "Will render a central transversal slice of all given files into outputfile" ) exit( EXIT_SUCCESS ); } // parse parameters std::vector inputFileNames; for (int i = 1; i < argc-1; ++i) { + //add everything to a list but -T and -V std::string tmp = argv[i]; - if(!(tmp.compare("-T")) && !(tmp.compare("-V"))) - inputFileNames.push_back( argv[i] ); + if((tmp.compare("-T")) && (tmp.compare("-V"))) + { + inputFileNames.push_back( tmp ); + } } // std::string outputFileName( argv[argc-1] ); // load all input into a data storage mitkRenderingTestHelperClass::s_DataStorage = mitk::StandaloneDataStorage::New().GetPointer(); MITK_TEST_CONDITION_REQUIRED(mitkRenderingTestHelperClass::s_DataStorage.IsNotNull(),"StandaloneDataStorage instantiation"); std::for_each( inputFileNames.begin(), inputFileNames.end(), mitkRenderingTestHelperClass::AddToStorage ); // create a QmitkRenderWindow, let it render the scene and get the vtkRenderWindow mitkRenderingTestHelper renderingHelper( 300, 300, mitkRenderingTestHelperClass::s_DataStorage ); -// renderingHelper.SaveAsPNG("/home/kilgus/Pictures/RenderingTestData/output.png"); + //use this to generate a reference screenshot: + // renderingHelper.SaveAsPNG("/home/kilgus/Pictures/RenderingTestData/output.png"); int retVal = vtkRegressionTestImage( renderingHelper.GetVtkRenderWindow() ); - MITK_TEST_CONDITION( !retVal, "Returning VTK test result" ) + //retVal meanings: (see VTK/Rendering/vtkTesting.h) + //0 = test failed + //1 = test passed + //2 = test not run + //3 = something with vtkInteraction + + MITK_TEST_CONDITION( retVal == 1, "VTK test result positive" ) MITK_TEST_END() }