diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-11-04 11:56:10 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-11-04 11:56:10 -0500 |
commit | 6473cc7cb431abe71721341c550130e61cf64aa1 (patch) | |
tree | 1f0a2c5783e883d817d4667269abd73d0fdb5afb /libs/canvas/arrow.cc | |
parent | 08b485db75082a21c3814b0a4517f2b2fc994b77 (diff) |
drop use of bounding box to determine whether an item covers a point; add Item::covers(Duple const&)
Default implementation for Item still uses bounding box, but specializations for Arc (Circle), Polygon, Line and PolyLine have been added
Diffstat (limited to 'libs/canvas/arrow.cc')
-rw-r--r-- | libs/canvas/arrow.cc | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/libs/canvas/arrow.cc b/libs/canvas/arrow.cc index f82f2d96de..55f5173253 100644 --- a/libs/canvas/arrow.cc +++ b/libs/canvas/arrow.cc @@ -221,3 +221,20 @@ Arrow::set_color (Color color) _heads[i].polygon->set_fill_color (color); } } + +bool +Arrow::covers (Duple const & point) const +{ + if (_heads[0].polygon && _heads[0].polygon->covers (point)) { + return true; + } + if (_line && _line->covers (point)) { + return true; + } + + if (_heads[1].polygon && _heads[1].polygon->covers (point)) { + return true; + } + + return false; +} |