| @@ -132,11 +132,11 @@ Sequence::draw ( void ) | |||||
| timeline->draw_measure_lines( X, Y, W, H, color() ); | 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(); | (*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(); | (*r)->draw(); | ||||
| fl_pop_clip(); | 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_Point.H" | ||||
| #include "Tempo_Sequence.H" | |||||
| #include "Tempo_Map_Sequence.H" | |||||
| #include "Timeline.H" // for timeline->tempo_track | #include "Timeline.H" // for timeline->tempo_track | ||||
| void | void | ||||
| @@ -42,66 +42,7 @@ public: | |||||
| // box( FL_DOWN_BOX ); | // 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 | float | ||||
| Timeline::beats_per_minute ( nframes_t when ) const | Timeline::beats_per_minute ( nframes_t when ) const | ||||
| { | { | ||||
| return tempo_track->beats_per_minute( when ); | |||||
| /* return tempo_track->beats_per_minute( when ); */ | |||||
| } | } | ||||
| int | int | ||||
| @@ -3,8 +3,10 @@ | |||||
| Timeline_VERSION := 0.5.0 | Timeline_VERSION := 0.5.0 | ||||
| Timeline_SRCS= \ | Timeline_SRCS= \ | ||||
| Timeline/Annotation_Region.C \ | |||||
| Timeline/Audio_File.C \ | Timeline/Audio_File.C \ | ||||
| Timeline/Audio_File_SF.C \ | Timeline/Audio_File_SF.C \ | ||||
| Timeline/Audio_Region.C \ | |||||
| Timeline/Audio_Sequence.C \ | Timeline/Audio_Sequence.C \ | ||||
| Timeline/Control_Point.C \ | Timeline/Control_Point.C \ | ||||
| Timeline/Control_Sequence.C \ | Timeline/Control_Sequence.C \ | ||||
| @@ -15,14 +17,14 @@ Timeline/Loggable.C \ | |||||
| Timeline/Peaks.C \ | Timeline/Peaks.C \ | ||||
| Timeline/Playback_DS.C \ | Timeline/Playback_DS.C \ | ||||
| Timeline/Port.C \ | Timeline/Port.C \ | ||||
| Timeline/Project.C \ | |||||
| Timeline/Record_DS.C \ | Timeline/Record_DS.C \ | ||||
| Timeline/Audio_Region.C \ | |||||
| Timeline/Sequence.C \ | Timeline/Sequence.C \ | ||||
| Timeline/Sequence_Point.C \ | Timeline/Sequence_Point.C \ | ||||
| Timeline/Sequence_Widget.C \ | |||||
| Timeline/Sequence_Region.C \ | Timeline/Sequence_Region.C \ | ||||
| Timeline/Annotation_Region.C \ | |||||
| Timeline/Sequence_Widget.C \ | |||||
| Timeline/TLE.C \ | Timeline/TLE.C \ | ||||
| Timeline/Tempo_Map_Sequence.C \ | |||||
| Timeline/Tempo_Point.C \ | Timeline/Tempo_Point.C \ | ||||
| Timeline/Time_Point.C \ | Timeline/Time_Point.C \ | ||||
| Timeline/Timeline.C \ | Timeline/Timeline.C \ | ||||
| @@ -31,7 +33,6 @@ Timeline/Transport.C \ | |||||
| Timeline/Waveform.C \ | Timeline/Waveform.C \ | ||||
| Timeline/dsp.C \ | Timeline/dsp.C \ | ||||
| Timeline/main.C \ | Timeline/main.C \ | ||||
| Timeline/Project.C \ | |||||
| debug.C \ | debug.C \ | ||||
| Timeline_OBJS:=$(Timeline_SRCS:.C=.o) | Timeline_OBJS:=$(Timeline_SRCS:.C=.o) | ||||