X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fstereo_panner.cc;h=ab057c91476ab90d8afee3d4c416232d27e09253;hb=d45a25e4a834e7f25217f811dedba005226385c8;hp=718d5f38ee9465d4e3cebcbc66aa60deaa590651;hpb=f4b5f4c72ee60b6f509e307c5bfd164108d1f30b;p=ardour.git diff --git a/gtk2_ardour/stereo_panner.cc b/gtk2_ardour/stereo_panner.cc index 718d5f38ee..ab057c9147 100644 --- a/gtk2_ardour/stereo_panner.cc +++ b/gtk2_ardour/stereo_panner.cc @@ -37,6 +37,8 @@ #include "ardour/panner.h" #include "ardour/panner_shell.h" +#include "canvas/colors.h" + #include "ardour_ui.h" #include "global_signals.h" #include "stereo_panner.h" @@ -49,11 +51,7 @@ using namespace std; using namespace Gtk; using namespace Gtkmm2ext; - -static const int pos_box_size = 8; -static const int lr_box_size = 15; -static const int step_down = 10; -static const int top_step = 2; +using namespace ARDOUR_UI_UTILS; StereoPanner::ColorScheme StereoPanner::colors[3]; bool StereoPanner::have_colors = false; @@ -86,9 +84,7 @@ StereoPanner::StereoPanner (boost::shared_ptr p) 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; @@ -149,13 +145,18 @@ StereoPanner::on_expose_event (GdkEventExpose*) const double pos = position_control->get_value (); /* 0..1 */ const double swidth = width_control->get_value (); /* -1..+1 */ const double fswidth = fabs (swidth); - const double corner_radius = 5.0; uint32_t o, f, t, b, r; State state; width = get_width(); height = get_height (); + const int step_down = rint(height / 3.5); + const double corner_radius = 5.0 * ARDOUR_UI::ui_scale; + const int lr_box_size = height - 2 * step_down; + const int pos_box_size = (int)(rint(step_down * .8)) | 1; + const int top_step = step_down - pos_box_size; + if (swidth == 0.0) { state = Mono; } else if (swidth < 0.0) { @@ -178,6 +179,12 @@ StereoPanner::on_expose_event (GdkEventExpose*) r = 0x606060ff; } + if (_send_mode) { + b = ARDOUR_UI::config()->color ("send bg"); + // 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)); @@ -239,9 +246,9 @@ StereoPanner::on_expose_event (GdkEventExpose*) /* add text */ context->set_source_rgba (UINT_RGBA_R_FLT(t), UINT_RGBA_G_FLT(t), UINT_RGBA_B_FLT(t), UINT_RGBA_A_FLT(t)); if (swidth < 0.0) { - layout->set_text (_("R")); + layout->set_text (S_("Panner|R")); } else { - layout->set_text (_("L")); + layout->set_text (S_("Panner|L")); } layout->get_pixel_size(tw, th); context->move_to (rint(left - tw/2), rint(lr_box_size + step_down - th/2)); @@ -261,12 +268,12 @@ StereoPanner::on_expose_event (GdkEventExpose*) context->set_source_rgba (UINT_RGBA_R_FLT(t), UINT_RGBA_G_FLT(t), UINT_RGBA_B_FLT(t), UINT_RGBA_A_FLT(t)); if (state == Mono) { - layout->set_text (_("M")); + layout->set_text (S_("Panner|M")); } else { if (swidth < 0.0) { - layout->set_text (_("L")); + layout->set_text (S_("Panner|L")); } else { - layout->set_text (_("R")); + layout->set_text (S_("Panner|R")); } } layout->get_pixel_size(tw, th); @@ -405,6 +412,7 @@ StereoPanner::on_button_press_event (GdkEventButton* ev) double pos = position_control->get_value (); /* 0..1 */ double swidth = width_control->get_value (); /* -1..+1 */ double fswidth = fabs (swidth); + const int lr_box_size = get_height() - 2 * rint(get_height() / 3.5); int usable_width = get_width() - lr_box_size; double center = (lr_box_size/2.0) + (usable_width * pos); int left = lrint (center - (fswidth * usable_width / 2.0)); // center of leftmost box @@ -522,6 +530,7 @@ StereoPanner::on_motion_notify_event (GdkEventMotion* ev) return false; } + const int lr_box_size = get_height() - 2 * rint(get_height() / 3.5); int usable_width = get_width() - lr_box_size; double delta = (ev->x - last_drag_x) / (double) usable_width; double current_width = width_control->get_value (); @@ -663,23 +672,24 @@ StereoPanner::on_key_press_event (GdkEventKey* ev) void StereoPanner::set_colors () { - colors[Normal].fill = ARDOUR_UI::config()->get_canvasvar_StereoPannerFill(); - colors[Normal].outline = ARDOUR_UI::config()->get_canvasvar_StereoPannerOutline(); - colors[Normal].text = ARDOUR_UI::config()->get_canvasvar_StereoPannerText(); - colors[Normal].background = ARDOUR_UI::config()->get_canvasvar_StereoPannerBackground(); - colors[Normal].rule = ARDOUR_UI::config()->get_canvasvar_StereoPannerRule(); - - colors[Mono].fill = ARDOUR_UI::config()->get_canvasvar_StereoPannerMonoFill(); - colors[Mono].outline = ARDOUR_UI::config()->get_canvasvar_StereoPannerMonoOutline(); - colors[Mono].text = ARDOUR_UI::config()->get_canvasvar_StereoPannerMonoText(); - colors[Mono].background = ARDOUR_UI::config()->get_canvasvar_StereoPannerMonoBackground(); - colors[Mono].rule = ARDOUR_UI::config()->get_canvasvar_StereoPannerRule(); - - colors[Inverted].fill = ARDOUR_UI::config()->get_canvasvar_StereoPannerInvertedFill(); - colors[Inverted].outline = ARDOUR_UI::config()->get_canvasvar_StereoPannerInvertedOutline(); - colors[Inverted].text = ARDOUR_UI::config()->get_canvasvar_StereoPannerInvertedText(); - colors[Inverted].background = ARDOUR_UI::config()->get_canvasvar_StereoPannerInvertedBackground(); - colors[Inverted].rule = ARDOUR_UI::config()->get_canvasvar_StereoPannerRule(); + colors[Normal].fill = ARDOUR_UI::config()->color_mod ("stereo panner fill", "panner fill"); + // colors[Normal].outline = ARDOUR_UI::config()->color ("stereo panner outline"); + colors[Normal].outline = ArdourCanvas::HSV (colors[Normal].fill).outline().color (); + colors[Normal].text = ARDOUR_UI::config()->color ("stereo panner text"); + colors[Normal].background = ARDOUR_UI::config()->color ("stereo panner bg"); + colors[Normal].rule = ARDOUR_UI::config()->color ("stereo panner rule"); + + colors[Mono].fill = ARDOUR_UI::config()->color ("stereo panner mono fill"); + colors[Mono].outline = ARDOUR_UI::config()->color ("stereo panner mono outline"); + colors[Mono].text = ARDOUR_UI::config()->color ("stereo panner mono text"); + colors[Mono].background = ARDOUR_UI::config()->color ("stereo panner mono bg"); + colors[Mono].rule = ARDOUR_UI::config()->color ("stereo panner rule"); + + colors[Inverted].fill = ARDOUR_UI::config()->color_mod ("stereo panner inverted fill", "stereo panner inverted"); + colors[Inverted].outline = ARDOUR_UI::config()->color ("stereo panner inverted outline"); + colors[Inverted].text = ARDOUR_UI::config()->color ("stereo panner inverted text"); + colors[Inverted].background = ARDOUR_UI::config()->color_mod ("stereo panner inverted bg", "stereo panner inverted bg"); + colors[Inverted].rule = ARDOUR_UI::config()->color ("stereo panner rule"); } void