Mercurial > hg > orthanc-stone
changeset 2180:356ae7ad47e4
fix
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 26 Nov 2024 14:39:09 +0100 (3 months ago) |
parents | dd08f4f17a7a |
children | eae006bfeea6 |
files | OrthancStone/Sources/Toolbox/DicomInstanceParameters.cpp OrthancStone/Sources/Toolbox/OrthancDatasets/DicomWebDataset.cpp |
diffstat | 2 files changed, 61 insertions(+), 60 deletions(-) [+] |
line wrap: on
line diff
--- a/OrthancStone/Sources/Toolbox/DicomInstanceParameters.cpp Tue Nov 26 14:02:04 2024 +0100 +++ b/OrthancStone/Sources/Toolbox/DicomInstanceParameters.cpp Tue Nov 26 14:39:09 2024 +0100 @@ -290,7 +290,7 @@ if (dataset.GetSequenceSize(size, Orthanc::DicomPath(DICOM_TAG_PER_FRAME_FUNCTIONAL_GROUPS_SEQUENCE))) { - data_.perFrameWindowing_.resize(data_.numberOfFrames_); + data_.perFrameWindowing_.reserve(data_.numberOfFrames_); // This corresponds to "ParsedDicomFile::GetDefaultWindowing()" for (size_t i = 0; i < size; i++) @@ -308,7 +308,7 @@ DICOM_TAG_FRAME_VOI_LUT_SEQUENCE_ATTRIBUTE, 0, Orthanc::DICOM_TAG_WINDOW_WIDTH))) { - data_.perFrameWindowing_[i] = Windowing(center, width); + data_.perFrameWindowing_.push_back(Windowing(center, width)); } } }
--- a/OrthancStone/Sources/Toolbox/OrthancDatasets/DicomWebDataset.cpp Tue Nov 26 14:02:04 2024 +0100 +++ b/OrthancStone/Sources/Toolbox/OrthancDatasets/DicomWebDataset.cpp Tue Nov 26 14:39:09 2024 +0100 @@ -138,65 +138,66 @@ return false; } else if (value->type() == Json::arrayValue && - value->size() == 1u && - (*value) [0].type() == Json::stringValue && ( - // This is the list of all the string value representations: - // https://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_6.2.html - vr == "AE" || - vr == "AS" || - vr == "CS" || - vr == "DA" || - vr == "DS" || - vr == "DT" || - vr == "IS" || - vr == "LO" || - vr == "LT" || - vr == "SH" || - vr == "ST" || - vr == "TM" || - vr == "UC" || - vr == "UI" || - vr == "UR" || - vr == "UT")) + value->size() == 1u) { - result = (*value) [0].asString(); - return true; - } - else if (value->type() == Json::arrayValue && - value->size() == 1u && - vr == "PN" && - (*value) [0].type() == Json::objectValue && - (*value) [0].isMember(ALPHABETIC) && - (*value) [0][ALPHABETIC].type() == Json::stringValue) - { - result = (*value) [0][ALPHABETIC].asString(); - return true; - } - else if (value->type() == Json::arrayValue && - value->size() == 1u && - (vr == "FD" || vr == "FL") && - (*value) [0].isDouble()) - { - result = boost::lexical_cast<std::string>((*value) [0].asDouble()); - return true; - } - else if (value->type() == Json::arrayValue && - value->size() == 1u && - (vr == "UL" || - vr == "US") && - (*value) [0].isUInt64()) - { - result = boost::lexical_cast<std::string>((*value) [0].asUInt64()); - return true; - } - else if (value->type() == Json::arrayValue && - value->size() == 1u && - (vr == "SL" || - vr == "SS") && - (*value) [0].isInt64()) - { - result = boost::lexical_cast<std::string>((*value) [0].asInt64()); - return true; + if ((*value) [0].type() == Json::stringValue && ( + // This is the list of all the string value representations: + // https://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_6.2.html + vr == "AE" || + vr == "AS" || + vr == "CS" || + vr == "DA" || + vr == "DT" || + vr == "LO" || + vr == "LT" || + vr == "SH" || + vr == "ST" || + vr == "TM" || + vr == "UC" || + vr == "UI" || + vr == "UR" || + vr == "UT")) + { + result = (*value) [0].asString(); + return true; + } + else if (vr == "PN" && + (*value) [0].type() == Json::objectValue && + (*value) [0].isMember(ALPHABETIC) && + (*value) [0][ALPHABETIC].type() == Json::stringValue) + { + result = (*value) [0][ALPHABETIC].asString(); + return true; + } + else if ((vr == "DS" || + vr == "FD" || + vr == "FL") && + (*value) [0].isDouble()) + { + result = boost::lexical_cast<std::string>((*value) [0].asDouble()); + return true; + } + else if ((vr == "UL" || + vr == "US" || + vr == "UV") && + (*value) [0].isUInt64()) + { + result = boost::lexical_cast<std::string>((*value) [0].asUInt64()); + return true; + } + else if ((vr == "IS" || + vr == "SL" || + vr == "SS" || + vr == "SV") && + (*value) [0].isInt64()) + { + result = boost::lexical_cast<std::string>((*value) [0].asInt64()); + return true; + } + else + { + throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented, "Unsupported value representation: " + vr); + } } else if (value->type() == Json::arrayValue && vr == "SQ")