]> Creatis software - clitk.git/commitdiff
Merge branch 'master' of git.creatis.insa-lyon.fr:clitk
authorSimon Rit <simon.rit@creatis.insa-lyon.fr>
Wed, 10 Oct 2012 08:26:39 +0000 (10:26 +0200)
committerSimon Rit <simon.rit@creatis.insa-lyon.fr>
Wed, 10 Oct 2012 08:26:39 +0000 (10:26 +0200)
Conflicts:
vv/vv.cxx

105 files changed:
cmake/FindGengetopt.cmake
segmentation/clitkExtractLungFilter.txx
superbuild/CMakeLists.txt [new file with mode: 0644]
tools/clitkWriteDicomSeries.ggo
tools/clitkWriteDicomSeriesGenericFilter.txx
utilities/gengetopt/CMakeLists.txt [moved from cmake/gengetopt/CMakeLists.txt with 100% similarity]
utilities/gengetopt/Makefile.am [moved from cmake/gengetopt/Makefile.am with 100% similarity]
utilities/gengetopt/acceptedvalues.cpp [moved from cmake/gengetopt/acceptedvalues.cpp with 100% similarity]
utilities/gengetopt/acceptedvalues.h [moved from cmake/gengetopt/acceptedvalues.h with 100% similarity]
utilities/gengetopt/argsdef.c [moved from cmake/gengetopt/argsdef.c with 100% similarity]
utilities/gengetopt/argsdef.h [moved from cmake/gengetopt/argsdef.h with 100% similarity]
utilities/gengetopt/cmdline.c [moved from cmake/gengetopt/cmdline.c with 100% similarity]
utilities/gengetopt/cmdline.ggo [moved from cmake/gengetopt/cmdline.ggo with 100% similarity]
utilities/gengetopt/cmdline.h [moved from cmake/gengetopt/cmdline.h with 100% similarity]
utilities/gengetopt/errorcodes.h [moved from cmake/gengetopt/errorcodes.h with 100% similarity]
utilities/gengetopt/fileutils.cpp [moved from cmake/gengetopt/fileutils.cpp with 100% similarity]
utilities/gengetopt/fileutils.h [moved from cmake/gengetopt/fileutils.h with 100% similarity]
utilities/gengetopt/gengetopt.cc [moved from cmake/gengetopt/gengetopt.cc with 100% similarity]
utilities/gengetopt/gengetopt.h [moved from cmake/gengetopt/gengetopt.h with 100% similarity]
utilities/gengetopt/getopt.c [moved from cmake/gengetopt/getopt.c with 100% similarity]
utilities/gengetopt/getopt.h [moved from cmake/gengetopt/getopt.h with 100% similarity]
utilities/gengetopt/getopt1.c [moved from cmake/gengetopt/getopt1.c with 100% similarity]
utilities/gengetopt/ggo_options.h [moved from cmake/gengetopt/ggo_options.h with 100% similarity]
utilities/gengetopt/ggos.cpp [moved from cmake/gengetopt/ggos.cpp with 100% similarity]
utilities/gengetopt/ggos.h [moved from cmake/gengetopt/ggos.h with 100% similarity]
utilities/gengetopt/global_opts.h [moved from cmake/gengetopt/global_opts.h with 100% similarity]
utilities/gengetopt/globals.cpp [moved from cmake/gengetopt/globals.cpp with 100% similarity]
utilities/gengetopt/globals.h [moved from cmake/gengetopt/globals.h with 100% similarity]
utilities/gengetopt/gm.cc [moved from cmake/gengetopt/gm.cc with 100% similarity]
utilities/gengetopt/gm.h [moved from cmake/gengetopt/gm.h with 100% similarity]
utilities/gengetopt/gm_utils.cpp [moved from cmake/gengetopt/gm_utils.cpp with 100% similarity]
utilities/gengetopt/gm_utils.h [moved from cmake/gengetopt/gm_utils.h with 100% similarity]
utilities/gengetopt/groups.h [moved from cmake/gengetopt/groups.h with 100% similarity]
utilities/gengetopt/my_map.h [moved from cmake/gengetopt/my_map.h with 100% similarity]
utilities/gengetopt/my_sstream.h [moved from cmake/gengetopt/my_sstream.h with 100% similarity]
utilities/gengetopt/my_string.h [moved from cmake/gengetopt/my_string.h with 100% similarity]
utilities/gengetopt/parser.cc [moved from cmake/gengetopt/parser.cc with 100% similarity]
utilities/gengetopt/parser.h [moved from cmake/gengetopt/parser.h with 100% similarity]
utilities/gengetopt/parser.yy [moved from cmake/gengetopt/parser.yy with 100% similarity]
utilities/gengetopt/scanner.cc [moved from cmake/gengetopt/scanner.cc with 100% similarity]
utilities/gengetopt/skels/Makefile.am [moved from cmake/gengetopt/skels/Makefile.am with 100% similarity]
utilities/gengetopt/skels/c_source.cc [moved from cmake/gengetopt/skels/c_source.cc with 100% similarity]
utilities/gengetopt/skels/c_source.h [moved from cmake/gengetopt/skels/c_source.h with 100% similarity]
utilities/gengetopt/skels/check_modes.cc [moved from cmake/gengetopt/skels/check_modes.cc with 100% similarity]
utilities/gengetopt/skels/check_modes.h [moved from cmake/gengetopt/skels/check_modes.h with 100% similarity]
utilities/gengetopt/skels/clear_arg.cc [moved from cmake/gengetopt/skels/clear_arg.cc with 100% similarity]
utilities/gengetopt/skels/clear_arg.h [moved from cmake/gengetopt/skels/clear_arg.h with 100% similarity]
utilities/gengetopt/skels/clear_given.cc [moved from cmake/gengetopt/skels/clear_given.cc with 100% similarity]
utilities/gengetopt/skels/clear_given.h [moved from cmake/gengetopt/skels/clear_given.h with 100% similarity]
utilities/gengetopt/skels/copyright.cc [moved from cmake/gengetopt/skels/copyright.cc with 100% similarity]
utilities/gengetopt/skels/copyright.h [moved from cmake/gengetopt/skels/copyright.h with 100% similarity]
utilities/gengetopt/skels/custom_getopt_gen.cc [moved from cmake/gengetopt/skels/custom_getopt_gen.cc with 100% similarity]
utilities/gengetopt/skels/custom_getopt_gen.h [moved from cmake/gengetopt/skels/custom_getopt_gen.h with 100% similarity]
utilities/gengetopt/skels/dependant_option.cc [moved from cmake/gengetopt/skels/dependant_option.cc with 100% similarity]
utilities/gengetopt/skels/dependant_option.h [moved from cmake/gengetopt/skels/dependant_option.h with 100% similarity]
utilities/gengetopt/skels/enum_decl.cc [moved from cmake/gengetopt/skels/enum_decl.cc with 100% similarity]
utilities/gengetopt/skels/enum_decl.h [moved from cmake/gengetopt/skels/enum_decl.h with 100% similarity]
utilities/gengetopt/skels/exit_failure.cc [moved from cmake/gengetopt/skels/exit_failure.cc with 100% similarity]
utilities/gengetopt/skels/exit_failure.h [moved from cmake/gengetopt/skels/exit_failure.h with 100% similarity]
utilities/gengetopt/skels/file_save.cc [moved from cmake/gengetopt/skels/file_save.cc with 100% similarity]
utilities/gengetopt/skels/file_save.h [moved from cmake/gengetopt/skels/file_save.h with 100% similarity]
utilities/gengetopt/skels/file_save_multiple.cc [moved from cmake/gengetopt/skels/file_save_multiple.cc with 100% similarity]
utilities/gengetopt/skels/file_save_multiple.h [moved from cmake/gengetopt/skels/file_save_multiple.h with 100% similarity]
utilities/gengetopt/skels/free_list.cc [moved from cmake/gengetopt/skels/free_list.cc with 100% similarity]
utilities/gengetopt/skels/free_list.h [moved from cmake/gengetopt/skels/free_list.h with 100% similarity]
utilities/gengetopt/skels/free_multiple.cc [moved from cmake/gengetopt/skels/free_multiple.cc with 100% similarity]
utilities/gengetopt/skels/free_multiple.h [moved from cmake/gengetopt/skels/free_multiple.h with 100% similarity]
utilities/gengetopt/skels/free_string.cc [moved from cmake/gengetopt/skels/free_string.cc with 100% similarity]
utilities/gengetopt/skels/free_string.h [moved from cmake/gengetopt/skels/free_string.h with 100% similarity]
utilities/gengetopt/skels/generic_option.cc [moved from cmake/gengetopt/skels/generic_option.cc with 100% similarity]
utilities/gengetopt/skels/generic_option.h [moved from cmake/gengetopt/skels/generic_option.h with 100% similarity]
utilities/gengetopt/skels/given_field.cc [moved from cmake/gengetopt/skels/given_field.cc with 100% similarity]
utilities/gengetopt/skels/given_field.h [moved from cmake/gengetopt/skels/given_field.h with 100% similarity]
utilities/gengetopt/skels/group_counter.cc [moved from cmake/gengetopt/skels/group_counter.cc with 100% similarity]
utilities/gengetopt/skels/group_counter.h [moved from cmake/gengetopt/skels/group_counter.h with 100% similarity]
utilities/gengetopt/skels/group_option.cc [moved from cmake/gengetopt/skels/group_option.cc with 100% similarity]
utilities/gengetopt/skels/group_option.h [moved from cmake/gengetopt/skels/group_option.h with 100% similarity]
utilities/gengetopt/skels/handle_help.cc [moved from cmake/gengetopt/skels/handle_help.cc with 100% similarity]
utilities/gengetopt/skels/handle_help.h [moved from cmake/gengetopt/skels/handle_help.h with 100% similarity]
utilities/gengetopt/skels/handle_version.cc [moved from cmake/gengetopt/skels/handle_version.cc with 100% similarity]
utilities/gengetopt/skels/handle_version.h [moved from cmake/gengetopt/skels/handle_version.h with 100% similarity]
utilities/gengetopt/skels/header.cc [moved from cmake/gengetopt/skels/header.cc with 100% similarity]
utilities/gengetopt/skels/header.h [moved from cmake/gengetopt/skels/header.h with 100% similarity]
utilities/gengetopt/skels/init_args_info.cc [moved from cmake/gengetopt/skels/init_args_info.cc with 100% similarity]
utilities/gengetopt/skels/init_args_info.h [moved from cmake/gengetopt/skels/init_args_info.h with 100% similarity]
utilities/gengetopt/skels/multiple_fill_array.cc [moved from cmake/gengetopt/skels/multiple_fill_array.cc with 100% similarity]
utilities/gengetopt/skels/multiple_fill_array.h [moved from cmake/gengetopt/skels/multiple_fill_array.h with 100% similarity]
utilities/gengetopt/skels/multiple_opt_list.cc [moved from cmake/gengetopt/skels/multiple_opt_list.cc with 100% similarity]
utilities/gengetopt/skels/multiple_opt_list.h [moved from cmake/gengetopt/skels/multiple_opt_list.h with 100% similarity]
utilities/gengetopt/skels/option_arg.cc [moved from cmake/gengetopt/skels/option_arg.cc with 100% similarity]
utilities/gengetopt/skels/option_arg.h [moved from cmake/gengetopt/skels/option_arg.h with 100% similarity]
utilities/gengetopt/skels/print_help_string.cc [moved from cmake/gengetopt/skels/print_help_string.cc with 100% similarity]
utilities/gengetopt/skels/print_help_string.h [moved from cmake/gengetopt/skels/print_help_string.h with 100% similarity]
utilities/gengetopt/skels/required_option.cc [moved from cmake/gengetopt/skels/required_option.cc with 100% similarity]
utilities/gengetopt/skels/required_option.h [moved from cmake/gengetopt/skels/required_option.h with 100% similarity]
utilities/gengetopt/skels/reset_group.cc [moved from cmake/gengetopt/skels/reset_group.cc with 100% similarity]
utilities/gengetopt/skels/reset_group.h [moved from cmake/gengetopt/skels/reset_group.h with 100% similarity]
utilities/gengetopt/skels/update_given.cc [moved from cmake/gengetopt/skels/update_given.cc with 100% similarity]
utilities/gengetopt/skels/update_given.h [moved from cmake/gengetopt/skels/update_given.h with 100% similarity]
utilities/gengetopt/yyerror.cc [moved from cmake/gengetopt/yyerror.cc with 100% similarity]
utilities/gengetopt/yyerror.h [moved from cmake/gengetopt/yyerror.h with 100% similarity]
utilities/gengetopt/yywrap.c [moved from cmake/gengetopt/yywrap.c with 100% similarity]
vv/CMakeLists.txt
vv/vv.cxx
vv/vvSlicerManager.cxx

