diff OrthancServer/FromDcmtkBridge.cpp @ 1935:e251606c1433

FromDcmtkBridge::LoadFromMemoryBuffer
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 24 Mar 2016 11:46:41 +0100
parents 72a2fd7fed8b
children dba0db0a94b4
line wrap: on
line diff
--- a/OrthancServer/FromDcmtkBridge.cpp	Tue Mar 22 15:11:53 2016 +0100
+++ b/OrthancServer/FromDcmtkBridge.cpp	Thu Mar 24 11:46:41 2016 +0100
@@ -56,6 +56,7 @@
 #include <dcmtk/dcmdata/dcostrmb.h>
 #include <dcmtk/dcmdata/dcpixel.h>
 #include <dcmtk/dcmdata/dcuid.h>
+#include <dcmtk/dcmdata/dcistrmb.h>
 
 #include <dcmtk/dcmdata/dcvrae.h>
 #include <dcmtk/dcmdata/dcvras.h>
@@ -1705,4 +1706,29 @@
 
     return result.release();
   }
+
+
+  DcmFileFormat* FromDcmtkBridge::LoadFromMemoryBuffer(const void* buffer,
+                                                       size_t size)
+  {
+    DcmInputBufferStream is;
+    if (size > 0)
+    {
+      is.setBuffer(buffer, size);
+    }
+    is.setEos();
+
+    std::auto_ptr<DcmFileFormat> result(new DcmFileFormat);
+
+    result->transferInit();
+    if (!result->read(is).good())
+    {
+      throw OrthancException(ErrorCode_BadFileFormat);
+    }
+
+    result->loadAllDataIntoMemory();
+    result->transferEnd();
+
+    return result.release();
+  }
 }