diff Framework/Layers/DicomStructureSetRendererFactory.cpp @ 125:44fc253d4876 wasm

refactoring
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 08 Nov 2017 16:13:55 +0100
parents ed0003f6102c
children c9e88e7935a4
line wrap: on
line diff
--- a/Framework/Layers/DicomStructureSetRendererFactory.cpp	Sun Oct 08 10:52:24 2017 +0200
+++ b/Framework/Layers/DicomStructureSetRendererFactory.cpp	Wed Nov 08 16:13:55 2017 +0100
@@ -49,7 +49,33 @@
       if (visible_)
       {
         cairo_set_line_width(context.GetObject(), 3.0f / view.GetZoom());
-        structureSet_.Render(context, slice_);
+
+        cairo_t* cr = context.GetObject();
+
+        for (size_t k = 0; k < structureSet_.GetStructureCount(); k++)
+        {
+          std::vector< std::vector<DicomStructureSet::PolygonPoint> >  polygons;
+
+          if (structureSet_.ProjectStructure(polygons, k, slice_))
+          {
+            uint8_t red, green, blue;
+            structureSet_.GetStructureColor(red, green, blue, k);
+            context.SetSourceColor(red, green, blue);
+
+            for (size_t i = 0; i < polygons.size(); i++)
+            {
+              cairo_move_to(cr, polygons[i][0].first, polygons[i][0].second);
+
+              for (size_t j = 1; j < polygons[i].size(); j++)
+              {
+                cairo_line_to(cr, polygons[i][j].first, polygons[i][j].second);
+              }
+
+              cairo_line_to(cr, polygons[i][0].first, polygons[i][0].second);
+              cairo_stroke(cr);
+            }
+          }
+        }
       }
 
       return true;
@@ -199,11 +225,7 @@
   
   void DicomStructureSetRendererFactory::ScheduleLayerCreation(const CoordinateSystem3D& viewportSlice)
   {
-    bool isOpposite;
-    if (structureSet_.get() != NULL &&
-        GeometryToolbox::IsParallelOrOpposite(isOpposite,
-                                              viewportSlice.GetNormal(),
-                                              structureSet_->GetNormal()))
+    if (structureSet_.get() != NULL)
     {
       NotifyLayerReady(new Renderer(*structureSet_, viewportSlice), viewportSlice, false);
     }