From 52f31957de2802bb423b7976ecf0ce75f162f740 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 2 Jul 2013 19:20:14 +0200 Subject: [PATCH] meterbridge ticks.. --- gtk2_ardour/meter_strip.cc | 88 +++++++++++++++++++++++++------------- 1 file changed, 58 insertions(+), 30 deletions(-) diff --git a/gtk2_ardour/meter_strip.cc b/gtk2_ardour/meter_strip.cc index 9ab6ea3f4a..11914a9e18 100644 --- a/gtk2_ardour/meter_strip.cc +++ b/gtk2_ardour/meter_strip.cc @@ -43,6 +43,8 @@ #include "i18n.h" +#define WITH_METRICS 1 + using namespace ARDOUR; using namespace PBD; using namespace Gtk; @@ -120,9 +122,9 @@ MeterStrip::MeterStrip (Meterbridge& mtr, Session* sess, boost::shared_ptrshow(); @@ -140,8 +142,8 @@ MeterStrip::MeterStrip (Meterbridge& mtr, Session* sess, boost::shared_ptr types) cairo_set_source_rgb (cr, c.get_red_p(), c.get_green_p(), c.get_blue_p()); } - vector points; + std::map points; switch (*i) { case DataType::AUDIO: - points.push_back (-50); - points.push_back (-40); - points.push_back (-30); - points.push_back (-20); - points.push_back (-18); - points.push_back (-10); - points.push_back (-6); - points.push_back (-3); - points.push_back (0); - points.push_back (4); + points.insert (std::pair(-50, 0.5)); + points.insert (std::pair(-40, 0.5)); + points.insert (std::pair(-30, 0.5)); + points.insert (std::pair(-20, 0.5)); + points.insert (std::pair(-18, 1.0)); + points.insert (std::pair(-15, 0.5)); + points.insert (std::pair(-10, 1.0)); + points.insert (std::pair( -9, 0.5)); + points.insert (std::pair( -8, 0.5)); + points.insert (std::pair( -7, 0.5)); + points.insert (std::pair( -6, 0.5)); + points.insert (std::pair( -5, 1.0)); + points.insert (std::pair( -4, 0.5)); + points.insert (std::pair( -3, 1.0)); + points.insert (std::pair( -2, 0.5)); + points.insert (std::pair( -1, 0.5)); + points.insert (std::pair( 0, 1.0)); + points.insert (std::pair( 1, 0.5)); + points.insert (std::pair( 2, 0.5)); + points.insert (std::pair( 3, 0.5)); + points.insert (std::pair( 4, 0.5)); + points.insert (std::pair( 5, 0.5)); + points.insert (std::pair( 6, 0.5)); break; case DataType::MIDI: - points.push_back (0); - points.push_back (32); - points.push_back (64); - points.push_back (96); - points.push_back (127); + points.insert (std::pair( 0, 1.0)); + points.insert (std::pair( 16, 0.5)); + points.insert (std::pair( 32, 1.0)); + points.insert (std::pair( 48, 0.5)); + points.insert (std::pair( 64, 1.0)); + points.insert (std::pair( 72, 0.5)); + points.insert (std::pair( 96, 1.0)); + points.insert (std::pair(100, 1.0)); + points.insert (std::pair(112, 0.5)); + points.insert (std::pair(127, 1.0)); break; } - for (vector::const_iterator j = points.begin(); j != points.end(); ++j) { + for (std::map::const_iterator j = points.begin(); j != points.end(); ++j) { + cairo_set_line_width (cr, (j->second)); float fraction = 0; + gint pos; + switch (*i) { case DataType::AUDIO: - fraction = log_meter (*j); + if (j->first >= 0) { + cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); + } + fraction = log_meter (j->first); + pos = height - (gint) floor (height * fraction); + cairo_move_to(cr, 0, pos + .5); + cairo_line_to(cr, 3, pos + .5); + cairo_stroke (cr); break; case DataType::MIDI: - fraction = *j / 127.0; + fraction = (j->first) / 127.0; + pos = height - (gint) floor (height * fraction); + cairo_arc(cr, 1.5, pos, (j->second), 0, 2 * M_PI); + cairo_fill_preserve(cr); + cairo_stroke (cr); break; } - - gint const pos = height - (gint) floor (height * fraction); - cairo_set_line_width (cr, 1.0); - cairo_arc(cr, 1.5, pos, 1.0, 0, 2 * M_PI); - cairo_fill_preserve(cr); - cairo_stroke (cr); } }