Big fix for loggability which was broken by the previous attempt at making Time and Tempo sequences unlogged.
This commit is contained in:
parent
d510b21f7f
commit
c3a20870f7
|
@ -24,7 +24,9 @@
|
||||||
#include "Annotation_Region.H"
|
#include "Annotation_Region.H"
|
||||||
#include "Timeline.H"
|
#include "Timeline.H"
|
||||||
|
|
||||||
class Annotation_Sequence : public Sequence, public Loggable
|
#include "Track.H"
|
||||||
|
|
||||||
|
class Annotation_Sequence : public Sequence
|
||||||
{
|
{
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -51,13 +53,14 @@ protected:
|
||||||
|
|
||||||
assert( t );
|
assert( t );
|
||||||
|
|
||||||
t->track( this );
|
t->add( this );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Annotation_Sequence ( ) : Sequence ( 0, 0, 0, 0 )
|
Annotation_Sequence ( ) : Sequence ( 0 )
|
||||||
{
|
{
|
||||||
|
color( fl_darker( FL_GREEN ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -67,20 +70,15 @@ public:
|
||||||
|
|
||||||
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 )
|
Annotation_Sequence ( Track *track ) : Sequence( track )
|
||||||
{
|
{
|
||||||
_track = track;
|
|
||||||
|
|
||||||
color( fl_darker( FL_GREEN ) );
|
color( fl_darker( FL_GREEN ) );
|
||||||
|
|
||||||
log_create();
|
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 ( 0 )
|
||||||
{
|
{
|
||||||
// box( FL_UP_BOX );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
~Annotation_Sequence ( )
|
~Annotation_Sequence ( )
|
||||||
|
@ -88,13 +86,6 @@ public:
|
||||||
log_destroy();
|
log_destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* void */
|
|
||||||
/* draw ( void ) */
|
|
||||||
/* { */
|
|
||||||
/* // timeline->draw_measure_BBT( x(), y(), w(), h(), FL_WHITE ); */
|
|
||||||
/* Sequence::draw(); */
|
|
||||||
/* } */
|
|
||||||
|
|
||||||
int handle ( int m )
|
int handle ( int m )
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include "Waveform.H"
|
#include "Waveform.H"
|
||||||
|
|
||||||
#include "Audio_Sequence.H"
|
#include "Audio_Sequence.H"
|
||||||
|
#include "Track.H"
|
||||||
|
|
||||||
#include "dsp.h"
|
#include "dsp.h"
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,68 @@
|
||||||
|
|
||||||
#include <Fl/fl_ask.H>
|
#include <Fl/fl_ask.H>
|
||||||
|
|
||||||
|
#include "Track.H"
|
||||||
|
|
||||||
|
Audio_Sequence::Audio_Sequence ( Track *track ) : Sequence( track )
|
||||||
|
{
|
||||||
|
|
||||||
|
_track = track;
|
||||||
|
|
||||||
|
if ( track )
|
||||||
|
track->add( this );
|
||||||
|
|
||||||
|
log_create();
|
||||||
|
|
||||||
|
/* FIXME: temporary */
|
||||||
|
labeltype( FL_NO_LABEL );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Audio_Sequence::~Audio_Sequence ( )
|
||||||
|
{
|
||||||
|
log_destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const Audio_Region *
|
||||||
|
Audio_Sequence::capture ( void ) const
|
||||||
|
{
|
||||||
|
return track()->capture();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Audio_Sequence::get ( Log_Entry &e ) const
|
||||||
|
{
|
||||||
|
e.add( ":t", _track );
|
||||||
|
e.add( ":n", name() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Audio_Sequence::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 );
|
||||||
|
}
|
||||||
|
else if ( ! strcmp( ":n", s ) )
|
||||||
|
name( strdup( v ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static
|
static
|
||||||
void
|
void
|
||||||
deurlify ( char *url )
|
deurlify ( char *url )
|
||||||
|
|
|
@ -21,76 +21,32 @@
|
||||||
|
|
||||||
#include "Sequence.H"
|
#include "Sequence.H"
|
||||||
#include "Audio_Region.H"
|
#include "Audio_Region.H"
|
||||||
#include "Track.H"
|
|
||||||
|
|
||||||
#include <FL/Fl_Input.H>
|
#include <FL/Fl_Input.H>
|
||||||
|
|
||||||
class Audio_Sequence : public Sequence, public Loggable
|
class Audio_Sequence : public Sequence
|
||||||
{
|
{
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
virtual void get ( Log_Entry &e ) const
|
void get ( Log_Entry &e ) const;
|
||||||
{
|
|
||||||
e.add( ":t", _track );
|
|
||||||
e.add( ":n", name() );
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void set ( Log_Entry &e );
|
||||||
set ( Log_Entry &e )
|
|
||||||
{
|
|
||||||
for ( int i = 0; i < e.size(); ++i )
|
|
||||||
{
|
|
||||||
const char *s, *v;
|
|
||||||
|
|
||||||
e.get( i, &s, &v );
|
Audio_Sequence ( ) : Sequence( 0 )
|
||||||
|
|
||||||
if ( ! strcmp( ":t", s ) )
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
sscanf( v, "%X", &i );
|
|
||||||
Track *t = (Track*)Loggable::find( i );
|
|
||||||
|
|
||||||
assert( t );
|
|
||||||
|
|
||||||
t->track( this );
|
|
||||||
}
|
|
||||||
else if ( ! strcmp( ":n", s ) )
|
|
||||||
name( strdup( v ) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Audio_Sequence ( ) : Sequence( 0, 0, 0, 0 )
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
LOG_CREATE_FUNC( Audio_Sequence );
|
LOG_CREATE_FUNC( Audio_Sequence );
|
||||||
|
|
||||||
Fl_Cursor cursor ( void ) const { return FL_CURSOR_DEFAULT; }
|
Fl_Cursor cursor ( void ) const { return FL_CURSOR_DEFAULT; }
|
||||||
|
|
||||||
Audio_Sequence ( Track *track ) : Sequence( 0, 0, 0, 0, track )
|
|
||||||
{
|
|
||||||
|
|
||||||
_track = track;
|
Audio_Sequence ( Track *track );
|
||||||
|
~Audio_Sequence ( );
|
||||||
if ( track )
|
|
||||||
track->add( this );
|
|
||||||
|
|
||||||
log_create();
|
|
||||||
|
|
||||||
/* FIXME: temporary */
|
|
||||||
labeltype( FL_NO_LABEL );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
~Audio_Sequence ( )
|
|
||||||
{
|
|
||||||
log_destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Sequence * clone_empty ( void )
|
Sequence * clone_empty ( void )
|
||||||
|
@ -107,7 +63,7 @@ public:
|
||||||
void dump ( void );
|
void dump ( void );
|
||||||
void remove_selected ( void );
|
void remove_selected ( void );
|
||||||
|
|
||||||
const Audio_Region *capture ( void ) const { return track()->capture(); }
|
const Audio_Region *capture ( void ) const;
|
||||||
|
|
||||||
nframes_t play ( sample_t *buf, nframes_t frame, nframes_t nframes, int channels );
|
nframes_t play ( sample_t *buf, nframes_t frame, nframes_t nframes, int channels );
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ bool Control_Sequence::draw_with_gradient = true;
|
||||||
bool Control_Sequence::draw_with_polygon = true;
|
bool Control_Sequence::draw_with_polygon = true;
|
||||||
bool Control_Sequence::draw_with_grid = true;
|
bool Control_Sequence::draw_with_grid = true;
|
||||||
|
|
||||||
Control_Sequence::Control_Sequence ( Track *track ) : Sequence( 0, 0, 0, 0 )
|
Control_Sequence::Control_Sequence ( Track *track ) : Sequence( 0 )
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
#include "Control_Point.H"
|
#include "Control_Point.H"
|
||||||
#include "Port.H"
|
#include "Port.H"
|
||||||
|
|
||||||
class Control_Sequence : public Sequence, public Loggable
|
class Control_Sequence : public Sequence
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ protected:
|
||||||
virtual void get ( Log_Entry &e ) const;
|
virtual void get ( Log_Entry &e ) const;
|
||||||
void set ( Log_Entry &e );
|
void set ( Log_Entry &e );
|
||||||
|
|
||||||
Control_Sequence ( ) : Sequence( 0, 0, 0, 1 )
|
Control_Sequence ( ) : Sequence( 0 )
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
|
@ -249,14 +249,7 @@ Loggable::do_this ( const char *s, bool reverse )
|
||||||
Log_Entry e( sa );
|
Log_Entry e( sa );
|
||||||
|
|
||||||
|
|
||||||
|
ASSERT( _class_map[ string( classname ) ], "Journal contains an object of class \"%s\", but I don't know how to create such objects.", classname );
|
||||||
|
|
||||||
|
|
||||||
assert( _class_map[ string( classname ) ] );
|
|
||||||
|
|
||||||
/* if ( ! _class_map[ string( classname ) ] ) */
|
|
||||||
/* printf( "error class %s is unregistered!\n", classname ); */
|
|
||||||
/* else */
|
|
||||||
|
|
||||||
{
|
{
|
||||||
/* create */
|
/* create */
|
||||||
|
|
|
@ -37,23 +37,22 @@ using namespace std;
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
|
||||||
/* welcome to C++ */
|
/* welcome to C++ */
|
||||||
class Loggable_ID
|
/* This class is just a dummy to allow base classes with null ids but
|
||||||
{
|
* whose children are really loggable. */
|
||||||
|
|
||||||
protected:
|
/* class Loggable_ID */
|
||||||
|
/* { */
|
||||||
|
|
||||||
int _id;
|
/* public: */
|
||||||
|
|
||||||
public:
|
/* Loggable_ID ( ) { } */
|
||||||
|
/* virtual ~Loggable_ID ( ) { } */
|
||||||
|
|
||||||
Loggable_ID ( ) : _id( 0 ) { }
|
/* virtual int id ( void ) const = 0; */
|
||||||
virtual ~Loggable_ID ( ) { }
|
|
||||||
|
|
||||||
int id ( void ) { return _id; }
|
/* virtual const char *class_name ( void ) const = 0; */
|
||||||
|
|
||||||
virtual const char *class_name ( void ) const = 0;
|
/* }; */
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
class Log_Entry;
|
class Log_Entry;
|
||||||
class Loggable;
|
class Loggable;
|
||||||
|
@ -77,8 +76,11 @@ typedef Loggable *(create_func)(Log_Entry &);
|
||||||
LOG_NAME_FUNC( class ); \
|
LOG_NAME_FUNC( class ); \
|
||||||
|
|
||||||
|
|
||||||
|
#define LOG_NOT_LOGGABLE_FUNC( class ) \
|
||||||
|
virtual const char *class_name ( void ) const { return #class ; } \
|
||||||
|
|
||||||
class Logger;
|
class Logger;
|
||||||
class Loggable : public Loggable_ID
|
class Loggable
|
||||||
{
|
{
|
||||||
|
|
||||||
static FILE *_fp;
|
static FILE *_fp;
|
||||||
|
@ -94,6 +96,7 @@ class Loggable : public Loggable_ID
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
int _id;
|
||||||
|
|
||||||
char **_old_state;
|
char **_old_state;
|
||||||
char **_new_state;
|
char **_new_state;
|
||||||
|
@ -117,6 +120,8 @@ private:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
int id ( void ) const { return _id; }
|
||||||
|
|
||||||
static bool open ( const char *filename );
|
static bool open ( const char *filename );
|
||||||
static bool close ( void );
|
static bool close ( void );
|
||||||
static void undo ( void );
|
static void undo ( void );
|
||||||
|
@ -150,13 +155,19 @@ public:
|
||||||
return _loggables[ id - 1 ];
|
return _loggables[ id - 1 ];
|
||||||
}
|
}
|
||||||
|
|
||||||
Loggable ( )
|
Loggable ( bool loggable=true )
|
||||||
{
|
{
|
||||||
_id = ++_log_id;
|
if ( loggable )
|
||||||
_old_state = NULL;
|
{
|
||||||
_nest = 0;
|
_id = ++_log_id;
|
||||||
|
_old_state = NULL;
|
||||||
|
_nest = 0;
|
||||||
|
|
||||||
|
_loggables.push_back( this );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_id = 0;
|
||||||
|
|
||||||
_loggables.push_back( this );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** must be called after construction in create() methods */
|
/** must be called after construction in create() methods */
|
||||||
|
@ -201,6 +212,9 @@ public:
|
||||||
virtual void get ( Log_Entry &e ) const = 0;
|
virtual void get ( Log_Entry &e ) const = 0;
|
||||||
virtual void set ( Log_Entry &e ) = 0;
|
virtual void set ( Log_Entry &e ) = 0;
|
||||||
|
|
||||||
|
virtual const char *class_name ( void ) const = 0;
|
||||||
|
|
||||||
|
|
||||||
static bool do_this ( const char *s, bool reverse );
|
static bool do_this ( const char *s, bool reverse );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -356,7 +370,7 @@ public:
|
||||||
ADD( nframes_t, "%lu", (unsigned long)v );
|
ADD( nframes_t, "%lu", (unsigned long)v );
|
||||||
ADD( unsigned long, "%lu", v );
|
ADD( unsigned long, "%lu", v );
|
||||||
ADD( const char *, "\"%s\"", v ? v : "" );
|
ADD( const char *, "\"%s\"", v ? v : "" );
|
||||||
ADD( Loggable_ID *, "0x%X", v ? v->id() : 0 );
|
ADD( Loggable * , "0x%X", v ? v->id() : 0 );
|
||||||
ADD( float, "%f", v );
|
ADD( float, "%f", v );
|
||||||
ADD( double, "%f", v );
|
ADD( double, "%f", v );
|
||||||
|
|
||||||
|
|
|
@ -30,20 +30,30 @@
|
||||||
|
|
||||||
queue <Sequence_Widget *> Sequence::_delete_queue;
|
queue <Sequence_Widget *> Sequence::_delete_queue;
|
||||||
|
|
||||||
Sequence::Sequence ( int X, int Y, int W, int H, Track *track ) : Fl_Widget( X, Y, W, H )
|
Sequence::Sequence ( Track *track ) : Fl_Widget( 0, 0, 0, 0 ), Loggable( true )
|
||||||
{
|
{
|
||||||
_name = NULL;
|
init();
|
||||||
|
|
||||||
_track = track;
|
_track = track;
|
||||||
|
|
||||||
/* if ( track ) */
|
// log_create();
|
||||||
/* track->add( this ); */
|
}
|
||||||
|
|
||||||
|
Sequence::Sequence ( int X, int Y, int W, int H ) : Fl_Widget( X, Y, W, H ), Loggable( false )
|
||||||
|
{
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Sequence::init ( void )
|
||||||
|
{
|
||||||
|
_track = NULL;
|
||||||
|
|
||||||
|
_name = NULL;
|
||||||
|
|
||||||
box( FL_DOWN_BOX );
|
box( FL_DOWN_BOX );
|
||||||
// color( fl_darker( FL_GRAY ) );
|
|
||||||
color( FL_BACKGROUND_COLOR );
|
color( FL_BACKGROUND_COLOR );
|
||||||
align( FL_ALIGN_LEFT );
|
align( FL_ALIGN_LEFT );
|
||||||
|
|
||||||
// log_create();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Sequence::~Sequence ( )
|
Sequence::~Sequence ( )
|
||||||
|
|
|
@ -38,11 +38,13 @@ class Sequence_Widget;
|
||||||
|
|
||||||
/* This is the base class for all track types. */
|
/* This is the base class for all track types. */
|
||||||
|
|
||||||
class Sequence : public Fl_Widget, public Loggable_ID
|
class Sequence : public Fl_Widget, public Loggable
|
||||||
{
|
{
|
||||||
|
|
||||||
static queue <Sequence_Widget *> _delete_queue;
|
static queue <Sequence_Widget *> _delete_queue;
|
||||||
|
|
||||||
|
void init ( void );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
Track *_track; /* track this sequence belongs to */
|
Track *_track; /* track this sequence belongs to */
|
||||||
|
@ -58,7 +60,8 @@ public:
|
||||||
/* welcome to C++ */
|
/* welcome to C++ */
|
||||||
LOG_NAME_FUNC( Sequence );
|
LOG_NAME_FUNC( Sequence );
|
||||||
|
|
||||||
Sequence ( int X, int Y, int W, int H, Track *track=0 );
|
Sequence ( Track *track=0 );
|
||||||
|
Sequence ( int X, int Y, int W, int H );
|
||||||
|
|
||||||
virtual ~Sequence ( );
|
virtual ~Sequence ( );
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@ protected:
|
||||||
|
|
||||||
Sequence_Region ( )
|
Sequence_Region ( )
|
||||||
{
|
{
|
||||||
|
color( FL_CYAN );
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~Sequence_Region ( )
|
virtual ~Sequence_Region ( )
|
||||||
|
|
|
@ -27,6 +27,12 @@
|
||||||
class Tempo_Sequence : public Sequence
|
class Tempo_Sequence : public Sequence
|
||||||
{
|
{
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
/* not used */
|
||||||
|
void get ( Log_Entry &e ) const { }
|
||||||
|
void set ( Log_Entry &e ) { }
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Fl_Cursor cursor ( void ) const { return FL_CURSOR_DEFAULT; }
|
Fl_Cursor cursor ( void ) const { return FL_CURSOR_DEFAULT; }
|
||||||
|
|
|
@ -28,6 +28,12 @@ using std::list;
|
||||||
class Time_Sequence : public Sequence
|
class Time_Sequence : public Sequence
|
||||||
{
|
{
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
/* not used */
|
||||||
|
void get ( Log_Entry &e ) const { }
|
||||||
|
void set ( Log_Entry &e ) { }
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Fl_Cursor cursor ( void ) const { return FL_CURSOR_DEFAULT; }
|
Fl_Cursor cursor ( void ) const { return FL_CURSOR_DEFAULT; }
|
||||||
|
|
|
@ -918,7 +918,7 @@ Timeline::handle ( int m )
|
||||||
|
|
||||||
Track *t = new Track( name );
|
Track *t = new Track( name );
|
||||||
|
|
||||||
Sequence *o = new Audio_Sequence( t );
|
Audio_Sequence *o = new Audio_Sequence( t );
|
||||||
|
|
||||||
// new Control_Sequence( t );
|
// new Control_Sequence( t );
|
||||||
|
|
||||||
|
|
|
@ -93,7 +93,7 @@ Track::cb_button ( Fl_Widget *w )
|
||||||
show_all_takes( take_menu->menu()[ v ].value() );
|
show_all_takes( take_menu->menu()[ v ].value() );
|
||||||
return;
|
return;
|
||||||
case 1: /* new */
|
case 1: /* new */
|
||||||
track( track()->clone_empty() );
|
track( (Audio_Sequence*)track()->clone_empty() );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@ Track::cb_button ( Fl_Widget *w )
|
||||||
|
|
||||||
for ( int i = takes->children(); i--; )
|
for ( int i = takes->children(); i--; )
|
||||||
{
|
{
|
||||||
Sequence *t = (Sequence*)takes->child( i );
|
Audio_Sequence *t = (Audio_Sequence*)takes->child( i );
|
||||||
if ( ! strcmp( s, t->name() ) )
|
if ( ! strcmp( s, t->name() ) )
|
||||||
{
|
{
|
||||||
track( t );
|
track( t );
|
||||||
|
@ -319,7 +319,7 @@ Track::size ( int v )
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Track::add ( Sequence * t )
|
Track::add ( Audio_Sequence * t )
|
||||||
{
|
{
|
||||||
takes->insert( *t, 0 );
|
takes->insert( *t, 0 );
|
||||||
if ( ! t->name() )
|
if ( ! t->name() )
|
||||||
|
@ -335,7 +335,7 @@ Track::add ( Sequence * t )
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Track::remove ( Sequence *t )
|
Track::remove ( Audio_Sequence *t )
|
||||||
{
|
{
|
||||||
takes->remove( t );
|
takes->remove( t );
|
||||||
|
|
||||||
|
@ -353,7 +353,7 @@ Track::remove ( Control_Sequence *t )
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Track::track ( Sequence * t )
|
Track::track ( Audio_Sequence * t )
|
||||||
{
|
{
|
||||||
t->track( this );
|
t->track( this );
|
||||||
|
|
||||||
|
@ -441,12 +441,13 @@ Track::draw ( void )
|
||||||
int
|
int
|
||||||
Track::handle ( int m )
|
Track::handle ( int m )
|
||||||
{
|
{
|
||||||
Logger log( this );
|
|
||||||
|
|
||||||
switch ( m )
|
switch ( m )
|
||||||
{
|
{
|
||||||
case FL_MOUSEWHEEL:
|
case FL_MOUSEWHEEL:
|
||||||
{
|
{
|
||||||
|
Logger log( this );
|
||||||
|
|
||||||
if ( ! Fl::event_shift() )
|
if ( ! Fl::event_shift() )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -463,6 +464,7 @@ Track::handle ( int m )
|
||||||
}
|
}
|
||||||
case FL_PUSH:
|
case FL_PUSH:
|
||||||
{
|
{
|
||||||
|
Logger log( this );
|
||||||
|
|
||||||
int X = Fl::event_x();
|
int X = Fl::event_x();
|
||||||
int Y = Fl::event_y();
|
int Y = Fl::event_y();
|
||||||
|
|
|
@ -48,6 +48,11 @@ class Port;
|
||||||
class Audio_Region;
|
class Audio_Region;
|
||||||
class Audio_File;
|
class Audio_File;
|
||||||
|
|
||||||
|
|
||||||
|
//class Audio_Sequence;
|
||||||
|
|
||||||
|
#include "Audio_Sequence.H"
|
||||||
|
|
||||||
class Track : public Fl_Group, public Loggable
|
class Track : public Fl_Group, public Loggable
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -74,7 +79,7 @@ private:
|
||||||
|
|
||||||
enum { AUDIO } _type;
|
enum { AUDIO } _type;
|
||||||
|
|
||||||
Sequence *_track;
|
Audio_Sequence *_track;
|
||||||
|
|
||||||
Audio_Region *_capture; /* capture region */
|
Audio_Region *_capture; /* capture region */
|
||||||
Audio_File *_capture_af; /* capture write source */
|
Audio_File *_capture_af; /* capture write source */
|
||||||
|
@ -157,7 +162,7 @@ public:
|
||||||
|
|
||||||
if ( i )
|
if ( i )
|
||||||
{
|
{
|
||||||
Sequence *t = (Sequence*)Loggable::find( i );
|
Audio_Sequence *t = (Audio_Sequence*)Loggable::find( i );
|
||||||
|
|
||||||
/* FIXME: our track might not have been
|
/* FIXME: our track might not have been
|
||||||
* defined yet... what should we do about this
|
* defined yet... what should we do about this
|
||||||
|
@ -192,8 +197,8 @@ public:
|
||||||
void remove ( Annotation_Sequence *t );
|
void remove ( Annotation_Sequence *t );
|
||||||
|
|
||||||
void add ( Control_Sequence *t );
|
void add ( Control_Sequence *t );
|
||||||
void add ( Sequence *t );
|
void add ( Audio_Sequence *t );
|
||||||
void remove ( Sequence *t );
|
void remove ( Audio_Sequence *t );
|
||||||
void remove ( Control_Sequence *t );
|
void remove ( Control_Sequence *t );
|
||||||
|
|
||||||
void select ( int X, int Y, int W, int H, bool include_control, bool merge_control );
|
void select ( int X, int Y, int W, int H, bool include_control, bool merge_control );
|
||||||
|
@ -243,8 +248,8 @@ public:
|
||||||
|
|
||||||
static int width ( void ) { return 150; }
|
static int width ( void ) { return 150; }
|
||||||
|
|
||||||
void track( Sequence * t );
|
void track ( Audio_Sequence * t );
|
||||||
Sequence * track ( void ) const { return _track; }
|
Audio_Sequence * track ( void ) const { return _track; }
|
||||||
|
|
||||||
void draw ( void );
|
void draw ( void );
|
||||||
int handle ( int m );
|
int handle ( int m );
|
||||||
|
|
|
@ -90,6 +90,7 @@ main ( int argc, char **argv )
|
||||||
LOG_REGISTER_CREATE( Time_Point );
|
LOG_REGISTER_CREATE( Time_Point );
|
||||||
LOG_REGISTER_CREATE( Tempo_Point );
|
LOG_REGISTER_CREATE( Tempo_Point );
|
||||||
LOG_REGISTER_CREATE( Annotation_Point );
|
LOG_REGISTER_CREATE( Annotation_Point );
|
||||||
|
LOG_REGISTER_CREATE( Annotation_Region );
|
||||||
LOG_REGISTER_CREATE( Control_Point );
|
LOG_REGISTER_CREATE( Control_Point );
|
||||||
LOG_REGISTER_CREATE( Track );
|
LOG_REGISTER_CREATE( Track );
|
||||||
LOG_REGISTER_CREATE( Audio_Sequence );
|
LOG_REGISTER_CREATE( Audio_Sequence );
|
||||||
|
|
Loading…
Reference in New Issue