diff Framework/Radiography/RadiographyMaskLayer.cpp @ 480:2f6ecb5037ea am-touch-events

added mouse tracker for Layer Mask. Everything seems ok
author am@osimis.io
date Thu, 14 Feb 2019 10:18:02 +0100
parents e3d316ba34ba
children 159a465e27bd
line wrap: on
line diff
--- a/Framework/Radiography/RadiographyMaskLayer.cpp	Wed Feb 13 14:14:42 2019 +0100
+++ b/Framework/Radiography/RadiographyMaskLayer.cpp	Thu Feb 14 10:18:02 2019 +0100
@@ -42,6 +42,15 @@
     return dicomLayer_.GetTransformInverse();
   }
 
+  bool RadiographyMaskLayer::GetPixel(unsigned int& imageX,
+                        unsigned int& imageY,
+                        double sceneX,
+                        double sceneY) const
+  {
+    return dicomLayer_.GetPixel(imageX, imageY, sceneX, sceneY);
+  }
+
+
   void ComputeMaskExtent(unsigned int& left, unsigned int& right, unsigned int& top, unsigned int& bottom, const std::vector<MaskPoint>& corners)
   {
     left = std::numeric_limits<unsigned int>::max();
@@ -59,6 +68,15 @@
     }
   }
 
+  void RadiographyMaskLayer::SetCorner(const MaskPoint& corner, size_t index)
+  {
+    if (index < corners_.size())
+      corners_[index] = corner;
+    else
+      corners_.push_back(corner);
+    invalidated_ = true;
+  }
+
   void RadiographyMaskLayer::SetCorners(const std::vector<MaskPoint>& corners)
   {
     corners_ = corners;
@@ -161,8 +179,8 @@
 
         for (i = 0; i < cpSize; i++)
         {
-          if ((cpy[i] <= y && cpy[j] >=  y)
-              ||  (cpy[j] <= y && cpy[i] >= y))
+          if ((cpy[i] < y && cpy[j] >=  y)
+              ||  (cpy[j] < y && cpy[i] >= y))
           {
             nodeX[nodes++]= (int)(cpx[i] + (y - cpy[i])/(cpy[j] - cpy[i]) *(cpx[j] - cpx[i]));
           }