X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fmeter_patterns.cc;h=55eb16246a532e5fcc2e4d66de8614827adceee6;hb=9204b2837ebbaa771d318cadf5cb2ea4d35e9fef;hp=2166cc03ae75526a2244f5d83863508b190b699c;hpb=cd28d62b26214770cfc269aafe666ec2fb3f2607;p=ardour.git diff --git a/gtk2_ardour/meter_patterns.cc b/gtk2_ardour/meter_patterns.cc index 2166cc03ae..55eb16246a 100644 --- a/gtk2_ardour/meter_patterns.cc +++ b/gtk2_ardour/meter_patterns.cc @@ -31,6 +31,7 @@ #include "i18n.h" using namespace ARDOUR; +using namespace ARDOUR_UI_UTILS; using namespace PBD; using namespace Gtk; using namespace Gtkmm2ext; @@ -101,6 +102,9 @@ ArdourMeter::meter_type_string (ARDOUR::MeterType mt) case MeterK14: return _("K14"); break; + case MeterK12: + return _("K12"); + break; case MeterVU: return _("VU"); break; @@ -199,6 +203,16 @@ static inline float mtr_col_and_fract( } fraction = meter_deflect_k (val, 14); break; + case MeterK12: + if (val >= -8.0) { + cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); // red + } else if (val >= -12.0) { + cairo_set_source_rgb (cr, 0.8, 0.8, 0.0); // yellow + } else { + cairo_set_source_rgb (cr, 0.0, 1.0, 0.0); // green + } + fraction = meter_deflect_k (val, 12); + break; } return fraction; } @@ -226,6 +240,7 @@ static void set_bg_color(Gtk::Widget& w, cairo_t* cr, MeterType type) { case MeterIEC1NOR: case MeterIEC2BBC: case MeterIEC2EBU: + case MeterK12: case MeterK14: case MeterK20: if (rgba_p_from_style("meterstripPPM", &r, &g, &b, "bg")) { @@ -281,10 +296,16 @@ meter_render_ticks (Gtk::Widget& w, MeterType type, vector typ if (tickleft) { if (w.get_name().substr(0, 3) == "Bar") { box_l = width-2; box_w = 2; + } else if (w.get_name().substr(0, 4) == "Mark") { + box_l = width-2; box_w = 2; + background = false; } } else if (tickright) { if (w.get_name().substr(0, 3) == "Bar") { box_l = 0; box_w = 2; + } else if (w.get_name().substr(0, 4) == "Mark") { + box_l = 0; box_w = 2; + background = false; } } else { box_l = 0; box_w = 3; @@ -328,6 +349,20 @@ meter_render_ticks (Gtk::Widget& w, MeterType type, vector typ case DataType::AUDIO: switch (type) { + case MeterK12: + points.insert (std::pair(-52.0f, 1.0)); + points.insert (std::pair(-42.0f, 1.0)); + points.insert (std::pair(-32.0f, 1.0)); + points.insert (std::pair(-22.0f, 1.0)); + points.insert (std::pair(-18.0f, 1.0)); + points.insert (std::pair(-15.0f, 1.0)); + points.insert (std::pair(-12.0f, 1.0)); + points.insert (std::pair( -9.0f, 1.0)); + points.insert (std::pair( -8.0f, 0.8)); + points.insert (std::pair( -6.0f, 1.0)); + points.insert (std::pair( -3.0f, 1.0)); + points.insert (std::pair( 0.0f, 1.0)); + break; case MeterK14: points.insert (std::pair(-54.0f, 1.0)); points.insert (std::pair(-44.0f, 1.0)); @@ -579,7 +614,7 @@ meter_render_metrics (Gtk::Widget& w, MeterType type, vector types) Pango::AttrFontDesc* font_attr; Pango::FontDescription font; - font = Pango::FontDescription ("ArdourMono"); + font = Pango::FontDescription (ARDOUR_UI::config()->get_canvasvar_SmallMonospaceFont()); double fixfontsize = 81920.0 / (double) ARDOUR::Config->get_font_scale(); font.set_weight (Pango::WEIGHT_NORMAL); @@ -639,6 +674,20 @@ meter_render_metrics (Gtk::Widget& w, MeterType type, vector types) case DataType::AUDIO: layout->set_attributes (audio_font_attributes); switch (type) { + case MeterK12: + overlay_midi = 0; + points.insert (std::pair(-52.0f, "-40")); + points.insert (std::pair(-42.0f, "-30")); + points.insert (std::pair(-32.0f, "-20")); + points.insert (std::pair(-22.0f, "-10")); + points.insert (std::pair(-18.0f, "-6")); + points.insert (std::pair(-15.0f, "-3")); + points.insert (std::pair(-12.0f, " 0")); + points.insert (std::pair( -9.0f, "+3")); + points.insert (std::pair( -6.0f, "+6")); + points.insert (std::pair( -3.0f, "+9")); + points.insert (std::pair( 0.0f, "+12")); + break; case MeterK14: overlay_midi = 0; points.insert (std::pair(-54.0f, "-40")); @@ -837,7 +886,7 @@ meter_render_metrics (Gtk::Widget& w, MeterType type, vector types) case DataType::MIDI: align_center = false; // don't bleed into legend fraction = (j->first) / 127.0; - pos = 1 + height - (gint) rintf (height * fraction); + pos = 1 + height - (gint) lrintf (height * fraction); pos = min (pos, height); cairo_set_source_rgb (cr, c.get_red_p(), c.get_green_p(), c.get_blue_p()); if (tickleft) { @@ -897,6 +946,9 @@ meter_render_metrics (Gtk::Widget& w, MeterType type, vector types) case MeterK14: layout->set_text("K14"); break; + case MeterK12: + layout->set_text("K12"); + break; default: case MeterPeak: case MeterKrms: