X-Git-Url: https://cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Ftrack.C;h=ee16058bd1db7054d97c5a3f9eb9979288402c77;hb=b1649fe7b38cfb4bbec58b19fb8dda2daa0ce520;hp=3c092b73f7188ec8ea2080cdceb15a7e88f7de6f;hpb=834732af87bfd7f1d4035109f31e48db12b415fa;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/track.C b/cinelerra-5.1/cinelerra/track.C index 3c092b73..ee16058b 100644 --- a/cinelerra-5.1/cinelerra/track.C +++ b/cinelerra-5.1/cinelerra/track.C @@ -80,9 +80,10 @@ void Track::create_objects() { } - -int Track::copy_settings(Track *track) +int Track::copy_settings(Track *track, int do_title) { + if( do_title ) + strcpy(this->title, track->title); this->expand_view = track->expand_view; this->draw = track->draw; this->gang = track->gang; @@ -92,7 +93,6 @@ int Track::copy_settings(Track *track) this->play = track->play; this->track_w = track->track_w; this->track_h = track->track_h; - strcpy(this->title, track->title); return 0; } @@ -194,12 +194,9 @@ void Track::copy_from(Track *track) { copy_settings(track); edits->copy_from(track->edits); - for(int i = 0; i < this->plugin_set.total; i++) - delete this->plugin_set.values[i]; this->plugin_set.remove_all_objects(); - for(int i = 0; i < track->plugin_set.total; i++) - { + for( int i=0; iplugin_set.total; ++i ) { PluginSet *new_plugin_set = plugin_set.append(new PluginSet(edl, this)); new_plugin_set->copy_from(track->plugin_set.values[i]); } @@ -444,7 +441,8 @@ void Track::insert_track(Track *track, //printf("Track::insert_track %d %s %jd\n", __LINE__, title, min_length); // Decide whether to copy settings based on load_mode - if(replace_default) copy_settings(track); + if( replace_default ) + copy_settings(track, 0); edits->insert_edits(track->edits, to_units(position, 0), @@ -853,46 +851,22 @@ void Track::synchronize_params(Track *track) } - - - int Track::dump(FILE *fp) { - fprintf(fp," Data type %d\n", data_type); + fprintf(fp," Data type %d, draw %d, gang %d, play %d, record %d, nudge %jd\n", + data_type, draw, gang, play, record, nudge); fprintf(fp," Title %s\n", title); fprintf(fp," Edits:\n"); for(Edit* current = edits->first; current; current = NEXT) - { current->dump(fp); - } automation->dump(fp); fprintf(fp," Plugin Sets: %d\n", plugin_set.total); - for(int i = 0; i < plugin_set.total; i++) - plugin_set.values[i]->dump(fp); -//printf("Track::dump 2\n"); + for( int i=0; idump(fp); return 0; } - - - - - - - - - - - - - - - - - - - Track::Track() : ListItem() { @@ -1062,10 +1036,8 @@ void Track::set_automation_mode(double selectionstart, -int Track::copy(double start, - double end, - FileXML *file, - const char *output_path) +int Track::copy(int copy_flags, double start, double end, + FileXML *file, const char *output_path) { // Use a copy of the selection in converted units // So copy_automation doesn't reconvert. @@ -1105,16 +1077,18 @@ int Track::copy(double start, // file->append_tag(); // file->append_newline(); - edits->copy(start_unit, end_unit, file, output_path); - - AutoConf auto_conf; - auto_conf.set_all(1); - automation->copy(start_unit, end_unit, file, 0, 0); + if( (copy_flags & COPY_EDITS) ) + edits->copy(start_unit, end_unit, file, output_path); + if( (copy_flags & COPY_AUTOS) ) { + AutoConf auto_conf; + auto_conf.set_all(1); + automation->copy(start_unit, end_unit, file, 0, 0); + } - for(int i = 0; i < plugin_set.total; i++) - { - plugin_set.values[i]->copy(start_unit, end_unit, file); + if( (copy_flags & COPY_PLUGINS) ) { + for( int i=0; icopy(start_unit, end_unit, file); } copy_derived(start_unit, end_unit, file); @@ -1186,9 +1160,10 @@ int Track::clear(int64_t start, int64_t end, 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(start, end, edit_autos); + plugin_set.values[i]->clear(start, end, edit_keyframes); } } if( edit_edits )