expand bounding box of all objects by 0.5 before computing intersection for render...
[ardour.git] / libs / canvas / circle.cc
index 3a3d6e8e7ef3c2db55662e8e81ea31dc74f1c7d2..15a1679f748048c517c227f751a53a913a8d8389 100644 (file)
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-#include <algorithm>
-#include <cairomm/context.h>
-#include "pbd/compose.h"
 #include "canvas/circle.h"
-#include "canvas/types.h"
-#include "canvas/debug.h"
-#include "canvas/utils.h"
-#include "canvas/canvas.h"
 
-using namespace std;
 using namespace ArdourCanvas;
 
 Circle::Circle (Group* parent)
        : Item (parent)
-       , Outline (parent)
-       , Fill (parent)
-       , _radius (0.0)
+       , Arc (parent)
 {
-
-}
-
-void
-Circle::compute_bounding_box () const
-{
-       Rect bbox;
-       
-       bbox.x0 = _center.x - _radius;
-       bbox.y0 = _center.y - _radius;
-       bbox.x1 = _center.x + _radius;
-       bbox.y1 = _center.y + _radius;
-
-       bbox = bbox.expand (0.5 + (_outline_width / 2));
-
-       _bounding_box = bbox;
-       _bounding_box_dirty = false;
-}
-
-void
-Circle::render (Rect const & /*area*/, Cairo::RefPtr<Cairo::Context> context) const
-{
-       if (_radius <= 0.0) {
-               return;
-       }
-       context->arc (_center.x, _center.y, _radius, 0.0, 2.0 * M_PI);
-       setup_fill_context (context);
-       context->fill_preserve ();
-       setup_outline_context (context);
-       context->stroke ();
+       set_arc (360.0);
 }
 
-void
-Circle::set_center (Duple const & c)
-{
-       begin_change ();
-
-       _center = c;
-
-       _bounding_box_dirty = true;
-       end_change ();
-}
-
-void
-Circle::set_radius (Coord r)
-{
-       begin_change ();
-       
-       _radius = r;
-
-       _bounding_box_dirty = true;
-       end_change ();
-}      
-