index 77665420bac997f7b3cf40031890c18912b161bb..95f2a474897059f2a7248f1b80267c053b84c268 100644 (file)
@@ -3,7 +3,7 @@
 FIND_PROGRAM(GENGETOPT gengetopt)
 IF (GENGETOPT STREQUAL "GENGETOPT-NOTFOUND")
   GET_FILENAME_COMPONENT(CLITK_CMAKE_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
-  ADD_SUBDIRECTORY(${CLITK_CMAKE_DIR}/gengetopt ${CMAKE_CURRENT_BINARY_DIR}/gengetopt)
+  ADD_SUBDIRECTORY(${CLITK_CMAKE_DIR}/../utilities/gengetopt ${CMAKE_CURRENT_BINARY_DIR}/gengetopt)
 ELSE(GENGETOPT STREQUAL "GENGETOPT-NOTFOUND")
   ADD_EXECUTABLE(gengetopt IMPORTED)
   SET_PROPERTY(TARGET gengetopt PROPERTY IMPORTED_LOCATION ${GENGETOPT})
@@ -32,4 +32,11 @@ MACRO (WRAP_GGO GGO_SRCS)
     INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
   ENDFOREACH(GGO_FILE)
   SET_SOURCE_FILES_PROPERTIES(${${GGO_SRCS}} PROPERTIES GENERATED TRUE)
+  IF(CMAKE_COMPILER_IS_GNUCXX)
+    FIND_PROGRAM(DEFAULT_GCC gcc)
+    EXEC_PROGRAM(${DEFAULT_GCC} ARGS "-dumpversion" OUTPUT_VARIABLE GCCVER)
+    IF("${GCCVER}" VERSION_GREATER "4.5.2")
+      SET_SOURCE_FILES_PROPERTIES(${${GGO_SRCS}} PROPERTIES COMPILE_FLAGS "-Wno-unused-but-set-variable")
+    ENDIF("${GCCVER}" VERSION_GREATER "4.5.2")
+  ENDIF(CMAKE_COMPILER_IS_GNUCXX)
 ENDMACRO (WRAP_GGO)
index 8dcdb5b04dffcffa4118269abee862c31742b53a..ffca1df50276062599cbcd22e76666cc25ce9a07 100644 (file)
@@ -812,7 +812,7 @@ TracheaRegionGrowing()
   f->SetUpper(GetUpperThresholdForTrachea());
   f->SetMinimumLowerThreshold(-2000);
   //  f->SetMaximumUpperThreshold(0); // MAYBE TO CHANGE ???
-  f->SetMaximumUpperThreshold(-700); // MAYBE TO CHANGE ???
+  f->SetMaximumUpperThreshold(-300); // MAYBE TO CHANGE ???
   f->SetAdaptLowerBorder(false);
   f->SetAdaptUpperBorder(true);
   f->SetMinimumSize(5000); 
diff --git a/superbuild/CMakeLists.txt b/superbuild/CMakeLists.txt
new file mode 100644 (file)
index 0000000..08e85ed
--- /dev/null
@@ -0,0 +1,175 @@
+cmake_minimum_required(VERSION 2.8)
+cmake_policy(VERSION 2.8)
+
+# set a default build type if it is undefined, then make sure it goes in the cache
+if(NOT CMAKE_BUILD_TYPE)
+  set(CMAKE_BUILD_TYPE Release)
+endif()
+set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Build configuration type" FORCE)
+set(build_type ${CMAKE_BUILD_TYPE})
+
+#=========================================================
+MACRO (DD in)
+    MESSAGE(${in}=${${in}})
+ENDMACRO(DD)
+#=========================================================
+
+project(SuperBuild_VV)
+
+if(MSVC)
+  set(CMAKE_C_FLAGS_DEBUG          "/D_DEBUG /MTd /Zi /Ob0 /Od /RTC1" CACHE STRING "" FORCE)
+  set(CMAKE_C_FLAGS_MINSIZEREL     "/MT /O1 /Ob1 /D NDEBUG" CACHE STRING "" FORCE)
+  set(CMAKE_C_FLAGS_RELEASE        "/MT /O2 /Ob2 /D NDEBUG" CACHE STRING "" FORCE)
+  set(CMAKE_C_FLAGS_RELWITHDEBINFO "/MT /Zi /O2 /Ob1 /D NDEBUG" CACHE STRING "" FORCE)
+
+  set(CMAKE_CXX_FLAGS_DEBUG          "/D_DEBUG /MTd /Zi /Ob0 /Od /RTC1" CACHE STRING "" FORCE)
+  set(CMAKE_CXX_FLAGS_MINSIZEREL     "/MT /O1 /Ob1 /D NDEBUG" CACHE STRING "" FORCE)
+  set(CMAKE_CXX_FLAGS_RELEASE        "/MT /O2 /Ob2 /D NDEBUG" CACHE STRING "" FORCE)
+  set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MT /Zi /O2 /Ob1 /D NDEBUG" CACHE STRING "" FORCE)
+endif(MSVC)
+
+include(ExternalProject)
+
+set(base "${CMAKE_BINARY_DIR}")
+set_property(DIRECTORY PROPERTY EP_BASE ${base})
+set(source_prefix ${base}/Source)
+set(build_prefix ${base}/Build)
+set(install_prefix ${base}/Install)
+
+find_package(Git REQUIRED)
+
+#=========================================================
+# QT
+SET(QtWinSpecFiles "${source_prefix}/qt/mkspecs/win32-msvc2003/qmake.conf";
+                   "${source_prefix}/qt/mkspecs/win32-msvc2005/qmake.conf";
+                   "${source_prefix}/qt/mkspecs/win32-msvc2008/qmake.conf";
+                   "${source_prefix}/qt/mkspecs/win32-msvc2010/qmake.conf")
+ExternalProject_Add(
+  QT
+  SOURCE_DIR ${source_prefix}/qt
+  GIT_REPOSITORY git://gitorious.org/qt/qt.git
+  GIT_TAG v4.8.3
+  PATCH_COMMAND sed -i "s/\\-MD/-MT/g" ${QtWinSpecFiles}
+  CONFIGURE_COMMAND ${source_prefix}/qt/configure -confirm-license
+                                                  -static 
+                                                  -fast
+                                                  -opensource
+                                                  -release
+                                                  -prefix ${build_prefix}/QT
+                                                  -nomake examples
+                                                  -nomake demos
+                                                  -qt-libpng
+                                                  -no-libtiff
+                                                  -no-libjpeg
+                                                  -no-libmng
+  INSTALL_COMMAND ""
+)
+SET(qmake_executable "${build_prefix}/QT/bin/qmake")
+#=========================================================
+
+#=========================================================
+# VTK
+SET(VTK_CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES}")
+IF(MSVC)
+  SET(VTK_CMAKE_CXX_STANDARD_LIBRARIES "${VTK_CMAKE_CXX_STANDARD_LIBRARIES} Imm32.lib Winmm.lib Ws2_32.lib")
+ENDIF(MSVC)
+ExternalProject_Add(
+  VTK 
+  DEPENDS QT
+  SOURCE_DIR ${source_prefix}/vtk
+  GIT_REPOSITORY git://vtk.org/VTK.git
+  GIT_TAG v5.10.0
+  INSTALL_COMMAND ""
+  CMAKE_ARGS
+    -DQT_QMAKE_EXECUTABLE:FILEPATH=${qmake_executable}
+    -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG}
+    -DCMAKE_C_FLAGS_MINSIZEREL:STRING=${CMAKE_C_FLAGS_MINSIZEREL}
+    -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}
+    -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO}
+    -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG}
+    -DCMAKE_CXX_FLAGS_MINSIZEREL:STRING=${CMAKE_CXX_FLAGS_MINSIZEREL}
+    -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}
+    -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
+    -DCMAKE_INSTALL_PREFIX:PATH=${install_prefix}/${proj}
+    -DCMAKE_BUILD_TYPE:STRING=${build_type}
+    -DBUILD_SHARED_LIBS:BOOL=OFF
+    -DBUILD_EXAMPLES:BOOL=OFF
+    -DBUILD_TESTING:BOOL=OFF
+    -DVTK_USE_QT:BOOL=ON
+    -DVTK_USE_QVTK_QTOPENGL:BOOL=ON
+    -DCMAKE_CXX_STANDARD_LIBRARIES:STRING=${VTK_CMAKE_CXX_STANDARD_LIBRARIES}
+)
+SET(VTK_DIR ${build_prefix}/VTK)
+#=========================================================
+
+#=========================================================
+# ITK
+ExternalProject_Add(
+  ITK
+  SOURCE_DIR ${source_prefix}/itk
+  GIT_REPOSITORY git://itk.org/ITK.git
+  GIT_TAG v4.2.0
+  INSTALL_COMMAND ""
+  CMAKE_ARGS
+    -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG}
+    -DCMAKE_C_FLAGS_MINSIZEREL:STRING=${CMAKE_C_FLAGS_MINSIZEREL}
+    -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}
+    -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO}
+    -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG}
+    -DCMAKE_CXX_FLAGS_MINSIZEREL:STRING=${CMAKE_CXX_FLAGS_MINSIZEREL}
+    -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}
+    -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
+    -DCMAKE_INSTALL_PREFIX:PATH=${install_prefix}/${proj}
+    -DCMAKE_BUILD_TYPE:STRING=${build_type}
+    -DBUILD_SHARED_LIBS:BOOL=OFF
+    -DBUILD_EXAMPLES:BOOL=OFF
+    -DBUILD_TESTING:BOOL=OFF
+)
+SET(ITK_DIR ${build_prefix}/ITK)
+#=========================================================
+
+#=========================================================
+# VV
+SET(VV_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
+if(MSVC)
+  SET(VV_CMAKE_CXX_FLAGS "${VV_CMAKE_CXX_FLAGS} /bigobj")
+endif(MSVC)
+
+SET(VV_CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS})
+if(CMAKE_COMPILER_IS_GNUCXX)
+  SET(VV_CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
+endif(CMAKE_COMPILER_IS_GNUCXX)
+
+SET(MAKE_COMMAND "make")
+if(MSVC)
+  SET(MAKE_COMMAND "nmake")
+endif(MSVC)
+
+ExternalProject_Add(
+  VV
+  DEPENDS QT VTK ITK
+  SOURCE_DIR ${source_prefix}/vv
+  GIT_REPOSITORY git://git.creatis.insa-lyon.fr/clitk
+  GIT_TAG v1.3.0
+  INSTALL_COMMAND ${MAKE_COMMAND} package
+  CMAKE_ARGS
+    -DQT_QMAKE_EXECUTABLE:FILEPATH=${qmake_executable}
+    -DITK_DIR:PATH=${ITK_DIR}
+    -DVTK_DIR:PATH=${VTK_DIR}
+    -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG}
+    -DCMAKE_C_FLAGS_MINSIZEREL:STRING=${CMAKE_C_FLAGS_MINSIZEREL}
+    -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}
+    -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO}
+    -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG}
+    -DCMAKE_CXX_FLAGS_MINSIZEREL:STRING=${CMAKE_CXX_FLAGS_MINSIZEREL}
+    -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}
+    -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
+    -DCMAKE_CXX_FLAGS:STRING=${VV_CMAKE_CXX_FLAGS}
+    -DCMAKE_EXE_LINKER_FLAGS:STRING=${VV_CMAKE_EXE_LINKER_FLAGS}
+    -DCMAKE_INSTALL_PREFIX:PATH=${install_prefix}/${proj}
+    -DCMAKE_BUILD_TYPE:STRING=${build_type}
+    -DBUILD_SHARED_LIBS:BOOL=OFF
+    -DBUILD_TESTING:BOOL=OFF
+)
+#=========================================================
+
index f6bccde1ad9563bda2d9a10d8a75896928d44dbb..faa08cb44492dad8574303acf3f5d89bcc40a08f 100644 (file)
@@ -11,4 +11,6 @@ option "inputDir"     d       "Input dicom directory"           string        yes
 option "outputDir"     o       "Output dicom directory"          string        yes 
 option "key"           k       "Keys of tags to modify"          string        no multiple default="0008|103e"
 option "tag"           t       "Tags values"                    string         no multiple default="MIDPOSITION"
