int EDL::copy_all(EDL *edl) { copy_session(edl); copy_assets(edl); copy_clips(edl); tracks->copy_from(edl->tracks); labels->copy_from(edl->labels); return 0; }
int EDL::copy_all(EDL *edl) { if(this == edl) return 0; index_state->copy_from(edl->index_state); nested_edls->clear(); copy_session(edl); copy_assets(edl); copy_clips(edl); tracks->copy_from(edl->tracks); labels->copy_from(edl->labels); return 0; }
int EDL::copy(double start, double end, int all, int is_clip, int is_vwindow, FileXML *file, const char *output_path, int rewind_it) { //printf("EDL::copy 1\n"); // begin file if(is_clip) file->tag.set_title("CLIP_EDL"); else if(is_vwindow) file->tag.set_title("VWINDOW_EDL"); else { file->tag.set_title("EDL"); file->tag.set_property("VERSION", CINELERRA_VERSION); // Save path for restoration of the project title from a backup. if(this->path[0]) { file->tag.set_property("PATH", path); } } file->append_tag(); file->append_newline(); // Set clipboard samples only if copying to clipboard if(!all) { file->tag.set_title("CLIPBOARD"); file->tag.set_property("LENGTH", end - start); file->append_tag(); file->append_newline(); file->append_newline(); } //printf("EDL::copy 1\n"); // Sessions local_session->save_xml(file, start); //printf("EDL::copy 1\n"); // Top level stuff. // if(!parent_edl) { // Need to copy all this from child EDL if pasting is desired. // Session session->save_xml(file); session->save_video_config(file); session->save_audio_config(file); // Folders for(int i = 0; i < folders.total; i++) { file->tag.set_title("FOLDER"); file->append_tag(); file->append_text(folders.values[i]); file->tag.set_title("/FOLDER"); file->append_tag(); file->append_newline(); } // Media // Don't replicate all assets for every clip. // The assets for the clips are probably in the mane EDL. if(!is_clip) copy_assets(start, end, file, all, output_path); // Clips // Don't want this if using clipboard if(all) { for(int i = 0; i < total_vwindow_edls(); i++) { get_vwindow_edl(i)->save_xml(file, output_path, 0, 1); } for(int i = 0; i < clips.total; i++) clips.values[i]->save_xml(file, output_path, 1, 0); } file->append_newline(); file->append_newline(); } //printf("EDL::copy 1\n"); labels->copy(start, end, file); //printf("EDL::copy 1\n"); tracks->copy(start, end, all, file, output_path); //printf("EDL::copy 2\n"); // terminate file if(is_clip) file->tag.set_title("/CLIP_EDL"); else if(is_vwindow) file->tag.set_title("/VWINDOW_EDL"); else file->tag.set_title("/EDL"); file->append_tag(); file->append_newline(); // For editing operations we want to rewind it for immediate pasting. // For clips and saving to disk leave it alone. if(rewind_it) { file->terminate_string(); file->rewind(); } return 0; }