diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-10-07 15:05:52 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-10-07 15:05:52 +0000 |
commit | cd32030762351aa25c39c9678753d7c6d78a5fea (patch) | |
tree | cc7ae4349022532dc035ff2c57a014a3c6c5f478 | |
parent | 2d81a5636dcf5532769a1bf4ddaafb2fa91b990a (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.cc | 34 | ||||
-rw-r--r-- | gtk2_ardour/diamond.cc | 54 | ||||
-rw-r--r-- | gtk2_ardour/diamond.h | 5 | ||||
-rw-r--r-- | gtk2_ardour/midi_region_view.cc | 2 |
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). |