| @@ -23,18 +23,70 @@ | |||||
| #include "Annotation_Point.H" | #include "Annotation_Point.H" | ||||
| #include "Timeline.H" | #include "Timeline.H" | ||||
| class Annotation_Sequence : public Sequence | |||||
| class Annotation_Sequence : public Sequence, public Loggable | |||||
| { | { | ||||
| protected: | |||||
| virtual void get ( Log_Entry &e ) const | |||||
| { | |||||
| e.add( ":t", _track ); | |||||
| } | |||||
| void | |||||
| set ( Log_Entry &e ) | |||||
| { | |||||
| for ( int i = 0; i < e.size(); ++i ) | |||||
| { | |||||
| const char *s, *v; | |||||
| e.get( i, &s, &v ); | |||||
| if ( ! strcmp( ":t", s ) ) | |||||
| { | |||||
| int i; | |||||
| sscanf( v, "%X", &i ); | |||||
| Track *t = (Track*)Loggable::find( i ); | |||||
| assert( t ); | |||||
| t->track( this ); | |||||
| } | |||||
| } | |||||
| } | |||||
| Annotation_Sequence ( ) : Sequence ( 0, 0, 0, 0 ) | |||||
| { | |||||
| } | |||||
| public: | public: | ||||
| LOG_CREATE_FUNC( Annotation_Sequence ); | |||||
| Fl_Cursor cursor ( void ) const { return FL_CURSOR_INSERT; } | Fl_Cursor cursor ( void ) const { return FL_CURSOR_INSERT; } | ||||
| Annotation_Sequence ( Track *track ) : Sequence( 0, 0, 0, 0 ) | |||||
| { | |||||
| _track = track; | |||||
| color( fl_darker( FL_GREEN ) ); | |||||
| log_create(); | |||||
| // labeltype( FL_NO_LABEL ); | |||||
| } | |||||
| Annotation_Sequence ( int X, int Y, int W, int H ) : Sequence ( X, Y, W, H ) | Annotation_Sequence ( int X, int Y, int W, int H ) : Sequence ( X, Y, W, H ) | ||||
| { | { | ||||
| // box( FL_UP_BOX ); | // box( FL_UP_BOX ); | ||||
| } | } | ||||
| ~Annotation_Sequence ( ) | |||||
| { | |||||
| log_destroy(); | |||||
| } | |||||
| /* void */ | /* void */ | ||||
| /* draw ( void ) */ | /* draw ( void ) */ | ||||
| /* { */ | /* { */ | ||||
| @@ -179,16 +179,17 @@ Timeline::Timeline ( int X, int Y, int W, int H, const char* L ) : Fl_Overlay_Wi | |||||
| o->time( 0, 4, 4 ); | o->time( 0, 4, 4 ); | ||||
| } | } | ||||
| { | |||||
| Annotation_Sequence *o = new Annotation_Sequence( 0, 24, 800, 24 ); | |||||
| o->color( fl_gray_ramp( 'F' ) ); | |||||
| /* { */ | |||||
| /* Annotation_Sequence *o = new Annotation_Sequence( 0, 24, 800, 24 ); */ | |||||
| o->label( "Ruler" ); | |||||
| o->align( FL_ALIGN_LEFT ); | |||||
| /* o->color( fl_gray_ramp( 'F' ) ); */ | |||||
| ruler_track = o; | |||||
| } | |||||
| /* o->label( "Ruler" ); */ | |||||
| /* o->align( FL_ALIGN_LEFT ); */ | |||||
| /* ruler_track = o; */ | |||||
| /* } */ | |||||
| o->size( o->w(), o->child( 0 )->h() * o->children() ); | o->size( o->w(), o->child( 0 )->h() * o->children() ); | ||||
| rulers = o; | rulers = o; | ||||
| @@ -33,6 +33,9 @@ | |||||
| // #include <FL/fl_draw.H> | // #include <FL/fl_draw.H> | ||||
| #include <FL/Fl.H> | #include <FL/Fl.H> | ||||
| #include "Control_Sequence.H" | |||||
| #include "Annotation_Sequence.H" | |||||
| int Track::_soloing = 0; | int Track::_soloing = 0; | ||||
| const char *Track::capture_format = "Wav 24"; | const char *Track::capture_format = "Wav 24"; | ||||
| @@ -203,6 +206,11 @@ Track::init ( void ) | |||||
| resizable( o ); | resizable( o ); | ||||
| { | |||||
| Fl_Pack *o = annotation = new Fl_Pack( width(), 0, pack->w(), 115 ); | |||||
| o->end(); | |||||
| } | |||||
| { | { | ||||
| Fl_Pack *o = control = new Fl_Pack( width(), 0, pack->w(), 115 ); | Fl_Pack *o = control = new Fl_Pack( width(), 0, pack->w(), 115 ); | ||||
| o->end(); | o->end(); | ||||
| @@ -260,9 +268,14 @@ static int pack_visible( Fl_Pack *p ) | |||||
| void | void | ||||
| Track::resize ( void ) | Track::resize ( void ) | ||||
| { | { | ||||
| for ( int i = takes->children(); i--; ) | for ( int i = takes->children(); i--; ) | ||||
| takes->child( i )->size( w(), height() ); | takes->child( i )->size( w(), height() ); | ||||
| for ( int i = annotation->children(); i--; ) | |||||
| annotation->child( i )->size( w(), 24 ); | |||||
| for ( int i = control->children(); i--; ) | for ( int i = control->children(); i--; ) | ||||
| control->child( i )->size( w(), height() ); | control->child( i )->size( w(), height() ); | ||||
| @@ -277,6 +290,8 @@ Track::resize ( void ) | |||||
| Fl_Group::size( w(), height() * ( 1 + pack_visible( control ) ) ); | Fl_Group::size( w(), height() * ( 1 + pack_visible( control ) ) ); | ||||
| } | } | ||||
| Fl_Group::size( w(), h() + ( ( 24 ) * pack_visible( annotation ) ) ); | |||||
| if ( track() ) | if ( track() ) | ||||
| track()->size( w(), height() ); | track()->size( w(), height() ); | ||||
| @@ -346,7 +361,7 @@ Track::track ( Sequence * t ) | |||||
| add( track() ); | add( track() ); | ||||
| _track = t; | _track = t; | ||||
| pack->insert( *t, 0 ); | |||||
| pack->insert( *t, 1 ); | |||||
| t->labeltype( FL_NO_LABEL ); | t->labeltype( FL_NO_LABEL ); | ||||
| @@ -356,7 +371,7 @@ Track::track ( Sequence * t ) | |||||
| void | void | ||||
| Track::add ( Control_Sequence *t ) | Track::add ( Control_Sequence *t ) | ||||
| { | { | ||||
| printf( "adding control sequence\n" ); | |||||
| DMESSAGE( "adding control sequence\n" ); | |||||
| t->track( this ); | t->track( this ); | ||||
| @@ -369,6 +384,18 @@ Track::add ( Control_Sequence *t ) | |||||
| resize(); | resize(); | ||||
| } | } | ||||
| void | |||||
| Track::add ( Annotation_Sequence *t ) | |||||
| { | |||||
| DMESSAGE( "adding annotation sequence\n" ); | |||||
| t->track( this ); | |||||
| annotation->add( t ); | |||||
| resize(); | |||||
| } | |||||
| /** add all widget on this track falling within the given rectangle to | /** add all widget on this track falling within the given rectangle to | ||||
| the selection. */ | the selection. */ | ||||
| void | void | ||||
| @@ -494,7 +521,7 @@ Track::handle ( int m ) | |||||
| } | } | ||||
| else if ( r == &menu[ 7 ] ) | else if ( r == &menu[ 7 ] ) | ||||
| { | { | ||||
| // new Annotation_Sequence; | |||||
| add( new Annotation_Sequence( this ) ); | |||||
| } | } | ||||
| else if ( r == &menu[ 8 ] ) | else if ( r == &menu[ 8 ] ) | ||||
| { | { | ||||
| @@ -39,8 +39,9 @@ using std::vector; | |||||
| #include "Port.H" | #include "Port.H" | ||||
| #include "Timeline.H" | #include "Timeline.H" | ||||
| #include "Control_Sequence.H" | |||||
| class Control_Sequence; | |||||
| class Annotation_Sequence; | |||||
| class Playback_DS; | class Playback_DS; | ||||
| class Record_DS; | class Record_DS; | ||||
| class Port; | class Port; | ||||
| @@ -104,9 +105,11 @@ public: | |||||
| Fl_Group *controls; | Fl_Group *controls; | ||||
| Fl_Pack *pack; | Fl_Pack *pack; | ||||
| Fl_Pack *annotation; | |||||
| Fl_Pack *control; | Fl_Pack *control; | ||||
| Fl_Pack *takes; | Fl_Pack *takes; | ||||
| vector<Port> input; /* input ports... */ | vector<Port> input; /* input ports... */ | ||||
| vector<Port> output; /* output ports... */ | vector<Port> output; /* output ports... */ | ||||
| vector<Port*> control_out; /* control ports... */ | vector<Port*> control_out; /* control ports... */ | ||||
| @@ -185,6 +188,9 @@ public: | |||||
| /* for loggable */ | /* for loggable */ | ||||
| LOG_CREATE_FUNC( Track ); | LOG_CREATE_FUNC( Track ); | ||||
| void add ( Annotation_Sequence *t ); | |||||
| void remove ( Annotation_Sequence *t ); | |||||
| void add ( Control_Sequence *t ); | void add ( Control_Sequence *t ); | ||||
| void add ( Sequence *t ); | void add ( Sequence *t ); | ||||
| void remove ( Sequence *t ); | void remove ( Sequence *t ); | ||||
| @@ -94,6 +94,7 @@ main ( int argc, char **argv ) | |||||
| LOG_REGISTER_CREATE( Track ); | LOG_REGISTER_CREATE( Track ); | ||||
| LOG_REGISTER_CREATE( Audio_Sequence ); | LOG_REGISTER_CREATE( Audio_Sequence ); | ||||
| LOG_REGISTER_CREATE( Control_Sequence ); | LOG_REGISTER_CREATE( Control_Sequence ); | ||||
| LOG_REGISTER_CREATE( Annotation_Sequence ); | |||||
| init_boxtypes(); | init_boxtypes(); | ||||