}
break;
case MeterIEC2BBC:
- fraction = meter_deflect_ppm(val);
- cairo_set_source_rgb (cr, c->get_red_p(), c->get_green_p(), c->get_blue_p());
- break;
case MeterIEC2EBU:
fraction = meter_deflect_ppm(val);
- if (val >= -10.0) {
- cairo_set_source_rgb (cr,
- UINT_RGBA_R_FLT(peakcolor),
- UINT_RGBA_G_FLT(peakcolor),
- UINT_RGBA_B_FLT(peakcolor));
- } else {
- cairo_set_source_rgb (cr, c->get_red_p(), c->get_green_p(), c->get_blue_p());
- }
+ cairo_set_source_rgb (cr, c->get_red_p(), c->get_green_p(), c->get_blue_p());
break;
case MeterIEC1NOR:
fraction = meter_deflect_nordic(val);
- if (val >= -12.0) {
+#if 0
+ if (val == -18.0) {
cairo_set_source_rgb (cr,
UINT_RGBA_R_FLT(peakcolor),
UINT_RGBA_G_FLT(peakcolor),
} else {
cairo_set_source_rgb (cr, c->get_red_p(), c->get_green_p(), c->get_blue_p());
}
+#else
+ cairo_set_source_rgb (cr, c->get_red_p(), c->get_green_p(), c->get_blue_p());
+#endif
break;
case MeterIEC1DIN:
fraction = meter_deflect_din(val);
- if (val >= -9.0) {
+ if (val == -9.0 || val == -15 || val == -18) {
cairo_set_source_rgb (cr,
UINT_RGBA_R_FLT(peakcolor),
UINT_RGBA_G_FLT(peakcolor),
return fraction;
}
+static void mtr_red_stripe(cairo_t* cr, float l, float w, int h, float top, float bot) {
+ if (w <= 0) return;
+ int t = h - floorf (h * (top));
+ int b = h - floorf (h * (bot));
+ cairo_set_source_rgba (cr, .75, 0, 0, 0.75);
+ cairo_rectangle (cr, l, t + .5, w, b - t);
+ cairo_fill (cr);
+}
+
static void set_bg_color(Gtk::Widget& w, cairo_t* cr, MeterType type) {
float r,g,b;
switch(type) {
Glib::RefPtr<Gdk::Window> win (w.get_window());
bool background;
+ bool tickleft, tickright;
gint width, height;
win->get_size (width, height);
- background = types.size() == 0
- || w.get_name().substr(w.get_name().length() - 4) == "Left"
- || w.get_name().substr(w.get_name().length() - 5) == "Right";
+ tickleft = w.get_name().substr(w.get_name().length() - 4) == "Left";
+ tickright = w.get_name().substr(w.get_name().length() - 5) == "Right";
+ background = types.size() == 0 || tickleft || tickright;
+
+ float box_l=0;
+ float box_w=0;
+ if (tickleft) {
+ if (w.get_name().substr(0, 3) == "Bar") {
+ box_l = width-2; box_w = 2;
+ }
+ } else if (tickright) {
+ if (w.get_name().substr(0, 3) == "Bar") {
+ box_l = 0; box_w = 2;
+ }
+ } else {
+ box_l = 0; box_w = 3;
+ }
cairo_surface_t* surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, width, height);
cairo_t* cr = cairo_create (surface);
c = w.get_style()->get_fg (Gtk::STATE_ACTIVE);
} else if (background) {
set_fg_color(w, type, &c);
- cairo_set_source_rgb (cr, c.get_red_p(), c.get_green_p(), c.get_blue_p());
} else {
c = w.get_style()->get_fg (Gtk::STATE_NORMAL);
}
- cairo_set_source_rgb (cr, c.get_red_p(), c.get_green_p(), c.get_blue_p());
// tick-maker position in dBFS, line-thickness
std::map<float,float> points;
points.insert (std::pair<float,float>(-14.0f, 1.0));
points.insert (std::pair<float,float>(-12.0f, 0.5));
points.insert (std::pair<float,float>(-10.0f, 1.0));
- points.insert (std::pair<float,float>( -9.0f, 0.5));
+ points.insert (std::pair<float,float>( -9.0f, 0.8));
points.insert (std::pair<float,float>( -8.0f, 0.5));
points.insert (std::pair<float,float>( -6.0f, 1.0));
break;
points.insert (std::pair<float,float>(-39.0f, 0.5));
points.insert (std::pair<float,float>(-36.0f, 1.0));
- points.insert (std::pair<float,float>(-33.0f, 1.0));
+ points.insert (std::pair<float,float>(-33.0f, 0.5));
points.insert (std::pair<float,float>(-30.0f, 1.0));
- points.insert (std::pair<float,float>(-27.0f, 1.0));
+ points.insert (std::pair<float,float>(-27.0f, 0.5));
points.insert (std::pair<float,float>(-24.0f, 1.0));
- points.insert (std::pair<float,float>(-21.0f, 1.0));
+ points.insert (std::pair<float,float>(-21.0f, 0.5));
points.insert (std::pair<float,float>(-18.0f, 1.0));
- points.insert (std::pair<float,float>(-15.0f, 1.0));
+ points.insert (std::pair<float,float>(-15.0f, 0.5));
points.insert (std::pair<float,float>(-12.0f, 1.0));
points.insert (std::pair<float,float>( -9.0f, 1.0));
- points.insert (std::pair<float,float>( -6.0f, 1.0));
+ points.insert (std::pair<float,float>( -6.0f, 0.5));
+ mtr_red_stripe(cr, box_l, box_w, height,
+ meter_deflect_nordic(-6.0f), meter_deflect_nordic(-12.0f));
break;
case MeterIEC1DIN:
points.insert (std::pair<float,float>( -3.0f, 0.5)); // "200%"
- points.insert (std::pair<float,float>( -4.0f, 1.0)); // "100%"
- points.insert (std::pair<float,float>( -9.0f, 1.0));
+ points.insert (std::pair<float,float>( -4.0f, 1.0));
+ points.insert (std::pair<float,float>( -5.0f, 0.5));
+ points.insert (std::pair<float,float>( -6.0f, 0.5));
+ points.insert (std::pair<float,float>( -7.0f, 0.5));
+ points.insert (std::pair<float,float>( -8.0f, 0.5));
+ points.insert (std::pair<float,float>( -9.0f, 1.0)); // "100%"
+ points.insert (std::pair<float,float>(-10.0f, 0.5));
+ points.insert (std::pair<float,float>(-11.0f, 0.5));
+ points.insert (std::pair<float,float>(-12.0f, 0.5));
+ points.insert (std::pair<float,float>(-13.0f, 0.5));
points.insert (std::pair<float,float>(-14.0f, 1.0));
- points.insert (std::pair<float,float>(-15.0f, 0.5)); // "50%"
- points.insert (std::pair<float,float>(-18.0f, 0.5)); // "-9"
- points.insert (std::pair<float,float>(-19.0f, 1.0)); // "30%"
- points.insert (std::pair<float,float>(-29.0f, 1.0)); // "10%"
- points.insert (std::pair<float,float>(-35.0f, 0.5)); // "5%" " -20"
- points.insert (std::pair<float,float>(-39.0f, 1.0)); // "3%"
- points.insert (std::pair<float,float>(-49.0f, 0.5)); // "1%"
+ points.insert (std::pair<float,float>(-15.0f, 0.8)); // "50%"
+ points.insert (std::pair<float,float>(-18.0f, 0.8)); // "-9"
+ points.insert (std::pair<float,float>(-19.0f, 1.0));
+ points.insert (std::pair<float,float>(-24.0f, 0.5));
+ points.insert (std::pair<float,float>(-29.0f, 1.0)); // "-20", "10%"
+ points.insert (std::pair<float,float>(-34.0f, 0.5)); // -25
+ //points.insert (std::pair<float,float>(-35.0f, 0.5)); // "5%" " -20"
+ points.insert (std::pair<float,float>(-39.0f, 1.0));
+ points.insert (std::pair<float,float>(-49.0f, 1.0));
+ points.insert (std::pair<float,float>(-54.0f, 0.5));
points.insert (std::pair<float,float>(-59.0f, 1.0));
+ mtr_red_stripe(cr, box_l, box_w, height,
+ meter_deflect_din(0.0f), meter_deflect_din(-9.0f));
break;
case MeterVU:
- points.insert (std::pair<float,float>(-17.0f, 1.0));
+ points.insert (std::pair<float,float>(-17.0f, 1.0)); //+3 VU
points.insert (std::pair<float,float>(-18.0f, 1.0));
points.insert (std::pair<float,float>(-19.0f, 1.0));
- points.insert (std::pair<float,float>(-20.0f, 1.0));
+ points.insert (std::pair<float,float>(-19.5f, 0.5));
+ points.insert (std::pair<float,float>(-20.0f, 1.0)); // 0 VU
+ points.insert (std::pair<float,float>(-20.5f, 0.5));
points.insert (std::pair<float,float>(-21.0f, 1.0));
points.insert (std::pair<float,float>(-22.0f, 1.0));
- points.insert (std::pair<float,float>(-23.0f, 1.0));
+ points.insert (std::pair<float,float>(-23.0f, 1.0)); //-3 VU
+ points.insert (std::pair<float,float>(-24.0f, 0.5));
points.insert (std::pair<float,float>(-25.0f, 1.0));
- points.insert (std::pair<float,float>(-27.0f, 1.0));
+ points.insert (std::pair<float,float>(-26.0f, 0.5));
+ points.insert (std::pair<float,float>(-27.0f, 1.0)); //-7 VU
points.insert (std::pair<float,float>(-30.0f, 1.0));
+ points.insert (std::pair<float,float>(-35.0f, 0.5));
points.insert (std::pair<float,float>(-40.0f, 1.0));
+ mtr_red_stripe(cr, box_l, box_w, height,
+ meter_deflect_vu(-17.0f), meter_deflect_vu(-20.0f));
break;
default:
fraction = (j->first) / 127.0;
pos = 1 + height - (gint) floor (height * fraction);
pos = min (pos, height);
+ cairo_set_source_rgb (cr, c.get_red_p(), c.get_green_p(), c.get_blue_p());
cairo_arc(cr, 1.5, pos + .5, 1.0, 0, 2 * M_PI);
cairo_fill(cr);
break;
points.insert (std::pair<float,string>(-42.0f, "-24"));
points.insert (std::pair<float,string>(-36.0f, "-18"));
- points.insert (std::pair<float,string>(-33.0f, "-15"));
+ //points.insert (std::pair<float,string>(-33.0f, "-15"));
points.insert (std::pair<float,string>(-30.0f, "-12"));
- points.insert (std::pair<float,string>(-27.0f, "-9"));
+ //points.insert (std::pair<float,string>(-27.0f, "-9"));
points.insert (std::pair<float,string>(-24.0f, "-6"));
- points.insert (std::pair<float,string>(-21.0f, "-3"));
+ //points.insert (std::pair<float,string>(-21.0f, "-3"));
points.insert (std::pair<float,string>(-18.0f, "TST"));
- points.insert (std::pair<float,string>(-15.0f, "+3"));
+ //points.insert (std::pair<float,string>(-15.0f, "+3"));
points.insert (std::pair<float,string>(-12.0f, "+6"));
points.insert (std::pair<float,string>( -9.0f, "+9"));
- points.insert (std::pair<float,string>( -6.0f, "+12"));
+ //points.insert (std::pair<float,string>( -6.0f, "+12"));
break;
case MeterIEC1DIN:
overlay_midi = 2;
//points.insert (std::pair<float,string>( -3.0f, "200%"));
- points.insert (std::pair<float,string>( -4.0f, "+5")); // "100%"
- points.insert (std::pair<float,string>( -9.0f, "0"));
+ points.insert (std::pair<float,string>( -4.0f, "+5"));
+ points.insert (std::pair<float,string>( -9.0f, "0")); // "100%";
points.insert (std::pair<float,string>(-14.0f, "-5"));
//points.insert (std::pair<float,string>(-15.0f, "50%"));
//points.insert (std::pair<float,string>(-18.0f, "-9"));
points.insert (std::pair<float,string>(-19.0f, "-10")); // "30%"
points.insert (std::pair<float,string>(-29.0f, "-20")); // "10%"
- //points.insert (std::pair<float,string>(-35.0f, "-20")); // "5%"
- points.insert (std::pair<float,string>(-39.0f, "-30")); // "3%"
+ //points.insert (std::pair<float,string>(-35.0f, "5%")); // "5%"
+ points.insert (std::pair<float,string>(-39.0f, "-30"));
//points.insert (std::pair<float,string>(-49.0f, "1%"));
points.insert (std::pair<float,string>(-59.0f, "-50"));
break;