| @@ -11,6 +11,7 @@ SRCS= \ | |||||
| Timeline.C \ | Timeline.C \ | ||||
| Track.C \ | Track.C \ | ||||
| Sequence_Widget.C \ | Sequence_Widget.C \ | ||||
| Sequence_Point.C \ | |||||
| Tempo_Point.C \ | Tempo_Point.C \ | ||||
| Time_Point.C \ | Time_Point.C \ | ||||
| Peaks.C \ | Peaks.C \ | ||||
| @@ -0,0 +1,109 @@ | |||||
| /*******************************************************************************/ | |||||
| /* 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 "Sequence_Point.H" | |||||
| void | |||||
| Sequence_Point::get ( Log_Entry &e ) const | |||||
| { | |||||
| e.add( ":x", _r->offset ); | |||||
| e.add( ":t", _track ); | |||||
| } | |||||
| void | |||||
| Sequence_Point::set ( Log_Entry &e ) | |||||
| { | |||||
| Sequence_Widget::set( e ); | |||||
| for ( int i = 0; i < e.size(); ++i ) | |||||
| { | |||||
| const char *s, *v; | |||||
| e.get( i, &s, &v ); | |||||
| if ( ! strcmp( ":x", s ) ) | |||||
| { | |||||
| _track->sort(); | |||||
| } | |||||
| } | |||||
| } | |||||
| static void | |||||
| draw_marker ( Fl_Color c ) | |||||
| { | |||||
| fl_color( c ); | |||||
| fl_begin_polygon(); | |||||
| #define vv(x,y) fl_vertex( x, y ); | |||||
| vv( 0.0, 0.0 ); | |||||
| vv( 0.0, 0.6 ); | |||||
| vv( 0.5, 1.0 ); | |||||
| vv( 1.0, 0.6 ); | |||||
| vv( 1.0, 0.0 ); | |||||
| vv( 0.0, 0.0 ); | |||||
| fl_end_polygon(); | |||||
| fl_color( fl_darker( c ) ); | |||||
| fl_begin_line(); | |||||
| vv( 0.0, 0.0 ); | |||||
| vv( 0.0, 0.6 ); | |||||
| vv( 0.5, 1.0 ); | |||||
| vv( 1.0, 0.6 ); | |||||
| vv( 1.0, 0.0 ); | |||||
| vv( 0.0, 0.0 ); | |||||
| fl_end_line(); | |||||
| } | |||||
| void | |||||
| Sequence_Point::draw_box ( void ) | |||||
| { | |||||
| // Sequence_Widget::draw_box(); | |||||
| const int X = x() - (abs_w() >> 1); | |||||
| // const int Y = y() + Fl::box_dy( box() ); | |||||
| const int Y = y(); | |||||
| fl_color( color() ); | |||||
| fl_push_matrix(); | |||||
| fl_translate( X, Y + ( h() >> 3 ) ); | |||||
| fl_scale( w(), h() - ( h() >> 3 ) ); | |||||
| draw_marker( color() ); | |||||
| fl_pop_matrix(); | |||||
| // fl_line( X, Y, X, Y + h() - Fl::box_dh( box() ) ); | |||||
| } | |||||
| void | |||||
| Sequence_Point::draw ( void ) | |||||
| { | |||||
| // Sequence_Widget::draw(); | |||||
| draw_label( _label, align() ); | |||||
| } | |||||
| @@ -28,45 +28,36 @@ protected: | |||||
| char *_label; | char *_label; | ||||
| virtual void get ( Log_Entry &e ) const | |||||
| { | |||||
| e.add( ":x", _r->offset ); | |||||
| e.add( ":t", _track ); | |||||
| } | |||||
| virtual void set ( Log_Entry &e ) | |||||
| { | |||||
| Sequence_Widget::set( e ); | |||||
| for ( int i = 0; i < e.size(); ++i ) | |||||
| { | |||||
| const char *s, *v; | |||||
| e.get( i, &s, &v ); | |||||
| if ( ! strcmp( ":x", s ) ) | |||||
| { | |||||
| _track->sort(); | |||||
| } | |||||
| } | |||||
| } | |||||
| void get ( Log_Entry &e ) const; | |||||
| void set ( Log_Entry &e ); | |||||
| public: | public: | ||||
| Fl_Align align ( void ) const { return FL_ALIGN_RIGHT; } | Fl_Align align ( void ) const { return FL_ALIGN_RIGHT; } | ||||
| virtual int abs_w ( void ) const { return 8; } | |||||
| // virtual int abs_x ( void ) const { return Sequence_Widget::abs_x() - ( abs_w() >> 1 ); } | |||||
| // virtual int x ( void ) const { return Sequence_Widget::line_x() - ( abs_w() >> 1 ); } | |||||
| virtual int x ( void ) const | |||||
| { | |||||
| const int x = Sequence_Widget::x(); | |||||
| if ( x >= _track->x() + _track->w() ) | |||||
| return _track->x() + _track->w() + abs_w(); | |||||
| else | |||||
| return x; | |||||
| virtual int abs_w ( void ) const { return 10; } | |||||
| /* FIXME: hack */ | |||||
| virtual int x ( void ) const { const int x = Sequence_Widget::x() - ( abs_w() >> 1 ); if ( x == _track->x() ) return x - 3; else return x; } | |||||
| } | |||||
| nframes_t length ( void ) const { return timeline->x_to_ts( abs_w() ); } | nframes_t length ( void ) const { return timeline->x_to_ts( abs_w() ); } | ||||
| Sequence_Point ( ) | Sequence_Point ( ) | ||||
| { | { | ||||
| _label = NULL; | _label = NULL; | ||||
| color( FL_CYAN ); | |||||
| } | } | ||||
| @@ -74,19 +65,7 @@ public: | |||||
| { | { | ||||
| } | } | ||||
| virtual void | |||||
| draw ( void ) | |||||
| { | |||||
| Sequence_Widget::draw(); | |||||
| virtual void draw_box ( void ); | |||||
| virtual void draw ( void ); | |||||
| const int x = Sequence_Widget::x(); | |||||
| const int y = this->y() + Fl::box_dy( box() ); | |||||
| fl_color( FL_WHITE ); | |||||
| fl_line( x, y, x, y + h() - Fl::box_dh( box() ) ); | |||||
| draw_label( _label, align() ); | |||||
| } | |||||
| }; | }; | ||||
| @@ -638,6 +638,8 @@ Timeline::draw ( void ) | |||||
| int dx = ts_to_x( _old_xposition ) - ts_to_x( xoffset ); | int dx = ts_to_x( _old_xposition ) - ts_to_x( xoffset ); | ||||
| int dy = _old_yposition - _yposition; | int dy = _old_yposition - _yposition; | ||||
| /* draw_child( *rulers ); */ | |||||
| if ( ! dy ) | if ( ! dy ) | ||||
| fl_scroll( rulers->x(), rulers->y(), rulers->w(), rulers->h(), dx, 0, draw_clip, this ); | fl_scroll( rulers->x(), rulers->y(), rulers->w(), rulers->h(), dx, 0, draw_clip, this ); | ||||