mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-10 16:46:35 +01:00
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
This commit is contained in:
parent
a2ae68e742
commit
64d82d9a8e
2 changed files with 15 additions and 10 deletions
|
|
@ -825,6 +825,9 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
|
||||||
gint timecode_nmarks;
|
gint timecode_nmarks;
|
||||||
void set_timecode_ruler_scale (gdouble lower, gdouble upper);
|
void set_timecode_ruler_scale (gdouble lower, gdouble upper);
|
||||||
|
|
||||||
|
framecnt_t _frames_ruler_interval;
|
||||||
|
void set_frames_ruler_scale (framepos_t, framepos_t);
|
||||||
|
|
||||||
enum BBTRulerScale {
|
enum BBTRulerScale {
|
||||||
bbt_over,
|
bbt_over,
|
||||||
bbt_show_64,
|
bbt_show_64,
|
||||||
|
|
|
||||||
|
|
@ -806,6 +806,10 @@ Editor::compute_fixed_ruler_scale ()
|
||||||
if (ruler_minsec_action->get_active()) {
|
if (ruler_minsec_action->get_active()) {
|
||||||
set_minsec_ruler_scale (leftmost_frame, leftmost_frame + current_page_frames() );
|
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
|
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
|
gint
|
||||||
Editor::metric_get_frames (GtkCustomRulerMark **marks, gdouble lower, gdouble upper, gint /*maxchars*/)
|
Editor::metric_get_frames (GtkCustomRulerMark **marks, gdouble lower, gdouble upper, gint /*maxchars*/)
|
||||||
{
|
{
|
||||||
framepos_t mark_interval;
|
|
||||||
framepos_t pos;
|
framepos_t pos;
|
||||||
framepos_t ilower = (framepos_t) floor (lower);
|
framepos_t const ilower = (framepos_t) floor (lower);
|
||||||
framepos_t iupper = (framepos_t) floor (upper);
|
|
||||||
gchar buf[16];
|
gchar buf[16];
|
||||||
gint nmarks;
|
gint nmarks;
|
||||||
gint n;
|
gint n;
|
||||||
|
|
@ -1753,15 +1761,9 @@ Editor::metric_get_frames (GtkCustomRulerMark **marks, gdouble lower, gdouble up
|
||||||
return 0;
|
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;
|
nmarks = 5;
|
||||||
*marks = (GtkCustomRulerMark *) g_malloc (sizeof(GtkCustomRulerMark) * nmarks);
|
*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);
|
snprintf (buf, sizeof(buf), "%" PRIi64, pos);
|
||||||
(*marks)[n].label = g_strdup (buf);
|
(*marks)[n].label = g_strdup (buf);
|
||||||
(*marks)[n].position = pos;
|
(*marks)[n].position = pos;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue