Update NTK.
[nondaw.git] / timeline / src / Time_Sequence.H
blob9686455f564e7f21443f03660ef74c5f7513afeb
2 /*******************************************************************************/
3 /* Copyright (C) 2008 Jonathan Moore Liles                                     */
4 /*                                                                             */
5 /* This program is free software; you can redistribute it and/or modify it     */
6 /* under the terms of the GNU General Public License as published by the       */
7 /* Free Software Foundation; either version 2 of the License, or (at your      */
8 /* option) any later version.                                                  */
9 /*                                                                             */
10 /* This program is distributed in the hope that it will be useful, but WITHOUT */
11 /* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or       */
12 /* FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for   */
13 /* more details.                                                               */
14 /*                                                                             */
15 /* You should have received a copy of the GNU General Public License along     */
16 /* with This program; see the file COPYING.  If not,write to the Free Software */
17 /* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
18 /*******************************************************************************/
21 #pragma once
23 #include "Sequence.H"
24 #include "Time_Point.H"
26 #include <list>
27 using std::list;
29 class Time_Sequence : public Sequence
32 protected:
34     /* not used */
35     void get ( Log_Entry & ) const { }
36     void set ( Log_Entry & ) { }
38 public:
40     Fl_Cursor cursor ( void ) const { return FL_CURSOR_DEFAULT; }
42     Time_Sequence ( int X, int Y, int W, int H ) : Sequence ( X, Y, W, H )
43         {
44 //            box( FL_UP_BOX );
45         }
47     time_sig
48     time ( nframes_t when )
49         {
50             for ( list <Sequence_Widget *>::const_reverse_iterator i = _widgets.rbegin();
51                   i != _widgets.rend(); i++ )
52             {
53                 if ( (*i)->offset() < when )
54                     return ((Time_Point*)(*i))->time();
55             }
57             return time_sig( 4, 4 );
58         }
60     void
61     time ( nframes_t when, int bpb, int note )
62         {
63             add( new Time_Point( when, bpb, note ) );
64         }
66     void handle_widget_change ( nframes_t start, nframes_t length );
67     int handle ( int m );