diff OrthancServer/ParsedDicomFile.cpp @ 1935:e251606c1433

FromDcmtkBridge::LoadFromMemoryBuffer
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 24 Mar 2016 11:46:41 +0100
parents 72a2fd7fed8b
children d7b176f7dd1b
line wrap: on
line diff
--- a/OrthancServer/ParsedDicomFile.cpp	Tue Mar 22 15:11:53 2016 +0100
+++ b/OrthancServer/ParsedDicomFile.cpp	Thu Mar 24 11:46:41 2016 +0100
@@ -101,7 +101,6 @@
 #include <dcmtk/dcmdata/dcdicent.h>
 #include <dcmtk/dcmdata/dcdict.h>
 #include <dcmtk/dcmdata/dcfilefo.h>
-#include <dcmtk/dcmdata/dcistrmb.h>
 #include <dcmtk/dcmdata/dcuid.h>
 #include <dcmtk/dcmdata/dcmetinf.h>
 #include <dcmtk/dcmdata/dcdeftag.h>
@@ -150,31 +149,6 @@
   };
 
 
-  // This method can only be called from the constructors!
-  void ParsedDicomFile::Setup(const void* buffer, 
-                              size_t size)
-  {
-    DcmInputBufferStream is;
-    if (size > 0)
-    {
-      is.setBuffer(buffer, size);
-    }
-    is.setEos();
-
-    pimpl_->file_.reset(new DcmFileFormat);
-    pimpl_->file_->transferInit();
-    if (!pimpl_->file_->read(is).good())
-    {
-      delete pimpl_;  // Avoid a memory leak due to exception
-                      // throwing, as we are in the constructor
-
-      throw OrthancException(ErrorCode_BadFileFormat);
-    }
-    pimpl_->file_->loadAllDataIntoMemory();
-    pimpl_->file_->transferEnd();
-  }
-
-
   static void SendPathValueForDictionary(RestApiOutput& output,
                                          DcmItem& dicom)
   {
@@ -852,18 +826,18 @@
   ParsedDicomFile::ParsedDicomFile(const void* content, 
                                    size_t size) : pimpl_(new PImpl)
   {
-    Setup(content, size);
+    pimpl_->file_.reset(FromDcmtkBridge::LoadFromMemoryBuffer(content, size));
   }
 
   ParsedDicomFile::ParsedDicomFile(const std::string& content) : pimpl_(new PImpl)
   {
     if (content.size() == 0)
     {
-      Setup(NULL, 0);
+      pimpl_->file_.reset(FromDcmtkBridge::LoadFromMemoryBuffer(NULL, 0));
     }
     else
     {
-      Setup(&content[0], content.size());
+      pimpl_->file_.reset(FromDcmtkBridge::LoadFromMemoryBuffer(&content[0], content.size()));
     }
   }