Index: mitk/CMake/CoreHelpers.cmake =================================================================== --- mitk/CMake/CoreHelpers.cmake (revision 22022) +++ mitk/CMake/CoreHelpers.cmake (working copy) @@ -173,6 +173,7 @@ MACRO(MITK_CREATE_MODULE MODULE_NAME_IN) MACRO_PARSE_ARGUMENTS(MODULE "INCLUDE_DIRS;INTERNAL_INCLUDE_DIRS;DEPENDS;DEPENDS_INTERNAL;PROVIDES;PACKAGE_DEPENDS;EXPORT_DEFINE;ADDITIONAL_LIBS;GENERATED_CPP" "QT_MODULE;FORCE_STATIC;HEADERS_ONLY" ${ARGN}) SET(MODULE_NAME ${MODULE_NAME_IN}) +MESSAGE("+++ ${MODULE_NAME} schreibering to ${MITK_MODULES_CONF_DIR}") # assume worst case SET(MODULE_IS_ENABLED 0) @@ -412,6 +413,36 @@ ENDIF(EXISTS ${IMAGE_FULL_PATH}) ENDFOREACH( image ) + # If a variable MODULE_TEST_PARAMETERS is set in files.cmake + # then we add a couple of extra calls to the test driver with user defined parameters. + # This is useful to reuse the same test again and again with different test parameters / data + IF (MODULE_TEST_PARAMETERS) + # assign numbers the the generated tests so they can be distinguished + SET(counter 0) + + # determine length of list + LIST(LENGTH MODULE_TEST_PARAMETERS listLength) + + # if at least two elements are left + WHILE ( listLength GREATER 1 ) + + # get and remove first two elements + LIST(GET MODULE_TEST_PARAMETERS 0 TName) + LIST(GET MODULE_TEST_PARAMETERS 1 TParameters) + + # call SEPARATE_ARGUMENTS to avoid CMake quoting spaces in the commandline call + SEPARATE_ARGUMENTS(TParameters) + LIST(REMOVE_AT MODULE_TEST_PARAMETERS 0 1) + + MATH(EXPR counter "${counter} + 1") + ADD_TEST(${TName}_${counter} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${TESTDRIVER} ${TName} ${TParameters}) + + # recalculate length of list + LIST(LENGTH MODULE_TEST_PARAMETERS listLength) + ENDWHILE ( listLength GREATER 1 ) + + ENDIF (MODULE_TEST_PARAMETERS) + ENDIF(BUILD_TESTING AND MODULE_IS_ENABLED) ENDMACRO(MITK_CREATE_MODULE_TESTS) Index: mitk/Applications/ExtApp/CMakeLists.txt =================================================================== --- mitk/Applications/ExtApp/CMakeLists.txt (revision 22022) +++ mitk/Applications/ExtApp/CMakeLists.txt (working copy) @@ -21,6 +21,7 @@ optimized org_blueberry_osgi debug org_blueberry_osgi${BLUEBERRY_DEBUG_POSTFIX} ${ALL_LIBRARIES}) +SET_TARGET_PROPERTIES(ExtApp PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH};${CMAKE_INSTALL_PREFIX}/bin/BlueBerry/org.blueberry.osgi/bin") SET(EXTAPP_REQUIRED_BUNDLES org.mitk.gui.qt.datamanager Index: mitk/Applications/CoreApp/CMakeLists.txt =================================================================== --- mitk/Applications/CoreApp/CMakeLists.txt (revision 22022) +++ mitk/Applications/CoreApp/CMakeLists.txt (working copy) @@ -15,6 +15,8 @@ optimized PocoUtil debug PocoUtild optimized org_blueberry_osgi debug org_blueberry_osgi${BLUEBERRY_DEBUG_POSTFIX}) +SET_TARGET_PROPERTIES(CoreApp PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH};${CMAKE_INSTALL_PREFIX}/bin/BlueBerry/org.blueberry.osgi/bin") + SET(_plugin_deps ${BLUEBERRY_ENABLED_PLUGINS} ${MITK_CORE_ENABLED_PLUGINS} Index: mitk/Core/Code/Rendering/mitkSurfaceMapper2D.cpp =================================================================== --- mitk/Core/Code/Rendering/mitkSurfaceMapper2D.cpp (revision 22022) +++ mitk/Core/Code/Rendering/mitkSurfaceMapper2D.cpp (working copy) @@ -285,6 +285,7 @@ m_Stripper->SetInput( m_Cutter->GetOutput() ); // calculate the cut + m_Stripper->PassCellDataAsFieldDataOn(); m_Stripper->Update(); // traverse the cut contour @@ -334,7 +335,7 @@ vtkDataArray *vpointscalars = contour->GetPointData()->GetScalars(); vtkCellArray *vlines = contour->GetLines(); - vtkDataArray* vcellscalars = contour->GetCellData()->GetScalars(); + vtkDataArray* vcellscalars = contour->GetCellData()->GetScalars(); Point3D p; Point2D p2d, last; int i, j; Index: mitk/BlueBerry/CMake/MacroInstallPlugin.cmake =================================================================== --- mitk/BlueBerry/CMake/MacroInstallPlugin.cmake (revision 22022) +++ mitk/BlueBerry/CMake/MacroInstallPlugin.cmake (working copy) @@ -37,11 +37,21 @@ PATTERN "Debug/*" EXCLUDE PATTERN "bin/*" EXCLUDE PATTERN "lib/*" EXCLUDE) + + SET(_target_install_rpath ${CMAKE_INSTALL_RPATH}) + FOREACH(_dep ${_plugin_dependencies}) + SET(_linklib_path "${${_dep}_OUT_DIR}") + STRING(REPLACE "${CMAKE_BINARY_DIR}" "${CMAKE_INSTALL_PREFIX}" _linklib_path "${_linklib_path}") + LIST(APPEND _target_install_rpath "${_linklib_path}/bin") + ENDFOREACH() + SET_TARGET_PROPERTIES(${_INSTALL_TARGETS} + PROPERTIES INSTALL_RPATH "${_target_install_rpath}") INSTALL(TARGETS ${_INSTALL_TARGETS} RUNTIME DESTINATION ${_plugin_install_dir}/bin - LIBRARY DESTINATION ${_plugin_install_dir}/lib - ARCHIVE DESTINATION ${_plugin_install_dir}/lib + LIBRARY DESTINATION ${_plugin_install_dir}/bin + ARCHIVE DESTINATION ${_plugin_install_dir}/bin ) -ENDMACRO() \ No newline at end of file +ENDMACRO() + Index: mitk/BlueBerry/Bundles/org.blueberry.osgi/src/berryBundleLoader.cpp =================================================================== --- mitk/BlueBerry/Bundles/org.blueberry.osgi/src/berryBundleLoader.cpp (revision 22022) +++ mitk/BlueBerry/Bundles/org.blueberry.osgi/src/berryBundleLoader.cpp (working copy) @@ -15,14 +15,7 @@ =========================================================================*/ -#ifdef _WIN32 -#define _WIN32_WINNT 0x0502 -#include -#endif -// for std::memcpy -#include - #include "berryLog.h" #include "berryBundleLoader.h" @@ -43,6 +36,7 @@ #include "service/berryIExtensionPointService.h" +#include namespace berry { @@ -302,21 +296,10 @@ // a batch file every time he adds a new plugin from outside the // build system. #ifdef BERRY_OS_FAMILY_WINDOWS - DWORD size = GetEnvironmentVariableA("path", 0, 0); - char* currPath = new char[size]; - DWORD currSize = GetEnvironmentVariableA("path", currPath, size); - //BERRY_INFO << "Current path: " << currPath << std::endl; - char* newPath = new char[currSize + bundlePath.toString().length() + 2]; - std::memcpy(newPath, currPath, currSize); - newPath[currSize] = ';'; - std::memcpy(newPath + currSize + 1, bundlePath.toString().c_str(), bundlePath.toString().length()); - newPath[currSize+bundlePath.toString().length()+1] = '\0'; - //BERRY_INFO << "Setting additional path: " << newPath; - /*bool success =*/ SetEnvironmentVariableA("path", newPath); - //BERRY_INFO << " " << (success ? "SUCCESS" : "FAILED") << std::endl; - - delete[] newPath; - delete[] currPath; + std::string pathEnv = Poco::Environment::get("PATH", ""); + if (!pathEnv.empty()) pathEnv += ";"; + pathEnv += bundlePath.toString(); + Poco::Environment::set("PATH", pathEnv); #endif m_CodeCache->InstallLibrary(libFileName, bundlePath); Index: mitk/Modules/SceneSerialization/mitkSceneIO.cpp =================================================================== --- mitk/Modules/SceneSerialization/mitkSceneIO.cpp (revision 22022) +++ mitk/Modules/SceneSerialization/mitkSceneIO.cpp (working copy) @@ -52,7 +52,9 @@ std::string mitk::SceneIO::CreateEmptyTempDirectory() { - std::string uniquename = Poco::TemporaryFile::tempName(); + //std::string uniquename = Poco::TemporaryFile::tempName(); + std::string uniquename = "/mp3/KAPUTT/lala"; + Poco::File tempdir( uniquename ); try { @@ -397,9 +399,9 @@ return false; // ok? } } - catch(std::exception& /*e*/) + catch(std::exception& e) { - MITK_ERROR << "Could not create ZIP file from " << m_WorkingDirectory; + MITK_ERROR << "Could not create ZIP file from " << m_WorkingDirectory << ": " << e.what(); return false; } return true; Index: mitk/CMakeLists.txt =================================================================== --- mitk/CMakeLists.txt (revision 22022) +++ mitk/CMakeLists.txt (working copy) @@ -5,6 +5,9 @@ cmake_policy(SET CMP0003 OLD) endif(COMMAND cmake_policy) +SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib" "${CMAKE_INSTALL_PREFIX}/lib/mitk") +SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE) + SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/CMake) SET(MITK_MODULES_CONF_DIR ${MITK_BINARY_DIR}/modulesConf CACHE INTERNAL "Modules Conf") @@ -263,56 +266,56 @@ SET(QT_USE_PHONON 1) ENDIF() IF (QT_QTXMLPATTERNS_FOUND) - SET(QT_USE_QTXMLPATTERNS 1) -ENDIF() - - INCLUDE(${QT_USE_FILE}) + SET(QT_USE_QTXMLPATTERNS 1) + ENDIF() + + # this is not a godd idea since it adds the QT include directories to everything that is built below this directory + INCLUDE(${QT_USE_FILE}) - SET(qtdebugdlls) - SET(qtreleasedlls) - FOREACH(qtlib ${QT_LIBRARIES}) - GET_FILENAME_COMPONENT(qtdllname ${qtlib} NAME_WE) - # strip the leading "lib" from the filename for MINGW installs - IF(MINGW) - STRING(REPLACE "lib" "" qtdllname ${qtdllname}) + SET(qtdebugdlls) + SET(qtreleasedlls) + FOREACH(qtlib ${QT_LIBRARIES}) + GET_FILENAME_COMPONENT(qtdllname ${qtlib} NAME_WE) + # strip the leading "lib" from the filename for MINGW installs + IF(MINGW) + STRING(REPLACE "lib" "" qtdllname ${qtdllname}) + ENDIF() + STRING(REGEX MATCH ".*d4" debugmatch ${qtdllname}) + IF(debugmatch) + LIST(APPEND qtdebugdlls "${QT_INCLUDE_DIR}/../bin/${qtdllname}.dll") + ELSE() + STRING(REGEX MATCH ".*4" releasematch ${qtdllname}) + IF(releasematch) + LIST(APPEND qtreleasedlls "${QT_INCLUDE_DIR}/../bin/${qtdllname}.dll") ENDIF() - STRING(REGEX MATCH ".*d4" debugmatch ${qtdllname}) - IF(debugmatch) - LIST(APPEND qtdebugdlls "${QT_INCLUDE_DIR}/../bin/${qtdllname}.dll") - ELSE() - STRING(REGEX MATCH ".*4" releasematch ${qtdllname}) - IF(releasematch) - LIST(APPEND qtreleasedlls "${QT_INCLUDE_DIR}/../bin/${qtdllname}.dll") - ENDIF() - ENDIF() - ENDFOREACH(qtlib) - + ENDIF() + ENDFOREACH(qtlib) + INSTALL(FILES ${qtdebugdlls} DESTINATION bin CONFIGURATIONS Debug) INSTALL(FILES ${qtreleasedlls} DESTINATION bin CONFIGURATIONS Release) - - INSTALL(FILES "${QT_INCLUDE_DIR}/../bin/assistant.exe" DESTINATION bin) - - IF(QT_PLUGINS_DIR) - # install sqllite plugin - IF(EXISTS ${QT_PLUGINS_DIR}/sqldrivers/qsqlite4.dll) - INSTALL(FILES ${QT_PLUGINS_DIR}/sqldrivers/qsqlite4.dll DESTINATION bin/sqldrivers CONFIGURATIONS Release) - INSTALL(FILES ${QT_PLUGINS_DIR}/sqldrivers/qsqlited4.dll DESTINATION bin/sqldrivers CONFIGURATIONS Debug) - ENDIF() - # install imageformat plugins - SET(_img_formats qgif qico qjpeg qsvg qtiff) - FOREACH(_img_format ${_img_formats}) - IF(EXISTS ${QT_PLUGINS_DIR}/imageformats/${_img_format}4.dll) - INSTALL(FILES ${QT_PLUGINS_DIR}/imageformats/${_img_format}4.dll DESTINATION bin/imageformats CONFIGURATIONS Release) - INSTALL(FILES ${QT_PLUGINS_DIR}/imageformats/${_img_format}d4.dll DESTINATION bin/imageformats CONFIGURATIONS Debug) - ENDIF() - ENDFOREACH() - ENDIF() - - + + INSTALL(FILES "${QT_INCLUDE_DIR}/../bin/assistant.exe" DESTINATION bin) + + IF(QT_PLUGINS_DIR) + # install sqllite plugin + IF(EXISTS ${QT_PLUGINS_DIR}/sqldrivers/qsqlite4.dll) + INSTALL(FILES ${QT_PLUGINS_DIR}/sqldrivers/qsqlite4.dll DESTINATION bin/sqldrivers CONFIGURATIONS Release) + INSTALL(FILES ${QT_PLUGINS_DIR}/sqldrivers/qsqlited4.dll DESTINATION bin/sqldrivers CONFIGURATIONS Debug) + ENDIF() + # install imageformat plugins + SET(_img_formats qgif qico qjpeg qsvg qtiff) + FOREACH(_img_format ${_img_formats}) + IF(EXISTS ${QT_PLUGINS_DIR}/imageformats/${_img_format}4.dll) + INSTALL(FILES ${QT_PLUGINS_DIR}/imageformats/${_img_format}4.dll DESTINATION bin/imageformats CONFIGURATIONS Release) + INSTALL(FILES ${QT_PLUGINS_DIR}/imageformats/${_img_format}d4.dll DESTINATION bin/imageformats CONFIGURATIONS Debug) + ENDIF() + ENDFOREACH() + ENDIF() + ENDIF(MITK_USE_QT) IF(MITK_USE_OPEN_CV) - INCLUDE(MITK_OpenCV_Config) + INCLUDE(MITK_OpenCV_Config) FILE(GLOB opencvdebuglllist "${OPENCV_DIR}/bin/Debug/*.dll") FILE(GLOB opencvreleasedlllist "${OPENCV_DIR}/bin/Release/*.dll") @@ -325,11 +328,11 @@ IF(MINGW) FILE(GLOB vtkreleasedlllist ${VTK_RUNTIME_LIBRARY_DIRS}/*.dll) FILE(GLOB vtkdebugdlllist ${VTK_RUNTIME_LIBRARY_DIRS}/*.dll) - - # VTKs freetype library is buggy when used with gcc, need freetype > 2.3.9 - IF(VTK_FREETYPE_LIBRARIES) - INSTALL(FILES ${VTK_FREETYPE_LIBRARIES} DESTINATION bin) - ENDIF() + + # VTKs freetype library is buggy when used with gcc, need freetype > 2.3.9 + IF(VTK_FREETYPE_LIBRARIES) + INSTALL(FILES ${VTK_FREETYPE_LIBRARIES} DESTINATION bin) + ENDIF() ELSE() FILE(GLOB vtkreleasedlllist ${VTK_RUNTIME_LIBRARY_DIRS}/release/*.dll) FILE(GLOB vtkdebugdlllist ${VTK_RUNTIME_LIBRARY_DIRS}/debug/*.dll) @@ -353,14 +356,14 @@ #DCMTK Dlls install target (shared libs on gcc only) IF(MINGW AND DCMTK_ofstd_LIBRARY) SET(_dcmtk_libs - ${DCMTK_dcmdata_LIBRARY} - ${DCMTK_dcmimgle_LIBRARY} - ${DCMTK_dcmnet_LIBRARY} - ${DCMTK_ofstd_LIBRARY} + ${DCMTK_dcmdata_LIBRARY} + ${DCMTK_dcmimgle_LIBRARY} + ${DCMTK_dcmnet_LIBRARY} + ${DCMTK_ofstd_LIBRARY} ) - FOREACH(_dcmtk_lib ${_dcmtk_libs}) - INSTALL(FILES ${_dcmtk_lib} DESTINATION bin) - ENDFOREACH() + FOREACH(_dcmtk_lib ${_dcmtk_libs}) + INSTALL(FILES ${_dcmtk_lib} DESTINATION bin) + ENDFOREACH() ENDIF() #BlueBerry @@ -377,20 +380,82 @@ #MinGW dll IF(MINGW) FIND_LIBRARY(MINGW_RUNTIME_DLL "mingwm10.dll" HINTS ${CMAKE_FIND_ROOT_PATH}/sys-root/mingw/bin) - IF (MINGW_RUNTIME_DLL) + IF (MINGW_RUNTIME_DLL) INSTALL(FILES ${MINGW_RUNTIME_DLL} DESTINATION bin) ELSE() MESSAGE(SEND_ERROR "Could not find mingwm10.dll which is needed for a proper install") ENDIF() - - FIND_LIBRARY(MINGW_GCC_RUNTIME_DLL "libgcc_s_dw2-1.dll" HINTS ${CMAKE_FIND_ROOT_PATH}/sys-root/mingw/bin) - IF (MINGW_GCC_RUNTIME_DLL) + + FIND_LIBRARY(MINGW_GCC_RUNTIME_DLL "libgcc_s_dw2-1.dll" HINTS ${CMAKE_FIND_ROOT_PATH}/sys-root/mingw/bin) + IF (MINGW_GCC_RUNTIME_DLL) INSTALL(FILES ${MINGW_GCC_RUNTIME_DLL} DESTINATION bin) ELSE() MESSAGE(SEND_ERROR "Could not find libgcc_s_dw2-1.dll which is needed for a proper install") ENDIF() ENDIF() +ELSE(WIN32) + FOREACH(vtklib ${VTK_FOR_MITK_LIBRARIES}) + IF(EXISTS ${vtklib}) + # already an absolute path + INSTALL(FILES ${vtklib} DESTINATION lib) + ENDIF(EXISTS ${vtklib}) + ENDFOREACH(vtklib) + + INSTALL(DIRECTORY ${VTK_RUNTIME_LIBRARY_DIRS}/ DESTINATION lib + FILES_MATCHING PATTERN "libvtk*.so*" PATTERN "libVTK*.so*" + ) + + IF(MITK_USE_QT) + INSTALL(DIRECTORY ${VTK_RUNTIME_LIBRARY_DIRS}/ DESTINATION lib + FILES_MATCHING PATTERN "libQ*.so*") + ENDIF() + + + INSTALL(DIRECTORY ${ITK_LIBRARY_DIRS}/ DESTINATION lib + FILES_MATCHING PATTERN "libitk*.so*" PATTERN "libITK*.so*" + ) + + #DCMTK Dlls install target (shared libs on gcc only) + IF(DCMTK_ofstd_LIBRARY) + SET(_dcmtk_libs + ${DCMTK_dcmdata_LIBRARY} + ${DCMTK_dcmimgle_LIBRARY} + ${DCMTK_dcmnet_LIBRARY} + ${DCMTK_ofstd_LIBRARY} + ) + FOREACH(_dcmtk_lib ${_dcmtk_libs}) + INSTALL(FILES ${_dcmtk_lib} DESTINATION lib) + ENDFOREACH() + ENDIF() + + #BlueBerry + IF(MITK_USE_BLUEBERRY) + IF(MINGW) + INSTALL(FILES ${BLUEBERRY_PLUGINS_OUTPUT_DIR}/org.blueberry.osgi/bin/liborg_blueberry_osgid.dll DESTINATION bin CONFIGURATIONS Debug) + INSTALL(FILES ${BLUEBERRY_PLUGINS_OUTPUT_DIR}/org.blueberry.osgi/bin/liborg_blueberry_osgi.dll DESTINATION bin CONFIGURATIONS Release) + ELSE() + #INSTALL(FILES ${BLUEBERRY_PLUGINS_OUTPUT_DIR}/org.blueberry.osgi/bin/debug/liborg_blueberry_osgid.dll DESTINATION bin CONFIGURATIONS Debug) + #INSTALL(FILES ${BLUEBERRY_PLUGINS_OUTPUT_DIR}/org.blueberry.osgi/bin/release/liborg_blueberry_osgi.dll DESTINATION bin CONFIGURATIONS Release) + ENDIF() + ENDIF() + + #MinGW dll + IF(MINGW) + FIND_LIBRARY(MINGW_RUNTIME_DLL "mingwm10.dll" HINTS ${CMAKE_FIND_ROOT_PATH}/sys-root/mingw/bin) + IF (MINGW_RUNTIME_DLL) + INSTALL(FILES ${MINGW_RUNTIME_DLL} DESTINATION bin) + ELSE() + MESSAGE(SEND_ERROR "Could not find mingwm10.dll which is needed for a proper install") + ENDIF() + + FIND_LIBRARY(MINGW_GCC_RUNTIME_DLL "libgcc_s_dw2-1.dll" HINTS ${CMAKE_FIND_ROOT_PATH}/sys-root/mingw/bin) + IF (MINGW_GCC_RUNTIME_DLL) + INSTALL(FILES ${MINGW_GCC_RUNTIME_DLL} DESTINATION bin) + ELSE() + MESSAGE(SEND_ERROR "Could not find libgcc_s_dw2-1.dll which is needed for a proper install") + ENDIF() + ENDIF() ENDIF(WIN32) Index: mint/LesionAnalyzer/Modules/LesionDataModel/CMakeLists.txt =================================================================== --- mint/LesionAnalyzer/Modules/LesionDataModel/CMakeLists.txt (revision 22022) +++ mint/LesionAnalyzer/Modules/LesionDataModel/CMakeLists.txt (working copy) @@ -1,11 +1,8 @@ SET(QT_USE_QTSQL 1) MITK_CREATE_MODULE(LesionDataModel - DEPENDS PersistenceData - CommonDataModel + DEPENDS CommonDataModel + QT_MODULE ) -IF(BUILD_TESTING) ADD_SUBDIRECTORY(Testing) -ENDIF(BUILD_TESTING) - Index: mint/LesionAnalyzer/CMakeLists.txt =================================================================== --- mint/LesionAnalyzer/CMakeLists.txt (revision 22022) +++ mint/LesionAnalyzer/CMakeLists.txt (working copy) @@ -1,38 +1,48 @@ MESSAGE("Configuring LesionAnalyzer") -MITK_USE_MODULE(Mitk) - INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${ALL_INCLUDE_DIRECTORIES}) #MESSAGE("Link directories: ${ALL_INCLUDE_DIRECTORIES}") LINK_DIRECTORIES(${MITK_LINK_DIRECTORIES} ${ALL_INCLUDE_DIRECTORIES}) + +FIND_PACKAGE(Qt 4 REQUIRED) +IF(QT_FOUND) + INCLUDE(${QT_USE_FILE}) -QT4_WRAP_UI(GENERATED_UI_CPP LesionAnalyzer.ui) -#QT4_WRAP_CPP(GENERATED_MOC_CPP QmitkPACSDICOMBrowser.h) -QT4_ADD_RESOURCES(QRC_FILES ressources/LesionAnalyzer.qrc) + ADD_SUBDIRECTORY(Modules) -ADD_EXECUTABLE(LesionAnalyzer - LesionAnalyzer.cpp - ${GENERATED_UI_CPP} - ${GENERATED_MOC_CPP} - ${QRC_FILES} - ) + MITK_USE_MODULE(Mitk) + #MITK_USE_MODULE(LesionDataModel) + #MITK_USE_MODULE(MintMITKTesting) -TARGET_LINK_LIBRARIES(LesionAnalyzer - ${ALL_LIBRARIES} - ${QT_LIBRARIES} - ) + QT4_WRAP_UI(GENERATED_UI_CPP LesionAnalyzer.ui) + #QT4_WRAP_CPP(GENERATED_MOC_CPP QmitkPACSDICOMBrowser.h) + QT4_ADD_RESOURCES(QRC_FILES ressources/LesionAnalyzer.qrc) -ADD_SUBDIRECTORY(Modules) + ADD_EXECUTABLE(LesionAnalyzer + LesionAnalyzer.cpp + ${GENERATED_UI_CPP} + ${GENERATED_MOC_CPP} + ${QRC_FILES} + ) -# A custom test: simply load LesionAnalyzer -ADD_TEST(ApplicationVersion # name of test - ${CMAKE_CURRENT_BINARY_DIR}/LesionAnalyzer --version #commandline - ) -ADD_TEST(ApplicationHelp - ${CMAKE_CURRENT_BINARY_DIR}/LesionAnalyzer --help - ) -ADD_TEST(ApplicationVersionHelp - ${CMAKE_CURRENT_BINARY_DIR}/LesionAnalyzer --version --help - ) + TARGET_LINK_LIBRARIES(LesionAnalyzer + ${ALL_LIBRARIES} + ${QT_LIBRARIES} + ) + # A custom test: simply load LesionAnalyzer + ADD_TEST(ApplicationVersion # name of test + ${CMAKE_CURRENT_BINARY_DIR}/LesionAnalyzer --version #commandline + ) + ADD_TEST(ApplicationHelp + ${CMAKE_CURRENT_BINARY_DIR}/LesionAnalyzer --help + ) + ADD_TEST(ApplicationVersionHelp + ${CMAKE_CURRENT_BINARY_DIR}/LesionAnalyzer --version --help + ) +ELSE(QT_FOUND) + MESSAGE(FATAL_ERROR "Qt not found. Please set QT_QMAKE_EXECUTABLE to your qmake executable") +ENDIF(QT_FOUND) + + Index: mint/Modules/CommonDataModel/CMakeLists.txt =================================================================== --- mint/Modules/CommonDataModel/CMakeLists.txt (revision 22022) +++ mint/Modules/CommonDataModel/CMakeLists.txt (working copy) @@ -1,10 +1,8 @@ SET(QT_USE_QTSQL 1) MITK_CREATE_MODULE(CommonDataModel DEPENDS PersistenceData + QT_MODULE ) -IF(BUILD_TESTING) ADD_SUBDIRECTORY(Testing) -ENDIF(BUILD_TESTING) - Index: mint/Modules/CommonDataModel/Testing/CMakeLists.txt =================================================================== --- mint/Modules/CommonDataModel/Testing/CMakeLists.txt (revision 22022) +++ mint/Modules/CommonDataModel/Testing/CMakeLists.txt (working copy) @@ -1,4 +1,4 @@ MITK_USE_MODULE(Mitk) INCLUDE_DIRECTORIES(${ALL_INCLUDE_DIRECTORIES}) -MITK_CREATE_MODULE_TESTS() \ No newline at end of file +#MITK_CREATE_MODULE_TESTS() Index: mint/Modules/MintMITKTesting/files.cmake =================================================================== --- mint/Modules/MintMITKTesting/files.cmake (revision 0) +++ mint/Modules/MintMITKTesting/files.cmake (revision 0) @@ -0,0 +1,15 @@ +SET(CPP_FILES + dummy.cpp + QmitkRenderingTestHelper.cpp +) + +SET(MODULE_TESTS + mitkRenderingTest.cpp + FrustumClip.cxx +) + +SET(MODULE_TEST_PARAMETERS + FrustumClip "-T ${PROJECT_BINARY_DIR}/Testing/Temporary -V ${CMAKE_CURRENT_SOURCE_DIR}/Data/black-512-512.png" + FrustumClip "-T ${PROJECT_BINARY_DIR}/Testing/Temporary -V ${CMAKE_CURRENT_SOURCE_DIR}/Data/black-512-512.png" +) + Index: mint/Modules/MintMITKTesting/mitkRenderingTest.cpp =================================================================== --- mint/Modules/MintMITKTesting/mitkRenderingTest.cpp (revision 0) +++ mint/Modules/MintMITKTesting/mitkRenderingTest.cpp (revision 0) @@ -0,0 +1,123 @@ +/*========================================================================= + +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 "QmitkRenderingTestHelper.h" + +class mitkRenderingTestHelperClass +{ + +public: + +static void AddToStorage(const std::string& s) +{ + mitk::BaseData::Pointer data = LoadBaseData(s); +} + +static void print(const std::string& s) +{ + MITK_TEST_OUTPUT_NO_ENDL( << s) +} + +static mitk::BaseData::Pointer LoadBaseData(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 ); + 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) + { + 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 + QmitkRenderingTestHelper renderingHelper( argc, argv, 400, 300, mitkRenderingTestHelperClass::s_DataStorage ); + int retVal = vtkRegressionTestImage( renderingHelper.GetVtkRenderWindow() ); + + MITK_TEST_CONDITION( !retVal, "Returning VTK test result" ) + + MITK_TEST_END() +} + Index: mint/Modules/MintMITKTesting/QmitkRenderingTestHelper.cpp =================================================================== --- mint/Modules/MintMITKTesting/QmitkRenderingTestHelper.cpp (revision 0) +++ mint/Modules/MintMITKTesting/QmitkRenderingTestHelper.cpp (revision 0) @@ -0,0 +1,89 @@ +/*========================================================================= + +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 "QmitkRenderingTestHelper.h" +#include "QmitkRegisterClasses.h" +#include "QmitkRenderWindow.h" + +#include "mitkStandaloneDataStorage.h" + +#include +#include +#include + +#include + +QmitkRenderingTestHelper::QmitkRenderingTestHelper(int argc, char * argv[],int width,int height,mitk::DataStorage *ds) +{ + m_QtApp = new QApplication(argc,argv); + + QmitkRegisterClasses(); + + m_RenderWindow = new QmitkRenderWindow(); + + m_RenderWindow->GetRenderer()->SetDataStorage(ds); + + /* + // Select a slice + mitk::SliceNavigationController::Pointer sliceNaviController = renderWindow.GetSliceNavigationController(); + if (sliceNaviController) + sliceNaviController->GetSlice()->SetPos( 0 ); + */ + m_RenderWindow->resize( width, height ); + + mitk::RenderingManager::GetInstance()->InitializeViews(); + + m_RenderWindow->show(); +} + +QmitkRenderingTestHelper::~QmitkRenderingTestHelper() +{ + delete m_RenderWindow; + delete m_QtApp; +} + +vtkRenderer* QmitkRenderingTestHelper::GetVtkRenderer() +{ + return m_RenderWindow->GetRenderer()->GetVtkRenderer(); +} + +vtkRenderWindow* QmitkRenderingTestHelper::GetVtkRenderWindow() +{ + return m_RenderWindow->GetRenderer()->GetVtkRenderer()->GetRenderWindow(); +} + +void QmitkRenderingTestHelper::SaveAsPNG(std::string fileName) +{ + vtkRenderer* renderer = GetVtkRenderer(); + bool doubleBuffering( renderer->GetRenderWindow()->GetDoubleBuffer() ); + renderer->GetRenderWindow()->DoubleBufferOff(); + + vtkRenderLargeImage* magnifier = vtkRenderLargeImage::New(); + magnifier->SetInput(renderer); + magnifier->SetMagnification(1.0); + + + vtkImageWriter* fileWriter = vtkPNGWriter::New(); + fileWriter->SetInput(magnifier->GetOutput()); + fileWriter->SetFileName(fileName.c_str()); + + + fileWriter->Write(); + fileWriter->Delete(); + renderer->GetRenderWindow()->SetDoubleBuffer(doubleBuffering); +} + Property changes on: mint/Modules/MintMITKTesting/QmitkRenderingTestHelper.cpp ___________________________________________________________________ Added: svn:executable + * Index: mint/Modules/MintMITKTesting/Data/black-512-512.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mint/Modules/MintMITKTesting/Data/black-512-512.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Index: mint/Modules/MintMITKTesting/QmitkRenderingTestHelper.h =================================================================== --- mint/Modules/MintMITKTesting/QmitkRenderingTestHelper.h (revision 0) +++ mint/Modules/MintMITKTesting/QmitkRenderingTestHelper.h (revision 0) @@ -0,0 +1,54 @@ +/*========================================================================= + +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 QmitkRenderingTestHelper_h +#define QmitkRenderingTestHelper_h + +#include + +class QApplication; +class QmitkRenderWindow; +class vtkRenderWindow; +class vtkRenderer; + +namespace mitk +{ + class DataStorage; +} + +class QmitkRenderingTestHelper +{ + public: + + QmitkRenderingTestHelper( int argc, char* argv[], + int width, int height, + mitk::DataStorage* ds); + + ~QmitkRenderingTestHelper(); + + vtkRenderer* GetVtkRenderer(); + vtkRenderWindow* GetVtkRenderWindow(); + void SaveAsPNG(std::string fileName); + + protected: + + QApplication* m_QtApp; + QmitkRenderWindow* m_RenderWindow; +}; + +#endif + Property changes on: mint/Modules/MintMITKTesting/QmitkRenderingTestHelper.h ___________________________________________________________________ Added: svn:executable + * Index: mint/Modules/MintMITKTesting/dummy.cpp =================================================================== --- mint/Modules/MintMITKTesting/dummy.cpp (revision 0) +++ mint/Modules/MintMITKTesting/dummy.cpp (revision 0) @@ -0,0 +1 @@ +#include Index: mint/Modules/MintMITKTesting/CMakeLists.txt =================================================================== --- mint/Modules/MintMITKTesting/CMakeLists.txt (revision 0) +++ mint/Modules/MintMITKTesting/CMakeLists.txt (revision 0) @@ -0,0 +1,10 @@ +#LINK_DIRECTORIES(/home/maleike/mitk/bin-public/bin/) + +MITK_CREATE_MODULE(MintMITKTesting + DEPENDS Qmitk QT_MODULE + ) + +SET(MINT_TEST_DATA_DIR ${CMAKE_CURRENT_SOURCE_DIR}) +SET(MINT_TEST_OUTPUT_DIR ${PROJECT_BINARY_DIR}) + +MITK_CREATE_MODULE_TESTS() Index: mint/Modules/MintMITKTesting/FrustumClip.cxx =================================================================== --- mint/Modules/MintMITKTesting/FrustumClip.cxx (revision 0) +++ mint/Modules/MintMITKTesting/FrustumClip.cxx (revision 0) @@ -0,0 +1,108 @@ +/*========================================================================= + + Program: Visualization Toolkit + Module: $RCSfile: FrustumClip.cxx,v $ + + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen + All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm 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 notice for more information. + +=========================================================================*/ +#include "vtkActor.h" +#include "vtkCamera.h" +#include "vtkClipPolyData.h" +#include "vtkDebugLeaks.h" +#include "vtkPlanes.h" +#include "vtkPolyDataMapper.h" +#include "vtkProperty.h" +#include "vtkRegressionTestImage.h" +#include "vtkRenderWindow.h" +#include "vtkRenderWindowInteractor.h" +#include "vtkRenderer.h" +#include "vtkRenderer.h" +#include "vtkSphereSource.h" + +// Generate a sphere. Create a view frustum looking at the sphere +// Clip anything inside the frustum, then back away and view result + +int FrustumClip( int argc, char *argv[] ) +{ + vtkRenderer *renderer = vtkRenderer::New(); + vtkRenderWindow *renWin = vtkRenderWindow::New(); + renWin->AddRenderer(renderer); + vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New(); + iren->SetRenderWindow(renWin); + + vtkSphereSource *sphere = vtkSphereSource::New(); + sphere->SetThetaResolution(36); + sphere->SetPhiResolution(18); + sphere->SetRadius(1); + + vtkPolyDataMapper *sphereMapper = vtkPolyDataMapper::New(); + sphereMapper->SetInputConnection( sphere->GetOutputPort()); + + vtkActor *sphereActor = vtkActor::New(); + sphereActor->SetMapper(sphereMapper); + + renderer->AddActor(sphereActor); + renderer->SetBackground(1,1,1); + renWin->SetSize(400,300); + + vtkCamera *camera = renderer->GetActiveCamera(); + camera->SetPosition(1.5, 0.0, 0.0); + renderer->ResetCameraClippingRange(); + + // Display once with camera in position 1 + // Ensures clipping planes are initialized (camera matrix really). + renWin->Render(); + + // Now get the camera frustum and then move the camera away to see the + // clipped away stuff + double aspect=400.0/300.0, planeequations[24]; + camera->GetFrustumPlanes(aspect, planeequations); + + vtkPlanes *implictplanes = vtkPlanes::New(); + // TODO cleanup + double ped[24]; + int i; + for (i = 0; i < 24; ++i) + { + ped[i] = planeequations[i]; + } + implictplanes->SetFrustumPlanes(ped); + + vtkClipPolyData *clipper = vtkClipPolyData::New(); + clipper->SetInputConnection(sphere->GetOutputPort()); + clipper->SetClipFunction(implictplanes); + clipper->SetGenerateClipScalars(1); + clipper->SetInsideOut(0); + sphereMapper->SetInputConnection( clipper->GetOutputPort()); + + camera->SetPosition(-4.0, 0.25, 0.25); + renderer->ResetCameraClippingRange(); + + sphereActor->GetProperty()->SetColor(0.0,0.0,0.0); + renWin->Render(); + + int retVal = vtkRegressionTestImage( renWin ); + + if ( retVal == vtkRegressionTester::DO_INTERACTOR) + { + iren->Start(); + } + // Clean up + renderer->Delete(); + renWin->Delete(); + iren->Delete(); + sphere->Delete(); + sphereMapper->Delete(); + sphereActor->Delete(); + implictplanes->Delete(); + clipper->Delete(); + + return !retVal; +} Index: mint/Modules/CMakeLists.txt =================================================================== --- mint/Modules/CMakeLists.txt (revision 22022) +++ mint/Modules/CMakeLists.txt (working copy) @@ -1,2 +1,3 @@ +ADD_SUBDIRECTORY(MintMITKTesting) ADD_SUBDIRECTORY(PersistenceData) -ADD_SUBDIRECTORY(CommonDataModel) \ No newline at end of file +ADD_SUBDIRECTORY(CommonDataModel) Index: mint/Modules/PersistenceData/CMakeLists.txt =================================================================== --- mint/Modules/PersistenceData/CMakeLists.txt (revision 22022) +++ mint/Modules/PersistenceData/CMakeLists.txt (working copy) @@ -1,13 +1,9 @@ -SET(QT_USE_QTSQL TRUE) +SET(QT_USE_QTSQL 1) MITK_CREATE_MODULE(PersistenceData DEPENDS Mitk - PACKAGE_DEPENDS QT + QT_MODULE ) - -IF(BUILD_TESTING) ADD_SUBDIRECTORY(Testing) -ENDIF(BUILD_TESTING) - Index: mint/CMakeLists.txt =================================================================== --- mint/CMakeLists.txt (revision 22022) +++ mint/CMakeLists.txt (working copy) @@ -7,30 +7,22 @@ FIND_PACKAGE(MITK REQUIRED) SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${MITK_BIN_DIR}) -MESSAGE("MITK_SOURCE_DIR: ${MITK_SOURCE_DIR} CMAKE_MODULE_PATH: ${CMAKE_MODULE_PATH}") -# find Qt -FIND_PACKAGE(Qt 4 REQUIRED) -IF(QT_FOUND) - INCLUDE(${QT_USE_FILE}) +# actually start defining our project - IF(MITK_FOUND) - MESSAGE("MITK found:\n source dir ${MITK_SOURCE_DIR} \n libraries ${MITK_LIBRARIES}\n libraries in ${MITK_LINK_DIRECTORIES}\n ITK from ${ITK_DIR}\n VTK from ${VTK_DIR}") - ENDIF(MITK_FOUND) - - OPTION(BUILD_SHARED_LIBS "Build shared libraries (not static)" ON) +IF(MITK_FOUND) + MESSAGE("MITK_SOURCE_DIR: ${MITK_SOURCE_DIR} CMAKE_MODULE_PATH: ${CMAKE_MODULE_PATH}") + #MESSAGE("MITK found:\n source dir ${MITK_SOURCE_DIR} \n libraries ${MITK_LIBRARIES}\n libraries in ${MITK_LINK_DIRECTORIES}\n ITK from ${ITK_DIR}\n VTK from ${VTK_DIR}") + MESSAGE("MITK_MODULES_CONF_DIR ${MITK_MODULES_CONF_DIR}") +ENDIF(MITK_FOUND) - SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) - SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) - - ADD_SUBDIRECTORY(Modules) - ADD_SUBDIRECTORY(LesionAnalyzer) -ELSE(QT_FOUND) - MESSAGE(FATAL_ERROR "Qt not found. Please set QT_QMAKE_EXECUTABLE to your qmake executable") +OPTION(BUILD_SHARED_LIBS "Build shared libraries (not static)" ON) -ADD_SUBDIRECTORY(Liver) +SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) +SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) -ENDIF(QT_FOUND) +ADD_SUBDIRECTORY(Modules) +ADD_SUBDIRECTORY(LesionAnalyzer) # Doxygen documentation FIND_PACKAGE(Doxygen)