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/audio_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/audio_streamview.cc')
-rw-r--r-- | gtk2_ardour/audio_streamview.cc | 57 |
1 files changed, 3 insertions, 54 deletions
diff --git a/gtk2_ardour/audio_streamview.cc b/gtk2_ardour/audio_streamview.cc index 551dcdac19..1c54233131 100644 --- a/gtk2_ardour/audio_streamview.cc +++ b/gtk2_ardour/audio_streamview.cc @@ -237,62 +237,11 @@ AudioStreamView::setup_rec_box () /* start a new rec box */ - boost::shared_ptr<AudioTrack> at; - - at = _trackview.audio_track(); /* we know what it is already */ + boost::shared_ptr<AudioTrack> at = _trackview.audio_track(); framepos_t const frame_pos = at->current_capture_start (); - gdouble xstart = _trackview.editor().sample_to_pixel (frame_pos); - gdouble xend = xstart; /* keeps gcc optimized happy, really set in switch() below */ - uint32_t fill_color; - - switch (_trackview.audio_track()->mode()) { - case Normal: - case NonLayered: - xend = xstart; - fill_color = ARDOUR_UI::config()->color ("recording rect"); - break; - - case Destructive: - xend = xstart + 2; - fill_color = ARDOUR_UI::config()->color ("recording rect"); - /* make the recording rect translucent to allow - the user to see the peak data coming in, etc. - */ - fill_color = UINT_RGBA_CHANGE_A (fill_color, 120); - break; - default: - fatal << string_compose (_("programming error: %1: %2"), - "AudioStreamView: impossible track mode", - (int) _trackview.audio_track()->mode()) << endmsg; - abort(); /*NOTREACHED*/ - } + double const width = ((at->mode() == Destructive) ? 2 : 0); - 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 ("time axis frame")); - rec_rect->set_fill_color (fill_color); - - RecBoxInfo recbox; - recbox.rectangle = rec_rect; - - if (rec_rects.empty()) { - recbox.start = _trackview.session()->record_location (); - } else { - recbox.start = _trackview.session()->transport_frame (); - } - recbox.length = 0; - - rec_rects.push_back (recbox); - - screen_update_connection.disconnect(); - screen_update_connection = ARDOUR_UI::instance()->SuperRapidScreenUpdate.connect ( - sigc::mem_fun (*this, &AudioStreamView::update_rec_box)); - rec_updating = true; - rec_active = true; + create_rec_box(frame_pos, width); } else if (rec_active && (_trackview.session()->record_status() != Session::Recording || |