summaryrefslogtreecommitdiff
path: root/gtk2_ardour/processor_box.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-04-03 03:11:43 +0200
committerRobin Gareus <robin@gareus.org>2016-04-03 05:16:59 +0200
commitf827168b67043ab4009620ef87e2350dce7d7754 (patch)
tree799605cf26ed02dcb21b0edfcadef9ddf8df61bc /gtk2_ardour/processor_box.cc
parent6739b6a1e31f943f039b3c1678190af4fe0f8d16 (diff)
update mixer-strip display - indicate sidechain
Diffstat (limited to 'gtk2_ardour/processor_box.cc')
-rw-r--r--gtk2_ardour/processor_box.cc28
1 files changed, 25 insertions, 3 deletions
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
@@ -1081,6 +1081,21 @@ ProcessorEntry::RoutingIcon::draw_gnd (cairo_t* cr, double x0, double height, bo
}
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)
{
double bz = abs (y1 - y0);
@@ -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);