Mercurial > hg > orthanc
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())); } }