From f827168b67043ab4009620ef87e2350dce7d7754 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 3 Apr 2016 03:11:43 +0200 Subject: update mixer-strip display - indicate sidechain --- gtk2_ardour/processor_box.cc | 28 +++++++++++++++++++++++++--- gtk2_ardour/processor_box.h | 1 + 2 files changed, 26 insertions(+), 3 deletions(-) (limited to 'gtk2_ardour') diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc index d15f7e7481..8dd3748834 100644 --- a/gtk2_ardour/processor_box.cc +++ b/gtk2_ardour/processor_box.cc @@ -1080,6 +1080,21 @@ ProcessorEntry::RoutingIcon::draw_gnd (cairo_t* cr, double x0, double height, bo cairo_stroke (cr); } +void +ProcessorEntry::RoutingIcon::draw_sidechain (cairo_t* cr, double x0, double height, bool midi) +{ + const double dx = 1 + rint (max(2., 2. * UIConfiguration::instance().get_ui_scale())); + const double y0 = rint (height * .66) + .5; + + cairo_move_to (cr, x0 - dx, height); + cairo_line_to (cr, x0, y0); + cairo_line_to (cr, x0 + dx, height); + + set_routing_color (cr, midi); + cairo_set_line_width (cr, 1.0); + cairo_stroke (cr); +} + void ProcessorEntry::RoutingIcon::draw_connection (cairo_t* cr, double x0, double x1, double y0, double y1, bool midi, bool dashed) { @@ -1135,24 +1150,31 @@ ProcessorEntry::RoutingIcon::expose_map (cairo_t* cr, const double width, const const uint32_t pc_in_midi = _sinks.n_midi(); // TODO indicate midi-bypass ?? - // show "X" for + // TODO indicate side-chain for (uint32_t i = 0; i < pc_in; ++i) { const bool is_midi = i < pc_in_midi; bool valid_in; uint32_t pn = is_midi ? i : i - pc_in_midi; - uint32_t idx = _in_map.get (is_midi ? DataType::MIDI : DataType::AUDIO, pn, &valid_in); + DataType dt = is_midi ? DataType::MIDI : DataType::AUDIO; + uint32_t idx = _in_map.get (dt, pn, &valid_in); if (!valid_in) { double x = pin_x_pos (i, width, pc_in, pc_in_midi, is_midi); draw_gnd (cr, x, height, is_midi); continue; } + if (idx >= _in.get (dt)) { + // side-chain, probably + double x = pin_x_pos (i, width, pc_in, pc_in_midi, is_midi); + draw_sidechain (cr, x, height, is_midi); + continue; + } double c_x0; double c_x1 = pin_x_pos (i, width, pc_in, 0, false); if (_feed) { bool valid_src; - uint32_t src = _f_out_map.get_src (is_midi ? DataType::MIDI : DataType::AUDIO, idx, &valid_src); + uint32_t src = _f_out_map.get_src (dt, idx, &valid_src); if (!valid_src) { double x = pin_x_pos (i, width, pc_in, 0, false); draw_gnd (cr, x, height, is_midi); diff --git a/gtk2_ardour/processor_box.h b/gtk2_ardour/processor_box.h index 5a6e9a53be..7df0a6f59c 100644 --- a/gtk2_ardour/processor_box.h +++ b/gtk2_ardour/processor_box.h @@ -301,6 +301,7 @@ private: static double pin_x_pos (uint32_t, double, uint32_t, uint32_t, bool); static void draw_connection (cairo_t*, double, double, double, double, bool, bool dashed = false); static void draw_gnd (cairo_t*, double, double, bool); + static void draw_sidechain (cairo_t*, double, double, bool); private: bool on_expose_event (GdkEventExpose *); -- cgit v1.2.3