Mercurial > hg > orthanc-stone
diff OrthancStone/Sources/Toolbox/DicomStructureSet.cpp @ 1885:ddaee6b96501
retrieving rt-struct info
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 14 Jan 2022 19:04:05 +0100 |
parents | 7053b8a0aaec |
children | 6ce81914f7e4 |
line wrap: on
line diff
--- a/OrthancStone/Sources/Toolbox/DicomStructureSet.cpp Fri Jan 14 14:14:25 2022 +0100 +++ b/OrthancStone/Sources/Toolbox/DicomStructureSet.cpp Fri Jan 14 19:04:05 2022 +0100 @@ -700,7 +700,7 @@ } - void DicomStructureSet::GetReferencedInstances(std::set<std::string>& instances) + void DicomStructureSet::GetReferencedInstances(std::set<std::string>& instances) const { for (Structures::const_iterator structure = structures_.begin(); structure != structures_.end(); ++structure) @@ -1087,4 +1087,26 @@ } #endif } + + + void DicomStructureSet::GetStructurePoints(std::list< std::vector<Vector> >& target, + size_t structureIndex, + const std::string& sopInstanceUid) const + { + target.clear(); + + const Structure& structure = GetStructure(structureIndex); + + // TODO - Could be optimized by adding a multimap on "Structure", mapping + // from SOP Instance UID to polygons + + for (Polygons::const_iterator it = structure.polygons_.begin(); + it != structure.polygons_.end(); ++it) + { + if (it->GetSopInstanceUid() == sopInstanceUid) + { + target.push_back(it->GetPoints()); + } + } + } }