-option "useSizeAsReference"            s       "Use the size of the dicom image as reference for an occasional resampling"     flag    off
\ No newline at end of file
+option "newSeriesUID"          e       "Write the series with a new series UID (ignored if given in key/tag option)"   flag    off
+option "newStudyUID"           u       "Write the series with a new study UID (ignored if given in key/tag option; forces newSeriesUID = true)"        flag    off
+option "useSizeAsReference"            s       "Use the size of the dicom image as reference for an occasional resampling"     flag    off
index 6f09ba9ea4fb48aef5b3b673b49c955a0dbfac40..83041c377631470953dd1afb568e3dc35492bf7a 100644 (file)
 
 // clitk
 #include "clitkResampleImageWithOptionsFilter.h"
+#if GDCM_MAJOR_VERSION >= 2
+#include "gdcmUIDGenerator.h"
+#else
+#include "gdcmFile.h"
+#include "gdcmUtil.h"
+#endif
 
 
 namespace clitk
@@ -133,7 +139,7 @@ WriteDicomSeriesGenericFilter<args_info_type>::UpdateWithDimAndPixelType()
   namesGenerator->SetInputDirectory( m_ArgsInfo.inputDir_arg );
   namesGenerator->SetOutputDirectory( m_ArgsInfo.outputDir_arg  );
   typename   ReaderType::FileNamesContainer filenames_in = namesGenerator->GetInputFileNames();
