changes to help strp silence
[ardour.git] / gtk2_ardour / diamond.cc
index 7d3e66357d5c7c4bef99044162e79658665476bc..57b86250f9539eddce5fe7ab808c7540bfd20e53 100644 (file)
@@ -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,18 +24,62 @@ using namespace Gnome::Art;
 
 Diamond::Diamond(Group& group, double height)
        : Polygon(group)
+       , _x (0)
+       , _y (0)
+       , _h (height)
 {
-       set_height(height);
+       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)
+Diamond::set_height (double height)
 {
-       Points points;
-       points.push_back(Art::Point(0, height*2.0));
-       points.push_back(Art::Point(height, height));
-       points.push_back(Art::Point(0, 0));
-       points.push_back(Art::Point(-height, height));
-       property_points() = points;     
+       _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);
+}