diff options
author | Robin Gareus <robin@gareus.org> | 2013-07-27 22:44:38 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2013-07-27 22:44:38 +0200 |
commit | 1ce2a1d638c67237ccb4c1fb4e4982e06ec27cbf (patch) | |
tree | 6f49daa3c84cb844378851d5817b9003bc949192 /gtk2_ardour | |
parent | 362e774878b8c417cee509a202bd23c5826bfa3f (diff) |
add red-boxes to meter-marks and fix Nordic scale color
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/level_meter.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/meter_patterns.cc | 36 |
2 files changed, 34 insertions, 5 deletions
diff --git a/gtk2_ardour/level_meter.cc b/gtk2_ardour/level_meter.cc index dc3a20d5af..433f028aee 100644 --- a/gtk2_ardour/level_meter.cc +++ b/gtk2_ardour/level_meter.cc @@ -328,7 +328,8 @@ LevelMeterBase::setup_meters (int len, int initial_width, int thin_width) stp[1] = 115.0 * meter_deflect_nordic(-18); stp[2] = 115.0 * meter_deflect_nordic(-12); stp[3] = 115.0 * meter_deflect_nordic( -9); // ignored - c[1] = c[2] = c[3]; + //c[2] = c[3] = c[1]; // dark-green + c[0] = c[1] = c[2]; // bright-green c[6] = c[7] = c[8] = c[9]; break; case MeterIEC1DIN: diff --git a/gtk2_ardour/meter_patterns.cc b/gtk2_ardour/meter_patterns.cc index dede422b2d..aad7c96d98 100644 --- a/gtk2_ardour/meter_patterns.cc +++ b/gtk2_ardour/meter_patterns.cc @@ -260,11 +260,21 @@ meter_render_ticks (Gtk::Widget& w, MeterType type, vector<ARDOUR::DataType> typ 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; + + int box_l, box_r; + if (tickleft) { + box_l = 2; box_r = 3; + } else if (tickright) { + box_l = 0; box_r = 1; + } else { + box_l = 0; box_r = 3; + } cairo_surface_t* surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, width, height); cairo_t* cr = cairo_create (surface); @@ -302,6 +312,8 @@ meter_render_ticks (Gtk::Widget& w, MeterType type, vector<ARDOUR::DataType> typ // tick-maker position in dBFS, line-thickness std::map<float,float> points; +#define DFL_H(fract) (height - floor (height * (fract)) + .5) + switch (*i) { case DataType::AUDIO: @@ -377,9 +389,14 @@ meter_render_ticks (Gtk::Widget& w, MeterType type, vector<ARDOUR::DataType> typ points.insert (std::pair<float,float>(-18.0f, 1.0)); points.insert (std::pair<float,float>(-15.0f, 0.5)); - points.insert (std::pair<float,float>(-12.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, 0.5)); + cairo_set_source_rgba (cr, .8, 0, 0, 0.8); + cairo_rectangle (cr, + box_l, DFL_H(meter_deflect_nordic( -6)), + box_r, DFL_H(meter_deflect_nordic(-12))); + cairo_fill (cr); break; case MeterIEC1DIN: points.insert (std::pair<float,float>( -3.0f, 0.5)); // "200%" @@ -405,6 +422,11 @@ meter_render_ticks (Gtk::Widget& w, MeterType type, vector<ARDOUR::DataType> typ 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)); + cairo_set_source_rgba (cr, .8, 0, 0, 0.8); + cairo_rectangle (cr, + box_l, DFL_H(meter_deflect_din(0)), + box_r, DFL_H(meter_deflect_din(-9.0))); + cairo_fill (cr); break; case MeterVU: points.insert (std::pair<float,float>(-17.0f, 1.0)); //+3 VU @@ -423,6 +445,12 @@ meter_render_ticks (Gtk::Widget& w, MeterType type, vector<ARDOUR::DataType> typ 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)); + // red-box + cairo_set_source_rgba (cr, .8, 0, 0, 0.8); + cairo_rectangle (cr, + box_l, DFL_H(meter_deflect_vu(-16)), + box_r, DFL_H(meter_deflect_vu(-20))); + cairo_fill (cr); break; default: |