#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"
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;
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;
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) {
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));
/* 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));
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);
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
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 ();
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