X-Git-Url: https://cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Ftracksedit.C;h=d97800ce9a750458f694fde3d8bef4fa304eda2f;hb=9a7a880b549aed850fd3c29abb152d69a94e23f8;hp=6655eb8e32d1a0903eec24e5cb688ee0af5107b7;hpb=e51e8d64881ef494548697203c82e5be8646cd4b;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/tracksedit.C b/cinelerra-5.1/cinelerra/tracksedit.C index 6655eb8e..d97800ce 100644 --- a/cinelerra-5.1/cinelerra/tracksedit.C +++ b/cinelerra-5.1/cinelerra/tracksedit.C @@ -208,7 +208,8 @@ void Tracks::set_edit_length(double start, double end, double length) int64_t length_units = current_track->to_units(end_time, 0) - total_units; if(length_units < 1) length_units = 1; -printf("Tracks::set_edit_length %d %f %f\n", __LINE__, end_time, current_track->from_units(total_units)); +//printf("Tracks::set_edit_length %d %f %f\n", __LINE__, +// end_time, current_track->from_units(total_units)); total_units += length_units; // Go in using the edit handle interface @@ -740,6 +741,39 @@ void Tracks::move_edits(ArrayList *edits, } } +void Tracks::move_group(EDL *group, Track *first_track, double position, int overwrite) +{ + 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; + edit->group_id = 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; + if( overwrite ) + 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;