From 907e7cd4af129f60d74ecda38601fa306007e365 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 18 Apr 2013 21:29:13 -0400 Subject: [PATCH] part two of ... add Canvas::Arc and derive Canvas::Circle from it --- libs/canvas/canvas/circle.h | 23 ++----------- libs/canvas/circle.cc | 65 ++----------------------------------- libs/canvas/wscript | 1 + 3 files changed, 5 insertions(+), 84 deletions(-) diff --git a/libs/canvas/canvas/circle.h b/libs/canvas/canvas/circle.h index 4cf775db0b..030e73312c 100644 --- a/libs/canvas/canvas/circle.h +++ b/libs/canvas/canvas/circle.h @@ -19,33 +19,14 @@ #ifndef __CANVAS_CIRCLE_H__ #define __CANVAS_CIRCLE_H__ -#include "canvas/item.h" -#include "canvas/outline.h" -#include "canvas/fill.h" +#include "canvas/arc.h" namespace ArdourCanvas { -class Circle : virtual public Item, public Outline, public Fill +class Circle : public Arc { public: Circle (Group *); - - void render (Rect const & area, Cairo::RefPtr) const; - void compute_bounding_box () const; - - void set_center (Duple const &); - void set_radius (Coord); - - Duple center() const { - return _center; - } - Coord radius () const { - return _radius; - } - -private: - Duple _center; - Coord _radius; }; } diff --git a/libs/canvas/circle.cc b/libs/canvas/circle.cc index 3a3d6e8e7e..15a1679f74 100644 --- a/libs/canvas/circle.cc +++ b/libs/canvas/circle.cc @@ -16,75 +16,14 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include -#include -#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) { - + set_arc (360.0); } -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 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 (); -} - -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 (); -} - diff --git a/libs/canvas/wscript b/libs/canvas/wscript index ba75162eae..11049f7e80 100644 --- a/libs/canvas/wscript +++ b/libs/canvas/wscript @@ -28,6 +28,7 @@ out = 'build' path_prefix = 'libs/canvas/' canvas_sources = [ + 'arc.cc', 'arrow.cc', 'canvas.cc', 'circle.cc',