Revert "Revert new meter types (postponed until after 3.3 release)"
[ardour.git] / gtk2_ardour / meter_patterns.cc
index 9a2cab00b58cb802867f281949f89d1eb3459538..d658a0b3ef8c6e248cafc43c81ecc9e6d6bc8c26 100644 (file)
@@ -64,6 +64,15 @@ ArdourMeter::meter_type_string (ARDOUR::MeterType mt)
                case MeterKrms:
                        return _("RMS + Peak");
                        break;
+               case MeterIEC1:
+                       return _("DIN");
+                       break;
+               case MeterIEC2:
+                       return _("EBU/BBC");
+                       break;
+               case MeterVU:
+                       return _("VU");
+                       break;
                default:
                        return _("???");
                        break;
@@ -233,6 +242,10 @@ meter_render_metrics (Gtk::Widget& w, vector<DataType> types)
        tickright = w.get_name().substr(w.get_name().length() - 5) == "Right";
        background = types.size() == 0 || tickleft || tickright;
 
+       if (!tickleft && !tickright) {
+               tickright = true;
+       }
+
        cairo_surface_t* surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, width, height);
        cairo_t* cr = cairo_create (surface);
        Glib::RefPtr<Pango::Layout> layout = Pango::Layout::create(w.get_pango_context());
@@ -245,21 +258,22 @@ meter_render_metrics (Gtk::Widget& w, vector<DataType> types)
        Pango::FontDescription font;
 
        font = Pango::FontDescription ("ArdourMono");
+       double fixfontsize = 81920.0 / (double) ARDOUR::Config->get_font_scale();
 
        font.set_weight (Pango::WEIGHT_NORMAL);
-       font.set_size (9.0 * PANGO_SCALE);
+       font.set_size (9.0 * PANGO_SCALE * fixfontsize);
        font_attr = new Pango::AttrFontDesc (Pango::Attribute::create_attr_font_desc (font));
        audio_font_attributes.change (*font_attr);
        delete font_attr;
 
        font.set_weight (Pango::WEIGHT_ULTRALIGHT);
        font.set_stretch (Pango::STRETCH_ULTRA_CONDENSED);
-       font.set_size (8.0 * PANGO_SCALE);
+       font.set_size (8.0 * PANGO_SCALE * fixfontsize);
        font_attr = new Pango::AttrFontDesc (Pango::Attribute::create_attr_font_desc (font));
        midi_font_attributes.change (*font_attr);
        delete font_attr;
 
-       font.set_size (6.0 * PANGO_SCALE);
+       font.set_size (6.0 * PANGO_SCALE * fixfontsize);
        font_attr = new Pango::AttrFontDesc (Pango::Attribute::create_attr_font_desc (font));
        unit_font_attributes.change (*font_attr);
        delete font_attr;
@@ -295,11 +309,6 @@ meter_render_metrics (Gtk::Widget& w, vector<DataType> types)
                } 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());
-
-                       if (!tickleft && !tickright && (*i) == DataType::AUDIO) {
-                               tickleft = true;
-                       }
-
                }
 
                std::map<int,float> points;
@@ -383,7 +392,6 @@ meter_render_metrics (Gtk::Widget& w, vector<DataType> types)
                                snprintf (buf, sizeof (buf), "%3d", j->first);
                                pos = 1 + height - (gint) rintf (height * fraction);
                                pos = min (pos, height);
-#if 0
                                if (tickleft) {
                                        cairo_arc(cr, width - 2.0, pos + .5, 1.0, 0, 2 * M_PI);
                                        cairo_fill(cr);
@@ -391,7 +399,6 @@ meter_render_metrics (Gtk::Widget& w, vector<DataType> types)
                                        cairo_arc(cr, 3, pos + .5, 1.0, 0, 2 * M_PI);
                                        cairo_fill(cr);
                                }
-#endif
                                break;
                        }
 
@@ -402,7 +409,7 @@ meter_render_metrics (Gtk::Widget& w, vector<DataType> types)
                        int tw, th;
                        layout->get_pixel_size(tw, th);
 
-                       int p = pos - (th / 2);
+                       int p = pos - (th / 2) - 1;
                        p = min (p, height - th);
                        p = max (p, 0);