Work on vertical scrolling.

This commit is contained in:
Jonathan Moore Liles 2008-02-23 00:59:10 -06:00
parent d18b06bb00
commit 668a568d42
5 changed files with 25 additions and 8 deletions

View File

@ -1,6 +1,5 @@
CXXFLAGS=-ggdb -Wall -O0
#LIBS=-L/usr/lib/sox -I/usr/include/sox -lsox -lsfx
LIBS=-lsndfile `fltk-config --ldflags`
# CXXFLAGS=`fltk-config -cxxflags`

View File

@ -294,10 +294,10 @@ Region::draw_box( int X, int Y, int W, int H )
fl_push_clip( x(), Y, w(), H );
if ( _selected )
fl_draw_box( fl_down( box() ), x() - 10, Y, w() + 50, H, _selection_color );
fl_draw_box( fl_down( box() ), x() - 10, y(), w() + 50, h(), _selection_color );
// fl_draw_box( fl_down( box() ), x() - 10, Y, w() + 50, H, fl_invert_color( _box_color ) );
else
fl_draw_box( box(), x() - 10, Y, w() + 50, H, _box_color );
fl_draw_box( box(), x() - 10, y(), w() + 50, h(), _box_color );
fl_pop_clip();
}
@ -343,9 +343,9 @@ Region::draw ( int X, int Y, int W, int H )
// fl_push_clip( x() + Fl::box_dx( box() ), y(), w() - Fl::box_dw( box() ), h() );
int ch = H / _clip->channels();
int ch = h() / _clip->channels();
for ( int i = _clip->channels(); i--; )
draw_waveform( rx, Y + (i * ch), rw, ch, _clip, i,
draw_waveform( rx, y() + (i * ch), rw, ch, _clip, i,
_start + offset, min( (_end - _start) - offset, _end),
_scale, _selected ? _color : fl_invert_color( _color ) );

View File

@ -41,13 +41,14 @@ public:
_zoom = 1.0f;
_zoom_min = 0;
_zoom_max = 256;
_zoom_changed = true;
_zoom_changed = false;
step( 1 );
}
bool zoom_changed ( void ) const { return _zoom_changed; }
double zoom ( void ) const { return _zoom; }
void zoom ( double v ) { _zoom = v; }
double value ( void ) const { return Fl_Slider::value(); }
void zoom_range ( double zmin, double zmax ) { _zoom_min = zmin; _zoom_max = zmax; }
@ -58,6 +59,9 @@ public:
{
case FL_MOUSEWHEEL:
{
if ( ! Fl::event_ctrl() )
return 0;
int d = Fl::event_dy();
double z = _zoom;

View File

@ -25,6 +25,9 @@
Timeline::Timeline ( int X, int Y, int W, int H, const char* L ) : Fl_Group( X, Y, W, H, L )
{
xoffset = 0;
{
Fl_Pack *o = new Fl_Pack( 0, 0, 800, 600, "rulers" );
o->type( Fl_Pack::VERTICAL );
@ -62,7 +65,7 @@ Timeline::Timeline ( int X, int Y, int W, int H, const char* L ) : Fl_Group( X,
{
Fl_Scroll *o = new Fl_Scroll( 0, 24 * 2, 800, 600 - (24 * 3) );
o->type( Fl_Scroll::VERTICAL );
o->type( Fl_Scroll::VERTICAL_ALWAYS );
sample_rate = 44100;
fpp = 256;
@ -74,8 +77,15 @@ Timeline::Timeline ( int X, int Y, int W, int H, const char* L ) : Fl_Group( X,
o->type( Fl_Pack::VERTICAL );
o->spacing( 10 );
Track *l = NULL;
for ( int i = 6; i--; )
{
Track *o = new Audio_Track( 0, 0, 800, 100 );
o->prev( l );
if ( l )
l->next( o );
l = o;
o->end();
}
@ -87,6 +97,8 @@ Timeline::Timeline ( int X, int Y, int W, int H, const char* L ) : Fl_Group( X,
o->end();
}
redraw();
end();
}

2
main.C
View File

@ -66,6 +66,7 @@ cb_scroll ( Fl_Widget *w, void *v )
int maxx = timeline->ts_to_x( timeline->length );
sb->range( 0, maxx );
// timeline->redraw();
timeline->redraw();
}
else
@ -124,6 +125,7 @@ main ( int argc, char **argv )
timeline->scrollbar = new Scalebar( 0, 600 - 24, 800, 24 );
timeline->scrollbar->range( 0, 48000 * 2 );
timeline->scrollbar->zoom_range( 2, 8192 );
timeline->scrollbar->zoom( 256 );
timeline->scrollbar->type( 1 );
timeline->scrollbar->callback( cb_scroll, 0 );