X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fpluginset.C;h=86bb4b6687290e24f3904ec637b021481f466cfc;hp=cdc4a7848d1bd7faa778d3bf6274521afc253ea2;hb=3b4b6f588c4f2643316afcbc486ca6a35c16a431;hpb=ab209efd7893132268c7dc159cd78a4574276946 diff --git a/cinelerra-5.1/cinelerra/pluginset.C b/cinelerra-5.1/cinelerra/pluginset.C index cdc4a784..86bb4b66 100644 --- a/cinelerra-5.1/cinelerra/pluginset.C +++ b/cinelerra-5.1/cinelerra/pluginset.C @@ -44,13 +44,6 @@ PluginSet::~PluginSet() } -PluginSet& PluginSet::operator=(PluginSet& plugins) -{ -printf("PluginSet::operator= 1\n"); - copy_from(&plugins); - return *this; -} - void PluginSet::copy_from(PluginSet *src) { while(last) delete last; @@ -59,6 +52,8 @@ void PluginSet::copy_from(PluginSet *src) Plugin *new_plugin; append(new_plugin = (Plugin*)create_edit()); new_plugin->copy_from(current); +// update gui_id when copying edl + new_plugin->gui_id = current->gui_id; } this->record = src->record; } @@ -343,6 +338,19 @@ void PluginSet::shift_effects(int64_t start, int64_t length, int edit_autos) } } +void PluginSet::paste_silence(int64_t start, int64_t end, int edit_autos) +{ + Plugin *new_plugin = (Plugin *) insert_new_edit(start); + int64_t length = end - start; + new_plugin->length = length; + while( (new_plugin=(Plugin *)new_plugin->next) != 0 ) { + new_plugin->startproject += length; + if( !edit_autos ) continue; + new_plugin->keyframes->default_auto->position += length; + new_plugin->keyframes->paste_silence(start, end); + } +} + void PluginSet::copy(int64_t start, int64_t end, FileXML *file) { file->tag.set_title("PLUGINSET"); @@ -429,6 +437,13 @@ int PluginSet::optimize() int result = 1; Plugin *current_edit; +// trim plugins before position 0 + while( first && first->startproject+first->length < 0 ) + delete first; + if( first && first->startproject < 0 ) { + first->length += first->startproject; + first->startproject = 0; + } // Delete keyframes out of range for(current_edit = (Plugin*)first;