-  typename   ReaderType::FileNamesContainer filenames_out = namesGenerator->GetOutputFileNames();
+  typename   ReaderType::FileNamesContainer filenames_out;
 
   // Output the dicom files
   unsigned int numberOfFilenames =  filenames_in.size();
@@ -235,16 +241,157 @@ WriteDicomSeriesGenericFilter<args_info_type>::UpdateWithDimAndPixelType()
 
   // Get keys
   unsigned int numberOfKeysGiven=m_ArgsInfo.key_given;
+    if (m_ArgsInfo.verbose_flag) 
+      DD(numberOfKeysGiven);
 
+  std::string seriesUID;
+  std::string frameOfReferenceUID;
+  std::string studyUID;
+  
+  // one pass through the keys given on the cmd-line, to check what will be recreated
+  std::string seriesUIDkey = "0020|000e";
+  std::string seriesNumberKey = "0020|0011";
+  std::string seriesDescriptionKey = "0008|103e";
+  std::string frameOfReferenceUIDKey = "0020|0052";
+  std::string studyUIDKey = "0020|000d";
+  std::string studyIDKey = "0020|0010";
+  std::string studyDescriptionKey = "0008|1030";
+  bool seriesUIDGiven = false;
+  bool seriesNumberGiven = false;
+  bool seriesDescriptionGiven = false;
+  bool studyUIDGiven = false;
+  bool studyIDGiven = false;
+  bool studyDescriptionGiven = false;
   for (unsigned int i = 0; i < numberOfKeysGiven; i++) {
-    std::string entryId(m_ArgsInfo.key_arg[i]  );
-    std::string value( m_ArgsInfo.tag_arg[i] );
-    std::cout << entryId << " " << value << std::endl;
-    for(unsigned int fni = 0; fni<numberOfFilenames; fni++)
-      itk::EncapsulateMetaData<std::string>( *((*dictionary)[fni]), entryId, value );
+    std::string entryId( m_ArgsInfo.key_arg[i] );
+    if (m_ArgsInfo.verbose_flag) 
+      DD(entryId);
+    
+    seriesUIDGiven |= (entryId ==  seriesUIDkey || entryId ==  frameOfReferenceUIDKey);
+    seriesNumberGiven |= (entryId == seriesNumberKey);
+    seriesDescriptionGiven |= (entryId == seriesDescriptionKey);
+    studyUIDGiven |= (entryId == studyUIDKey);
+    studyIDGiven |= (entryId == studyIDKey);
+    studyDescriptionGiven |= (entryId == studyDescriptionKey);
+  }
+
+  // force the creation of a new series if a new study was specified
+  if (!studyUIDGiven && m_ArgsInfo.newStudyUID_flag) {
+    m_ArgsInfo.newSeriesUID_flag = true;
+#if GDCM_MAJOR_VERSION >= 2
+    gdcm::UIDGenerator suid;
+    studyUID = suid.Generate();
+#else
+    studyUID = gdcm::Util::CreateUniqueUID( gdcmIO->GetUIDPrefix());
+#endif
+  }
+    
+  if (!seriesUIDGiven && m_ArgsInfo.newSeriesUID_flag) {
+#if GDCM_MAJOR_VERSION >= 2
+    gdcm::UIDGenerator suid;
+    seriesUID = suid.Generate();
+    gdcm::UIDGenerator fuid;
+    frameOfReferenceUID = fuid.Generate();
+#else
+    seriesUID = gdcm::Util::CreateUniqueUID( gdcmIO->GetUIDPrefix());
+    frameOfReferenceUID = gdcm::Util::CreateUniqueUID( gdcmIO->GetUIDPrefix());
+#endif
+  }
+
+  if (m_ArgsInfo.verbose_flag) {
+    DD(seriesUID);
+    DD(frameOfReferenceUID);
+    DD(studyUID);
+  }
+
+  // check if file UIDs will be be preserved
+  bool useInputFileUID = true;
+  if (m_ArgsInfo.newSeriesUID_flag || m_ArgsInfo.newStudyUID_flag || seriesUIDGiven || studyUIDGiven) {
+    useInputFileUID = false;
+#if GDCM_MAJOR_VERSION < 2
+    gdcmIO->SetKeepOriginalUID(true);
+#endif
+  }
+  else {
+    namesGenerator->SetOutputDirectory( m_ArgsInfo.outputDir_arg  );
+    filenames_out = namesGenerator->GetOutputFileNames();
   }
   
