summaryrefslogtreecommitdiff
path: root/gtk2_ardour/meter_strip.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2013-07-04 22:20:28 +0200
committerRobin Gareus <robin@gareus.org>2013-07-10 15:27:08 +0200
commit4726339f4c51d1a4a3b628370e809e2a242d59b6 (patch)
tree0716b67676a6193d388041a5fe87d46f62a41919 /gtk2_ardour/meter_strip.cc
parent8574be424e4e00c5fd5eac7680cad9a401402937 (diff)
meter metrics tick rendering (offset by meter-border)
Diffstat (limited to 'gtk2_ardour/meter_strip.cc')
-rw-r--r--gtk2_ardour/meter_strip.cc24
1 files changed, 13 insertions, 11 deletions
diff --git a/gtk2_ardour/meter_strip.cc b/gtk2_ardour/meter_strip.cc
index 43d18b628a..cebb0a1532 100644
--- a/gtk2_ardour/meter_strip.cc
+++ b/gtk2_ardour/meter_strip.cc
@@ -55,7 +55,7 @@ PBD::Signal1<void,MeterStrip*> MeterStrip::CatchDeletion;
MeterStrip::MetricPatterns MeterStrip::metric_patterns;
MeterStrip::TickPatterns MeterStrip::ticks_patterns;
-int MeterStrip::max_pattern_metric_size = 1024;
+int MeterStrip::max_pattern_metric_size = 1026; // +2 border
MeterStrip::MeterStrip (int metricmode)
: AxisView(0)
@@ -395,8 +395,8 @@ MeterStrip::render_metrics (Gtk::Widget& w, vector<DataType> types)
cairo_fill (cr);
if (height > max_pattern_metric_size) {
- cairo_move_to (cr, 0, max_pattern_metric_size);
- cairo_rectangle (cr, 0, max_pattern_metric_size, width, height);
+ cairo_move_to (cr, 0, max_pattern_metric_size + 1);
+ cairo_rectangle (cr, 0, max_pattern_metric_size, width, height - max_pattern_metric_size);
Gdk::Color c = w.get_style()->get_bg (Gtk::STATE_ACTIVE);
cairo_set_source_rgb (cr, c.get_red_p(), c.get_green_p(), c.get_blue_p());
cairo_fill (cr);
@@ -485,7 +485,7 @@ MeterStrip::render_metrics (Gtk::Widget& w, vector<DataType> types)
}
fraction = log_meter (j->first);
snprintf (buf, sizeof (buf), "%+2d", j->first);
- pos = height - (gint) floor (height * fraction);
+ pos = 1 + height - (gint) floor (height * fraction);
cairo_move_to(cr, width-2.5, pos + .5);
cairo_line_to(cr, width, pos + .5);
cairo_stroke (cr);
@@ -494,8 +494,9 @@ MeterStrip::render_metrics (Gtk::Widget& w, vector<DataType> types)
cairo_set_line_width (cr, 1.0);
fraction = (j->first) / 127.0;
snprintf (buf, sizeof (buf), "%3d", j->first);
- pos = height - (gint) rintf (height * fraction);
- cairo_arc(cr, 3, pos, 1.0, 0, 2 * M_PI);
+ pos = 1 + height - (gint) rintf (height * fraction);
+ pos = min (pos, height);
+ cairo_arc(cr, 3, pos + .5, 1.0, 0, 2 * M_PI);
cairo_fill(cr);
break;
}
@@ -607,8 +608,8 @@ MeterStrip::render_ticks (Gtk::Widget& w, vector<DataType> types)
cairo_fill (cr);
if (height > max_pattern_metric_size) {
- cairo_move_to (cr, 0, max_pattern_metric_size);
- cairo_rectangle (cr, 0, max_pattern_metric_size, width, height);
+ cairo_move_to (cr, 0, max_pattern_metric_size + 1);
+ cairo_rectangle (cr, 0, max_pattern_metric_size, width, height - max_pattern_metric_size);
Gdk::Color c = w.get_style()->get_bg (Gtk::STATE_ACTIVE);
cairo_set_source_rgb (cr, c.get_red_p(), c.get_green_p(), c.get_blue_p());
cairo_fill (cr);
@@ -711,15 +712,16 @@ MeterStrip::render_ticks (Gtk::Widget& w, vector<DataType> types)
cairo_set_source_rgb (cr, c.get_red_p(), c.get_green_p(), c.get_blue_p());
}
fraction = log_meter (j->first);
- pos = height - (gint) floor (height * fraction);
+ pos = 1 + 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->first) / 127.0;
- pos = height - (gint) floor (height * fraction);
- cairo_arc(cr, 1.5, pos, 1.0, 0, 2 * M_PI);
+ pos = 1 + height - (gint) floor (height * fraction);
+ pos = min (pos, height);
+ cairo_arc(cr, 1.5, pos + .5, 1.0, 0, 2 * M_PI);
cairo_fill(cr);
break;
}