diff --git a/gtk2_ardour/midi_streamview.cc b/gtk2_ardour/midi_streamview.cc index 7b2bb57f50..9d44e9417f 100644 --- a/gtk2_ardour/midi_streamview.cc +++ b/gtk2_ardour/midi_streamview.cc @@ -64,7 +64,7 @@ using namespace Editing; MidiStreamView::MidiStreamView (MidiTimeAxisView& tv) : StreamView (tv) - , MidiViewBackground (_canvas_group) + , MidiViewBackground (_canvas_group, tv.editor()) , _updates_suspended (false) { /* use a dedicated group for MIDI regions (on top of the grid and lines) */ diff --git a/gtk2_ardour/midi_view_background.cc b/gtk2_ardour/midi_view_background.cc index a07db1821a..a2137ea44a 100644 --- a/gtk2_ardour/midi_view_background.cc +++ b/gtk2_ardour/midi_view_background.cc @@ -135,7 +135,17 @@ MidiViewBackground::update_contents_height () } void -MidiViewBackground::draw_note_lines() +MidiViewBackground::get_note_positions (std::vector& numbers, std::vector& pos, std::vector& heights) const +{ + for (auto const & r : _note_lines->rects()) { + numbers.push_back (r.index); + pos.push_back (r.y0); + heights.push_back (r.height()); + } +} + +void +MidiViewBackground::setup_note_lines() { if (updates_suspended()) { return; diff --git a/gtk2_ardour/midi_view_background.h b/gtk2_ardour/midi_view_background.h index b007d81e56..abbadaacda 100644 --- a/gtk2_ardour/midi_view_background.h +++ b/gtk2_ardour/midi_view_background.h @@ -44,6 +44,8 @@ namespace ArdourCanvas { class RectSet; } +class EditingContext; + /** A class that provides various context for a MidiVieww: = note ranges * color information @@ -53,7 +55,7 @@ namespace ArdourCanvas { class MidiViewBackground : public virtual ViewBackground { public: - MidiViewBackground (ArdourCanvas::Item* parent); + MidiViewBackground (ArdourCanvas::Item* parent, EditingContext& ec); ~MidiViewBackground (); Gtk::Adjustment note_range_adjustment; @@ -125,7 +127,12 @@ class MidiViewBackground : public virtual ViewBackground virtual ARDOUR::InstrumentInfo* instrument_info() const = 0; + void get_note_positions (std::vector& numbers, std::vector& pos, std::vector& heights) const; + + EditingContext& editing_context() const { return _editing_context; } + protected: + EditingContext& _editing_context; bool _range_dirty; double _range_sum_cache; uint8_t _lowest_note; ///< currently visible diff --git a/gtk2_ardour/pianoroll_background.cc b/gtk2_ardour/pianoroll_background.cc index 156d720383..834a7291b5 100644 --- a/gtk2_ardour/pianoroll_background.cc +++ b/gtk2_ardour/pianoroll_background.cc @@ -25,7 +25,7 @@ #include "midi_view.h" PianorollMidiBackground::PianorollMidiBackground (ArdourCanvas::Item* parent, Pianoroll& pr) - : MidiViewBackground (parent) + : MidiViewBackground (parent, pr) , view (nullptr) , pianoroll (pr) , _width (0.)