Mercurial > hg > orthanc
diff OrthancFramework/Sources/DicomFormat/DicomMap.cpp @ 5323:138e9d0c08c1
added DicomMap::GuessPixelDataValueRepresentation()
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sun, 25 Jun 2023 12:29:39 +0200 |
parents | 0ea402b4d901 |
children | 48b8dae6dc77 |
line wrap: on
line diff
--- a/OrthancFramework/Sources/DicomFormat/DicomMap.cpp Sun Jun 25 11:48:47 2023 +0200 +++ b/OrthancFramework/Sources/DicomFormat/DicomMap.cpp Sun Jun 25 12:29:39 2023 +0200 @@ -34,6 +34,7 @@ #include "../OrthancException.h" #include "../Toolbox.h" #include "DicomArray.h" +#include "DicomImageInformation.h" #if ORTHANC_ENABLE_DCMTK == 1 #include "../DicomParsing/FromDcmtkBridge.h" @@ -418,7 +419,7 @@ SetValueInternal(group, element, new DicomValue(str, isBinary)); } - void DicomMap::SetValue(const DicomTag& tag, const Json::Value& value) + void DicomMap::SetSequenceValue(const DicomTag& tag, const Json::Value& value) { SetValueInternal(tag.GetGroup(), tag.GetElement(), new DicomValue(value)); } @@ -1456,7 +1457,7 @@ } else { - SetValue(tag, value["Value"]); + SetSequenceValue(tag, value["Value"]); } } } @@ -1530,7 +1531,7 @@ { if (it->second->IsSequence()) { - result.SetValue(it->first, it->second->GetSequenceContent()); + result.SetSequenceValue(it->first, it->second->GetSequenceContent()); } } } @@ -1808,6 +1809,19 @@ } + ValueRepresentation DicomMap::GuessPixelDataValueRepresentation(DicomTransferSyntax transferSyntax) const + { + const DicomValue* value = TestAndGetValue(DICOM_TAG_BITS_ALLOCATED); + + uint32_t bitsAllocated; + if (value == NULL || + !value->ParseUnsignedInteger32(bitsAllocated)) + { + bitsAllocated = 8; + } + + return DicomImageInformation::GuessPixelDataValueRepresentation(transferSyntax, bitsAllocated); + } void DicomMap::Print(FILE* fp) const