From db3d42d5519c53f45721ffced7dce3b1dc032c16 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 2 Dec 2014 05:32:34 -0500 Subject: first pass at optimization for low-level canvas code --- libs/canvas/types.cc | 156 --------------------------------------------------- 1 file changed, 156 deletions(-) (limited to 'libs/canvas/types.cc') diff --git a/libs/canvas/types.cc b/libs/canvas/types.cc index 4c8cd854f2..536147a7f4 100644 --- a/libs/canvas/types.cc +++ b/libs/canvas/types.cc @@ -17,7 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include #include #include @@ -30,161 +29,6 @@ using namespace ArdourCanvas; Coord const ArdourCanvas::COORD_MAX = 1.7e307; -static inline Coord -safe_add (Coord a, Coord b) -{ - if (((COORD_MAX - a) <= b) || ((COORD_MAX - b) <= a)) { - return COORD_MAX; - } - - return a + b; -} - -Duple -Duple::translate (Duple t) const -{ - Duple d; - - d.x = safe_add (x, t.x); - d.y = safe_add (y, t.y); - - return d; -} - -boost::optional -Rect::intersection (Rect const & o) const -{ - Rect i; - - i.x0 = max (x0, o.x0); - i.y0 = max (y0, o.y0); - i.x1 = min (x1, o.x1); - i.y1 = min (y1, o.y1); - - if (i.x0 > i.x1 || i.y0 > i.y1) { - return boost::optional (); - } - - return boost::optional (i); -} - -Rect -Rect::translate (Duple t) const -{ - Rect r; - - r.x0 = safe_add (x0, t.x); - r.y0 = safe_add (y0, t.y); - r.x1 = safe_add (x1, t.x); - r.y1 = safe_add (y1, t.y); - return r; -} - -Rect -Rect::extend (Rect const & o) const -{ - Rect r; - r.x0 = min (x0, o.x0); - r.y0 = min (y0, o.y0); - r.x1 = max (x1, o.x1); - r.y1 = max (y1, o.y1); - return r; -} - -Rect -Rect::expand (Distance amount) const -{ - Rect r; - r.x0 = x0 - amount; - r.y0 = y0 - amount; - r.x1 = safe_add (x1, amount); - r.y1 = safe_add (y1, amount); - return r; -} - -Rect -Rect::shrink (Distance amount) const -{ - /* This isn't the equivalent of expand (-distance) because - of the peculiarities of safe_add() with negative values. - Maybe. - */ - - Rect r; - - r.x0 = safe_add (x0, amount); - r.y0 = safe_add (y0, amount); - r.x1 = x1 - amount; - r.y1 = y1 - amount; - - return r; -} - -bool -Rect::contains (Duple point) const -{ - return point.x >= x0 && point.x <= x1 && point.y >= y0 && point.y <= y1; -} - -Rect -Rect::fix () const -{ - Rect r; - - r.x0 = min (x0, x1); - r.y0 = min (y0, y1); - r.x1 = max (x0, x1); - r.y1 = max (y0, y1); - - return r; -} - -bool -ArdourCanvas::operator!= (Rect const& a, Rect const& b) -{ - return a.x0 != b.x0 || - a.x1 != b.x1 || - a.y0 != b.y0 || - a.y1 != b.y1; -} - - -Duple -ArdourCanvas::operator- (Duple const & o) -{ - return Duple (-o.x, -o.y); -} - -Duple -ArdourCanvas::operator+ (Duple const & a, Duple const & b) -{ - return Duple (safe_add (a.x, b.x), safe_add (a.y, b.y)); -} - -bool -ArdourCanvas::operator== (Duple const & a, Duple const & b) -{ - return a.x == b.x && a.y == b.y; -} - -bool -ArdourCanvas::operator!= (Duple const & a, Duple const & b) -{ - return a.x != b.x || a.y != b.y; -} - -Duple -ArdourCanvas::operator- (Duple const & a, Duple const & b) -{ - return Duple (a.x - b.x, a.y - b.y); -} - -Duple -ArdourCanvas::operator/ (Duple const & a, double b) -{ - return Duple (a.x / b, a.y / b); -} - ostream & ArdourCanvas::operator<< (ostream & s, Duple const & r) { -- cgit v1.2.3