Mercurial > hg > orthanc
comparison 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 |
comparison
equal
deleted
inserted
replaced
1786:164d78911382 | 1787:1b1d5470233f |
---|---|
821 Replace(DICOM_TAG_SERIES_INSTANCE_UID, FromDcmtkBridge::GenerateUniqueIdentifier(ResourceType_Series)); | 821 Replace(DICOM_TAG_SERIES_INSTANCE_UID, FromDcmtkBridge::GenerateUniqueIdentifier(ResourceType_Series)); |
822 Replace(DICOM_TAG_SOP_INSTANCE_UID, FromDcmtkBridge::GenerateUniqueIdentifier(ResourceType_Instance)); | 822 Replace(DICOM_TAG_SOP_INSTANCE_UID, FromDcmtkBridge::GenerateUniqueIdentifier(ResourceType_Instance)); |
823 } | 823 } |
824 | 824 |
825 | 825 |
826 ParsedDicomFile::ParsedDicomFile(void* fileFormat) : pimpl_(new PImpl) | 826 ParsedDicomFile::ParsedDicomFile(const DicomMap& map) : pimpl_(new PImpl) |
827 { | 827 { |
828 pimpl_->file_.reset(static_cast<DcmFileFormat*>(fileFormat)); | 828 std::auto_ptr<DcmDataset> dataset(ToDcmtkBridge::Convert(map)); |
829 | |
830 // NOTE: This implies an unnecessary memory copy of the dataset, but no way to get around | |
831 // http://support.dcmtk.org/redmine/issues/544 | |
832 std::auto_ptr<DcmFileFormat> fileFormat(new DcmFileFormat(dataset.get())); | |
833 | |
834 pimpl_->file_.reset(fileFormat.release()); | |
829 } | 835 } |
830 | 836 |
831 | 837 |
832 ParsedDicomFile::ParsedDicomFile(const char* content, size_t size) : pimpl_(new PImpl) | 838 ParsedDicomFile::ParsedDicomFile(const char* content, size_t size) : pimpl_(new PImpl) |
833 { | 839 { |
1226 | 1232 |
1227 void ParsedDicomFile::Convert(DicomMap& tags) | 1233 void ParsedDicomFile::Convert(DicomMap& tags) |
1228 { | 1234 { |
1229 FromDcmtkBridge::Convert(tags, *pimpl_->file_->getDataset()); | 1235 FromDcmtkBridge::Convert(tags, *pimpl_->file_->getDataset()); |
1230 } | 1236 } |
1231 | |
1232 | |
1233 ParsedDicomFile* ParsedDicomFile::CreateFromDcmtkDataset(void* dataset) | |
1234 { | |
1235 assert(dataset != NULL); | |
1236 | |
1237 DcmDataset *d = static_cast<DcmDataset*>(dataset); | |
1238 std::auto_ptr<DcmFileFormat> fileFormat(new DcmFileFormat(d)); | |
1239 | |
1240 return new ParsedDicomFile(fileFormat.release()); | |
1241 } | |
1242 } | 1237 } |