don't go through ::deliver_enter_leave() unnecessarily
[ardour.git] / libs / canvas / curve.cc
index 5bbd33799deb1dd55f46cb977bd8e962418de0e4..de988ee4b255bba524f85a28951ca585b07d83c0 100644 (file)
@@ -209,3 +209,25 @@ Curve::solve (std::vector<double> const & rhs)
        
        return x;
 }
+
+bool
+Curve::covers (Duple const & pc) const
+{
+       Duple point = canvas_to_item (pc);
+
+       /* XXX Hellaciously expensive ... */
+
+       for (Points::const_iterator p = _points.begin(); p != _points.end(); ++p) {
+
+               const Coord dx = point.x - (*p).x;
+               const Coord dy = point.y - (*p).y;
+               const Coord dx2 = dx * dx;
+               const Coord dy2 = dy * dy;
+
+               if ((dx2 < 2.0 && dy2 < 2.0) || (dx2 + dy2 < 4.0)) {
+                       return true;
+               }
+       }
+
+       return false;
+}