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());
+      }
+    }
+  }
 }