Browse Source

Clean up some edge conditions with sequence drawing/scrolling.

tags/non-daw-v1.1.0
Jonathan Moore Liles 17 years ago
parent
commit
f8ce7eab64
3 changed files with 26 additions and 25 deletions
  1. +23
    -16
      Timeline/Control_Sequence.C
  2. +2
    -1
      Timeline/Sequence.C
  3. +1
    -8
      Timeline/Timeline.C

+ 23
- 16
Timeline/Control_Sequence.C View File

@@ -91,20 +91,27 @@ Control_Sequence::draw ( void )

fl_push_clip( x(), y(), w(), h() );

draw_box();
/* draw the box with the ends cut off. */
draw_box( box(), x() - Fl::box_dx( box() ), y(), w() + Fl::box_dw( box() ), h(), color() );


const int bx = x();
const int by = y() + Fl::box_dy( box() );
const int bw = w();
const int bh = h() - Fl::box_dh( box() );

int X, Y, W, H;

fl_clip_box( x(), y(), w(), h(), X, Y, W, H );
fl_clip_box( bx, by, bw, bh, X, Y, W, H );

if ( draw_with_gradient )
{
Fl_Color target = fl_color_average( color(), FL_WHITE, 0.50f );

for ( int gy = 0; gy < h(); gy++ )
for ( int gy = 0; gy < bh; gy++ )
{
fl_color( fl_color_average( target, selection_color(), gy / (float)h()) );
fl_line( x(), y() + gy, x() + w(), y() + gy );
fl_color( fl_color_average( target, selection_color(), gy / (float)bh) );
fl_line( X, by + gy, X + W, by + gy );
}
}

@@ -112,10 +119,10 @@ Control_Sequence::draw ( void )
{
fl_color( fl_darker( color() ) );

const int inc = h() / 10;
const int inc = bh / 10;
if ( inc )
for ( int gy = 0; gy < h(); gy += inc )
fl_line( x(), y() + gy, x() + w(), y() + gy );
for ( int gy = 0; gy < bh; gy += inc )
fl_line( X, by + gy, X + W, by + gy );

}

@@ -140,13 +147,13 @@ Control_Sequence::draw ( void )
{
if ( draw_with_gradient )
{
fl_vertex( x(), y() );
fl_vertex( x(), ry );
fl_vertex( bx, by );
fl_vertex( bx, ry );
}
else
{
fl_vertex( x(), h() + y() );
fl_vertex( x(), ry );
fl_vertex( bx, bh + by );
fl_vertex( bx, ry );
}
}

@@ -156,13 +163,13 @@ Control_Sequence::draw ( void )
{
if ( draw_with_gradient )
{
fl_vertex( x() + w(), ry );
fl_vertex( x() + w(), y() );
fl_vertex( bx + bw, ry );
fl_vertex( bx + bw, by );
}
else
{
fl_vertex( x() + w(), ry );
fl_vertex( x() + w(), h() + y() );
fl_vertex( bx + bw, ry );
fl_vertex( bx + bw, bh + by );
}
break;
}


+ 2
- 1
Timeline/Sequence.C View File

@@ -83,7 +83,8 @@ Sequence::draw ( void )

fl_push_clip( x(), y(), w(), h() );

draw_box();
/* draw the box with the ends cut off. */
draw_box( box(), x() - Fl::box_dx( box() ), y(), w() + Fl::box_dw( box() ), h(), color() );

int X, Y, W, H;



+ 1
- 8
Timeline/Timeline.C View File

@@ -418,13 +418,6 @@ Timeline::draw ( void )
int bdx = 0;
int bdw = 0;

/* FIXME: hack to avoid clobbering the box corners of tracks. */
if ( tracks->children() )
{
bdx = Fl::box_dx( tracks->child( 0 )->box() );
bdw = Fl::box_dw( tracks->child( 0 )->box() );
}

X = tracks->x() + bdx + 1;
Y = tracks->y();
W = tracks->w() - bdw - 1;
@@ -513,7 +506,7 @@ Timeline::draw ( void )
int dy = _old_yposition - _yposition;

if ( ! dy )
fl_scroll( X + Track::width(), rulers->y(), rulers->w() - Fl::box_dw( rulers->child(0)->box() ), rulers->h(), dx, 0, draw_clip, this );
fl_scroll( X + Track::width(), rulers->y(), rulers->w(), rulers->h(), dx, 0, draw_clip, this );

Y = rulers->y() + rulers->h();
H = h() - rulers->h() - hscroll->h();


Loading…
Cancel
Save