X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fghostregion.cc;h=0813a229bb6f4cb082523926f29ebd433e40c38f;hb=5fef65538040fbac1b9edd1847a269aa925a49c9;hp=3bdc690044962ab2f22af83037cea3d31aa95585;hpb=0bcf3001f5d071dacb9231be4f9956cfd4bb93d3;p=ardour.git diff --git a/gtk2_ardour/ghostregion.cc b/gtk2_ardour/ghostregion.cc index 3bdc690044..0813a229bb 100644 --- a/gtk2_ardour/ghostregion.cc +++ b/gtk2_ardour/ghostregion.cc @@ -18,7 +18,7 @@ */ #include "evoral/Note.hpp" -#include "canvas/group.h" +#include "canvas/container.h" #include "canvas/rectangle.h" #include "canvas/wave_view.h" #include "canvas/debug.h" @@ -38,20 +38,20 @@ using namespace ARDOUR; PBD::Signal1 GhostRegion::CatchDeletion; -GhostRegion::GhostRegion (ArdourCanvas::Group* parent, TimeAxisView& tv, TimeAxisView& source_tv, double initial_pos) +GhostRegion::GhostRegion (ArdourCanvas::Container* parent, TimeAxisView& tv, TimeAxisView& source_tv, double initial_pos) : trackview (tv) , source_trackview (source_tv) { - group = new ArdourCanvas::Group (parent); + group = new ArdourCanvas::Container (parent); CANVAS_DEBUG_NAME (group, "ghost region"); group->set_position (ArdourCanvas::Duple (initial_pos, 0)); - base_rect = new ArdourCanvas::Rectangle (group); + base_rect = new ArdourCanvas::TimeRectangle (group); CANVAS_DEBUG_NAME (base_rect, "ghost region rect"); base_rect->set_x0 (0); - base_rect->set_y0 (0.0); - base_rect->set_y1 (trackview.current_height() - 1.0); - base_rect->set_outline_what (0); + base_rect->set_y0 (1.0); + base_rect->set_y1 (trackview.current_height()); + base_rect->set_outline (false); if (!is_automation_ghost()) { base_rect->hide(); @@ -87,8 +87,7 @@ void GhostRegion::set_colors () { if (is_automation_ghost()) { - base_rect->set_outline_color (ARDOUR_UI::config()->get_canvasvar_GhostTrackBase()); - base_rect->set_fill_color (ARDOUR_UI::config()->get_canvasvar_GhostTrackBase()); + base_rect->set_fill_color (ARDOUR_UI::config()->color_mod ("ghost track base", "ghost track base")); } } @@ -142,17 +141,17 @@ AudioGhostRegion::set_colors () guint fill_color; if (is_automation_ghost()) { - fill_color = ARDOUR_UI::config()->get_canvasvar_GhostTrackWaveFill(); + fill_color = ARDOUR_UI::config()->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()->get_canvasvar_GhostTrackWave()); + waves[n]->set_outline_color (ARDOUR_UI::config()->color ("ghost track wave")); waves[n]->set_fill_color (fill_color); - waves[n]->set_clip_color (ARDOUR_UI::config()->get_canvasvar_GhostTrackWaveClip()); - waves[n]->set_zero_color (ARDOUR_UI::config()->get_canvasvar_GhostTrackZeroLine()); + 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")); } } @@ -191,7 +190,7 @@ MidiGhostRegion::~MidiGhostRegion() clear_events (); } -MidiGhostRegion::GhostEvent::GhostEvent (NoteBase* e, ArdourCanvas::Group* g) +MidiGhostRegion::GhostEvent::GhostEvent (NoteBase* e, ArdourCanvas::Container* g) : event (e) { rect = new ArdourCanvas::Rectangle (g, ArdourCanvas::Rect (e->x0(), e->y0(), e->x1(), e->y1())); @@ -231,13 +230,11 @@ MidiGhostRegion::set_height () void MidiGhostRegion::set_colors() { - guint fill = source_track_color(200); - GhostRegion::set_colors(); for (EventList::iterator it = events.begin(); it != events.end(); ++it) { - (*it)->rect->set_fill_color (fill); - (*it)->rect->set_outline_color (ARDOUR_UI::config()->get_canvasvar_GhostTrackMidiOutline()); + (*it)->rect->set_fill_color (ARDOUR_UI::config()->color_mod((*it)->event->base_color(), "ghost track midi fill")); + (*it)->rect->set_outline_color (ARDOUR_UI::config()->color ("ghost track midi outline")); } } @@ -250,7 +247,8 @@ MidiGhostRegion::update_range () return; } - double const h = trackview.current_height() / double (mv->contents_note_range ()); + double const h = std::max(1., floor (trackview.current_height() / double (mv->contents_note_range ())) -1); + double const s = trackview.current_height() / double (mv->contents_note_range ()); for (EventList::iterator it = events.begin(); it != events.end(); ++it) { uint8_t const note_num = (*it)->event->note()->note(); @@ -259,7 +257,7 @@ MidiGhostRegion::update_range () (*it)->rect->hide(); } else { (*it)->rect->show(); - double const y = trackview.current_height() - (note_num + 1 - mv->lowest_note()) * h + 1; + double const y = trackview.current_height() - (note_num + 1 - mv->lowest_note()) * s; (*it)->rect->set_y0 (y); (*it)->rect->set_y1 (y + h); } @@ -272,8 +270,8 @@ MidiGhostRegion::add_note (NoteBase* n) GhostEvent* event = new GhostEvent (n, group); events.push_back (event); - event->rect->set_fill_color (source_track_color(200)); - event->rect->set_outline_color (ARDOUR_UI::config()->get_canvasvar_GhostTrackMidiOutline()); + event->rect->set_fill_color (ARDOUR_UI::config()->color_mod(n->base_color(), "ghost track midi fill")); + event->rect->set_outline_color (ARDOUR_UI::config()->color ("ghost track midi outline")); MidiStreamView* mv = midi_view(); @@ -285,7 +283,7 @@ MidiGhostRegion::add_note (NoteBase* n) } else { const double y = mv->note_to_y(note_num); event->rect->set_y0 (y); - event->rect->set_y1 (y + mv->note_height()); + event->rect->set_y1 (y + std::max(1., floor(mv->note_height()) -1)); } } }