X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Ftrack.C;h=24de614f43d48fb788fffe1c7a21e0e053ce6649;hp=4afeeab86d9a369a09549ab546aa66b201b88165;hb=ab958f323d68316c450ef81ba296536580620163;hpb=b46dd3711f7aaa94d2df9f27cd2ce16f7487693a diff --git a/cinelerra-5.1/cinelerra/track.C b/cinelerra-5.1/cinelerra/track.C index 4afeeab8..24de614f 100644 --- a/cinelerra-5.1/cinelerra/track.C +++ b/cinelerra-5.1/cinelerra/track.C @@ -474,23 +474,17 @@ void Track::insert_plugin_set(Track *track, int edit_autos) { // Extend plugins if no incoming plugins - if(!track->plugin_set.total) - { - shift_effects(position, - min_length, - edit_autos); - } - else - for(int i = 0; i < track->plugin_set.total; i++) - { - if(i >= plugin_set.total) - plugin_set.append(new PluginSet(edl, this)); + if( track->plugin_set.total ) { + for(int i = 0; i < track->plugin_set.total; i++) { + if(i >= plugin_set.total) + plugin_set.append(new PluginSet(edl, this)); - plugin_set.values[i]->insert_edits(track->plugin_set.values[i], - position, - min_length, - edit_autos); + plugin_set.values[i]->insert_edits(track->plugin_set.values[i], + position, min_length, edit_autos); + } } + else + shift_effects(position, min_length, edit_autos, 0); } @@ -670,11 +664,11 @@ void Track::shift_keyframes(int64_t position, int64_t length) // Effect keyframes are shifted in shift_effects } -void Track::shift_effects(int64_t position, int64_t length, int edit_autos) +void Track::shift_effects(int64_t position, int64_t length, int edit_autos, Edits *trim_edits) { - for(int i = 0; i < plugin_set.total; i++) - { - plugin_set.values[i]->shift_effects(position, length, edit_autos); + for( int i=0; ishift_effects(position, length, edit_autos); } } @@ -1178,32 +1172,28 @@ int Track::blade(double position) int Track::clear(double start, double end, int edit_edits, int edit_labels, int edit_plugins, - int edit_autos, int convert_units, Edits *trim_edits) + int edit_autos, Edits *trim_edits) { -// Edits::move_auto calls this routine after the units are converted to the track -// format. -//printf("Track::clear 1 %d %d %d\n", edit_edits, edit_labels, edit_plugins); - if(convert_units) - { - start = to_units(start, 0); - end = to_units(end, 1); - } - - - if(edit_autos) - automation->clear((int64_t)start, (int64_t)end, 0, 1); + return clear(to_units(start, 0), to_units(end, 1), + edit_edits, edit_labels, edit_plugins, edit_autos, trim_edits); +} - if(edit_plugins) - { - for(int i = 0; i < plugin_set.total; i++) - { +int Track::clear(int64_t start, int64_t end, + int edit_edits, int edit_labels, int edit_plugins, + int edit_autos, Edits *trim_edits) +{ +//printf("Track::clear 1 %d %d %d\n", edit_edits, edit_labels, edit_plugins); + if( edit_autos ) + automation->clear(start, end, 0, 1); + if( edit_plugins ) { + int edit_keyframes = edit_plugins < 0 ? 1 : edit_autos; + for(int i = 0; i < plugin_set.total; i++) { if(!trim_edits || trim_edits == (Edits*)plugin_set.values[i]) - plugin_set.values[i]->clear((int64_t)start, (int64_t)end, edit_autos); + plugin_set.values[i]->clear(start, end, edit_keyframes); } } - - if(edit_edits) - edits->clear((int64_t)start, (int64_t)end); + if( edit_edits ) + edits->clear(start, end); return 0; } @@ -1225,25 +1215,13 @@ int Track::popup_transition(int cursor_x, int cursor_y) -int Track::modify_edithandles(double oldposition, - double newposition, - int currentend, - int handle_mode, - int edit_labels, - int edit_plugins, - int edit_autos) +int Track::modify_edithandles(double oldposition, double newposition, + int currentend, int handle_mode, int edit_labels, + int edit_plugins, int edit_autos, int group_id) { - edits->modify_handles(oldposition, - newposition, - currentend, - handle_mode, - 1, - edit_labels, - edit_plugins, - edit_autos, - 0); - - + edits->modify_handles(oldposition, newposition, + currentend, handle_mode, 1, edit_labels, edit_plugins, + edit_autos, 0, group_id); return 0; } @@ -1258,16 +1236,9 @@ int Track::modify_pluginhandles(double oldposition, for(int i = 0; i < plugin_set.total; i++) { if(!trim_edits || trim_edits == (Edits*)plugin_set.values[i]) - plugin_set.values[i]->modify_handles(oldposition, - newposition, - currentend, - handle_mode, + plugin_set.values[i]->modify_handles(oldposition, newposition, // Don't allow plugin tweeks to affect edits. - 0, - edit_labels, - 1, - edit_autos, - trim_edits); + currentend, handle_mode, 0, 0, 0, 0, 0, 0); } return 0; } @@ -1275,13 +1246,17 @@ int Track::modify_pluginhandles(double oldposition, int Track::paste_silence(double start, double end, int edit_plugins, int edit_autos) { - int64_t start_i = to_units(start, 0); - int64_t end_i = to_units(end, 1); - - edits->paste_silence(start_i, end_i); - if(edit_autos) shift_keyframes(start_i, end_i - start_i); - if(edit_plugins) shift_effects(start_i, end_i - start_i, edit_autos); + return paste_silence(to_units(start, 0), to_units(end, 1), + edit_plugins, edit_autos); +} +int Track::paste_silence(int64_t start, int64_t end, int edit_plugins, int edit_autos) +{ + edits->paste_silence(start, end); + if( edit_autos ) + shift_keyframes(start, end - start); + if( edit_plugins ) + shift_effects(start, end - start, edit_autos, 0); edits->optimize(); return 0; }