Browse Source

offset start end -> start offset length

tags/non-daw-v1.1.0
Jonathan Moore Liles 17 years ago
parent
commit
6bb4a1d066
14 changed files with 223 additions and 240 deletions
  1. +2
    -2
      Timeline/Annotation_Point.H
  2. +5
    -3
      Timeline/Annotation_Region.C
  3. +68
    -53
      Timeline/Audio_Region.C
  4. +2
    -47
      Timeline/Audio_Region.H
  5. +2
    -2
      Timeline/Control_Point.C
  6. +7
    -7
      Timeline/Sequence.C
  7. +2
    -3
      Timeline/Sequence_Point.C
  8. +0
    -2
      Timeline/Sequence_Point.H
  9. +42
    -10
      Timeline/Sequence_Region.C
  10. +3
    -24
      Timeline/Sequence_Region.H
  11. +56
    -4
      Timeline/Sequence_Widget.C
  12. +30
    -79
      Timeline/Sequence_Widget.H
  13. +2
    -2
      Timeline/Tempo_Point.C
  14. +2
    -2
      Timeline/Time_Point.C

+ 2
- 2
Timeline/Annotation_Point.H View File

@@ -69,7 +69,7 @@ public:
{
_sequence = sequence;

_r->offset = when;
_r->start = when;

_label = strdup( name );

@@ -78,7 +78,7 @@ public:

Annotation_Point ( const Annotation_Point &rhs )
{
_r->offset = rhs._r->offset;
_r->start = rhs._r->start;
_label = strdup( rhs._label );
}



+ 5
- 3
Timeline/Annotation_Region.C View File

@@ -52,10 +52,10 @@ Annotation_Region::Annotation_Region ( Sequence *sequence, nframes_t when, const
{
_sequence = sequence;

_r->offset = when;
_r->start = when;

/* FIXME: hack */
_r->end = 400;
_r->length = 400;

_label = strdup( name );

@@ -64,7 +64,9 @@ Annotation_Region::Annotation_Region ( Sequence *sequence, nframes_t when, const

Annotation_Region::Annotation_Region ( const Annotation_Region &rhs )
{
_r->offset = rhs._r->offset;
_r->start = rhs._r->start;
_r->length = rhs._r->length;

_label = strdup( rhs._label );
}



+ 68
- 53
Timeline/Audio_Region.C View File

@@ -58,39 +58,62 @@ static Fl_Color fl_invert_color ( Fl_Color c )
}


#if 0
/* perhaps use map? */
map_PRIM ( set )
void
Audio_Region::get ( Log_Entry &e ) const
{
/* if ( narg % 2 != 0 ) */
/* printf( "invalid number of arguments\n" ); */

int id = atoi( arg );

map_ARG_NEXT( arg, end );
e.add( ":source", _clip ? _clip->name() : "" );
e.add( ":gain", _scale );
e.add( ":fade-in-type", _fade_in.type );
e.add( ":fade-in-duration", _fade_in.length );
e.add( ":fade-out-type", _fade_out.type );
e.add( ":fade-out-duration", _fade_out.length );
e.add( ":color", (int)_box_color );

Logable *l = Loggable::find( id );
Sequence_Region::get( e );

char **sa = malloc( sizeof( char * ) * narg + 1 );

for ( int i = 0; i < narg; ++i )
sa[ i ] = strdup( map_ARG_NEXT( arg, end ) );
e.add( ":offset", _r->offset );
}

l->set( sa );
void
Audio_Region::set ( Log_Entry &e )
{
for ( int i = 0; i < e.size(); ++i )
{
const char *s, *v;

e.get( i, &s, &v );

if ( ! strcmp( s, ":gain" ) )
_scale = atof( v );
else if ( ! strcmp( s, ":color" ) )
_box_color = (Fl_Color)atoi( v );
else if ( ! strcmp( s, ":fade-in-type" ) )
_fade_in.type = (Fade::fade_type_e)atoi( v );
else if ( ! strcmp( s, ":fade-in-duration" ) )
_fade_in.length = atoll( v );
else if ( ! strcmp( s, ":fade-out-type" ) )
_fade_out.type = (Fade::fade_type_e)atoi( v );
else if ( ! strcmp( s, ":fade-out-duration" ) )
_fade_out.length = atoll( v );
else if ( ! strcmp( s, ":offset" ) )
_r->offset = atoll( v );
else if ( ! strcmp( s, ":source" ) )
{
if ( ! ( _clip = Audio_File::from_file( v ) ) )
{
printf( "Grave error: could not open source \"%s\"\n", v );
}
}
}

map_RESULT( "" );
Sequence_Region::set( e );
}
#endif


void
Audio_Region::init ( void )
{

_sequence = NULL;
_r->offset = 0;
_r->start = 0;
_r->end = 0;
_scale = 1.0f;
_clip = NULL;

@@ -128,7 +151,7 @@ Audio_Region::Audio_Region ( Audio_File *c )
{
init();
_clip = c;
_r->end = _clip->length();
_r->length = _clip->length();

log_create();
}
@@ -139,9 +162,10 @@ Audio_Region::Audio_Region ( Audio_File *c, Sequence *t, nframes_t o )
{
init();
_clip = c;
_r->end = _clip->length();
_sequence = t;
_r->offset = o;
_r->offset = 0;
_r->start = o;
_r->length = _clip->length();

sequence()->add( this );

@@ -172,7 +196,6 @@ int
Audio_Region::handle ( int m )
{
static int ox, oy;
static enum trim_e trimming;

static bool copied = false;
static nframes_t os;
@@ -266,7 +289,7 @@ Audio_Region::handle ( int m )
ox = x() - X;
oy = y() - Y;
/* for panning */
os = _r->start;
os = _r->offset;

/* normalization and selection */
if ( Fl::event_button2() )
@@ -360,14 +383,10 @@ Audio_Region::handle ( int m )
int d = (ox + X) - x();
long td = timeline->x_to_ts( d );

nframes_t W = _r->end - _r->start;

if ( td > 0 && os < td )
_r->start = 0;
_r->offset = 0;
else
_r->start = os - td;

_r->end = _r->start + W;
_r->offset = os - td;

sequence()->redraw();
return 1;
@@ -390,6 +409,8 @@ Audio_Region::handle ( int m )
return Sequence_Widget::handle( m );
break;
}

return 0;
}


@@ -513,15 +534,14 @@ Audio_Region::draw ( void )
W += 4;

int OX = scroll_x();
int ox = timeline->ts_to_x( _r->offset );
int ox = timeline->ts_to_x( _r->start );

if ( ox > OX + sequence()->w() ||
ox < OX && ox + abs_w() < OX )
/* not in viewport */
return;

int rw = timeline->ts_to_x( _r->end - _r->start );
// nframes_t end = _r->offset + ( _r->end - _r->start );
int rw = timeline->ts_to_x( _r->length );

/* calculate waveform offset due to scrolling */
nframes_t offset = 0;
@@ -545,7 +565,8 @@ Audio_Region::draw ( void )


// const nframes_t start = _r->start + offset + timeline->x_to_ts( X - rx );
nframes_t start = _r->start + offset;
// nframes_t start = _r->start + offset;
nframes_t start = _r->offset + offset;

/* compensate for ??? */
if ( X - rx > 0 )
@@ -636,14 +657,10 @@ Audio_Region::draw ( void )
void
Audio_Region::normalize ( void )
{
printf( "normalize: start=%lu end=%lu\n", _r->start, _r->end );

/* FIXME: figure out a way to do this via the peak server */

int peaks, channels;
Peak *pbuf;

if ( _clip->read_peaks( length(), _r->start, _r->end, &peaks, &pbuf, &channels ) &&
if ( _clip->read_peaks( length(), offset(), offset() + length(), &peaks, &pbuf, &channels ) &&
peaks )
_scale = pbuf->normalization_factor();
}
@@ -710,10 +727,8 @@ Audio_Region::read ( sample_t *buf, nframes_t pos, nframes_t nframes, int channe
{
const Range r = _range;

const nframes_t length = r.end - r.start;

/* do nothing if we aren't covered by this frame range */
if ( pos > r.offset + length || pos + nframes < r.offset )
if ( pos > r.start + r.length || pos + nframes < r.start )
return 0;

/* calculate offsets into file and sample buffer */
@@ -722,23 +737,23 @@ Audio_Region::read ( sample_t *buf, nframes_t pos, nframes_t nframes, int channe

cnt = nframes;

if ( pos < r.offset )
if ( pos < r.start )
{
sofs = 0;
ofs = r.offset - pos;
ofs = r.start - pos;
cnt -= ofs;
}
else
{
ofs = 0;
sofs = pos - r.offset;
sofs = pos - r.start;
}

if ( ofs >= nframes )
return 0;

// const nframes_t start = ofs + r.start + sofs;
const nframes_t start = r.start + sofs;
const nframes_t start = r.offset + sofs;
const nframes_t len = min( cnt, nframes - ofs );
const nframes_t end = start + len;

@@ -782,9 +797,9 @@ Audio_Region::read ( sample_t *buf, nframes_t pos, nframes_t nframes, int channe

/* do fade out if necessary */
// if ( start + cnt + fade.length > r.end )
if ( start + fade.length > r.end )
if ( start + fade.length > ( r.offset + r.length ) )
{
const nframes_t d = r.end - start;
const nframes_t d = ( r.offset + r.length ) - start;

assert( cnt <= nframes );

@@ -803,12 +818,12 @@ Audio_Region::read ( sample_t *buf, nframes_t pos, nframes_t nframes, int channe
nframes_t
Audio_Region::write ( nframes_t nframes )
{
_range.end += nframes;
_range.length += nframes;

/* FIXME: too much? */
// _track->damage( FL_DAMAGE_EXPOSE, x() + w(), y(), 10/* FIXME: guess */, h() );

if ( 0 == ( timeline->ts_to_x( _range.end ) % 20 ) )
if ( 0 == ( timeline->ts_to_x( _range.length ) % 20 ) )
{
nframes_t oldl = _clip->length();

@@ -851,7 +866,7 @@ Audio_Region::finalize ( nframes_t frame )

/* FIXME: should we attempt to truncate the file? */

_range.end = frame - _range.offset;
_range.length = frame - _range.start - _range.offset;

redraw();



+ 2
- 47
Timeline/Audio_Region.H View File

@@ -102,53 +102,8 @@ private:

protected:

// const char *class_name ( void ) { return "Audio_Region"; }

virtual void get ( Log_Entry &e ) const
{
e.add( ":source", _clip ? _clip->name() : "" );
e.add( ":gain", _scale );
e.add( ":fade-in-type", _fade_in.type );
e.add( ":fade-in-duration", _fade_in.length );
e.add( ":fade-out-type", _fade_out.type );
e.add( ":fade-out-duration", _fade_out.length );
e.add( ":color", (int)_box_color );

Sequence_Widget::get( e );
}

void
set ( Log_Entry &e )
{
for ( int i = 0; i < e.size(); ++i )
{
const char *s, *v;

e.get( i, &s, &v );

if ( ! strcmp( s, ":gain" ) )
_scale = atof( v );
else if ( ! strcmp( s, ":color" ) )
_box_color = (Fl_Color)atoi( v );
else if ( ! strcmp( s, ":fade-in-type" ) )
_fade_in.type = (Fade::fade_type_e)atoi( v );
else if ( ! strcmp( s, ":fade-in-duration" ) )
_fade_in.length = atoll( v );
else if ( ! strcmp( s, ":fade-out-type" ) )
_fade_out.type = (Fade::fade_type_e)atoi( v );
else if ( ! strcmp( s, ":fade-out-duration" ) )
_fade_out.length = atoll( v );
else if ( ! strcmp( s, ":source" ) )
{
if ( ! ( _clip = Audio_File::from_file( v ) ) )
{
printf( "Grave error: could not open source \"%s\"\n", v );
}
}
}

Sequence_Widget::set( e );
}
virtual void get ( Log_Entry &e ) const;
virtual void set ( Log_Entry &e );

public:



+ 2
- 2
Timeline/Control_Point.C View File

@@ -23,7 +23,7 @@ Control_Point::Control_Point ( Sequence *t, nframes_t when, float y )
{
_sequence = t;
_y = y;
_r->offset = when;
_r->start = when;
_box_color = FL_WHITE;

log_create();
@@ -31,7 +31,7 @@ Control_Point::Control_Point ( Sequence *t, nframes_t when, float y )

Control_Point::Control_Point ( const Control_Point &rhs )
{
_r->offset = rhs._r->offset;
_r->start = rhs._r->start;
_y = rhs._y;
}



+ 7
- 7
Timeline/Sequence.C View File

@@ -97,7 +97,7 @@ Sequence::overlaps ( Sequence_Widget *r )
for ( list <Sequence_Widget *>::const_iterator i = _widgets.begin(); i != _widgets.end(); i++ )
{
if ( *i == r ) continue;
if ( ! ( (*i)->offset() > r->offset() + r->length() || (*i)->offset() + (*i)->length() < r->offset() ) )
if ( ! ( (*i)->start() > r->start() + r->length() || (*i)->start() + (*i)->length() < r->start() ) )
return *i;
}

@@ -176,7 +176,7 @@ Sequence::event_widget ( void )
{
nframes_t ets = timeline->xoffset + timeline->x_to_ts( Fl::event_x() - x() );
for ( list <Sequence_Widget *>::const_reverse_iterator r = _widgets.rbegin(); r != _widgets.rend(); r++ )
if ( ets > (*r)->offset() && ets < (*r)->offset() + (*r)->length() )
if ( ets > (*r)->start() && ets < (*r)->start() + (*r)->length() )
return (*r);

return NULL;
@@ -189,7 +189,7 @@ Sequence::select_range ( int X, int W )
nframes_t ets = sts + timeline->x_to_ts( W );

for ( list <Sequence_Widget *>::const_reverse_iterator r = _widgets.rbegin(); r != _widgets.rend(); r++ )
if ( ! ( (*r)->offset() > ets || (*r)->offset() + (*r)->length() < sts ) )
if ( ! ( (*r)->start() > ets || (*r)->start() + (*r)->length() < sts ) )
(*r)->select();
}

@@ -236,14 +236,14 @@ Sequence::snap ( Sequence_Widget *r )

if ( abs( rx1 - wx2 ) < snap_pixels )
{
r->offset( w->offset() + w->length() + 1 );
r->start( w->start() + w->length() + 1 );

return;
}

if ( abs( rx2 - wx1 ) < snap_pixels )
{
r->offset( ( w->offset() - r->length() ) - 1 );
r->start( ( w->start() - r->length() ) - 1 );

return;
}
@@ -252,10 +252,10 @@ Sequence::snap ( Sequence_Widget *r )

nframes_t f;

if ( timeline->nearest_line( r->offset(), &f ) )
if ( timeline->nearest_line( r->start(), &f ) )
{
// printf( "snap frame is %lu\n", f );
r->offset( f );
r->start( f );
}
}



+ 2
- 3
Timeline/Sequence_Point.C View File

@@ -22,8 +22,7 @@
void
Sequence_Point::get ( Log_Entry &e ) const
{
e.add( ":x", _r->offset );
e.add( ":sequence", _sequence );
Sequence_Widget::get( e );
}

void
@@ -37,7 +36,7 @@ Sequence_Point::set ( Log_Entry &e )

e.get( i, &s, &v );

if ( ! strcmp( ":x", s ) )
if ( ! strcmp( ":start", s ) )
{
sequence()->sort();
}


+ 0
- 2
Timeline/Sequence_Point.H View File

@@ -56,8 +56,6 @@ public:
return sequence()->x() + sequence()->w() + abs_w();
else
return x;


}

nframes_t length ( void ) const { return timeline->x_to_ts( abs_w() ); }


+ 42
- 10
Timeline/Sequence_Region.C View File

@@ -20,6 +20,35 @@
#include "Sequence_Region.H"
#include "Track.H"

void
Sequence_Region::get ( Log_Entry &e ) const
{
e.add( ":color", (int)_box_color );
e.add( ":length", _r->length );

Sequence_Widget::get( e );
}


void
Sequence_Region::set ( Log_Entry &e )
{
for ( int i = 0; i < e.size(); ++i )
{
const char *s, *v;

e.get( i, &s, &v );

if ( ! strcmp( s, ":color" ) )
_box_color = (Fl_Color)atoll( v );
else if ( ! strcmp( s, ":length" ) )
_r->length = atoll( v );

}

Sequence_Widget::set( e );
}


void
Sequence_Region::draw_box ( void )
@@ -53,14 +82,17 @@ Sequence_Region::trim ( enum trim_e t, int X )

long td = timeline->x_to_ts( d );

if ( td < 0 && _r->start < 0 - td )
td = 0 - _r->start;
if ( td < 0 && _r->offset < 0 - td )
td = 0 - _r->offset;

if ( td > 0 && td >= _r->length )
td = _r->length - timeline->x_to_ts( 1 );

if ( _r->start + td >= _r->end )
td = (_r->end - _r->start) - timeline->x_to_ts( 1 );
// td = _r->length - timeline->x_to_ts( 1 );

_r->start += td;
_r->offset += td;
_r->start += td;
_r->length -= td;
break;
}
case RIGHT:
@@ -71,12 +103,12 @@ Sequence_Region::trim ( enum trim_e t, int X )

long td = timeline->x_to_ts( d );

// printf( "%li %li\n", td, _r->end - _r->start );
// printf( "%li %li\n", td, _r->length - _r->offset );

if ( td >= 0 && _r->end - _r->start < td )
_r->end = _r->start + timeline->x_to_ts( 1 );
if ( td >= 0 && _r->length < td )
_r->length = timeline->x_to_ts( 1 );
else
_r->end -= td;
_r->length -= td;

break;
}
@@ -105,7 +137,7 @@ Sequence_Region::handle ( int m )
int ret;

Logger _log( this );
//log_r->start();
//log_r->offset();

switch ( m )
{


+ 3
- 24
Timeline/Sequence_Region.H View File

@@ -23,36 +23,15 @@
#include "Sequence_Widget.H"

/* Base class representing a /region/ of time on a /sequence/, with
controls for the start and end points. */
controls for the offset and length points. */

class Sequence_Region : public Sequence_Widget
{

protected:

virtual void get ( Log_Entry &e ) const
{
e.add( ":color", (int)_box_color );

Sequence_Widget::get( e );
}


void
virtual set ( Log_Entry &e )
{
for ( int i = 0; i < e.size(); ++i )
{
const char *s, *v;

e.get( i, &s, &v );

if ( ! strcmp( s, ":color" ) )
_box_color = (Fl_Color)atoll( v );
}

Sequence_Widget::set( e );
}
virtual void get ( Log_Entry &e ) const;
virtual void set ( Log_Entry &e );

Sequence_Region ( )
{


+ 56
- 4
Timeline/Sequence_Widget.C View File

@@ -33,6 +33,58 @@ Sequence_Widget * Sequence_Widget::_pushed = NULL;
Sequence_Widget * Sequence_Widget::_belowmouse = NULL;
Fl_Color Sequence_Widget::_selection_color = FL_MAGENTA;

void
Sequence_Widget::get ( Log_Entry &e ) const
{
e.add( ":start", _r->start );
// e.add( ":offset", _r->offset );
// e.add( ":length", _r->length );
e.add( ":sequence", _sequence );
e.add( ":selected", selected() );
}

void
Sequence_Widget::set ( Log_Entry &e )
{
for ( int i = 0; i < e.size(); ++i )
{
const char *s, *v;

e.get( i, &s, &v );

if ( ! strcmp( s, ":start" ) )
_r->start = atoll( v );
// else if ( ! strcmp( s, ":offset" ) )
// _r->offset = atoll( v );
// else if ( ! strcmp( s, ":length" ) )
// _r->length = atoll( v );
else if ( ! strcmp( s, ":selected" ) )
{
if ( atoi( v ) )
select();
else
deselect();
}
else if ( ! strcmp( s, ":sequence" ) )
{
int i;
sscanf( v, "%X", &i );
Sequence *t = (Sequence*)Loggable::find( i );

assert( t );

t->add( this );
}
// else
// e.erase( i );
}

if ( _sequence )
_sequence->redraw();

}


void
Sequence_Widget::draw_label ( const char *label, Fl_Align align, Fl_Color color )
{
@@ -172,7 +224,7 @@ Sequence_Widget::handle ( int m )
case FL_RELEASE:
if ( _drag )
{
end_drag();
length_drag();
_log.release();
}

@@ -194,15 +246,15 @@ Sequence_Widget::handle ( int m )
{
const nframes_t of = timeline->x_to_offset( X );

if ( of >= _drag->offset )
if ( of >= _drag->start )
{
_r->offset = of - _drag->offset;
_r->start = of - _drag->start;

if ( Sequence_Widget::_current == this )
sequence()->snap( this );
}
else
_r->offset = 0;
_r->start = 0;

}



+ 30
- 79
Timeline/Sequence_Widget.H View File

@@ -30,21 +30,21 @@ class Sequence_Widget;

struct Drag
{
/* mouse coords at start of drag */
/* mouse coords at offset of drag */
int x;
int y;
int state;

nframes_t offset;
nframes_t start;

Drag( int X, int Y, nframes_t offset=0 ) : x( X ), y( Y ), offset( offset ) { state = 0; }
Drag( int X, int Y, nframes_t start=0 ) : x( X ), y( Y ), start( start ) { state = 0; }
};

struct Range
{
nframes_t offset; /* where on the timeline */
nframes_t start; /* first sample from clip */
nframes_t end; /* last sample from clip */
nframes_t start; /* where on the timeline */
nframes_t offset; /* first sample from clip */
nframes_t length; /* total number of samples */
};

/* Base class for virtual widget on a track */
@@ -79,56 +79,8 @@ protected:

Drag *_drag;


virtual void get ( Log_Entry &e ) const
{
e.add( ":x", _r->offset );
e.add( ":l", _r->start );
e.add( ":r", _r->end );
e.add( ":sequence", _sequence );
e.add( ":selected", selected() );
}

virtual void
set ( Log_Entry &e )
{
for ( int i = 0; i < e.size(); ++i )
{
const char *s, *v;

e.get( i, &s, &v );

if ( ! strcmp( s, ":x" ) )
_r->offset = atoll( v );
else if ( ! strcmp( s, ":l" ) )
_r->start = atoll( v );
else if ( ! strcmp( s, ":r" ) )
_r->end = atoll( v );
else if ( ! strcmp( s, ":selected" ) )
{
if ( atoi( v ) )
select();
else
deselect();
}
else if ( ! strcmp( s, ":sequence" ) )
{
int i;
sscanf( v, "%X", &i );
Sequence *t = (Sequence*)Loggable::find( i );

assert( t );

t->add( this );
}
// else
// e.erase( i );
}

if ( _sequence )
_sequence->redraw();

}
virtual void get ( Log_Entry &e ) const;
virtual void set ( Log_Entry &e );

public:

@@ -138,7 +90,7 @@ public:

_r = &_range;

_r->offset = _r->start = _r->end = 0;
_r->start = _r->offset = _r->length = 0;

_drag = NULL;

@@ -234,7 +186,7 @@ public:
_r = new Range( _range );
}

void end_drag ( void )
void length_drag ( void )
{
_range = *_r;
delete _r;
@@ -245,26 +197,26 @@ public:
}

void
offset ( nframes_t where )
start ( nframes_t where )
{

if ( ! selected() )
{
redraw();
_r->offset = where;
_r->start = where;
}
else
{
long d = where - _r->offset;
long d = where - _r->start;

for ( list <Sequence_Widget *>::iterator i = _selection.begin(); i != _selection.end(); i++ )
{
(*i)->redraw();

if ( d < 0 )
(*i)->_r->offset -= 0 - d;
(*i)->_r->start -= 0 - d;
else
(*i)->_r->offset += d;
(*i)->_r->start += d;

}
}
@@ -284,18 +236,18 @@ public:
/* used by regions */
virtual int x ( void ) const
{
return _r->offset < timeline->xoffset ? _sequence->x() : min( _sequence->x() + _sequence->w(), _sequence->x() + timeline->ts_to_x( _r->offset - timeline->xoffset ) );
return _r->start < timeline->xoffset ? _sequence->x() : min( _sequence->x() + _sequence->w(), _sequence->x() + timeline->ts_to_x( _r->start - timeline->xoffset ) );
}

/* use this as x() when you need to draw lines between widgets */
int line_x ( void ) const
{
return _r->offset < timeline->xoffset ? max( -32768, _sequence->x() - timeline->ts_to_x( timeline->xoffset - _r->offset )) : min( 32767, _sequence->x() + timeline->ts_to_x( _r->offset - timeline->xoffset ) );
return _r->start < timeline->xoffset ? max( -32768, _sequence->x() - timeline->ts_to_x( timeline->xoffset - _r->start )) : min( 32767, _sequence->x() + timeline->ts_to_x( _r->start - timeline->xoffset ) );
}

virtual int w ( void ) const
{
int tx = timeline->ts_to_x( _r->offset );
int tx = timeline->ts_to_x( _r->start );

int rw;
if ( tx < scroll_x() )
@@ -306,8 +258,8 @@ public:
return min( rw, _sequence->w() );
}

int abs_x ( void ) const { return timeline->ts_to_x( _r->offset ); }
virtual int abs_w ( void ) const { return timeline->ts_to_x( _r->end - _r->start ); }
int abs_x ( void ) const { return timeline->ts_to_x( _r->start ); }
virtual int abs_w ( void ) const { return timeline->ts_to_x( _r->length ); }

Fl_Color color ( void ) const { return _color; }
void color ( Fl_Color v ) { _color = v; }
@@ -318,22 +270,21 @@ public:
Sequence * sequence ( void ) const { return _sequence; }
void sequence ( Sequence *t ) { _sequence = t; }

nframes_t offset ( void ) const { return _r->offset; }
// void offset ( nframes_t o ) { _r->offset = o; }

void end ( nframes_t v ) { _r->end = v; }
nframes_t end ( void ) const { return _r->end; }
void start ( nframes_t v ) { _r->start = v; }
nframes_t start ( void ) const { return _r->start; }
// void start ( nframes_t o ) { _r->start = o; }

void length ( nframes_t v ) { _r->length = v; }
virtual nframes_t length ( void ) const { return _r->length; }
void offset ( nframes_t v ) { _r->offset = v; }
nframes_t offset ( void ) const { return _r->offset; }

/** convert a screen x coord into an offset into the region */
/** convert a screen x coord into an start into the region */
nframes_t x_to_offset ( int X )
{
return timeline->x_to_ts( scroll_x() + ( X - _sequence->x() ) ) - _r->offset;
return timeline->x_to_ts( scroll_x() + ( X - _sequence->x() ) ) - _r->start;
}

int active_r ( void ) const { return _sequence->active_r(); }
virtual nframes_t length ( void ) const { return _r->end - _r->start; }

virtual Fl_Boxtype box ( void ) const { return FL_UP_BOX; }
virtual Fl_Align align ( void ) const { return (Fl_Align)0; }
@@ -366,13 +317,13 @@ public:
bool
operator< ( const Sequence_Widget & rhs )
{
return _r->offset < rhs._r->offset;
return _r->start < rhs._r->start;
}

bool
operator<=( const Sequence_Widget & rhs )
{
return _r->offset <= rhs._r->offset;
return _r->start <= rhs._r->start;
}

virtual void draw_label ( const char *label, Fl_Align align, Fl_Color color=(Fl_Color)0 );


+ 2
- 2
Timeline/Tempo_Point.C View File

@@ -25,7 +25,7 @@
void
Tempo_Point::get ( Log_Entry &e ) const
{
e.add( ":x", _r->offset );
e.add( ":start", _r->offset );
e.add( ":tempo", _tempo );
}

@@ -38,7 +38,7 @@ Tempo_Point::set ( Log_Entry &e )

e.get( i, &s, &v );

if ( ! strcmp( s, ":x" ) )
if ( ! strcmp( s, ":start" ) )
_r->offset = atol( v );
else if ( ! strcmp( s, ":tempo" ) )
_tempo = atof( v );


+ 2
- 2
Timeline/Time_Point.C View File

@@ -24,7 +24,7 @@
void
Time_Point::get ( Log_Entry &e ) const
{
e.add( ":x", _r->offset );
e.add( ":start", _r->offset );
e.add( ":beats_per_bar", _time.beats_per_bar );
e.add( ":beat_type", _time.beat_type );
}
@@ -38,7 +38,7 @@ Time_Point::set ( Log_Entry &e )

e.get( i, &s, &v );

if ( ! strcmp( s, ":x" ) )
if ( ! strcmp( s, ":start" ) )
_r->offset = atol( v );
else if ( ! strcmp( s, ":beats_per_bar" ) )
_time.beats_per_bar = atoi( v );


Loading…
Cancel
Save