diff Framework/Toolbox/DicomStructureSet.h @ 125:44fc253d4876 wasm

refactoring
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 08 Nov 2017 16:13:55 +0100
parents e3433dabfb8d
children c9e88e7935a4
line wrap: on
line diff
--- a/Framework/Toolbox/DicomStructureSet.h	Sun Oct 08 10:52:24 2017 +0200
+++ b/Framework/Toolbox/DicomStructureSet.h	Wed Nov 08 16:13:55 2017 +0100
@@ -22,7 +22,6 @@
 #pragma once
 
 #include "CoordinateSystem3D.h"
-#include "../Viewport/CairoContext.h"
 
 #include <Plugins/Samples/Common/FullOrthancDataset.h>
 
@@ -32,6 +31,9 @@
 {
   class DicomStructureSet : public boost::noncopyable
   {
+  public:
+    typedef std::pair<double, double> PolygonPoint;
+    
   private:
     struct ReferencedSlice
     {
@@ -112,6 +114,12 @@
 
     const Structure& GetStructure(size_t index) const;
 
+    Structure& GetStructure(size_t index);
+  
+    bool ProjectStructure(std::vector< std::vector<PolygonPoint> >& polygons,
+                          Structure& structure,
+                          const CoordinateSystem3D& slice);
+
   public:
     DicomStructureSet(const OrthancPlugins::FullOrthancDataset& instance);
 
@@ -142,12 +150,16 @@
 
     void CheckReferencedSlices();
 
-    void Render(CairoContext& context,
-                const CoordinateSystem3D& slice);
-
     Vector GetNormal() const;
 
     static DicomStructureSet* SynchronousLoad(OrthancPlugins::IOrthancConnection& orthanc,
                                               const std::string& instanceId);
+
+    bool ProjectStructure(std::vector< std::vector<PolygonPoint> >& polygons,
+                          size_t index,
+                          const CoordinateSystem3D& slice)
+    {
+      return ProjectStructure(polygons, GetStructure(index), slice);
+    }
   };
 }