+  filenames_out.resize(numberOfFilenames);
+  
+  time_t t;
+  t = time(&t);
+  struct tm* instanceDateTimeTm = localtime(&t);
+  char datetime[16];
+  strftime(datetime, 16, "%Y%m%d", instanceDateTimeTm);
+  std::ostringstream instanceDate;
+  instanceDate << datetime;
+  std::ostringstream instanceTime;
+  strftime(datetime, 16, "%H%M%S", instanceDateTimeTm);
+  instanceTime << datetime;
+  
+  // update output dicom keys/tags
+  for(unsigned int fni = 0; fni<numberOfFilenames; fni++) {
+    for (unsigned int i = 0; i < numberOfKeysGiven; i++) {
+      std::string entryId(m_ArgsInfo.key_arg[i]  );
+      std::string value( m_ArgsInfo.tag_arg[i] );
+
+      itk::EncapsulateMetaData<std::string>( *((*dictionary)[fni]), entryId, value );
+    }
 
+    // series UID
+    if (!seriesUIDGiven) {
+      if (m_ArgsInfo.newSeriesUID_flag) {
+        itk::EncapsulateMetaData<std::string>( *((*dictionary)[fni]), seriesUIDkey, seriesUID );
+        itk::EncapsulateMetaData<std::string>( *((*dictionary)[fni]), frameOfReferenceUIDKey, frameOfReferenceUID );
+      }
+    }
+    
+    // study UID
+    if (!studyUIDGiven) {
+      if (m_ArgsInfo.newStudyUID_flag) 
+        itk::EncapsulateMetaData<std::string>( *((*dictionary)[fni]), studyUIDKey, studyUID );
+    }
+    
+    // study description
+    if (studyUIDGiven || m_ArgsInfo.newStudyUID_flag) {
+      if (!studyIDGiven)
+        itk::EncapsulateMetaData<std::string>( *((*dictionary)[fni]), studyIDKey,itksys::SystemTools::GetFilenameName( m_ArgsInfo.outputDir_arg ));
+      if (!studyDescriptionGiven)
+        itk::EncapsulateMetaData<std::string>( *((*dictionary)[fni]), studyDescriptionKey,itksys::SystemTools::GetFilenameName( m_ArgsInfo.outputDir_arg ));
+      
+      itk::EncapsulateMetaData<std::string>( *((*dictionary)[fni]), "0008|0020", instanceDate.str() );
+      itk::EncapsulateMetaData<std::string>( *((*dictionary)[fni]), "0008|0030", instanceTime.str() );
+    }
+    
+    // series description/number
+    if (seriesUIDGiven || m_ArgsInfo.newSeriesUID_flag) {
+      if (!seriesDescriptionGiven)
+        itk::EncapsulateMetaData<std::string>( *((*dictionary)[fni]), seriesDescriptionKey, itksys::SystemTools::GetFilenameName(m_ArgsInfo.outputDir_arg) );
+      if (!seriesNumberGiven)
+        itk::EncapsulateMetaData<std::string>( *((*dictionary)[fni]), seriesNumberKey, itksys::SystemTools::GetFilenameName(m_ArgsInfo.outputDir_arg) );
+
+      itk::EncapsulateMetaData<std::string>( *((*dictionary)[fni]), "0008|0012", instanceDate.str() );
+      itk::EncapsulateMetaData<std::string>( *((*dictionary)[fni]), "0008|0013", instanceTime.str() );
+    }
+
+    // file UIDs are recreated for new studies or series
+    if (!useInputFileUID)
+    {
+      std::string fileUID;
+#if GDCM_MAJOR_VERSION >= 2
+      gdcm::UIDGenerator fid;
+      fileUID = fid.Generate();
+#else
+      fileUID = gdcm::Util::CreateUniqueUID( gdcmIO->GetUIDPrefix());
+#endif
+      itk::EncapsulateMetaData<std::string>( *((*dictionary)[fni]), "0008|0018", fileUID );
+      itk::EncapsulateMetaData<std::string>( *((*dictionary)[fni]), "0002|0003", fileUID );
+      
+      filenames_out[fni] = itksys::SystemTools::CollapseFullPath(fileUID.c_str(), m_ArgsInfo.outputDir_arg) + std::string(".dcm"); 
+    }
+  }
+  
   // Output directory and filenames
   itksys::SystemTools::MakeDirectory( m_ArgsInfo.outputDir_arg ); // create if it doesn't exist
   typedef itk::ImageSeriesWriter<InputImageType, OutputImageType >  SeriesWriterType;
