Mercurial > hg > orthanc
diff OrthancServer/ParsedDicomFile.cpp @ 1787:1b1d5470233f worklists
refactoring of DicomFindAnswers
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 18 Nov 2015 15:50:32 +0100 |
parents | 164d78911382 |
children | 6a2d507ef064 |
line wrap: on
line diff
--- a/OrthancServer/ParsedDicomFile.cpp Wed Nov 18 12:00:14 2015 +0100 +++ b/OrthancServer/ParsedDicomFile.cpp Wed Nov 18 15:50:32 2015 +0100 @@ -823,9 +823,15 @@ } - ParsedDicomFile::ParsedDicomFile(void* fileFormat) : pimpl_(new PImpl) + ParsedDicomFile::ParsedDicomFile(const DicomMap& map) : pimpl_(new PImpl) { - pimpl_->file_.reset(static_cast<DcmFileFormat*>(fileFormat)); + std::auto_ptr<DcmDataset> dataset(ToDcmtkBridge::Convert(map)); + + // NOTE: This implies an unnecessary memory copy of the dataset, but no way to get around + // http://support.dcmtk.org/redmine/issues/544 + std::auto_ptr<DcmFileFormat> fileFormat(new DcmFileFormat(dataset.get())); + + pimpl_->file_.reset(fileFormat.release()); } @@ -1228,15 +1234,4 @@ { FromDcmtkBridge::Convert(tags, *pimpl_->file_->getDataset()); } - - - ParsedDicomFile* ParsedDicomFile::CreateFromDcmtkDataset(void* dataset) - { - assert(dataset != NULL); - - DcmDataset *d = static_cast<DcmDataset*>(dataset); - std::auto_ptr<DcmFileFormat> fileFormat(new DcmFileFormat(d)); - - return new ParsedDicomFile(fileFormat.release()); - } }