| @@ -132,11 +132,11 @@ Sequence::draw ( void ) | |||
| timeline->draw_measure_lines( X, Y, W, H, color() ); | |||
| for ( list <Sequence_Widget *>::const_iterator r = _widgets.begin(); r != _widgets.end(); r++ ) | |||
| for ( list <Sequence_Widget *>::const_iterator r = _widgets.begin(); r != _widgets.end(); ++r ) | |||
| (*r)->draw_box(); | |||
| for ( list <Sequence_Widget *>::const_iterator r = _widgets.begin(); r != _widgets.end(); r++ ) | |||
| for ( list <Sequence_Widget *>::const_iterator r = _widgets.begin(); r != _widgets.end(); ++r ) | |||
| (*r)->draw(); | |||
| fl_pop_clip(); | |||
| @@ -0,0 +1,89 @@ | |||
| /*******************************************************************************/ | |||
| /* Copyright (C) 2008 Jonathan Moore Liles */ | |||
| /* */ | |||
| /* This program is free software; you can redistribute it and/or modify it */ | |||
| /* under the terms of the GNU General Public License as published by the */ | |||
| /* Free Software Foundation; either version 2 of the License, or (at your */ | |||
| /* option) any later version. */ | |||
| /* */ | |||
| /* This program is distributed in the hope that it will be useful, but WITHOUT */ | |||
| /* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */ | |||
| /* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for */ | |||
| /* more details. */ | |||
| /* */ | |||
| /* You should have received a copy of the GNU General Public License along */ | |||
| /* with This program; see the file COPYING. If not,write to the Free Software */ | |||
| /* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | |||
| /*******************************************************************************/ | |||
| #include "Tempo_Map_Sequence.H" | |||
| void | |||
| Tempo_Map_Sequence::draw ( void ) | |||
| { | |||
| if ( ! fl_not_clipped( x(), y(), w(), h() ) ) | |||
| return; | |||
| fl_push_clip( x(), y(), w(), h() ); | |||
| /* draw the box with the ends cut off. */ | |||
| draw_box( box(), | |||
| x() - Fl::box_dx( box() ) - 1, y(), | |||
| w() + Fl::box_dw( box() ) + 2, h() >> 1, color() ); | |||
| draw_box( box(), | |||
| x() - Fl::box_dx( box() ) - 1, y() + (h() >> 1) , | |||
| w() + Fl::box_dw( box() ) + 2, h() >> 1, color() ); | |||
| int X, Y, W, H; | |||
| fl_clip_box( x(), y(), w(), h(), X, Y, W, H ); | |||
| if ( Sequence_Widget::pushed() && Sequence_Widget::pushed()->sequence() == this ) | |||
| { | |||
| /* make sure the Sequence_Widget::pushed widget is above all others */ | |||
| remove( Sequence_Widget::pushed() ); | |||
| add( Sequence_Widget::pushed() ); | |||
| } | |||
| timeline->draw_measure_lines( X, Y, W, H, color() ); | |||
| for ( list <Sequence_Widget *>::const_iterator r = _widgets.begin(); r != _widgets.end(); ++r ) | |||
| (*r)->draw_box(); | |||
| for ( list <Sequence_Widget *>::const_iterator r = _widgets.begin(); r != _widgets.end(); ++r ) | |||
| (*r)->draw(); | |||
| fl_pop_clip(); | |||
| } | |||
| int | |||
| Tempo_Map_Sequence::handle ( int m ) | |||
| { | |||
| int r = Sequence::handle( m ); | |||
| if ( r ) | |||
| return r; | |||
| switch ( m ) | |||
| { | |||
| case FL_PUSH: | |||
| if ( Fl::event_button1() ) | |||
| { | |||
| static float t = 120.0f; | |||
| if ( Tempo_Point::edit( &t ) ) | |||
| { | |||
| add( new Tempo_Point( timeline->x_to_offset( Fl::event_x() ), t ) ); | |||
| timeline->redraw(); | |||
| } | |||
| return 0; | |||
| } | |||
| default: | |||
| return 0; | |||
| } | |||
| } | |||
| @@ -18,8 +18,9 @@ | |||
| /*******************************************************************************/ | |||
| #include "Tempo_Point.H" | |||
| #include "Tempo_Sequence.H" | |||
| #include "Tempo_Map_Sequence.H" | |||
| #include "Timeline.H" // for timeline->tempo_track | |||
| void | |||
| @@ -42,66 +42,7 @@ public: | |||
| // box( FL_DOWN_BOX ); | |||
| } | |||
| void draw ( void ); | |||
| int handle ( int m ); | |||
| /** return a pointer to the closest tempo point *before* /when/ */ | |||
| Tempo_Point * | |||
| at ( nframes_t when ) | |||
| { | |||
| for ( std::list <Sequence_Widget *>::const_reverse_iterator i = _widgets.rbegin(); | |||
| i != _widgets.rend(); i++ ) | |||
| if ( (*i)->offset() < when ) | |||
| return ((Tempo_Point*)(*i)); | |||
| return NULL; | |||
| } | |||
| float | |||
| beats_per_minute ( nframes_t when ) | |||
| { | |||
| // sort(); | |||
| Tempo_Point *p = at( when ); | |||
| if ( p ) | |||
| return p->tempo(); | |||
| else | |||
| return 120.0; | |||
| } | |||
| void | |||
| beats_per_minute ( nframes_t when, float bpm ) | |||
| { | |||
| add( new Tempo_Point( when, bpm ) ); | |||
| sort(); | |||
| } | |||
| int | |||
| handle ( int m ) | |||
| { | |||
| int r = Sequence::handle( m ); | |||
| if ( r ) | |||
| return r; | |||
| switch ( m ) | |||
| { | |||
| case FL_PUSH: | |||
| if ( Fl::event_button1() ) | |||
| { | |||
| static float t = 120.0f; | |||
| if ( Tempo_Point::edit( &t ) ) | |||
| { | |||
| add( new Tempo_Point( timeline->x_to_offset( Fl::event_x() ), t ) ); | |||
| timeline->redraw(); | |||
| } | |||
| return 0; | |||
| } | |||
| default: | |||
| return 0; | |||
| } | |||
| } | |||
| }; | |||
| @@ -227,7 +227,9 @@ Timeline::Timeline ( int X, int Y, int W, int H, const char* L ) : Fl_Overlay_Wi | |||
| float | |||
| Timeline::beats_per_minute ( nframes_t when ) const | |||
| { | |||
| return tempo_track->beats_per_minute( when ); | |||
| /* return tempo_track->beats_per_minute( when ); */ | |||
| } | |||
| int | |||
| @@ -3,8 +3,10 @@ | |||
| Timeline_VERSION := 0.5.0 | |||
| Timeline_SRCS= \ | |||
| Timeline/Annotation_Region.C \ | |||
| Timeline/Audio_File.C \ | |||
| Timeline/Audio_File_SF.C \ | |||
| Timeline/Audio_Region.C \ | |||
| Timeline/Audio_Sequence.C \ | |||
| Timeline/Control_Point.C \ | |||
| Timeline/Control_Sequence.C \ | |||
| @@ -15,14 +17,14 @@ Timeline/Loggable.C \ | |||
| Timeline/Peaks.C \ | |||
| Timeline/Playback_DS.C \ | |||
| Timeline/Port.C \ | |||
| Timeline/Project.C \ | |||
| Timeline/Record_DS.C \ | |||
| Timeline/Audio_Region.C \ | |||
| Timeline/Sequence.C \ | |||
| Timeline/Sequence_Point.C \ | |||
| Timeline/Sequence_Widget.C \ | |||
| Timeline/Sequence_Region.C \ | |||
| Timeline/Annotation_Region.C \ | |||
| Timeline/Sequence_Widget.C \ | |||
| Timeline/TLE.C \ | |||
| Timeline/Tempo_Map_Sequence.C \ | |||
| Timeline/Tempo_Point.C \ | |||
| Timeline/Time_Point.C \ | |||
| Timeline/Timeline.C \ | |||
| @@ -31,7 +33,6 @@ Timeline/Transport.C \ | |||
| Timeline/Waveform.C \ | |||
| Timeline/dsp.C \ | |||
| Timeline/main.C \ | |||
| Timeline/Project.C \ | |||
| debug.C \ | |||
| Timeline_OBJS:=$(Timeline_SRCS:.C=.o) | |||