summaryrefslogtreecommitdiff
path: root/gtk2_ardour/plugin_pin_dialog.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-04-03 22:44:36 +0200
committerRobin Gareus <robin@gareus.org>2016-04-03 22:45:23 +0200
commit514b8a23d0329b3371753d6fcc375c4d30e31a56 (patch)
tree510f87f59a85dbd810751dd51ab9c5b117541568 /gtk2_ardour/plugin_pin_dialog.cc
parented74d4beff4c38bc1a108060598493c348e23bc5 (diff)
show sidechain pins in a different color, prepare for labels.
Diffstat (limited to 'gtk2_ardour/plugin_pin_dialog.cc')
-rw-r--r--gtk2_ardour/plugin_pin_dialog.cc29
1 files changed, 23 insertions, 6 deletions
diff --git a/gtk2_ardour/plugin_pin_dialog.cc b/gtk2_ardour/plugin_pin_dialog.cc
index 08983fa210..a802e9ecf2 100644
--- a/gtk2_ardour/plugin_pin_dialog.cc
+++ b/gtk2_ardour/plugin_pin_dialog.cc
@@ -24,6 +24,8 @@
#include "gtkmm2ext/utils.h"
#include "gtkmm2ext/rgb_macros.h"
+#include "ardour/plugin.h"
+
#include "io_selector.h"
#include "plugin_pin_dialog.h"
#include "gui_thread.h"
@@ -225,8 +227,10 @@ PluginPinDialog::update_elements ()
for (uint32_t i = 0; i < _ins.n_total (); ++i) {
int id = (i < _ins.n_midi ()) ? i : i - _ins.n_midi ();
- uint32_t sidechain = i >= _in.n_total () ? -1 : 0;
- _elements.push_back (CtrlWidget (Input, (i < _ins.n_midi () ? DataType::MIDI : DataType::AUDIO), id, sidechain));
+ bool sidechain = i >= _in.n_total () ? true : false;
+
+ CtrlWidget cw (CtrlWidget (Input, (i < _ins.n_midi () ? DataType::MIDI : DataType::AUDIO), id, 0, sidechain));
+ _elements.push_back (cw);
}
for (uint32_t i = 0; i < _out.n_total (); ++i) {
@@ -235,8 +239,13 @@ PluginPinDialog::update_elements ()
}
for (uint32_t n = 0; n < _n_plugins; ++n) {
+ boost::shared_ptr<Plugin> plugin = _pi->plugin (n);
for (uint32_t i = 0; i < _sinks.n_total (); ++i) {
- _elements.push_back (CtrlWidget (Sink, (i < _sinks.n_midi () ? DataType::MIDI : DataType::AUDIO), i, n));
+ DataType dt (_sinks.n_midi () ? DataType::MIDI : DataType::AUDIO);
+ int idx = (i < _sinks.n_midi ()) ? i : i - _sinks.n_midi ();
+ const Plugin::IOPortDescription& iod (plugin->describe_io_port (dt, true, idx));
+ CtrlWidget cw (CtrlWidget (Sink, dt, i, n, iod.is_sidechain));
+ _elements.push_back (cw);
}
for (uint32_t i = 0; i < _sources.n_total (); ++i) {
_elements.push_back (CtrlWidget (Source, (i < _sources.n_midi () ? DataType::MIDI : DataType::AUDIO), i, n));
@@ -340,7 +349,7 @@ PluginPinDialog::draw_io_pin (cairo_t* cr, const CtrlWidget& w)
cairo_close_path (cr);
- if (w.e->ip != 0) {
+ if (w.e->sc) {
assert (w.e->ct == Input);
// side-chain
cairo_set_source_rgb (cr, .1, .6, .7);
@@ -365,7 +374,15 @@ void
PluginPinDialog::draw_plugin_pin (cairo_t* cr, const CtrlWidget& w)
{
cairo_rectangle (cr, w.x, w.y, w.w, w.h);
- set_color (cr, w.e->dt == DataType::MIDI);
+
+ if (w.e->sc) {
+ assert (w.e->ct == Sink);
+ // side-chain
+ cairo_set_source_rgb (cr, .1, .6, .7);
+ } else {
+ set_color (cr, w.e->dt == DataType::MIDI);
+ }
+
if (w.e == _selection || w.e == _actor) {
cairo_fill_preserve (cr);
cairo_set_source_rgba (cr, 0.9, 0.9, 1.0, 0.6);
@@ -387,7 +404,7 @@ void
PluginPinDialog::draw_connection (cairo_t* cr, double x0, double x1, double y0, double y1, bool midi, bool dashed)
{
const double bz = 2 * _pin_box_size;
- const double bc = dashed ? 1.25 * _pin_box_size : 0;
+ const double bc = (dashed && x0 == x1) ? 1.25 * _pin_box_size : 0;
cairo_move_to (cr, x0, y0);
cairo_curve_to (cr, x0 - bc, y0 + bz, x1 - bc, y1 - bz, x1, y1);