diff --git a/Timeline.C b/Timeline.C index 58f6b3d..f1f998e 100644 --- a/Timeline.C +++ b/Timeline.C @@ -68,6 +68,7 @@ cb_vscroll ( Fl_Widget *w, void *v ) Timeline::Timeline ( int X, int Y, int W, int H, const char* L ) : Fl_Group( X, Y, W, H, L ) { + box( FL_FLAT_BOX ); xoffset = 0; { @@ -92,7 +93,7 @@ Timeline::Timeline ( int X, int Y, int W, int H, const char* L ) : Fl_Group( X, } { - Fl_Pack *o = new Fl_Pack( X + Track_Header::width(), Y, W - Track_Header::width() - vscroll->w(), H - hscroll->h(), "rulers" ); + Fl_Pack *o = new Fl_Pack( X + Track_Header::width(), Y, (W - Track_Header::width()) - vscroll->w(), H - hscroll->h(), "rulers" ); o->type( Fl_Pack::VERTICAL ); { @@ -103,6 +104,8 @@ Timeline::Timeline ( int X, int Y, int W, int H, const char* L ) : Fl_Group( X, o->add( new Tempo_Point( 0, 120 ) ); o->add( new Tempo_Point( 56000, 250 ) ); + o->label( "Tempo" ); + o->align( FL_ALIGN_LEFT ); tempo_track = o; o->end(); @@ -117,6 +120,9 @@ Timeline::Timeline ( int X, int Y, int W, int H, const char* L ) : Fl_Group( X, o->add( new Time_Point( 0, 4, 4 ) ); o->add( new Time_Point( 345344, 6, 8 ) ); + o->label( "Time" ); + o->align( FL_ALIGN_LEFT ); + time_track = o; o->end(); @@ -279,9 +285,21 @@ Timeline::draw_clip ( void * v, int X, int Y, int W, int H ) fl_color( rand() ); fl_rectf( X, Y, X + W, Y + H ); - tl->draw_child( *tl->tracks ); + tl->draw_child( *tl->rulers ); + /* headers */ + fl_push_clip( tl->tracks->x(), tl->rulers->y() + tl->rulers->h(), Track_Header::width(), tl->h() - tl->rulers->h() - tl->hscroll->h() ); + tl->draw_child( *tl->tracks ); + fl_pop_clip(); + + /* track bodies */ + fl_push_clip( tl->tracks->x() + Track_Header::width(), tl->rulers->y() + tl->rulers->h(), tl->tracks->w() - Track_Header::width(), tl->h() - tl->rulers->h() - tl->hscroll->h() ); + tl->draw_child( *tl->tracks ); + fl_pop_clip(); + +// tl->draw_child( *tl->tracks ); + fl_pop_clip(); } @@ -306,7 +324,7 @@ Timeline::draw ( void ) draw_box( box(), x(), y(), w(), h(), color() ); - fl_push_clip( rulers->x(), rulers->y(), rulers->w(), rulers->h() ); + fl_push_clip( x(), rulers->y(), w(), rulers->h() ); draw_child( *rulers ); fl_pop_clip(); @@ -326,11 +344,17 @@ Timeline::draw ( void ) /* if ( damage() & FL_DAMAGE_SCROLL ) */ /* fl_push_no_clip(); */ - fl_push_clip( rulers->x(), rulers->y(), rulers->w(), rulers->h() ); + fl_push_clip( rulers->x(), rulers->y(), rulers->w() - vscroll->w(), rulers->h() ); update_child( *rulers ); fl_pop_clip(); - fl_push_clip( tracks->x(), rulers->y() + rulers->h(), tracks->w(), h() - rulers->h() - hscroll->h() ); + /* headers */ + fl_push_clip( tracks->x(), rulers->y() + rulers->h(), Track_Header::width(), h() - rulers->h() - hscroll->h() ); + update_child( *tracks ); + fl_pop_clip(); + + /* track bodies */ + fl_push_clip( tracks->x() + Track_Header::width(), rulers->y() + rulers->h(), tracks->w() - Track_Header::width(), h() - rulers->h() - hscroll->h() ); update_child( *tracks ); fl_pop_clip(); @@ -349,7 +373,7 @@ Timeline::draw ( void ) int dy = _old_yposition - yposition; if ( ! dy ) - fl_scroll( X + Track_Header::width(), rulers->y(), rulers->w(), rulers->h(), dx, 0, draw_clip, this ); + fl_scroll( X + Track_Header::width(), rulers->y(), rulers->w() - Fl::box_dw( rulers->child(0)->box() ), rulers->h(), dx, 0, draw_clip, this ); Y = rulers->y() + rulers->h(); H = h() - rulers->h() - hscroll->h(); @@ -363,8 +387,6 @@ Timeline::draw ( void ) _old_yposition = yposition; } - - } diff --git a/Track_Header.fl b/Track_Header.fl index ac254a7..c2f75f8 100644 --- a/Track_Header.fl +++ b/Track_Header.fl @@ -6,15 +6,15 @@ decl {\#include "Track.H"} {public } widget_class Track_Header {open - xywh {30 535 1156 116} type Double resizable visible + xywh {383 446 1156 116} type Double box THIN_UP_BOX resizable visible } { Function {width()} {open return_type {static int} } { code {return 150;} {} } decl {Track *_track;} {} - Fl_Group {} {open selected - xywh {2 2 149 113} box THIN_UP_FRAME + Fl_Group {} {open + xywh {2 2 149 113} color 53 code0 {o->size( Track_Header::width(), o->h() );} } { Fl_Group {} {open @@ -25,24 +25,24 @@ widget_class Track_Header {open } Fl_Button record_button { label {@circle} - xywh {6 38 26 27} type Toggle box THIN_UP_FRAME color 32 labelsize 8 + xywh {6 38 26 27} type Toggle box ROUNDED_BOX color 50 labelsize 8 } Fl_Button mute_button { label m - xywh {35 38 26 27} type Toggle box PLASTIC_UP_FRAME color 48 labelsize 11 + xywh {35 38 26 27} type Toggle box ROUNDED_BOX color 50 labelsize 11 } Fl_Button solo_button { label s - xywh {66 38 26 27} type Toggle box PLASTIC_UP_FRAME color 48 labelsize 11 + xywh {66 38 26 27} type Toggle box ROUNDED_BOX color 50 labelsize 11 } Fl_Menu_Button take_menu { label T open - xywh {97 38 47 27} box THIN_UP_BOX + xywh {97 38 47 27} box ROUNDED_BOX color 50 align 20 } {} } } - Fl_Pack takes {open - xywh {150 1 1006 114} resizable + Fl_Pack takes {open selected + xywh {150 0 1006 115} labeltype NO_LABEL align 64 resizable code0 {o->resize( x() + width(), y(), w() - width(), h() );} } {} Function {track( Track *t )} {open return_type void diff --git a/Track_Widget.H b/Track_Widget.H index 6e0f492..4c342bf 100644 --- a/Track_Widget.H +++ b/Track_Widget.H @@ -67,7 +67,7 @@ public: int y ( void ) const { return _track->y(); } int h ( void ) const { return _track->h(); } - int x ( void ) const { return _offset < timeline->xoffset ? -1 : min( 32767, _track->x() + timeline->ts_to_x( _offset - timeline->xoffset ) ); } + int x ( void ) const { return _offset < timeline->xoffset ? _track->x() - 1 : min( 32767, _track->x() + timeline->ts_to_x( _offset - timeline->xoffset ) ); } virtual int w ( void ) const { int tx = timeline->ts_to_x( _offset );