X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fdiamond.cc;h=4ed7fa9ebc7a071c65899c2f4fb8661a5a81d1e5;hb=e3d9a971a735174687067cb7d7b9419c7ecbb114;hp=53341cf2469802af20e965ff44172c8d562936dd;hpb=2f7bb0945307851430909630bb3632dc3ee2f694;p=ardour.git diff --git a/gtk2_ardour/diamond.cc b/gtk2_ardour/diamond.cc index 53341cf246..4ed7fa9ebc 100644 --- a/gtk2_ardour/diamond.cc +++ b/gtk2_ardour/diamond.cc @@ -1,6 +1,6 @@ /* - Copyright (C) 2007 Paul Davis - Author: Dave Robillard + Copyright (C) 2007 Paul Davis + Author: David Robillard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,12 +24,61 @@ using namespace Gnome::Art; Diamond::Diamond(Group& group, double height) : Polygon(group) + , _x (0) + , _y (0) + , _h (height) { - Points points; - points.push_back(Point(0, height*2.0)); - points.push_back(Point(height, height)); - points.push_back(Point(0, 0)); - points.push_back(Point(-height, height)); - property_points() = points; + points = gnome_canvas_points_new (4); + move_to (0, 0); } +Diamond::~Diamond () +{ + gnome_canvas_points_free (points); +} + +void +Diamond::set_height (double 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); +}