changeset 48:2789d34cb993

sync
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 16 Nov 2016 12:18:34 +0100
parents 0cc06b6f3398
children 2e053f356e3d
files Framework/Orthanc/OrthancServer/FromDcmtkBridge.cpp Framework/Orthanc/OrthancServer/FromDcmtkBridge.h Framework/Orthanc/Resources/CMake/DcmtkConfiguration.cmake Framework/Orthanc/Resources/CMake/DownloadPackage.cmake
diffstat 4 files changed, 44 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/Framework/Orthanc/OrthancServer/FromDcmtkBridge.cpp	Thu Nov 10 09:59:48 2016 +0100
+++ b/Framework/Orthanc/OrthancServer/FromDcmtkBridge.cpp	Wed Nov 16 12:18:34 2016 +0100
@@ -177,7 +177,7 @@
   }
 
 
-  void FromDcmtkBridge::InitializeDictionary()
+  void FromDcmtkBridge::InitializeDictionary(bool loadPrivateDictionary)
   {
     {
       DictionaryLocker locker;
@@ -194,7 +194,16 @@
       //LoadEmbeddedDictionary(*locker, EmbeddedResources::DICTIONARY_DICONDE);
 
       LoadEmbeddedDictionary(*locker, EmbeddedResources::DICTIONARY_DICOM);
-      LoadEmbeddedDictionary(*locker, EmbeddedResources::DICTIONARY_PRIVATE);
+
+      if (loadPrivateDictionary)
+      {
+        LOG(INFO) << "Loading the embedded dictionary of private tags";
+        LoadEmbeddedDictionary(*locker, EmbeddedResources::DICTIONARY_PRIVATE);
+      }
+      else
+      {
+        LOG(INFO) << "The dictionary of private tags has not been loaded";
+      }
 
 #elif defined(__linux__) || defined(__FreeBSD_kernel__)
       std::string path = DCMTK_DICTIONARY_DIR;
@@ -206,7 +215,15 @@
       }
 
       LoadExternalDictionary(*locker, path, "dicom.dic");
-      LoadExternalDictionary(*locker, path, "private.dic");
+
+      if (loadPrivateDictionary)
+      {
+        LoadExternalDictionary(*locker, path, "private.dic");
+      }
+      else
+      {
+        LOG(INFO) << "The dictionary of private tags has not been loaded";
+      }
 
 #else
 #error Support your platform here
--- a/Framework/Orthanc/OrthancServer/FromDcmtkBridge.h	Thu Nov 10 09:59:48 2016 +0100
+++ b/Framework/Orthanc/OrthancServer/FromDcmtkBridge.h	Wed Nov 16 12:18:34 2016 +0100
@@ -89,7 +89,7 @@
                                    Encoding defaultEncoding);
 
   public:
-    static void InitializeDictionary();
+    static void InitializeDictionary(bool loadPrivateDictionary);
 
     static void RegisterDictionaryTag(const DicomTag& tag,
                                       ValueRepresentation vr,
--- a/Framework/Orthanc/Resources/CMake/DcmtkConfiguration.cmake	Thu Nov 10 09:59:48 2016 +0100
+++ b/Framework/Orthanc/Resources/CMake/DcmtkConfiguration.cmake	Wed Nov 16 12:18:34 2016 +0100
@@ -35,6 +35,19 @@
 
   DownloadPackage(${DCMTK_MD5} ${DCMTK_URL} "${DCMTK_SOURCES_DIR}")
 
+  
+  if (FirstRun AND NOT USE_DCMTK_361)
+    # If using DCMTK 3.6.0, backport the "private.dic" file from DCMTK
+    # 3.6.1 snapshot. This adds support for more private tags, and
+    # fixes some import problems with Philips MRI Achieva.
+    message("Using the dictionary of private tags from DCMTK 3.6.1")
+    configure_file(
+      ${ORTHANC_ROOT}/Resources/Patches/dcmtk-3.6.1-private.dic
+      ${DCMTK_SOURCES_DIR}/dcmdata/data/private.dic
+      COPYONLY)
+  endif()
+
+
   IF (CMAKE_CROSSCOMPILING)
     SET(C_CHAR_UNSIGNED 1 CACHE INTERNAL "Whether char is unsigned.")
   ENDIF()
@@ -181,9 +194,15 @@
   list(REMOVE_ITEM DCMTK_SOURCES 
     ${DCMTK_SOURCES_DIR}/dcmdata/libsrc/mkdictbi.cc
     ${DCMTK_SOURCES_DIR}/dcmdata/libsrc/mkdeftag.cc
-    ${DCMTK_SOURCES_DIR}/dcmdata/libsrc/dcdictbi.cc
     )
 
+  if (NOT USE_DCMTK_361)
+    # Removing this file is required with DCMTK 3.6.0
+    list(REMOVE_ITEM DCMTK_SOURCES 
+      ${DCMTK_SOURCES_DIR}/dcmdata/libsrc/dcdictbi.cc
+      )
+  endif()
+
   #set_source_files_properties(${DCMTK_SOURCES}
   #  PROPERTIES COMPILE_DEFINITIONS
   #  "PACKAGE_VERSION=\"${DCMTK_PACKAGE_VERSION}\";PACKAGE_VERSION_NUMBER=\"${DCMTK_VERSION_NUMBER}\"")
--- a/Framework/Orthanc/Resources/CMake/DownloadPackage.cmake	Thu Nov 10 09:59:48 2016 +0100
+++ b/Framework/Orthanc/Resources/CMake/DownloadPackage.cmake	Wed Nov 16 12:18:34 2016 +0100
@@ -76,7 +76,9 @@
 	message(FATAL_ERROR "CMake is not allowed to download from Internet. Please set the ALLOW_DOWNLOADS option to ON")
       endif()
 
-      file(DOWNLOAD "${Url}" "${TMP_PATH}" SHOW_PROGRESS EXPECTED_MD5 "${MD5}")
+      file(DOWNLOAD "${Url}" "${TMP_PATH}" 
+        SHOW_PROGRESS EXPECTED_MD5 "${MD5}"
+        TIMEOUT 5 INACTIVITY_TIMEOUT 5)
     else()
       message("Using local copy of ${Url}")
     endif()