allow per-line configurability of the threshold used to determine if a PolyLine covers a given coordination
This commit is contained in:
parent
49d9397770
commit
e2f18ea658
|
@ -28,12 +28,21 @@ namespace ArdourCanvas {
|
|||
|
||||
class LIBCANVAS_API PolyLine : public PolyItem
|
||||
{
|
||||
public:
|
||||
public:
|
||||
PolyLine (Group *);
|
||||
|
||||
|
||||
void render (Rect const & area, Cairo::RefPtr<Cairo::Context>) const;
|
||||
|
||||
|
||||
bool covers (Duple const &) const;
|
||||
/**
|
||||
* Set the distance at which a point will be considered to be covered
|
||||
* by the line. For the definition of "distance" see
|
||||
* utils.cc:distance_to_segment_squared()
|
||||
*/
|
||||
void set_covers_threshold (double);
|
||||
|
||||
private:
|
||||
double _threshold;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ using namespace ArdourCanvas;
|
|||
PolyLine::PolyLine (Group* parent)
|
||||
: Item (parent)
|
||||
, PolyItem (parent)
|
||||
, _threshold (1.0)
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -59,7 +60,6 @@ PolyLine::covers (Duple const & point) const
|
|||
/* repeat for each line segment */
|
||||
|
||||
const Rect visible (_canvas->visible_area());
|
||||
static const double threshold = 2.0;
|
||||
|
||||
for (i = 1, j = 0; i < npoints; ++i, ++j) {
|
||||
|
||||
|
@ -85,7 +85,7 @@ PolyLine::covers (Duple const & point) const
|
|||
continue;
|
||||
}
|
||||
|
||||
if (d < threshold) {
|
||||
if (d < _threshold + _outline_width) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -93,3 +93,9 @@ PolyLine::covers (Duple const & point) const
|
|||
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
PolyLine::set_covers_threshold (double t)
|
||||
{
|
||||
_threshold = t;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user