diff options
author | David Robillard <d@drobilla.net> | 2014-12-17 18:40:38 -0500 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2014-12-17 18:41:23 -0500 |
commit | 6e912a0aa31313636e2957ec0aa97d4103ee117f (patch) | |
tree | b0ab3ba60fb7b623f0a29d305e8e5eb62eb2708c /gtk2_ardour/streamview.cc | |
parent | 0f63ac06a44c92dd46e66dc2e8b29908ef8e3078 (diff) |
Fix display of MIDI notes/regions while recording.
Make record rect transparency configurable.
Factor out some copy-paste streamview code.
Diffstat (limited to 'gtk2_ardour/streamview.cc')
-rw-r--r-- | gtk2_ardour/streamview.cc | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/gtk2_ardour/streamview.cc b/gtk2_ardour/streamview.cc index 73e150549f..1ee0114c52 100644 --- a/gtk2_ardour/streamview.cc +++ b/gtk2_ardour/streamview.cc @@ -405,6 +405,43 @@ StreamView::transport_looped() } void +StreamView::create_rec_box(framepos_t frame_pos, double width) +{ + const double xstart = _trackview.editor().sample_to_pixel(frame_pos); + const double xend = xstart + width; + const uint32_t fill_color = ARDOUR_UI::config()->color_mod("recording rect", "recording_rect"); + + ArdourCanvas::Rectangle* rec_rect = new ArdourCanvas::TimeRectangle(_canvas_group); + rec_rect->set_x0(xstart); + rec_rect->set_y0(0); + rec_rect->set_x1(xend); + rec_rect->set_y1(child_height ()); + rec_rect->set_outline_what(ArdourCanvas::Rectangle::What(0)); + rec_rect->set_outline_color(ARDOUR_UI::config()->color("recording rect")); + rec_rect->set_fill_color(fill_color); + rec_rect->lower_to_bottom(); + + RecBoxInfo recbox; + recbox.rectangle = rec_rect; + recbox.length = 0; + + if (rec_rects.empty()) { + recbox.start = _trackview.session()->record_location (); + } else { + recbox.start = _trackview.session()->transport_frame (); + } + + rec_rects.push_back (recbox); + + screen_update_connection.disconnect(); + screen_update_connection = ARDOUR_UI::instance()->SuperRapidScreenUpdate.connect( + sigc::mem_fun(*this, &StreamView::update_rec_box)); + + rec_updating = true; + rec_active = true; +} + +void StreamView::update_rec_box () { if (rec_active && rec_rects.size() > 0) { |