X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fdiamond.cc;h=57b86250f9539eddce5fe7ab808c7540bfd20e53;hb=67460c2af45d0455e64623572480c064445c2e5b;hp=3cc198fb981d54c14eae6658dbd03e2b2e5cf76e;hpb=aefcce1c99598cc8c1748940a01e2d8aa55caf85;p=ardour.git diff --git a/gtk2_ardour/diamond.cc b/gtk2_ardour/diamond.cc index 3cc198fb98..57b86250f9 100644 --- a/gtk2_ardour/diamond.cc +++ b/gtk2_ardour/diamond.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2007 Paul Davis + Copyright (C) 2007 Paul Davis Author: Dave Robillard This program is free software; you can redistribute it and/or modify @@ -24,10 +24,13 @@ using namespace Gnome::Art; Diamond::Diamond(Group& group, double height) : Polygon(group) + , _x (0) + , _y (0) + , _h (height) { points = gnome_canvas_points_new (4); g_object_set (gobj(), "points", points, NULL); - set_height (height); + move_to (0, 0); } Diamond::~Diamond () @@ -36,24 +39,47 @@ Diamond::~Diamond () } void -Diamond::set_height(double height) +Diamond::set_height (double height) { - double x1, y1, x2, y2; - - get_bounds (x1, y1, x2, y2); - - points->coords[0] = x1; - points->coords[1] = y1 + height*2.0; - - points->coords[2] = x2 + height; - points->coords[3] = y1 + height; - - points->coords[4] = x1; - points->coords[5] = y2; - - points->coords[6] = x2 -height; - points->coords[7] = y2 + height; - + _h = height; + move_to (_x, _y); +} + +void +Diamond::move_to (double x, double y) +{ + _x = x; + _y = y; + + points->coords[0] = _x; + points->coords[1] = _y + (_h * 2.0); + + points->coords[2] = _x + _h; + points->coords[3] = _y + _h; + + points->coords[4] = _x; + points->coords[5] = _y; + + points->coords[6] = _x - _h; + points->coords[7] = _y + _h; + g_object_set (gobj(), "points", points, NULL); } +void +Diamond::move_by (double dx, double dy) +{ + points->coords[0] += dx; + points->coords[1] += dy; + + points->coords[2] += dx; + points->coords[3] += dy; + + points->coords[4] += dx; + points->coords[5] += dy; + + points->coords[6] += dx; + points->coords[7] += dy; + + g_object_set (gobj(), "points", points, NULL); +}