Clean up region splitting code.
This commit is contained in:
parent
99937affb9
commit
71bd1c27d9
|
@ -645,6 +645,22 @@ Audio_Region::draw ( void )
|
|||
|
||||
}
|
||||
|
||||
/** split region at absolute frame /where/ */
|
||||
void
|
||||
Audio_Region::split ( nframes_t where )
|
||||
{
|
||||
nframes_t old_fade_in = _fade_in.length;
|
||||
|
||||
_fade_in.length = 256;
|
||||
|
||||
Audio_Region *copy = new Audio_Region( *this );
|
||||
|
||||
_fade_in.length = old_fade_in;
|
||||
_fade_out.length = 256;
|
||||
|
||||
Sequence_Region::split( copy, where );
|
||||
}
|
||||
|
||||
int
|
||||
Audio_Region::handle ( int m )
|
||||
{
|
||||
|
@ -679,19 +695,7 @@ Audio_Region::handle ( int m )
|
|||
{
|
||||
Loggable::block_start();
|
||||
|
||||
nframes_t old_fade_in = _fade_in.length;
|
||||
_fade_in.length = 256;
|
||||
|
||||
Audio_Region *copy = new Audio_Region( *this );
|
||||
|
||||
_fade_in.length = old_fade_in;
|
||||
|
||||
trim( RIGHT, X );
|
||||
copy->trim( LEFT, X );
|
||||
|
||||
_fade_out.length = 256;
|
||||
|
||||
sequence()->add( copy );
|
||||
split( timeline->x_to_offset( X ) );
|
||||
|
||||
log_end();
|
||||
|
||||
|
|
|
@ -154,6 +154,7 @@ public:
|
|||
Fl_Align align ( void ) const { return (Fl_Align)(FL_ALIGN_LEFT | FL_ALIGN_BOTTOM /*| FL_ALIGN_CLIP*/ | FL_ALIGN_INSIDE); }
|
||||
|
||||
void normalize ( void );
|
||||
void split ( nframes_t where );
|
||||
|
||||
/* Engine */
|
||||
nframes_t read ( sample_t *buf, nframes_t pos, nframes_t nframes, int channel ) const;
|
||||
|
|
|
@ -124,6 +124,17 @@ Sequence_Region::trim ( enum trim_e t, int X )
|
|||
}
|
||||
}
|
||||
|
||||
/** split region at absolute frame /where/. due to inheritance issues,
|
||||
* the copy must be made in the derived classed and passed in */
|
||||
void
|
||||
Sequence_Region::split ( Sequence_Region * copy, nframes_t where )
|
||||
{
|
||||
trim_right( where );
|
||||
copy->trim_left( where );
|
||||
sequence()->add( copy );
|
||||
}
|
||||
|
||||
|
||||
#include "FL/test_press.H"
|
||||
|
||||
int
|
||||
|
|
|
@ -51,4 +51,5 @@ public:
|
|||
enum trim_e { NO, LEFT, RIGHT };
|
||||
void trim ( enum trim_e t, int X );
|
||||
|
||||
void split ( Sequence_Region *copy, nframes_t where );
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue