@@ -1,6 +1,5 @@ | |||||
CXXFLAGS=-ggdb -Wall -O0 | |||||
CXXFLAGS=-ggdb -Wall -O0 | |||||
#LIBS=-L/usr/lib/sox -I/usr/include/sox -lsox -lsfx | #LIBS=-L/usr/lib/sox -I/usr/include/sox -lsox -lsfx | ||||
LIBS=-lsndfile `fltk-config --ldflags` | LIBS=-lsndfile `fltk-config --ldflags` | ||||
# CXXFLAGS=`fltk-config -cxxflags` | # CXXFLAGS=`fltk-config -cxxflags` | ||||
@@ -294,10 +294,10 @@ Region::draw_box( int X, int Y, int W, int H ) | |||||
fl_push_clip( x(), Y, w(), H ); | fl_push_clip( x(), Y, w(), H ); | ||||
if ( _selected ) | 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 ) ); | // fl_draw_box( fl_down( box() ), x() - 10, Y, w() + 50, H, fl_invert_color( _box_color ) ); | ||||
else | 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(); | 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() ); | // 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--; ) | 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), | _start + offset, min( (_end - _start) - offset, _end), | ||||
_scale, _selected ? _color : fl_invert_color( _color ) ); | _scale, _selected ? _color : fl_invert_color( _color ) ); | ||||
@@ -41,13 +41,14 @@ public: | |||||
_zoom = 1.0f; | _zoom = 1.0f; | ||||
_zoom_min = 0; | _zoom_min = 0; | ||||
_zoom_max = 256; | _zoom_max = 256; | ||||
_zoom_changed = true; | |||||
_zoom_changed = false; | |||||
step( 1 ); | step( 1 ); | ||||
} | } | ||||
bool zoom_changed ( void ) const { return _zoom_changed; } | bool zoom_changed ( void ) const { return _zoom_changed; } | ||||
double zoom ( void ) const { return _zoom; } | double zoom ( void ) const { return _zoom; } | ||||
void zoom ( double v ) { _zoom = v; } | |||||
double value ( void ) const { return Fl_Slider::value(); } | double value ( void ) const { return Fl_Slider::value(); } | ||||
void zoom_range ( double zmin, double zmax ) { _zoom_min = zmin; _zoom_max = zmax; } | void zoom_range ( double zmin, double zmax ) { _zoom_min = zmin; _zoom_max = zmax; } | ||||
@@ -58,6 +59,9 @@ public: | |||||
{ | { | ||||
case FL_MOUSEWHEEL: | case FL_MOUSEWHEEL: | ||||
{ | { | ||||
if ( ! Fl::event_ctrl() ) | |||||
return 0; | |||||
int d = Fl::event_dy(); | int d = Fl::event_dy(); | ||||
double z = _zoom; | double z = _zoom; | ||||
@@ -25,6 +25,9 @@ | |||||
Timeline::Timeline ( int X, int Y, int W, int H, const char* L ) : Fl_Group( X, Y, W, H, L ) | 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" ); | Fl_Pack *o = new Fl_Pack( 0, 0, 800, 600, "rulers" ); | ||||
o->type( Fl_Pack::VERTICAL ); | 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) ); | 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; | sample_rate = 44100; | ||||
fpp = 256; | 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->type( Fl_Pack::VERTICAL ); | ||||
o->spacing( 10 ); | o->spacing( 10 ); | ||||
Track *l = NULL; | |||||
for ( int i = 6; i--; ) | |||||
{ | { | ||||
Track *o = new Audio_Track( 0, 0, 800, 100 ); | Track *o = new Audio_Track( 0, 0, 800, 100 ); | ||||
o->prev( l ); | |||||
if ( l ) | |||||
l->next( o ); | |||||
l = o; | |||||
o->end(); | o->end(); | ||||
} | } | ||||
@@ -87,6 +97,8 @@ Timeline::Timeline ( int X, int Y, int W, int H, const char* L ) : Fl_Group( X, | |||||
o->end(); | o->end(); | ||||
} | } | ||||
redraw(); | |||||
end(); | end(); | ||||
} | } | ||||
@@ -66,6 +66,7 @@ cb_scroll ( Fl_Widget *w, void *v ) | |||||
int maxx = timeline->ts_to_x( timeline->length ); | int maxx = timeline->ts_to_x( timeline->length ); | ||||
sb->range( 0, maxx ); | sb->range( 0, maxx ); | ||||
// timeline->redraw(); | |||||
timeline->redraw(); | timeline->redraw(); | ||||
} | } | ||||
else | else | ||||
@@ -124,6 +125,7 @@ main ( int argc, char **argv ) | |||||
timeline->scrollbar = new Scalebar( 0, 600 - 24, 800, 24 ); | timeline->scrollbar = new Scalebar( 0, 600 - 24, 800, 24 ); | ||||
timeline->scrollbar->range( 0, 48000 * 2 ); | timeline->scrollbar->range( 0, 48000 * 2 ); | ||||
timeline->scrollbar->zoom_range( 2, 8192 ); | timeline->scrollbar->zoom_range( 2, 8192 ); | ||||
timeline->scrollbar->zoom( 256 ); | |||||
timeline->scrollbar->type( 1 ); | timeline->scrollbar->type( 1 ); | ||||
timeline->scrollbar->callback( cb_scroll, 0 ); | timeline->scrollbar->callback( cb_scroll, 0 ); | ||||