summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/mixer_strip.cc2
-rw-r--r--gtk2_ardour/mono_panner.cc4
-rw-r--r--gtk2_ardour/panner2d.cc20
-rw-r--r--gtk2_ardour/panner2d.h2
-rw-r--r--gtk2_ardour/panner_interface.cc9
-rw-r--r--gtk2_ardour/panner_interface.h3
-rw-r--r--gtk2_ardour/panner_ui.cc17
-rw-r--r--gtk2_ardour/panner_ui.h2
-rw-r--r--gtk2_ardour/stereo_panner.cc5
9 files changed, 62 insertions, 2 deletions
diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc
index 8b25e6f41e..bfaf12439c 100644
--- a/gtk2_ardour/mixer_strip.cc
+++ b/gtk2_ardour/mixer_strip.cc
@@ -1900,6 +1900,7 @@ MixerStrip::show_send (boost::shared_ptr<Send> send)
panner_ui().set_panner (_current_delivery->panner_shell(), _current_delivery->panner());
panner_ui().set_available_panners(PannerManager::instance().PannerManager::get_available_panners(in, out));
panner_ui().setup_pan ();
+ panner_ui().set_send_drawing_mode (true);
panner_ui().show_all ();
input_button.set_sensitive (false);
@@ -1935,6 +1936,7 @@ MixerStrip::revert_to_default_display ()
panner_ui().set_panner (_route->main_outs()->panner_shell(), _route->main_outs()->panner());
update_panner_choices();
panner_ui().setup_pan ();
+ panner_ui().set_send_drawing_mode (false);
if (has_audio_outputs ()) {
panners.show_all ();
diff --git a/gtk2_ardour/mono_panner.cc b/gtk2_ardour/mono_panner.cc
index e136c05153..7f1c98a0cb 100644
--- a/gtk2_ardour/mono_panner.cc
+++ b/gtk2_ardour/mono_panner.cc
@@ -158,6 +158,10 @@ MonoPanner::on_expose_event (GdkEventExpose*)
t = 0x606060ff;
}
+ if (_send_mode) {
+ b = rgba_from_style("SendStripBase",
+ UINT_RGBA_R(b), UINT_RGBA_G(b), UINT_RGBA_B(b), 255, "fg");
+ }
/* background */
context->set_source_rgba (UINT_RGBA_R_FLT(b), UINT_RGBA_G_FLT(b), UINT_RGBA_B_FLT(b), UINT_RGBA_A_FLT(b));
context->rectangle (0, 0, width, height);
diff --git a/gtk2_ardour/panner2d.cc b/gtk2_ardour/panner2d.cc
index a3befff5cf..35f573bcf1 100644
--- a/gtk2_ardour/panner2d.cc
+++ b/gtk2_ardour/panner2d.cc
@@ -75,6 +75,7 @@ Panner2d::Panner2d (boost::shared_ptr<PannerShell> p, int32_t h)
, height (h)
, last_width (0)
, have_elevation (false)
+ , _send_mode (false)
{
panner_shell->Changed.connect (panshell_connections, invalidator (*this), boost::bind (&Panner2d::handle_state_change, this), gui_context());
@@ -378,6 +379,15 @@ Panner2d::find_closest_object (gdouble x, gdouble y, bool& is_signal)
return closest;
}
+void
+Panner2d::set_send_drawing_mode (bool onoff)
+{
+ if (_send_mode != onoff) {
+ _send_mode = onoff;
+ queue_draw ();
+ }
+}
+
bool
Panner2d::on_motion_notify_event (GdkEventMotion *ev)
{
@@ -412,10 +422,16 @@ Panner2d::on_expose_event (GdkEventExpose *event)
/* background */
cairo_rectangle (cr, event->area.x, event->area.y, event->area.width, event->area.height);
+
+ float r, g, b;
+ r = g = b = 0.1;
+ if (_send_mode) {
+ rgba_p_from_style("SendStripBase", &r, &g, &b, "fg");
+ }
if (!panner_shell->bypassed()) {
- cairo_set_source_rgba (cr, 0.1, 0.1, 0.1, 1.0);
+ cairo_set_source_rgba (cr, r, g, b, 1.0);
} else {
- cairo_set_source_rgba (cr, 0.1, 0.1, 0.1, 0.2);
+ cairo_set_source_rgba (cr, r, g, b , 0.2);
}
cairo_fill_preserve (cr);
cairo_clip (cr);
diff --git a/gtk2_ardour/panner2d.h b/gtk2_ardour/panner2d.h
index fdd4748f8f..0897eddab0 100644
--- a/gtk2_ardour/panner2d.h
+++ b/gtk2_ardour/panner2d.h
@@ -63,6 +63,7 @@ class Panner2d : public Gtk::DrawingArea
int add_signal (const char* text, const PBD::AngularVector&);
void move_signal (int which, const PBD::AngularVector&);
void reset (uint32_t n_inputs);
+ void set_send_drawing_mode (bool);
boost::shared_ptr<ARDOUR::PannerShell> get_panner_shell() const { return panner_shell; }
@@ -117,6 +118,7 @@ class Panner2d : public Gtk::DrawingArea
double last_width;
bool did_move;
bool have_elevation;
+ bool _send_mode;
Target *find_closest_object (gdouble x, gdouble y, bool& is_signal);
diff --git a/gtk2_ardour/panner_interface.cc b/gtk2_ardour/panner_interface.cc
index 09cf29dfd6..0fcba4cd1c 100644
--- a/gtk2_ardour/panner_interface.cc
+++ b/gtk2_ardour/panner_interface.cc
@@ -34,6 +34,7 @@ using namespace Gtkmm2ext;
PannerInterface::PannerInterface (boost::shared_ptr<Panner> p)
: _panner (p)
, _tooltip (this)
+ , _send_mode (false)
, _editor (0)
{
set_flags (Gtk::CAN_FOCUS);
@@ -109,6 +110,14 @@ PannerInterface::edit ()
_editor->show ();
}
+void
+PannerInterface::set_send_drawing_mode(bool onoff) {
+ if (_send_mode != onoff) {
+ _send_mode = onoff;
+ queue_draw ();
+ }
+}
+
PannerPersistentTooltip::PannerPersistentTooltip (Gtk::Widget* w)
: PersistentTooltip (w)
, _dragging (false)
diff --git a/gtk2_ardour/panner_interface.h b/gtk2_ardour/panner_interface.h
index 02f4e210bd..a18c083528 100644
--- a/gtk2_ardour/panner_interface.h
+++ b/gtk2_ardour/panner_interface.h
@@ -59,6 +59,7 @@ public:
}
void edit ();
+ void set_send_drawing_mode (bool);
protected:
virtual void set_tooltip () = 0;
@@ -74,6 +75,8 @@ protected:
boost::shared_ptr<ARDOUR::Panner> _panner;
PannerPersistentTooltip _tooltip;
+ bool _send_mode;
+
private:
virtual PannerEditor* editor () = 0;
PannerEditor* _editor;
diff --git a/gtk2_ardour/panner_ui.cc b/gtk2_ardour/panner_ui.cc
index d20d719b14..d15f8efc3a 100644
--- a/gtk2_ardour/panner_ui.cc
+++ b/gtk2_ardour/panner_ui.cc
@@ -50,6 +50,7 @@ PannerUI::PannerUI (Session* s)
: _current_nouts (-1)
, _current_nins (-1)
, _current_uri ("")
+ , _send_mode (false)
, pan_automation_style_button ("")
, pan_automation_state_button ("")
, _panner_list()
@@ -251,6 +252,7 @@ PannerUI::setup_pan ()
_stereo_panner = new StereoPanner (_panshell);
_stereo_panner->set_size_request (-1, pan_bar_height);
+ _stereo_panner->set_send_drawing_mode (_send_mode);
pan_vbox.pack_start (*_stereo_panner, false, false);
boost::shared_ptr<AutomationControl> ac;
@@ -286,6 +288,7 @@ PannerUI::setup_pan ()
_mono_panner->signal_button_release_event().connect (sigc::mem_fun(*this, &PannerUI::pan_button_event));
_mono_panner->set_size_request (-1, pan_bar_height);
+ _mono_panner->set_send_drawing_mode (_send_mode);
update_pan_sensitive ();
pan_vbox.pack_start (*_mono_panner, false, false);
@@ -305,6 +308,7 @@ PannerUI::setup_pan ()
big_window->reset (nins);
}
twod_panner->set_size_request (-1, 61);
+ twod_panner->set_send_drawing_mode (_send_mode);
/* and finally, add it to the panner frame */
@@ -324,6 +328,19 @@ PannerUI::setup_pan ()
}
void
+PannerUI::set_send_drawing_mode (bool onoff)
+{
+ if (_stereo_panner) {
+ _stereo_panner->set_send_drawing_mode (onoff);
+ } else if (_mono_panner) {
+ _mono_panner->set_send_drawing_mode (onoff);
+ } else if (twod_panner) {
+ twod_panner->set_send_drawing_mode (onoff);
+ }
+ _send_mode = onoff;
+}
+
+void
PannerUI::start_touch (boost::weak_ptr<AutomationControl> wac)
{
boost::shared_ptr<AutomationControl> ac = wac.lock();
diff --git a/gtk2_ardour/panner_ui.h b/gtk2_ardour/panner_ui.h
index 8bf448c7ea..600a9d145c 100644
--- a/gtk2_ardour/panner_ui.h
+++ b/gtk2_ardour/panner_ui.h
@@ -74,6 +74,7 @@ class PannerUI : public Gtk::HBox, public ARDOUR::SessionHandlePtr
void set_width (Width);
void setup_pan ();
void set_available_panners(std::map<std::string,std::string>);
+ void set_send_drawing_mode (bool);
void effective_pan_display ();
@@ -97,6 +98,7 @@ class PannerUI : public Gtk::HBox, public ARDOUR::SessionHandlePtr
int _current_nouts;
int _current_nins;
std::string _current_uri;
+ bool _send_mode;
static const int pan_bar_height;
diff --git a/gtk2_ardour/stereo_panner.cc b/gtk2_ardour/stereo_panner.cc
index 718d5f38ee..00000e7071 100644
--- a/gtk2_ardour/stereo_panner.cc
+++ b/gtk2_ardour/stereo_panner.cc
@@ -178,6 +178,11 @@ StereoPanner::on_expose_event (GdkEventExpose*)
r = 0x606060ff;
}
+ if (_send_mode) {
+ b = rgba_from_style("SendStripBase",
+ UINT_RGBA_R(b), UINT_RGBA_G(b), UINT_RGBA_B(b), 255,
+ "fg");
+ }
/* background */
context->set_source_rgba (UINT_RGBA_R_FLT(b), UINT_RGBA_G_FLT(b), UINT_RGBA_B_FLT(b), UINT_RGBA_A_FLT(b));