X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Fdiamond.cc;h=57b86250f9539eddce5fe7ab808c7540bfd20e53;hb=6fbaa5403bcefba3186fb5490017e110210122e3;hp=31761597cdc6029f9a4bb97eee71fd2b0f72a09b;hpb=68653307e666b8daabd2931ce0731d400d947707;p=ardour.git diff --git a/gtk2_ardour/diamond.cc b/gtk2_ardour/diamond.cc index 31761597cd..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,12 +24,62 @@ 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)); - 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); + g_object_set (gobj(), "points", points, NULL); + 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); +}