X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fcanvas%2Farc.cc;h=baec2fafb14f46e3758e2039cfb992975ce2c72f;hb=542d1ce01c6629362edd8b14eee9523941a3c128;hp=eeecd3204ae8c3ffa952fe9af61126d56f060057;hpb=664e715a002450ac0f079411f6f051c122a4322a;p=ardour.git diff --git a/libs/canvas/arc.cc b/libs/canvas/arc.cc index eeecd3204a..baec2fafb1 100644 --- a/libs/canvas/arc.cc +++ b/libs/canvas/arc.cc @@ -16,8 +16,11 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include + #include + #include "pbd/compose.h" #include "canvas/circle.h" #include "canvas/types.h" @@ -28,15 +31,20 @@ using namespace std; using namespace ArdourCanvas; -Arc::Arc (Group* parent) - : Item (parent) - , Outline (parent) - , Fill (parent) +Arc::Arc (Canvas* c) + : Item (c) , _radius (0.0) , _arc_degrees (0.0) , _start_degrees (0.0) { +} +Arc::Arc (Item* parent) + : Item (parent) + , _radius (0.0) + , _arc_degrees (0.0) + , _start_degrees (0.0) +{ } void @@ -97,7 +105,6 @@ Arc::set_radius (Coord r) end_change (); } - void Arc::set_arc (double deg) { @@ -121,3 +128,15 @@ Arc::set_start (double deg) end_change (); } +bool +Arc::covers (Duple const & point) const +{ + Duple p = window_to_item (point); + + double angle_degs = atan (p.y/p.x) * 2.0 * M_PI; + double radius = sqrt (p.x * p.x + p.y * p.y); + + return (angle_degs >= _start_degrees) && + (angle_degs <= (_start_degrees + _arc_degrees)) && + (radius < _radius); +}