using namespace std;
using namespace Gtk;
using namespace Gtkmm2ext;
+using namespace ARDOUR_UI_UTILS;
static const int pos_box_size = 9;
static const int lr_box_size = 15;
if (!have_font) {
Pango::FontDescription font;
Pango::AttrFontDesc* font_attr;
- font = Pango::FontDescription ("ArdourMono");
- font.set_weight (Pango::WEIGHT_BOLD);
- font.set_size(9 * PANGO_SCALE);
+ font = Pango::FontDescription (ARDOUR_UI::config()->get_SmallBoldMonospaceFont());
font_attr = new Pango::AttrFontDesc (Pango::Attribute::create_attr_font_desc (font));
panner_font_attributes.change(*font_attr);
delete font_attr;
have_font = true;
}
- position_control->Changed.connect (connections, invalidator(*this), boost::bind (&MonoPanner::value_change, this), gui_context());
+ position_control->Changed.connect (panvalue_connections, invalidator(*this), boost::bind (&MonoPanner::value_change, this), gui_context());
- _panner_shell->Changed.connect (connections, invalidator (*this), boost::bind (&MonoPanner::bypass_handler, this), gui_context());
+ _panner_shell->Changed.connect (panshell_connections, invalidator (*this), boost::bind (&MonoPanner::bypass_handler, this), gui_context());
+ _panner_shell->PannableChanged.connect (panshell_connections, invalidator (*this), boost::bind (&MonoPanner::pannable_handler, this), gui_context());
ColorsChanged.connect (sigc::mem_fun (*this, &MonoPanner::color_handler));
set_tooltip ();
t = 0x606060ff;
}
+ if (_send_mode) {
+ b = ARDOUR_UI::config()->color ("send bg");
+ }
/* 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);
context->stroke ();
} else {
context->move_to (left + half_lr_box, half_lr_box+step_down+lr_box_size);
+ context->line_to (left + half_lr_box, half_lr_box + step_down);
+ context->line_to ((pos_box_size/2.0) + (usable_width/2.0), half_lr_box+step_down+lr_box_size);
+ context->line_to (right - half_lr_box, half_lr_box + step_down);
context->line_to (right - half_lr_box, half_lr_box+step_down+lr_box_size);
- context->line_to (right - half_lr_box, half_lr_box+step_down+lr_box_size);
- context->line_to ((pos_box_size/2.0) + (usable_width/2.0), half_lr_box + step_down);
context->close_path();
+
context->set_source_rgba (UINT_RGBA_R_FLT(f), UINT_RGBA_G_FLT(f), UINT_RGBA_B_FLT(f), UINT_RGBA_A_FLT(f));
context->fill_preserve ();
context->set_source_rgba (UINT_RGBA_R_FLT(o), UINT_RGBA_G_FLT(o), UINT_RGBA_B_FLT(o), UINT_RGBA_A_FLT(o));
context->stroke ();
-
- context->move_to (left + half_lr_box, half_lr_box + step_down);
- context->line_to (right - half_lr_box, half_lr_box + step_down);
- context->stroke ();
}
/* draw the position indicator */
return true;
}
- bool
+bool
MonoPanner::on_motion_notify_event (GdkEventMotion* ev)
{
if (_panner_shell->bypassed()) {
return true;
}
- bool
+bool
MonoPanner::on_key_press_event (GdkEventKey* ev)
{
double one_degree = 1.0/180.0;
return true;
}
- void
+void
MonoPanner::set_colors ()
{
- colors.fill = ARDOUR_UI::config()->canvasvar_MonoPannerFill.get();
- colors.outline = ARDOUR_UI::config()->canvasvar_MonoPannerOutline.get();
- colors.text = ARDOUR_UI::config()->canvasvar_MonoPannerText.get();
- colors.background = ARDOUR_UI::config()->canvasvar_MonoPannerBackground.get();
- colors.pos_outline = ARDOUR_UI::config()->canvasvar_MonoPannerPositionOutline.get();
- colors.pos_fill = ARDOUR_UI::config()->canvasvar_MonoPannerPositionFill.get();
+ colors.fill = ARDOUR_UI::config()->color_mod ("mono panner fill", "panner fill");
+ colors.outline = ARDOUR_UI::config()->color ("mono panner outline");
+ colors.text = ARDOUR_UI::config()->color ("mono panner text");
+ colors.background = ARDOUR_UI::config()->color ("mono panner bg");
+ colors.pos_outline = ARDOUR_UI::config()->color ("mono panner position outline");
+ colors.pos_fill = ARDOUR_UI::config()->color_mod ("mono panner position fill", "mono panner position fill");
}
- void
+void
MonoPanner::color_handler ()
{
set_colors ();
queue_draw ();
}
- void
+void
MonoPanner::bypass_handler ()
{
queue_draw ();
}
- PannerEditor*
+void
+MonoPanner::pannable_handler ()
+{
+ panvalue_connections.drop_connections();
+ position_control = _panner->pannable()->pan_azimuth_control;
+ position_binder.set_controllable(position_control);
+ position_control->Changed.connect (panvalue_connections, invalidator(*this), boost::bind (&MonoPanner::value_change, this), gui_context());
+ queue_draw ();
+}
+
+PannerEditor*
MonoPanner::editor ()
{
return new MonoPannerEditor (this);