X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fghostregion.cc;h=127ab64d41f3bfa095e27ab58b498d51a615bc5b;hb=6a52dc321954b3d65ee9840bef08fe3c047d8850;hp=125b75987977a70e073ead5cef6dd9f1596bb90c;hpb=d283608fe9ece413838ddd7f530901e96c5bceda;p=ardour.git diff --git a/gtk2_ardour/ghostregion.cc b/gtk2_ardour/ghostregion.cc index 125b759879..127ab64d41 100644 --- a/gtk2_ardour/ghostregion.cc +++ b/gtk2_ardour/ghostregion.cc @@ -17,6 +17,8 @@ */ +#include "ardour/parameter_descriptor.h" + #include "evoral/Note.hpp" #include "canvas/container.h" #include "canvas/polygon.h" @@ -24,31 +26,35 @@ #include "canvas/wave_view.h" #include "canvas/debug.h" -#include "ardour_ui.h" #include "automation_time_axis.h" #include "ghostregion.h" #include "midi_streamview.h" #include "midi_time_axis.h" +#include "region_view.h" #include "rgb_macros.h" #include "note.h" #include "hit.h" +#include "ui_config.h" using namespace std; using namespace Editing; using namespace ArdourCanvas; using namespace ARDOUR; -PBD::Signal1 GhostRegion::CatchDeletion; - -GhostRegion::GhostRegion (ArdourCanvas::Container* parent, TimeAxisView& tv, TimeAxisView& source_tv, double initial_pos) - : trackview (tv) - , source_trackview (source_tv) +GhostRegion::GhostRegion(RegionView& rv, + ArdourCanvas::Container* parent, + TimeAxisView& tv, + TimeAxisView& source_tv, + double initial_pos) + : parent_rv(rv) + , trackview(tv) + , source_trackview(source_tv) { group = new ArdourCanvas::Container (parent); CANVAS_DEBUG_NAME (group, "ghost region"); group->set_position (ArdourCanvas::Duple (initial_pos, 0)); - base_rect = new ArdourCanvas::TimeRectangle (group); + base_rect = new ArdourCanvas::Rectangle (group); CANVAS_DEBUG_NAME (base_rect, "ghost region rect"); base_rect->set_x0 (0); base_rect->set_y0 (1.0); @@ -68,7 +74,8 @@ GhostRegion::GhostRegion (ArdourCanvas::Container* parent, TimeAxisView& tv, Tim GhostRegion::~GhostRegion () { - CatchDeletion (this); + parent_rv.remove_ghost(this); + trackview.erase_ghost(this); delete base_rect; delete group; } @@ -89,7 +96,7 @@ void GhostRegion::set_colors () { if (is_automation_ghost()) { - base_rect->set_fill_color (ARDOUR_UI::config()->color_mod ("ghost track base", "ghost track base")); + base_rect->set_fill_color (UIConfiguration::instance().color_mod ("ghost track base", "ghost track base")); } } @@ -106,8 +113,11 @@ GhostRegion::is_automation_ghost() return (dynamic_cast(&trackview)) != 0; } -AudioGhostRegion::AudioGhostRegion(TimeAxisView& tv, TimeAxisView& source_tv, double initial_unit_pos) - : GhostRegion(tv.ghost_group(), tv, source_tv, initial_unit_pos) +AudioGhostRegion::AudioGhostRegion(RegionView& rv, + TimeAxisView& tv, + TimeAxisView& source_tv, + double initial_unit_pos) + : GhostRegion(rv, tv.ghost_group(), tv, source_tv, initial_unit_pos) { } @@ -143,29 +153,33 @@ AudioGhostRegion::set_colors () guint fill_color; if (is_automation_ghost()) { - fill_color = ARDOUR_UI::config()->color ("ghost track wave fill"); + fill_color = UIConfiguration::instance().color ("ghost track wave fill"); } else { fill_color = source_track_color(200); } for (uint32_t n=0; n < waves.size(); ++n) { - waves[n]->set_outline_color (ARDOUR_UI::config()->color ("ghost track wave")); + waves[n]->set_outline_color (UIConfiguration::instance().color ("ghost track wave")); waves[n]->set_fill_color (fill_color); - waves[n]->set_clip_color (ARDOUR_UI::config()->color ("ghost track wave clip")); - waves[n]->set_zero_color (ARDOUR_UI::config()->color ("ghost track zero line")); + waves[n]->set_clip_color (UIConfiguration::instance().color ("ghost track wave clip")); + waves[n]->set_zero_color (UIConfiguration::instance().color ("ghost track zero line")); } } /** The general constructor; called when the destination timeaxisview doesn't have * a midistreamview. * + * @param rv The parent RegionView that is being ghosted. * @param tv TimeAxisView that this ghost region is on. * @param source_tv TimeAxisView that we are the ghost for. */ -MidiGhostRegion::MidiGhostRegion(TimeAxisView& tv, TimeAxisView& source_tv, double initial_unit_pos) - : GhostRegion(tv.ghost_group(), tv, source_tv, initial_unit_pos) - , _optimization_iterator (events.end ()) +MidiGhostRegion::MidiGhostRegion(RegionView& rv, + TimeAxisView& tv, + TimeAxisView& source_tv, + double initial_unit_pos) + : GhostRegion(rv, tv.ghost_group(), tv, source_tv, initial_unit_pos) + , _optimization_iterator(events.end()) { base_rect->lower_to_bottom(); update_range (); @@ -174,12 +188,20 @@ MidiGhostRegion::MidiGhostRegion(TimeAxisView& tv, TimeAxisView& source_tv, doub } /** + * @param rv The parent RegionView being ghosted. * @param msv MidiStreamView that this ghost region is on. * @param source_tv TimeAxisView that we are the ghost for. */ -MidiGhostRegion::MidiGhostRegion(MidiStreamView& msv, TimeAxisView& source_tv, double initial_unit_pos) - : GhostRegion(msv.midi_underlay_group, msv.trackview(), source_tv, initial_unit_pos) - , _optimization_iterator (events.end ()) +MidiGhostRegion::MidiGhostRegion(RegionView& rv, + MidiStreamView& msv, + TimeAxisView& source_tv, + double initial_unit_pos) + : GhostRegion(rv, + msv.midi_underlay_group, + msv.trackview(), + source_tv, + initial_unit_pos) + , _optimization_iterator(events.end()) { base_rect->lower_to_bottom(); update_range (); @@ -245,8 +267,8 @@ MidiGhostRegion::set_colors() GhostRegion::set_colors(); for (EventList::iterator it = events.begin(); it != events.end(); ++it) { - (*it)->item->set_fill_color (ARDOUR_UI::config()->color_mod((*it)->event->base_color(), "ghost track midi fill")); - (*it)->item->set_outline_color (ARDOUR_UI::config()->color ("ghost track midi outline")); + (*it)->item->set_fill_color (UIConfiguration::instance().color_mod((*it)->event->base_color(), "ghost track midi fill")); + (*it)->item->set_outline_color (UIConfiguration::instance().color ("ghost track midi outline")); } } @@ -309,8 +331,8 @@ MidiGhostRegion::add_note (NoteBase* n) GhostEvent* event = new GhostEvent (n, group); events.push_back (event); - event->item->set_fill_color (ARDOUR_UI::config()->color_mod(n->base_color(), "ghost track midi fill")); - event->item->set_outline_color (ARDOUR_UI::config()->color ("ghost track midi outline")); + event->item->set_fill_color (UIConfiguration::instance().color_mod(n->base_color(), "ghost track midi fill")); + event->item->set_outline_color (UIConfiguration::instance().color ("ghost track midi outline")); MidiStreamView* mv = midi_view();