diff Framework/Radiography/RadiographySceneWriter.cpp @ 481:159a465e27bd am-touch-events

reworked RadiographyScene export to export to an Orthanc::Image too
author am@osimis.io
date Thu, 14 Feb 2019 16:23:59 +0100
parents b85f635f1eb5
children aede9b042cb7
line wrap: on
line diff
--- a/Framework/Radiography/RadiographySceneWriter.cpp	Thu Feb 14 10:18:02 2019 +0100
+++ b/Framework/Radiography/RadiographySceneWriter.cpp	Thu Feb 14 16:23:59 2019 +0100
@@ -57,6 +57,22 @@
     output["fontName"] = layer.GetFontName();
   }
 
+  void RadiographySceneWriter::WriteLayer(Json::Value& output, const RadiographyMaskLayer& layer)
+  {
+    output["type"] = "mask";
+    output["instanceId"] = layer.GetInstanceId(); // the dicom layer it's being linked to
+    output["foreground"] = layer.GetForeground();
+    output["corners"] = Json::arrayValue;
+    const std::vector<MaskPoint>& corners = layer.GetCorners();
+    for (size_t i = 0; i < corners.size(); i++)
+    {
+      Json::Value corner;
+      corner["x"] = corners[i].x;
+      corner["y"] = corners[i].y;
+      output["corners"].append(corner);
+    }
+  }
+
   void RadiographySceneWriter::WriteLayer(Json::Value& output, const RadiographyAlphaLayer& layer)
   {
     output["type"] = "alpha";
@@ -128,6 +144,10 @@
     {
       WriteLayer(output, dynamic_cast<const RadiographyAlphaLayer&>(layer));
     }
+    else if (dynamic_cast<const RadiographyMaskLayer*>(&layer) != NULL)
+    {
+      WriteLayer(output, dynamic_cast<const RadiographyMaskLayer&>(layer));
+    }
     else
     {
       throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);