X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Ftracksedit.C;h=b80a8887a0781200864511b60d1a9eb8f88d8ac9;hp=6655eb8e32d1a0903eec24e5cb688ee0af5107b7;hb=e23393f4ff9f772ac8f47926cf490dc87a630ed4;hpb=d5a0afb9bc8562f6c2698f88ff40790009a5e63c diff --git a/cinelerra-5.1/cinelerra/tracksedit.C b/cinelerra-5.1/cinelerra/tracksedit.C index 6655eb8e..b80a8887 100644 --- a/cinelerra-5.1/cinelerra/tracksedit.C +++ b/cinelerra-5.1/cinelerra/tracksedit.C @@ -740,6 +740,36 @@ void Tracks::move_edits(ArrayList *edits, } } +void Tracks::move_group(EDL *group, Track *first_track, double position) +{ + for( Track *track=first; track; track=track->next ) { + if( !track->record ) continue; + for( Edit *edit=track->edits->first; edit; edit=edit->next ) { + if( !edit->is_selected ) continue; + edit->mute(); edit->is_selected = 0; + } + } + Track *src = group->tracks->first; + for( Track *track=first_track; track && src; track=track->next ) { + if( !track->record ) continue; + int64_t pos = track->to_units(position, 0); + for( Edit *edit=src->edits->first; edit; edit=edit->next ) { + if( edit->silence() ) continue; + int64_t start = pos + edit->startproject; + int64_t end = start + edit->length; + track->edits->clear(start, end); + Edit *dst = track->edits->insert_new_edit(start); + dst->copy_from(edit); + dst->startproject = start; + dst->is_selected = 1; + while( (dst=dst->next) != 0 ) + dst->startproject += edit->length; + } + track->optimize(); + src = src->next; + } +} + void Tracks::move_effect(Plugin *plugin, Track *track, int64_t position) { Track *source_track = plugin->track;