diff --git a/Timeline.H b/Timeline.H index e719ae3..022b266 100644 --- a/Timeline.H +++ b/Timeline.H @@ -21,6 +21,7 @@ #include #include +#include #include "Clip.H" #include @@ -30,12 +31,15 @@ struct Timeline { Fl_Scroll *scroll; Fl_Pack *tracks; + Fl_Scrollbar *scrollbar; float fpp; /* frames per pixel */ // nframes_t fpp; nframes_t sample_rate; + nframes_t xoffset; + int ts_to_x( nframes_t ts ) { diff --git a/Track.C b/Track.C index 570593c..df0e005 100644 --- a/Track.C +++ b/Track.C @@ -23,9 +23,10 @@ void Track::draw ( void ) { + Fl_Group::draw(); for ( list ::iterator r = _regions.begin(); r != _regions.end(); r++ ) { - (*r)->draw( x(), y(), w(), h() ); + (*r)->draw( timeline.xoffset + x(), y(), w(), h() ); } } diff --git a/main.C b/main.C index 63e5be7..c0225b2 100644 --- a/main.C +++ b/main.C @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -74,6 +75,29 @@ cb_zoom ( Fl_Widget *w, void *v ) printf( "%f\n", timeline.fpp ); } +void +cb_scroll ( Fl_Widget *w, void *v ) +{ + timeline.xoffset = ((Fl_Scrollbar*)w)->value(); + timeline.tracks->redraw(); + + timeline.scroll->redraw(); +/* for ( int i = timeline.tracks->children(); i-- ; ) */ +/* { */ +/* Fl_Group *track = (Fl_Group*)timeline.tracks->child( i ); */ +/* track-> */ +/* } */ +/* /\* for ( int j = track->children(); j-- ; ) *\/ */ +/* /\* ((Region*)(track->child( j )))->resize(); *\/ */ +/* /\* } *\/ */ + + + + + +} + + int main ( int argc, char **argv ) { @@ -82,7 +106,7 @@ main ( int argc, char **argv ) Fl_Double_Window *main_window = new Fl_Double_Window( 0, 0, 800, 600 ); - timeline.scroll = new Fl_Scroll( 0, 24, 800, 600 - 24 ); + timeline.scroll = new Fl_Scroll( 0, 24, 800, 600 - (24 * 2) ); timeline.scroll->type( Fl_Scroll::VERTICAL ); timeline.fpp = 256; @@ -151,6 +175,12 @@ main ( int argc, char **argv ) zoom_slider->step( 1 ); zoom_slider->value( 256 ); + timeline.scrollbar = new Fl_Scrollbar( 0, 600 - 24, 800, 24 ); + timeline.scrollbar->range( 0, 293847234 ); + timeline.scrollbar->type( 1 ); + timeline.scrollbar->step( 1 ); + timeline.scrollbar->callback( cb_scroll, 0 ); + main_window->end(); main_window->show();