summaryrefslogtreecommitdiff
path: root/gtk2_ardour/streamview.cc
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2014-12-17 18:40:38 -0500
committerDavid Robillard <d@drobilla.net>2014-12-17 18:41:23 -0500
commit6e912a0aa31313636e2957ec0aa97d4103ee117f (patch)
treeb0ab3ba60fb7b623f0a29d305e8e5eb62eb2708c /gtk2_ardour/streamview.cc
parent0f63ac06a44c92dd46e66dc2e8b29908ef8e3078 (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.cc37
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) {