X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fstreamview.cc;h=18953aee0913e1fe28750653371604e606326f5d;hb=5fef65538040fbac1b9edd1847a269aa925a49c9;hp=850052163ea48c653d3cf914e682c1b43202eb30;hpb=9da7a15c607463c1ce8b83424ca141b73e436b52;p=ardour.git diff --git a/gtk2_ardour/streamview.cc b/gtk2_ardour/streamview.cc index 850052163e..18953aee09 100644 --- a/gtk2_ardour/streamview.cc +++ b/gtk2_ardour/streamview.cc @@ -72,7 +72,7 @@ StreamView::StreamView (RouteTimeAxisView& tv, ArdourCanvas::Container* canvas_g canvas_rect = new ArdourCanvas::Rectangle (_canvas_group); CANVAS_DEBUG_NAME (canvas_rect, string_compose ("SV canvas rectangle %1", _trackview.name())); canvas_rect->set (ArdourCanvas::Rect (0, 0, ArdourCanvas::COORD_MAX, tv.current_height ())); - canvas_rect->set_outline_what (ArdourCanvas::Rectangle::What (0)); + canvas_rect->set_outline (false); canvas_rect->set_fill (true); canvas_rect->Event.connect (sigc::bind (sigc::mem_fun (_trackview.editor(), &PublicEditor::canvas_stream_view_event), canvas_rect, &_trackview)); @@ -404,6 +404,43 @@ StreamView::transport_looped() Gtkmm2ext::UI::instance()->call_slot (invalidator (*this), boost::bind (&StreamView::setup_rec_box, this)); } +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 () { @@ -431,7 +468,7 @@ StreamView::update_rec_box () default: fatal << string_compose (_("programming error: %1"), "illegal track mode") << endmsg; - /*NOTREACHED*/ + abort(); /*NOTREACHED*/ return; } @@ -575,7 +612,7 @@ StreamView::child_height () const return height / (_layers * 2 + 1); } - /* NOTREACHED */ + abort(); /* NOTREACHED */ return height; } @@ -675,19 +712,3 @@ StreamView::setup_new_rec_layer_time (boost::shared_ptr region) _new_rec_layer_time = max_framepos; } } - -void -StreamView::enter_internal_edit_mode () -{ - for (list::iterator i = region_views.begin(); i != region_views.end(); ++i) { - (*i)->hide_rect (); - } -} - -void -StreamView::leave_internal_edit_mode () -{ - for (list::iterator i = region_views.begin(); i != region_views.end(); ++i) { - (*i)->show_rect (); - } -}