13
0

update mixer-strip display - indicate sidechain

This commit is contained in:
Robin Gareus 2016-04-03 03:11:43 +02:00
parent 6739b6a1e3
commit f827168b67
2 changed files with 26 additions and 3 deletions

View File

@ -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);

View File

@ -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 *);