summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-10-07 15:05:52 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-10-07 15:05:52 +0000
commitcd32030762351aa25c39c9678753d7c6d78a5fea (patch)
treecc7ae4349022532dc035ff2c57a014a3c6c5f478
parent2d81a5636dcf5532769a1bf4ddaafb2fa91b990a (diff)
fix up dragging notes in percussive mode
git-svn-id: svn://localhost/ardour2/branches/3.0@5749 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/canvas-hit.cc34
-rw-r--r--gtk2_ardour/diamond.cc54
-rw-r--r--gtk2_ardour/diamond.h5
-rw-r--r--gtk2_ardour/midi_region_view.cc2
4 files changed, 47 insertions, 48 deletions
diff --git a/gtk2_ardour/canvas-hit.cc b/gtk2_ardour/canvas-hit.cc
index c9908ac60c..23a9a19137 100644
--- a/gtk2_ardour/canvas-hit.cc
+++ b/gtk2_ardour/canvas-hit.cc
@@ -22,39 +22,7 @@ CanvasHit::on_event(GdkEvent* ev)
void
CanvasHit::move_event(double dx, double dy)
{
- move (dx, dy);
-
-#if 0
- cerr << "Move event by " << dx << " " << dy << endl;
-
- 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;
-
- cerr << "Coords now " << endl
- << '\t' << points->coords[0] << ", " << points->coords[1] << endl
- << '\t' << points->coords[2] << ", " << points->coords[3] << endl
- << '\t' << points->coords[4] << ", " << points->coords[5] << endl
- << '\t' << points->coords[6] << ", " << points->coords[7] << endl
- ;
-
- if (_text) {
- _text->property_x() = _text->property_x() + dx;
- _text->property_y() = _text->property_y() + dy;
- }
-
- hide ();
- show ();
- // request_update ();
-#endif
+ move_by (dx, dy);
}
} // namespace Gnome
diff --git a/gtk2_ardour/diamond.cc b/gtk2_ardour/diamond.cc
index 3cc198fb98..48c0dd4b68 100644
--- a/gtk2_ardour/diamond.cc
+++ b/gtk2_ardour/diamond.cc
@@ -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);
+ _h = height;
+ move_to (_x, _y);
+}
+
+void
+Diamond::move_to (double x, double y)
+{
+ _x = x;
+ _y = y;
- points->coords[0] = x1;
- points->coords[1] = y1 + height*2.0;
+ points->coords[0] = _x;
+ points->coords[1] = _y + (_h * 2.0);
- points->coords[2] = x2 + height;
- points->coords[3] = y1 + height;
+ points->coords[2] = _x + _h;
+ points->coords[3] = _y + _h;
- points->coords[4] = x1;
- points->coords[5] = y2;
-
- points->coords[6] = x2 -height;
- points->coords[7] = y2 + height;
+ 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);
+}
diff --git a/gtk2_ardour/diamond.h b/gtk2_ardour/diamond.h
index adfb289c6f..d9bcf3cff8 100644
--- a/gtk2_ardour/diamond.h
+++ b/gtk2_ardour/diamond.h
@@ -34,9 +34,14 @@ class Diamond : public Polygon
Diamond(Group& group, double height);
~Diamond ();
+ void move_to (double x, double y);
+ void move_by (double dx, double dy);
void set_height(double height);
protected:
+ double _x;
+ double _y;
+ double _h;
GnomeCanvasPoints* points;
};
diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc
index e9bffa1321..3e2fd5470d 100644
--- a/gtk2_ardour/midi_region_view.cc
+++ b/gtk2_ardour/midi_region_view.cc
@@ -1235,7 +1235,7 @@ MidiRegionView::update_hit (CanvasHit* ev)
const double diamond_size = midi_stream_view()->note_height() / 2.0;
const double y = midi_stream_view()->note_to_y(note->note()) + ((diamond_size-2) / 4.0);
- ev->move_event (x, y);
+ ev->move_to (x, y);
}
/** Add a MIDI note to the view (with length).