From 64bf6f004a35aa61cdc4a22d419ce9d3f4c57579 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 16 Feb 2009 07:04:27 +0000 Subject: [PATCH] Fix a bunch of the ol' trivial audio-specific-for-no-particular-reason things. Re-addition of this sort of thing is now officially punishable by death ;) git-svn-id: svn://localhost/ardour2/branches/3.0@4603 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/audio_region_view.cc | 7 +- gtk2_ardour/automation_region_view.cc | 5 +- gtk2_ardour/editor.cc | 28 ++--- gtk2_ardour/editor_canvas.cc | 4 +- gtk2_ardour/editor_ops.cc | 161 +++++++++++--------------- gtk2_ardour/streamview.cc | 2 +- gtk2_ardour/streamview.h | 15 +-- libs/ardour/ardour/audioregion.h | 2 +- libs/ardour/ardour/midi_region.h | 2 +- libs/ardour/ardour/region.h | 5 + libs/ardour/audioregion.cc | 16 +-- libs/ardour/midi_region.cc | 28 +---- 12 files changed, 104 insertions(+), 171 deletions(-) diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc index 3e904aabaa..4ec3531000 100644 --- a/gtk2_ardour/audio_region_view.cc +++ b/gtk2_ardour/audio_region_view.cc @@ -200,12 +200,11 @@ AudioRegionView::init (Gdk::Color& basic_color, bool wfd) set_fade_visibility (false); } - string line_name = _region->name(); - line_name += ':'; - line_name += "gain"; + const string line_name = _region->name() + ":gain"; if (!Profile->get_sae()) { - gain_line = new AudioRegionGainLine (line_name, trackview.session(), *this, *group, audio_region()->envelope()); + gain_line = new AudioRegionGainLine (line_name, trackview.session(), *this, *group, + audio_region()->envelope()); } if (!(_flags & EnvelopeVisible)) { diff --git a/gtk2_ardour/automation_region_view.cc b/gtk2_ardour/automation_region_view.cc index 678b18c622..d95c6a824b 100644 --- a/gtk2_ardour/automation_region_view.cc +++ b/gtk2_ardour/automation_region_view.cc @@ -142,10 +142,7 @@ AutomationRegionView::set_height (double h) bool AutomationRegionView::set_position (nframes_t pos, void* src, double* ignored) { - // Do nothing, region parent will move us - //return false; - - return RegionView::set_position(pos, src, ignored); // FIXME: eventually... + return RegionView::set_position(pos, src, ignored); } diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 0932a046e0..719ac2a266 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -4966,21 +4966,18 @@ Editor::get_regions_at (RegionSelection& rs, nframes64_t where, const TrackSelec } for (TrackSelection::const_iterator t = tracks->begin(); t != tracks->end(); ++t) { - - AudioTimeAxisView* atv = dynamic_cast(*t); - - if (atv) { + RouteTimeAxisView* rtv = dynamic_cast(*t); + if (rtv) { boost::shared_ptr ds; boost::shared_ptr pl; - if ((ds = atv->get_diskstream()) && ((pl = ds->playlist()))) { + if ((ds = rtv->get_diskstream()) && ((pl = ds->playlist()))) { - Playlist::RegionList* regions = pl->regions_at ((nframes64_t) floor ( (double)where * ds->speed())); + Playlist::RegionList* regions = pl->regions_at ( + (nframes64_t) floor ( (double)where * ds->speed())); for (Playlist::RegionList::iterator i = regions->begin(); i != regions->end(); ++i) { - - RegionView* rv = atv->audio_view()->find_view (*i); - + RegionView* rv = rtv->view()->find_view (*i); if (rv) { rs.add (rv); } @@ -5004,20 +5001,19 @@ Editor::get_regions_after (RegionSelection& rs, nframes64_t where, const TrackSe } for (TrackSelection::const_iterator t = tracks->begin(); t != tracks->end(); ++t) { - - AudioTimeAxisView* atv = dynamic_cast(*t); - - if (atv) { + RouteTimeAxisView* rtv = dynamic_cast(*t); + if (rtv) { boost::shared_ptr ds; boost::shared_ptr pl; - if ((ds = atv->get_diskstream()) && ((pl = ds->playlist()))) { + if ((ds = rtv->get_diskstream()) && ((pl = ds->playlist()))) { - Playlist::RegionList* regions = pl->regions_touched ((nframes64_t) floor ( (double)where * ds->speed()), max_frames); + Playlist::RegionList* regions = pl->regions_touched ( + (nframes64_t) floor ( (double)where * ds->speed()), max_frames); for (Playlist::RegionList::iterator i = regions->begin(); i != regions->end(); ++i) { - RegionView* rv = atv->audio_view()->find_view (*i); + RegionView* rv = rtv->view()->find_view (*i); if (rv) { rs.push_back (rv); diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc index 89cf608989..848c663200 100644 --- a/gtk2_ardour/editor_canvas.cc +++ b/gtk2_ardour/editor_canvas.cc @@ -462,7 +462,7 @@ Editor::idle_drop_paths (vector paths, nframes64_t frame, double ypos) void Editor::drop_paths_part_two (const vector& paths, nframes64_t frame, double ypos) { - AudioTimeAxisView* tv; + RouteTimeAxisView* tv; std::pair const tvp = trackview_by_y_position (ypos); if (tvp.first == 0) { @@ -477,7 +477,7 @@ Editor::drop_paths_part_two (const vector& paths, nframes64_t frame, do do_embed (paths, Editing::ImportDistinctFiles, ImportAsTrack, frame); } - } else if ((tv = dynamic_cast (tvp.first)) != 0) { + } else if ((tv = dynamic_cast (tvp.first)) != 0) { /* check that its an audio track, not a bus */ diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 467b8539f9..bf1e74706d 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -174,26 +174,26 @@ Editor::split_regions_at (nframes64_t where, RegionSelection& regions) } AudioRegionView* const arv = dynamic_cast(*a); - if (arv) { _new_regionviews_show_envelope = arv->envelope_visible(); } if (pl) { - XMLNode &before = pl->get_state(); + XMLNode &before = pl->get_state(); pl->split_region ((*a)->region(), where); - XMLNode &after = pl->get_state(); - session->add_command(new MementoCommand(*pl, &before, &after)); + XMLNode &after = pl->get_state(); + session->add_command(new MementoCommand(*pl, &before, &after)); } a = tmp; } - while (used_playlists.size() > 0) { + while (used_playlists.size() > 0) { list >::iterator i = used_playlists.begin(); (*i)->thaw(); used_playlists.pop_front(); } + commit_reversible_command (); _new_regionviews_show_envelope = false; } @@ -1157,11 +1157,11 @@ Editor::selected_marker_to_region_point (RegionPoint point, int32_t dir) } float speed = 1.0f; - AudioTimeAxisView *atav; + RouteTimeAxisView *rtav; - if ( ontrack != 0 && (atav = dynamic_cast(ontrack)) != 0 ) { - if (atav->get_diskstream() != 0) { - speed = atav->get_diskstream()->speed(); + if (ontrack != 0 && (rtav = dynamic_cast(ontrack)) != 0) { + if (rtav->get_diskstream() != 0) { + speed = rtav->get_diskstream()->speed(); } } @@ -2761,10 +2761,8 @@ Editor::region_from_selection () nframes64_t selection_cnt = end - start + 1; for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) { - boost::shared_ptr current; - boost::shared_ptr current_r; + boost::shared_ptr current; boost::shared_ptr pl; - nframes64_t internal_start; string new_name; @@ -2772,17 +2770,14 @@ Editor::region_from_selection () continue; } - if ((current_r = pl->top_region_at (start)) == 0) { + if ((current = pl->top_region_at (start)) == 0) { continue; } - current = boost::dynamic_pointer_cast (current_r); - assert(current); // FIXME - if (current != 0) { - internal_start = start - current->position(); - session->region_name (new_name, current->name(), true); - boost::shared_ptr region (RegionFactory::create (current, internal_start, selection_cnt, new_name)); - } + internal_start = start - current->position(); + session->region_name (new_name, current->name(), true); + boost::shared_ptr region (RegionFactory::create (current, + internal_start, selection_cnt, new_name)); } } @@ -2799,9 +2794,7 @@ Editor::create_region_from_selection (vector >& new_re sort_track_selection (); for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) { - - boost::shared_ptr current; - boost::shared_ptr current_r; + boost::shared_ptr current; boost::shared_ptr playlist; nframes64_t internal_start; string new_name; @@ -2810,18 +2803,15 @@ Editor::create_region_from_selection (vector >& new_re continue; } - if ((current_r = playlist->top_region_at(start)) == 0) { + if ((current = playlist->top_region_at(start)) == 0) { continue; } - if ((current = boost::dynamic_pointer_cast(current_r)) == 0) { - continue; - } - internal_start = start - current->position(); session->region_name (new_name, current->name(), true); - new_regions.push_back (boost::dynamic_pointer_cast (RegionFactory::create (current, internal_start, end - start + 1, new_name))); + new_regions.push_back (RegionFactory::create (current, + internal_start, end - start + 1, new_name)); } } @@ -2836,17 +2826,10 @@ Editor::split_multichannel_region () return; } - vector > v; + vector< boost::shared_ptr > v; for (list::iterator x = rs.begin(); x != rs.end(); ++x) { - - AudioRegionView* arv = dynamic_cast(*x); - - if (!arv || arv->audio_region()->n_channels() < 2) { - continue; - } - - (arv)->audio_region()->separate_by_channel (*session, v); + (*x)->region()->separate_by_channel (*session, v); } } @@ -2905,9 +2888,6 @@ Editor::separate_regions_between (const TimeSelection& ts) sort_track_selection (&tmptracks); - - - for (TrackSelection::iterator i = tmptracks.begin(); i != tmptracks.end(); ++i) { RouteTimeAxisView* rtv; @@ -2937,10 +2917,12 @@ Editor::separate_regions_between (const TimeSelection& ts) for (list::const_iterator t = ts.begin(); t != ts.end(); ++t) { - sigc::connection c = rtv->view()->RegionViewAdded.connect (mem_fun(*this, &Editor::collect_new_region_view)); + sigc::connection c = rtv->view()->RegionViewAdded.connect ( + mem_fun(*this, &Editor::collect_new_region_view)); latest_regionviews.clear (); - playlist->partition ((nframes64_t)((*t).start * speed), (nframes64_t)((*t).end * speed), true); + playlist->partition ((nframes64_t)((*t).start * speed), + (nframes64_t)((*t).end * speed), true); c.disconnect (); @@ -2948,15 +2930,17 @@ Editor::separate_regions_between (const TimeSelection& ts) got_some = true; - rtv->view()->foreach_regionview (bind (sigc::ptr_fun (add_if_covered), &(*t), &new_selection)); + rtv->view()->foreach_regionview (bind ( + sigc::ptr_fun (add_if_covered), + &(*t), &new_selection)); if (!in_command) { begin_reversible_command (_("separate")); in_command = true; } - session->add_command(new MementoCommand(*playlist, before, &playlist->get_state())); - + session->add_command(new MementoCommand( + *playlist, before, &playlist->get_state())); } } @@ -3506,24 +3490,18 @@ Editor::trim_region_to_location (const Location& loc, const char* str) begin_reversible_command (str); for (RegionSelection::iterator x = rs.begin(); x != rs.end(); ++x) { - AudioRegionView* arv = dynamic_cast (*x); - - if (!arv) { - continue; - } + RegionView* rv = (*x); /* require region to span proposed trim */ - - switch (arv->region()->coverage (loc.start(), loc.end())) { + switch (rv->region()->coverage (loc.start(), loc.end())) { case OverlapInternal: break; default: continue; } - AudioTimeAxisView* atav = dynamic_cast (&arv->get_time_axis_view()); - - if (!atav) { + RouteTimeAxisView* tav = dynamic_cast (&rv->get_time_axis_view()); + if (!tav) { return; } @@ -3531,17 +3509,18 @@ Editor::trim_region_to_location (const Location& loc, const char* str) nframes64_t start; nframes64_t end; - if (atav->get_diskstream() != 0) { - speed = atav->get_diskstream()->speed(); + if (tav->get_diskstream() != 0) { + speed = tav->get_diskstream()->speed(); } start = session_frame_to_track_frame (loc.start(), speed); end = session_frame_to_track_frame (loc.end(), speed); - XMLNode &before = arv->region()->playlist()->get_state(); - arv->region()->trim_to (start, (end - start), this); - XMLNode &after = arv->region()->playlist()->get_state(); - session->add_command(new MementoCommand(*(arv->region()->playlist()), &before, &after)); + XMLNode &before = rv->region()->playlist()->get_state(); + rv->region()->trim_to (start, (end - start), this); + XMLNode &after = rv->region()->playlist()->get_state(); + session->add_command(new MementoCommand( + *(rv->region()->playlist()), &before, &after)); } commit_reversible_command (); @@ -3559,34 +3538,29 @@ Editor::trim_region_to_edit_point () begin_reversible_command (_("trim region start to edit point")); for (RegionSelection::iterator x = rs.begin(); x != rs.end(); ++x) { - AudioRegionView* arv = dynamic_cast (*x); - - if (!arv) { - continue; - } + RegionView* rv = (*x); /* require region to cover trim */ - - if (!arv->region()->covers (where)) { + if (!rv->region()->covers (where)) { continue; } - AudioTimeAxisView* atav = dynamic_cast (&arv->get_time_axis_view()); - - if (!atav) { + RouteTimeAxisView* tav = dynamic_cast (&rv->get_time_axis_view()); + if (!tav) { return; } float speed = 1.0; - if (atav->get_diskstream() != 0) { - speed = atav->get_diskstream()->speed(); + if (tav->get_diskstream() != 0) { + speed = tav->get_diskstream()->speed(); } - XMLNode &before = arv->region()->playlist()->get_state(); - arv->region()->trim_end( session_frame_to_track_frame(where, speed), this); - XMLNode &after = arv->region()->playlist()->get_state(); - session->add_command(new MementoCommand(*(arv->region()->playlist()), &before, &after)); + XMLNode &before = rv->region()->playlist()->get_state(); + rv->region()->trim_end( session_frame_to_track_frame(where, speed), this); + XMLNode &after = rv->region()->playlist()->get_state(); + session->add_command(new MementoCommand( + *(rv->region()->playlist()), &before, &after)); } commit_reversible_command (); @@ -3604,34 +3578,29 @@ Editor::trim_region_from_edit_point () begin_reversible_command (_("trim region end to edit point")); for (RegionSelection::iterator x = rs.begin(); x != rs.end(); ++x) { - AudioRegionView* arv = dynamic_cast (*x); - - if (!arv) { - continue; - } + RegionView* rv = (*x); /* require region to cover trim */ - - if (!arv->region()->covers (where)) { + if (!rv->region()->covers (where)) { continue; } - AudioTimeAxisView* atav = dynamic_cast (&arv->get_time_axis_view()); - - if (!atav) { + RouteTimeAxisView* tav = dynamic_cast (&rv->get_time_axis_view()); + if (!tav) { return; } float speed = 1.0; - if (atav->get_diskstream() != 0) { - speed = atav->get_diskstream()->speed(); + if (tav->get_diskstream() != 0) { + speed = tav->get_diskstream()->speed(); } - XMLNode &before = arv->region()->playlist()->get_state(); - arv->region()->trim_front ( session_frame_to_track_frame(where, speed), this); - XMLNode &after = arv->region()->playlist()->get_state(); - session->add_command(new MementoCommand(*(arv->region()->playlist()), &before, &after)); + XMLNode &before = rv->region()->playlist()->get_state(); + rv->region()->trim_front ( session_frame_to_track_frame(where, speed), this); + XMLNode &after = rv->region()->playlist()->get_state(); + session->add_command(new MementoCommand( + *(rv->region()->playlist()), &before, &after)); } commit_reversible_command (); @@ -3640,11 +3609,11 @@ Editor::trim_region_from_edit_point () void Editor::unfreeze_route () { - if (clicked_routeview == 0 || !clicked_routeview->is_audio_track()) { + if (clicked_routeview == 0 || !clicked_routeview->is_track()) { return; } - clicked_routeview->audio_track()->unfreeze (); + clicked_routeview->track()->unfreeze (); } void* diff --git a/gtk2_ardour/streamview.cc b/gtk2_ardour/streamview.cc index 83cdc61afc..c211804fc4 100644 --- a/gtk2_ardour/streamview.cc +++ b/gtk2_ardour/streamview.cc @@ -57,8 +57,8 @@ StreamView::StreamView (RouteTimeAxisView& tv, ArdourCanvas::Group* group) , region_color(_trackview.color()) , stream_base_color(0xFFFFFFFF) , _layers (1) - , height(tv.height) , _layer_display (Overlaid) + , height(tv.height) , last_rec_data_frame(0) { /* set_position() will position the group */ diff --git a/gtk2_ardour/streamview.h b/gtk2_ardour/streamview.h index 16a637d674..fa5657f866 100644 --- a/gtk2_ardour/streamview.h +++ b/gtk2_ardour/streamview.h @@ -42,8 +42,8 @@ namespace ARDOUR { struct RecBoxInfo { ArdourCanvas::SimpleRect* rectangle; - nframes_t start; - nframes_t length; + nframes_t start; + nframes_t length; }; class PublicEditor; @@ -107,19 +107,16 @@ public: protected: StreamView (RouteTimeAxisView&, ArdourCanvas::Group* group = NULL); -//private: (FIXME?) - void transport_changed(); void transport_looped(); void rec_enable_changed(); void sess_rec_enable_changed(); virtual void setup_rec_box () = 0; void update_rec_box (); - //virtual void update_rec_regions () = 0; - virtual RegionView* add_region_view_internal (boost::shared_ptr, bool wait_for_waves, bool recording = false) = 0; + virtual RegionView* add_region_view_internal (boost::shared_ptr, + bool wait_for_waves, bool recording = false) = 0; virtual void remove_region_view (boost::weak_ptr ); - //void remove_rec_region (boost::shared_ptr); (unused) void display_diskstream (boost::shared_ptr); virtual void undisplay_diskstream (); @@ -158,14 +155,14 @@ protected: sigc::connection playlist_change_connection; ARDOUR::layer_t _layers; + LayerDisplay _layer_display; + double height; - LayerDisplay _layer_display; list rec_data_ready_connections; jack_nframes_t last_rec_data_frame; private: - void update_coverage_frames (); }; diff --git a/libs/ardour/ardour/audioregion.h b/libs/ardour/ardour/audioregion.h index fb54a3c6bc..b259a13229 100644 --- a/libs/ardour/ardour/audioregion.h +++ b/libs/ardour/ardour/audioregion.h @@ -136,7 +136,7 @@ class AudioRegion : public Region void set_envelope_active (bool yn); void set_default_envelope (); - int separate_by_channel (ARDOUR::Session&, vector >&) const; + int separate_by_channel (ARDOUR::Session&, vector >&) const; /* automation */ diff --git a/libs/ardour/ardour/midi_region.h b/libs/ardour/ardour/midi_region.h index 00c71ab6ee..dc95fccdb4 100644 --- a/libs/ardour/ardour/midi_region.h +++ b/libs/ardour/ardour/midi_region.h @@ -72,7 +72,7 @@ class MidiRegion : public Region XMLNode& state (bool); int set_state (const XMLNode&); - int separate_by_channel (ARDOUR::Session&, vector&) const; + int separate_by_channel (ARDOUR::Session&, vector< boost::shared_ptr >&) const; /* automation */ diff --git a/libs/ardour/ardour/region.h b/libs/ardour/ardour/region.h index a84057a909..b55d77f499 100644 --- a/libs/ardour/ardour/region.h +++ b/libs/ardour/ardour/region.h @@ -254,6 +254,11 @@ class Region // no transients, but its OK return 0; } + + virtual int separate_by_channel (ARDOUR::Session&, + std::vector< boost::shared_ptr >&) const { + return 0; + } void invalidate_transients (); diff --git a/libs/ardour/audioregion.cc b/libs/ardour/audioregion.cc index 8ee5324674..56d341d227 100644 --- a/libs/ardour/audioregion.cc +++ b/libs/ardour/audioregion.cc @@ -1014,20 +1014,17 @@ AudioRegion::recompute_at_start () } int -AudioRegion::separate_by_channel (Session& session, vector >& v) const +AudioRegion::separate_by_channel (Session& session, vector >& v) const { SourceList srcs; string new_name; - int n; + int n = 0; if (_sources.size() < 2) { return 0; } - n = 0; - for (SourceList::const_iterator i = _sources.begin(); i != _sources.end(); ++i) { - srcs.clear (); srcs.push_back (*i); @@ -1044,16 +1041,13 @@ AudioRegion::separate_by_channel (Session& session, vector r = RegionFactory::create (srcs, _start, _length, new_name, _layer, f); - boost::shared_ptr ar = boost::dynamic_pointer_cast (r); - - v.push_back (ar); + v.push_back(RegionFactory::create (srcs, _start, _length, new_name, _layer, f)); ++n; } diff --git a/libs/ardour/midi_region.cc b/libs/ardour/midi_region.cc index 401d67e2ef..fcbf187721 100644 --- a/libs/ardour/midi_region.cc +++ b/libs/ardour/midi_region.cc @@ -303,33 +303,9 @@ MidiRegion::recompute_at_start () } int -MidiRegion::separate_by_channel (Session& session, vector& v) const +MidiRegion::separate_by_channel (ARDOUR::Session&, vector< boost::shared_ptr >&) const { - // Separate by MIDI channel? bit different from audio since this is separating based - // on the actual contained data and destructively modifies and creates new sources.. - -#if 0 - SourceList srcs; - string new_name; - - for (SourceList::const_iterator i = _master_sources.begin(); i != _master_sources.end(); ++i) { - - srcs.clear (); - srcs.push_back (*i); - - /* generate a new name */ - - if (session.region_name (new_name, _name)) { - return -1; - } - - /* create a copy with just one source */ - - v.push_back (new MidiRegion (srcs, _start, _length, new_name, _layer, _flags)); - } -#endif - - // Actually, I would prefer not if that's alright + // TODO return -1; }