Mercurial > hg > orthanc
diff Core/DicomParsing/ParsedDicomFile.cpp @ 3920:82e88ff003d7 c-get
merge default -> c-get
author | Alain Mazy <alain@mazy.be> |
---|---|
date | Tue, 12 May 2020 14:58:24 +0200 |
parents | 7610af1532c3 |
children | aae045f802f4 |
line wrap: on
line diff
--- a/Core/DicomParsing/ParsedDicomFile.cpp Tue May 12 07:50:38 2020 +0200 +++ b/Core/DicomParsing/ParsedDicomFile.cpp Tue May 12 14:58:24 2020 +0200 @@ -456,7 +456,7 @@ const UriComponents& uri) { DcmItem* dicom = pimpl_->file_->getDataset(); - E_TransferSyntax transferSyntax = pimpl_->file_->getDataset()->getOriginalXfer(); + E_TransferSyntax transferSyntax = pimpl_->file_->getDataset()->getCurrentXfer(); // Special case: Accessing the pixel data if (uri.size() == 1 || @@ -869,7 +869,7 @@ std::string serialized; if (FromDcmtkBridge::SaveToMemoryBuffer(serialized, *pimpl_->file_->getDataset())) { - output.AnswerBuffer(serialized, MimeType_Binary); + output.AnswerBuffer(serialized, MimeType_Dicom); } } #endif @@ -1113,6 +1113,12 @@ } + ParsedDicomFile::ParsedDicomFile(DcmFileFormat* dicom) : pimpl_(new PImpl) + { + pimpl_->file_.reset(dicom); // No cloning + } + + DcmFileFormat& ParsedDicomFile::GetDcmtkObject() const { return *pimpl_->file_.get(); @@ -1564,7 +1570,7 @@ pimpl_->frameIndex_->GetRawFrame(target, frameId); - E_TransferSyntax transferSyntax = pimpl_->file_->getDataset()->getOriginalXfer(); + E_TransferSyntax transferSyntax = pimpl_->file_->getDataset()->getCurrentXfer(); switch (transferSyntax) { case EXS_JPEGProcess1: @@ -1625,7 +1631,22 @@ bool ParsedDicomFile::LookupTransferSyntax(std::string& result) { - return FromDcmtkBridge::LookupTransferSyntax(result, *pimpl_->file_); + // TODO - Shouldn't "dataset.getCurrentXfer()" be used instead of + // using the meta header? + const char* value = NULL; + + assert(pimpl_->file_ != NULL); + if (pimpl_->file_->getMetaInfo() != NULL && + pimpl_->file_->getMetaInfo()->findAndGetString(DCM_TransferSyntaxUID, value).good() && + value != NULL) + { + result.assign(value); + return true; + } + else + { + return false; + } }