diff --git a/Core/Code/Rendering/mitkRenderingTestHelper.cpp b/Core/Code/Rendering/mitkRenderingTestHelper.cpp index 96f8444951..f7da8bd54d 100644 --- a/Core/Code/Rendering/mitkRenderingTestHelper.cpp +++ b/Core/Code/Rendering/mitkRenderingTestHelper.cpp @@ -1,85 +1,88 @@ /*========================================================================= 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 argc, char * argv[],int width,int height,mitk::DataStorage *ds) +mitkRenderingTestHelper::mitkRenderingTestHelper(int width, int height, mitk::DataStorage *ds) { - -// m_VtkRenderWindow = vtkSmartPointer::New(); - // 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 ); -// m_VtkRenderWindow->SetSize( width, height ); - mitk::RenderingManager::GetInstance()->InitializeViews(); +// 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 ); - this->GetVtkRenderWindow()->Render(); -// this->GetVtkRenderWindow()->GetInteractor()->Start(); + mitk::RenderingManager::GetInstance()->ForceImmediateUpdate(m_RenderWindow->GetVtkRenderWindow()); +// mitk::RenderingManager::GetInstance()->InitializeViews(); +// mitk::BaseRenderer::GetInstance(m_RenderWindow->GetVtkRenderWindow())->GetSliceNavigationController()->SetViewDirection(mitk::SliceNavigationController::Transversal); -// m_VtkRenderWindow->Show(); +// 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/Rendering/mitkRenderingTestHelper.h b/Core/Code/Rendering/mitkRenderingTestHelper.h index b0a602bdb0..93840a4fab 100644 --- a/Core/Code/Rendering/mitkRenderingTestHelper.h +++ b/Core/Code/Rendering/mitkRenderingTestHelper.h @@ -1,56 +1,51 @@ /*========================================================================= 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. =========================================================================*/ #ifndef mitkRenderingTestHelper_h #define mitkRenderingTestHelper_h #include #include #include #include class vtkRenderWindow; class vtkRenderer; namespace mitk { class DataStorage; } class MITK_CORE_EXPORT mitkRenderingTestHelper { public: - - mitkRenderingTestHelper( int argc, char* argv[], - int width, int height, - mitk::DataStorage* ds); + mitkRenderingTestHelper(int width, int height, mitk::DataStorage* ds); ~mitkRenderingTestHelper(); vtkRenderer* GetVtkRenderer(); vtkRenderWindow* GetVtkRenderWindow(); void SaveAsPNG(std::string fileName); protected: - -// vtkSmartPointer m_VtkRenderWindow; mitk::RenderWindow::Pointer m_RenderWindow; }; #endif diff --git a/Core/Code/Testing/mitkRenderingTest.cpp b/Core/Code/Testing/mitkRenderingTest.cpp index a765742971..878bf6d280 100644 --- a/Core/Code/Testing/mitkRenderingTest.cpp +++ b/Core/Code/Testing/mitkRenderingTest.cpp @@ -1,125 +1,109 @@ /*========================================================================= 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 void AddToStorage(const std::string& s) -{ - mitk::BaseData::Pointer data = LoadBaseData(s); -} + 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 void print(const std::string& s) -{ - MITK_TEST_OUTPUT_NO_ENDL( << s) -} + static mitk::DataStorage::Pointer s_DataStorage; + +}; // end test helper class + +mitk::DataStorage::Pointer mitkRenderingTestHelperClass::s_DataStorage; -static mitk::BaseData::Pointer LoadBaseData(const std::string& filename) +int mitkRenderingTest(int argc, char* argv[]) { - mitk::DataNodeFactory::Pointer reader = mitk::DataNodeFactory::New(); - try - { - reader->SetFileName( filename ); - reader->Update(); + // 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 ); + } - if(reader->GetNumberOfOutputs()<1) + // parse parameters + std::vector inputFileNames; + for (int i = 1; i < argc-1; ++i) { - MITK_TEST_FAILED_MSG(<< "Could not find test data '" << filename << "'"); + std::string tmp = argv[i]; + if(!(tmp.compare("-T")) && !(tmp.compare("-V"))) + inputFileNames.push_back( argv[i] ); } + // std::string outputFileName( argv[argc-1] ); - 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()); - } -} + // load all input into a data storage + mitkRenderingTestHelperClass::s_DataStorage = mitk::StandaloneDataStorage::New().GetPointer(); + MITK_TEST_CONDITION_REQUIRED(mitkRenderingTestHelperClass::s_DataStorage.IsNotNull(),"StandaloneDataStorage instantiation"); - static mitk::DataStorage::Pointer s_DataStorage; + std::for_each( inputFileNames.begin(), inputFileNames.end(), mitkRenderingTestHelperClass::AddToStorage ); -}; // end test helper class + // 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"); + int retVal = vtkRegressionTestImage( renderingHelper.GetVtkRenderWindow() ); -mitk::DataStorage::Pointer mitkRenderingTestHelperClass::s_DataStorage; + MITK_TEST_CONDITION( !retVal, "Returning VTK test result" ) -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) - { - inputFileNames.push_back( argv[i] ); - } - std::string outputFileName( argv[argc-1] ); - - MITK_TEST_OUTPUT_NO_ENDL( << "Rendering files " ) - std::for_each( inputFileNames.begin(), inputFileNames.end(), mitkRenderingTestHelperClass::print ); - MITK_TEST_OUTPUT_NO_ENDL( << "\nSaving rendered image as " << outputFileName ) - - // load all input into a data storage - mitk::DataNodeFactory::Pointer reader = mitk::DataNodeFactory::New(); - MITK_TEST_CONDITION_REQUIRED(reader.IsNotNull(),"DataNodeFactory instantiation"); - - 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( argc, argv, 600, 300, mitkRenderingTestHelperClass::s_DataStorage ); - renderingHelper.SaveAsPNG("/home/kilgus/Pictures/RenderingTestData/output.png"); - int retVal = vtkRegressionTestImage( renderingHelper.GetVtkRenderWindow() ); - - MITK_TEST_CONDITION( !retVal, "Returning VTK test result" ) - - MITK_TEST_END() + MITK_TEST_END() }