}
}
+int Tracks::clear_hard_edges(double start, double end)
+{
+ for( Track *track=first; track; track=track->next ) {
+ if( !track->record ) continue;
+ int64_t start_units = track->to_units(start, 0);
+ int64_t end_units = track->to_units(end, 0);
+
+ for( Edit *edit=track->edits->first; edit; edit=edit->next ) {
+ int64_t pos = edit->startproject;
+ if( pos > end_units ) break;
+ if( pos >= start_units ) {
+ edit->hard_left = 0;
+ if( edit->previous )
+ edit->previous->hard_right = 0;
+ }
+ pos += edit->length;
+ if( pos > end_units ) break;
+ if( pos >= start_units ) {
+ edit->hard_right = 0;
+ if( edit->next )
+ edit->next->hard_left = 0;
+ }
+ }
+ }
+ return 0;
+}
+
void Tracks::shuffle_edits(double start, double end)
{
// This doesn't affect automation or effects
}
}
}
+
void Tracks::align_edits(double start, double end)
{
// This doesn't affect automation or effects
- ArrayList<double> times;
-
- for(Track *current_track = first;
- current_track;
- current_track = current_track->next)
- {
- if(current_track->record)
- {
- current_track->align_edits(start, end, ×);
- }
+ Track *master_track = 0;
+ for( Track *track=first; track; track=track->next ) {
+ if( !track->record ) continue;
+ if( !master_track )
+ master_track = track;
+ else
+ track->align_edits(start, end, master_track);
}
}
int Tracks::move_tracks_up()
{
- Track *track, *next_track;
int result = 0;
-
- for(track = first;
- track;
- track = next_track)
- {
- next_track = track->next;
-
- if(track->record)
- {
- if(track->previous)
- {
- change_modules(number_of(track->previous), number_of(track), 1);
-
- swap(track->previous, track);
- result = 1;
- }
+ Track *next = first;
+ while( next ) {
+ Track *track = next; next = track->next;
+ if( !track->record ) continue;
+ if( track->previous ) {
+ change_modules(number_of(track->previous), number_of(track), 1);
+ swap(track->previous, track);
+ result = 1;
}
}
int Tracks::move_tracks_down()
{
- Track *track, *previous_track;
int result = 0;
-
- for(track = last;
- track;
- track = previous_track)
- {
- previous_track = track->previous;
-
- if(track->record)
- {
- if(track->next)
- {
- change_modules(number_of(track), number_of(track->next), 1);
-
- swap(track, track->next);
- result = 1;
- }
+ Track *prev = last;
+ while( prev ) {
+ Track *track = prev; prev = track->previous;
+ if( !track->record ) continue;
+ if( track->next ) {
+ change_modules(number_of(track), number_of(track->next), 1);
+ swap(track, track->next);
+ result = 1;
}
}
}
-
void Tracks::paste_audio_transition(PluginServer *server)
{
for(Track *current = first; current; current = NEXT)