summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_rulers.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2011-01-18 01:00:27 +0000
committerCarl Hetherington <carl@carlh.net>2011-01-18 01:00:27 +0000
commit64d82d9a8eee69ab19ac43e6596ae9693bd0ce4d (patch)
tree636f95e1213d2dcf32e7335cb1cce77918876056 /gtk2_ardour/editor_rulers.cc
parenta2ae68e7428dc9a0d1ab334523cffb4d610931c9 (diff)
Make the frames ruler behave more like the other time-based rulers when the editor window is resized.
git-svn-id: svn://localhost/ardour2/branches/3.0@8527 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_rulers.cc')
-rw-r--r--gtk2_ardour/editor_rulers.cc22
1 files changed, 12 insertions, 10 deletions
diff --git a/gtk2_ardour/editor_rulers.cc b/gtk2_ardour/editor_rulers.cc
index 896beeb834..aa35b2487b 100644
--- a/gtk2_ardour/editor_rulers.cc
+++ b/gtk2_ardour/editor_rulers.cc
@@ -806,6 +806,10 @@ Editor::compute_fixed_ruler_scale ()
if (ruler_minsec_action->get_active()) {
set_minsec_ruler_scale (leftmost_frame, leftmost_frame + current_page_frames() );
}
+
+ if (ruler_samples_action->get_active()) {
+ set_frames_ruler_scale (leftmost_frame, leftmost_frame + current_page_frames());
+ }
}
void
@@ -1738,13 +1742,17 @@ Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble /*upp
}
+void
+Editor::set_frames_ruler_scale (framepos_t lower, framepos_t upper)
+{
+ _frames_ruler_interval = (upper - lower) / 5;
+}
+
gint
Editor::metric_get_frames (GtkCustomRulerMark **marks, gdouble lower, gdouble upper, gint /*maxchars*/)
{
- framepos_t mark_interval;
framepos_t pos;
- framepos_t ilower = (framepos_t) floor (lower);
- framepos_t iupper = (framepos_t) floor (upper);
+ framepos_t const ilower = (framepos_t) floor (lower);
gchar buf[16];
gint nmarks;
gint n;
@@ -1753,15 +1761,9 @@ Editor::metric_get_frames (GtkCustomRulerMark **marks, gdouble lower, gdouble up
return 0;
}
- mark_interval = (iupper - ilower) / 5;
- if (mark_interval > _session->frame_rate()) {
- mark_interval -= mark_interval % _session->frame_rate();
- } else {
- mark_interval = _session->frame_rate() / (_session->frame_rate() / mark_interval ) ;
- }
nmarks = 5;
*marks = (GtkCustomRulerMark *) g_malloc (sizeof(GtkCustomRulerMark) * nmarks);
- for (n = 0, pos = ilower; n < nmarks; pos += mark_interval, ++n) {
+ for (n = 0, pos = ilower; n < nmarks; pos += _frames_ruler_interval, ++n) {
snprintf (buf, sizeof(buf), "%" PRIi64, pos);
(*marks)[n].label = g_strdup (buf);
(*marks)[n].position = pos;