Mercurial > hg > orthanc
diff Core/DicomParsing/FromDcmtkBridge.cpp @ 3195:880e4161c312
cont
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 05 Feb 2019 20:44:26 +0100 |
parents | 47ef29168698 |
children | 7724ed267b5c |
line wrap: on
line diff
--- a/Core/DicomParsing/FromDcmtkBridge.cpp Tue Feb 05 18:34:27 2019 +0100 +++ b/Core/DicomParsing/FromDcmtkBridge.cpp Tue Feb 05 20:44:26 2019 +0100 @@ -2253,7 +2253,7 @@ } else { - visitor.VisitUnknown(parentTags, parentIndexes, tag, vr); + visitor.VisitNotSupported(parentTags, parentIndexes, tag, vr); } break; @@ -2405,7 +2405,8 @@ } } - visitor.VisitAttributes(parentTags, parentIndexes, tag, vr, values); + assert(vr == ValueRepresentation_AttributeTag); + visitor.VisitAttributes(parentTags, parentIndexes, tag, values); break; } @@ -2437,7 +2438,7 @@ case EVR_pixelItem: // used internally for pixel items in a compressed image case EVR_PixelData: // used internally for uncompressed pixeld data case EVR_OverlayData: // used internally for overlay data - visitor.VisitUnknown(parentTags, parentIndexes, tag, vr); + visitor.VisitNotSupported(parentTags, parentIndexes, tag, vr); return; @@ -2481,16 +2482,23 @@ // etc. are not." The following dynamic_cast is thus OK. DcmSequenceOfItems& sequence = dynamic_cast<DcmSequenceOfItems&>(element); - std::vector<DicomTag> tags = parentTags; - std::vector<size_t> indexes = parentIndexes; - tags.push_back(tag); - indexes.push_back(0); - - for (unsigned long i = 0; i < sequence.card(); i++) + if (sequence.card() == 0) + { + visitor.VisitEmptySequence(parentTags, parentIndexes, tag); + } + else { - indexes.back() = static_cast<size_t>(i); - DcmItem* child = sequence.getItem(i); - ApplyVisitorToDataset(*child, visitor, tags, indexes, encoding); + std::vector<DicomTag> tags = parentTags; + std::vector<size_t> indexes = parentIndexes; + tags.push_back(tag); + indexes.push_back(0); + + for (unsigned long i = 0; i < sequence.card(); i++) + { + indexes.back() = static_cast<size_t>(i); + DcmItem* child = sequence.getItem(i); + ApplyVisitorToDataset(*child, visitor, tags, indexes, encoding); + } } } }