| @@ -93,7 +93,7 @@ public: | |||
| timeline->draw_measure_lines( x(), y(), w(), h(), color() ); | |||
| for ( list <Track_Widget *>::const_iterator r = _widgets.begin(); r != _widgets.end(); r++ ) | |||
| (*r)->draw_box( X, Y, W, H ); | |||
| (*r)->draw_box(); | |||
| fl_pop_clip(); | |||
| } | |||
| @@ -540,14 +540,11 @@ Region::draw_fade ( const Fade &fade, Fade::fade_dir_e dir, bool line, int X, in | |||
| } | |||
| void | |||
| Region::draw_box( int X, int Y, int W, int H ) | |||
| Region::draw_box( void ) | |||
| { | |||
| if ( ! shown() ) | |||
| return; | |||
| /* dirty hack to keep the box from flipping to vertical at small sizes */ | |||
| fl_push_clip( x(), Y, w(), H ); | |||
| fl_push_clip( x(), y(), w(), h() ); | |||
| if ( selected() ) | |||
| fl_draw_box( fl_down( box() ), x() - 10, y(), w() + 50, h(), _selection_color ); | |||
| @@ -556,27 +553,24 @@ Region::draw_box( int X, int Y, int W, int H ) | |||
| fl_draw_box( box(), x() - 10, y(), w() + 50, h(), _box_color ); | |||
| /* draw fades */ | |||
| draw_fade( _fade_in, Fade::In, false, X, W ); | |||
| draw_fade( _fade_out, Fade::Out, false, X, W ); | |||
| draw_fade( _fade_in, Fade::In, false, x(), w() ); | |||
| draw_fade( _fade_out, Fade::Out, false, x(), w() ); | |||
| fl_pop_clip(); | |||
| } | |||
| /** Draw (part of) region. X, Y, W and H are the rectangle we're clipped to. */ | |||
| void | |||
| Region::draw ( int X, int Y, int W, int H ) | |||
| Region::draw ( void ) | |||
| { | |||
| if ( ! shown() ) | |||
| return; | |||
| /* intersect clip with region */ | |||
| /* FIXME: wouldn't it be better to get rid of the useless X Y W H arguments and | |||
| just intersect with the real clipping region? */ | |||
| int X, Y, W, H; | |||
| fl_clip_box( x(), y(), w(), h(), X, Y, W, H ); | |||
| if ( ! ( W > 0 && H > 0 ) ) | |||
| /* WTF? */ | |||
| /* no coverage */ | |||
| return; | |||
| int OX = scroll_x(); | |||
| @@ -587,13 +581,7 @@ Region::draw ( int X, int Y, int W, int H ) | |||
| /* not in viewport */ | |||
| return; | |||
| if ( x() > X + W || x() + w() < X ) | |||
| /* no coverage */ | |||
| return; | |||
| int rw = timeline->ts_to_x( _r->end - _r->start ); | |||
| // nframes_t end = _r->offset + ( _r->end - _r->start ); | |||
| /* calculate waveform offset due to scrolling */ | |||
| @@ -609,7 +597,7 @@ Region::draw ( int X, int Y, int W, int H ) | |||
| int rx = x(); | |||
| // fl_push_clip( rx, Y, rw, H ); | |||
| fl_push_clip( rx, Y, rw, H ); | |||
| /* get actual peak data */ | |||
| int channels; | |||
| @@ -624,10 +612,9 @@ Region::draw ( int X, int Y, int W, int H ) | |||
| if ( X - rx > 0 ) | |||
| start += timeline->x_to_ts( X - rx ); | |||
| printf( "offset=%lu start=%lu\n", offset, start, X, rx ); | |||
| if ( _clip->read_peaks( timeline->fpp(), | |||
| start, | |||
| start + timeline->x_to_ts( min( rw, W ) ), | |||
| start + timeline->x_to_ts( W ), | |||
| &peaks, &pbuf, &channels ) ) | |||
| { | |||
| @@ -660,12 +647,9 @@ Region::draw ( int X, int Y, int W, int H ) | |||
| /* pb[ j ].max *= g; */ | |||
| /* } */ | |||
| const int nx = max( X, rx ); | |||
| const int nw = min( nx + W, nx + rw ) - nx; | |||
| Waveform::draw( nx, | |||
| Waveform::draw( X, | |||
| (y() + Fl::box_dy( box() )) + (i * ch), | |||
| nw, | |||
| W, | |||
| ch, | |||
| pb, peaks, | |||
| selected() ? fl_invert_color( _color ) : _color ); | |||
| @@ -694,7 +678,7 @@ Region::draw ( int X, int Y, int W, int H ) | |||
| draw_label( pat, (Fl_Align)(FL_ALIGN_INSIDE | FL_ALIGN_CENTER), FL_GREEN ); | |||
| } | |||
| // fl_pop_clip(); | |||
| fl_pop_clip(); | |||
| } | |||
| @@ -262,8 +262,8 @@ public: | |||
| int handle ( int m ); | |||
| void draw_fade ( const Fade &fade, Fade::fade_dir_e dir, bool filled, int X, int W ); | |||
| void draw_box( int X, int Y, int W, int H ); | |||
| void draw ( int X, int Y, int W, int H ); | |||
| void draw_box( void ); | |||
| void draw ( void ); | |||
| void resize ( void ); | |||
| void normalize ( void ); | |||
| @@ -99,22 +99,19 @@ Track::draw ( void ) | |||
| timeline->draw_measure_lines( x(), y(), w(), h(), color() ); | |||
| for ( list <Track_Widget *>::const_iterator r = _widgets.begin(); r != _widgets.end(); r++ ) | |||
| (*r)->draw_box( X, Y, W, H ); | |||
| (*r)->draw_box(); | |||
| for ( list <Track_Widget *>::const_iterator r = _widgets.begin(); r != _widgets.end(); r++ ) | |||
| (*r)->draw( X, Y, W, H ); | |||
| (*r)->draw(); | |||
| /* draw crossfades */ | |||
| for ( list <Track_Widget *>::const_iterator r = _widgets.begin(); r != _widgets.end(); r++ ) | |||
| { | |||
| if ( ! (*r)->shown() ) | |||
| continue; | |||
| Track_Widget *o = overlaps( *r ); | |||
| if ( o && o->shown() ) | |||
| if ( o ) | |||
| { | |||
| if ( *o <= **r ) | |||
| { | |||
| @@ -153,12 +150,9 @@ Track::draw ( void ) | |||
| for ( list <Track_Widget *>::const_iterator r = _widgets.begin(); r != _widgets.end(); r++ ) | |||
| { | |||
| if ( ! (*r)->shown() ) | |||
| continue; | |||
| Track_Widget *o = overlaps( *r ); | |||
| if ( o && o->shown() ) | |||
| if ( o ) | |||
| { | |||
| if ( *o <= **r ) | |||
| { | |||
| @@ -179,8 +173,13 @@ Track::draw ( void ) | |||
| /* o->color( FL_RED ); */ | |||
| /* (*r)->color( FL_GREEN ); */ | |||
| o->draw( b.x, b.y, b.w, b.h ); | |||
| (*r)->draw( b.x, b.y, b.w, b.h ); | |||
| fl_push_clip( b.x, b.y, b.w, b.h ); | |||
| o->draw(); | |||
| (*r)->draw(); | |||
| fl_pop_clip(); | |||
| Waveform::fill = true; | |||
| @@ -49,9 +49,9 @@ public: | |||
| } | |||
| virtual void | |||
| draw ( int X, int Y, int W, int H ) | |||
| draw ( void ) | |||
| { | |||
| Track_Widget::draw( x(), Y, w(), H ); | |||
| Track_Widget::draw(); | |||
| draw_label( _label, align() ); | |||
| } | |||
| @@ -74,8 +74,6 @@ protected: | |||
| Fl_Color _color; /* color of waveform */ | |||
| Fl_Color _box_color; /* color of background (box) */ | |||
| bool _shown; | |||
| Drag *_drag; | |||
| public: | |||
| @@ -88,8 +86,6 @@ public: | |||
| _r->offset = _r->start = _r->end = 0; | |||
| _shown = true; | |||
| _drag = NULL; | |||
| } | |||
| @@ -165,10 +161,6 @@ public: | |||
| // static void pushed ( Track_Widget *w ) { Track_Widget::_pushed = w; } | |||
| bool shown ( void ) const { return _shown; } | |||
| void show ( void ) { _shown = true; } | |||
| void hide ( void ) { _shown = false; } | |||
| void begin_drag ( const Drag &d ) | |||
| { | |||
| _drag = new Drag( d ); | |||
| @@ -281,21 +273,15 @@ public: | |||
| /* just draw a simple box */ | |||
| virtual void | |||
| draw_box ( int X, int Y, int W, int H ) | |||
| draw_box ( void ) | |||
| { | |||
| if ( x() > X + W || x() + w() < X ) | |||
| return; | |||
| fl_draw_box( box(), x(), y(), w(), h(), _box_color ); | |||
| } | |||
| virtual void | |||
| draw ( int X, int Y, int W, int H ) | |||
| draw ( void ) | |||
| { | |||
| if ( x() > X + W || x() + w() < X ) | |||
| return; | |||
| draw_box( X, Y, W, H ); | |||
| draw_box(); | |||
| } | |||
| bool | |||