index 1a21d8c842e4fec027df7a510969e23c38e2fc8f..b77a52c27474b90f8f6aded9b421865d5009c42b 100644 (file)
@@ -252,7 +252,7 @@ ENDIF(UNIX OR APPLE)
 
 IF(WIN32)
   #INCLUDE(InstallRequiredSystemLibraries)
-  INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_BUILD_TYPE}/vv.exe DESTINATION .)
+  INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/vv.exe DESTINATION .)
   #INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/icons/ducky.png DESTINATION .)
 ENDIF(WIN32)
 #=========================================================
@@ -266,8 +266,8 @@ SET(CPACK_PACKAGE_VENDOR "Creatis-CLB")
 SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
 SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/License.txt")
 SET(CPACK_PACKAGE_VERSION_MAJOR "1")
-SET(CPACK_PACKAGE_VERSION_MINOR "2")
-SET(CPACK_PACKAGE_VERSION_PATCH "2")
+SET(CPACK_PACKAGE_VERSION_MINOR "3")
+SET(CPACK_PACKAGE_VERSION_PATCH "0")
 SET(CPACK_PACKAGE_INSTALL_DIRECTORY "vv")
 SET(CPACK_STRIP_FILES TRUE)
 
@@ -275,7 +275,7 @@ IF(WIN32)
   # There is a bug in NSI that does not handle full unix paths properly. Make
   # sure there is at least one set of four (4) backlasshes.
   SET(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\icons\\\\ducky.ico")
-  SET(CPACK_NSIS_INSTALLED_ICON_NAME "${CMAKE_BUILD_TYPE}\\\\vv.exe")
+  SET(CPACK_NSIS_INSTALLED_ICON_NAME "vv.exe")
   SET(CPACK_NSIS_DISPLAY_NAME "vv - The 4D slicer")
   SET(CPACK_NSIS_HELP_LINK "http://www.creatis.insa-lyon.fr/rio/vv")
   SET(CPACK_NSIS_URL_INFO_ABOUT "http://www.creatis.insa-lyon.fr/rio")
index 133d9dc9232c8b6fb8888066d034aff7c036bab8..b4beaa8dcdf7f5a18799793a3025141792fc1514 100644 (file)
--- a/vv/vv.cxx
+++ b/vv/vv.cxx
@@ -144,9 +144,18 @@ int main( int argc, char** argv )
   if (argc >1) {
     for (int i = 1; i < argc; i++) {
       std::string current = argv[i];
-      if (!current.compare(0,2,"--")) { //We are parsing an option
+      if (!current.compare(0,1,"-")) { // && !current.compare(0,2,"--")) { //We are parsing an option
         if (parse_mode == P_SEQUENCE) {//First finish the current sequence
           open_sequence(window, open_mode, parse_mode, sequence_filenames, n_image_loaded);
+        } 
+        else if (parse_mode == P_WINDOW) { // handle negative window values
+          win=current;
+          parse_mode=P_NORMAL;
+          continue;
+        } else if (parse_mode == P_LEVEL) { // handle negative level values
+          lev=current;
+          parse_mode=P_NORMAL;
+          continue;
         }
         if ((current=="--help") || (current=="-h")) {
           std::cout << "vv " << VV_VERSION << ", the 2D, 2D+t, 3D and 3D+t (or 4D) image viewer" << std::endl << std::endl
@@ -168,8 +177,7 @@ int main( int argc, char** argv )
                     //<< "--roi file     \t Overlay binary mask images. Option may be repeated on a single base image." << std::endl
                     << "--contour file \t Overlay DICOM RT-STRUCT contours." << std::endl;
           exit(0);
-        }
-        if (current=="--vf") {
+        } else if (current=="--vf") {
           if (!n_image_loaded) load_image_first_error();
           open_mode = O_VF;
         } else if (current=="--overlay") {
index c0e652de2317cafdfa07eb976a46f893b228c6a4..eb8977dd0548b890388f5cda415785e644d69ac1 100644 (file)
@@ -1110,9 +1110,9 @@ void vvSlicerManager::SetPreset(int preset)
     window = 400;
     level = 20;
     break;
-  case 3:
-    window = 1500;
-    level = -500;
+  case 3: // lungs (same as FOCAL)
+    window = 1700;
+    level = -300;
     break;
   case 4:
     window = 1000;