X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Ftrack.C;h=3c092b73f7188ec8ea2080cdceb15a7e88f7de6f;hp=bac9abd68050bed5c1f8908fa9e92e239f8e4b7d;hb=2e28d225c343f02500594688bf8d0528df40600c;hpb=7fd85fb66168f6b518c5f2d73e04036e87faa0e1 diff --git a/cinelerra-5.1/cinelerra/track.C b/cinelerra-5.1/cinelerra/track.C index bac9abd6..3c092b73 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); } @@ -517,7 +511,7 @@ Plugin* Track::insert_effect(const char *title, if(source_track) { Plugin *source_plugin = source_track->get_current_plugin( - edl->local_session->get_selectionstart(), + edl->local_session->get_selectionstart(1), shared_location->plugin, PLAY_FORWARD, 1, @@ -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,27 @@ 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 ) { + 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_autos); } } - - if(edit_edits) - edits->clear((int64_t)start, (int64_t)end); + if( edit_edits ) + edits->clear(start, end); return 0; } @@ -1225,25 +1214,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 +1235,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 +1245,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; }