Contine working on integrating the track headers.

pull/3/head
Jonathan Moore Liles 2008-02-28 20:47:29 -06:00
parent ea7facb2fb
commit 2e8999c103
3 changed files with 40 additions and 18 deletions

View File

@ -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;
}
}

View File

@ -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

View File

@ -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 );