Show measure lines in a different color from beat lines.

This commit is contained in:
Jonathan Moore Liles 2008-02-28 10:37:02 -06:00
parent f8752d301f
commit 6c07927b40
3 changed files with 18 additions and 1 deletions

View File

@ -82,6 +82,7 @@ public:
if ( m == FL_RELEASE ) if ( m == FL_RELEASE )
{ {
_track->sort(); _track->sort();
timeline->rulers->redraw();
timeline->tracks->redraw(); timeline->tracks->redraw();
} }
return r; return r;

View File

@ -176,6 +176,14 @@ Timeline::beats_per_minute ( nframes_t when ) const
return tempo_track->beats_per_minute( when ); return tempo_track->beats_per_minute( when );
} }
int
Timeline::beats_per_bar ( nframes_t when ) const
{
time_sig t = time_track->time( when );
return t.beats_per_bar;
}
void void
Timeline::beats_per_minute ( nframes_t when, float bpm ) Timeline::beats_per_minute ( nframes_t when, float bpm )
{ {
@ -187,7 +195,9 @@ void
Timeline::draw_measure_lines ( int X, int Y, int W, int H, Fl_Color color ) Timeline::draw_measure_lines ( int X, int Y, int W, int H, Fl_Color color )
{ {
fl_line_style( FL_DASH, 2 ); fl_line_style( FL_DASH, 2 );
fl_color( fl_color_average( FL_BLACK, color, 0.65f ) );
Fl_Color beat = fl_color_average( FL_BLACK, color, 0.65f );
Fl_Color bar = fl_color_average( FL_RED, color, 0.65f );
// int measure = ts_to_x( sample_rate * 60 / beats_per_minute() ); // int measure = ts_to_x( sample_rate * 60 / beats_per_minute() );
@ -200,6 +210,10 @@ Timeline::draw_measure_lines ( int X, int Y, int W, int H, Fl_Color color )
/* don't bother with lines this close together */ /* don't bother with lines this close together */
if ( measure < 4 ) if ( measure < 4 )
break; break;
if ( 0 == (x / measure) % beats_per_bar( x_to_ts( x ) + xoffset ) )
fl_color( bar );
else
fl_color( beat );
if ( 0 == (ts_to_x( xoffset ) + x) % measure ) if ( 0 == (ts_to_x( xoffset ) + x) % measure )
fl_line( x, Y, x, Y + H ); fl_line( x, Y, x, Y + H );

View File

@ -100,6 +100,8 @@ struct Timeline : public Fl_Group
float beats_per_minute ( nframes_t when ) const; float beats_per_minute ( nframes_t when ) const;
void beats_per_minute ( nframes_t when, float bpm ); void beats_per_minute ( nframes_t when, float bpm );
int beats_per_bar ( nframes_t when ) const;
void draw_measure_lines ( int X, int Y, int W, int H, Fl_Color color ); void draw_measure_lines ( int X, int Y, int W, int H, Fl_Color color );
/** set scroll position */ /** set scroll position */