// Go in using the edit handle interface
int64_t starting_length = current_edit->length;
- if(length_units < current_edit->length)
- {
- current_edit->shift_end_in(MOVE_ALL_EDITS,
- current_edit->startproject + length_units,
- current_edit->startproject + current_edit->length,
- 1,
- edl->session->labels_follow_edits,
- edl->session->plugins_follow_edits,
- edl->session->autos_follow_edits,
- 0);
- }
- else
- {
- current_edit->shift_end_out(MOVE_ALL_EDITS,
- current_edit->startproject + length_units,
- current_edit->startproject + current_edit->length,
- 1,
- edl->session->labels_follow_edits,
- edl->session->plugins_follow_edits,
- edl->session->autos_follow_edits,
- 0);
- }
+ current_edit->shift_end(MOVE_RIPPLE,
+ current_edit->startproject + length_units,
+ current_edit->startproject + current_edit->length,
+ 0,
+ edl->session->autos_follow_edits,
+ edl->session->plugins_follow_edits,
+ 0);
int64_t ending_length = current_edit->length;
edl->labels->modify_handles(
current_track->from_units(current_edit->startproject + starting_length),
current_track->from_units(current_edit->startproject + ending_length),
- 1,
- MOVE_ALL_EDITS,
1);
}
// Go in using the edit handle interface
int64_t starting_length = current_edit->length;
- if(length_units < current_edit->length)
- {
- current_edit->shift_end_in(MOVE_ALL_EDITS,
- current_edit->startproject + length_units,
- current_edit->startproject + current_edit->length,
- 1,
- edl->session->labels_follow_edits,
- edl->session->plugins_follow_edits,
- edl->session->autos_follow_edits,
- 0);
- }
- else
- {
- current_edit->shift_end_out(MOVE_ALL_EDITS,
- current_edit->startproject + length_units,
- current_edit->startproject + current_edit->length,
- 1,
- edl->session->labels_follow_edits,
- edl->session->plugins_follow_edits,
- edl->session->autos_follow_edits,
- 0);
- }
+ current_edit->shift_end(MOVE_RIPPLE,
+ current_edit->startproject + length_units,
+ current_edit->startproject + current_edit->length,
+ 0,
+ edl->session->autos_follow_edits,
+ edl->session->plugins_follow_edits,
+ 0);
int64_t ending_length = current_edit->length;
- if(edl->session->labels_follow_edits && first_track)
- {
-// printf("Tracks::set_edit_length %d %f %f\n",
-// __LINE__,
+ if(edl->session->labels_follow_edits && first_track) {
+// printf("Tracks::set_edit_length %d %f %f\n", __LINE__,
// current_track->from_units(current_edit->startproject + starting_length),
// current_track->from_units(current_edit->startproject + ending_length));
edl->labels->modify_handles(
current_track->from_units(current_edit->startproject + starting_length),
current_track->from_units(current_edit->startproject + ending_length),
- 1,
- MOVE_ALL_EDITS,
1);
}
}
FileXML track_xml;
- source_track->copy(source_start, source_end, &track_xml, "");
+ source_track->copy(COPY_TRACKS, source_start, source_end, &track_xml, "");
if( !track_xml.read_tag() )
clip_track->load(&track_xml, 0, LOAD_ALL);
// =========================================== EDL editing
-int Tracks::copy(double start,
- double end,
- int all,
- FileXML *file,
- const char *output_path)
+int Tracks::copy(int copy_flags, double start, double end,
+ FileXML *file, const char *output_path)
{
-// nothing selected
- if(start == end && !all) return 1;
-
- Track* current;
-
- for(current = first;
- current;
- current = NEXT)
- {
- if(current->record || all)
- {
- current->copy(start, end, file,output_path);
- }
+ int all = (copy_flags & COPY_ALL) ? 1 : 0;
+// if nothing selected
+ if( start == end && !all ) return 1;
+ for( Track *track=first; track; track=track->next ) {
+ if( track->record || all )
+ track->copy(copy_flags, start, end, file, output_path);
}
-
return 0;
}
int Tracks::move_tracks_up()
{
- Track *track, *next_track;
int result = 0;
-
- for(track = first;
- track;
- track = next_track)
- {
- next_track = track->next;
-
- if(track->record)
- {
- if(track->previous)
- {
- change_modules(number_of(track->previous), number_of(track), 1);
-
- swap(track->previous, track);
- result = 1;
- }
+ Track *next = first;
+ while( next ) {
+ Track *track = next; next = track->next;
+ if( !track->record ) continue;
+ if( track->previous ) {
+ change_modules(number_of(track->previous), number_of(track), 1);
+ swap(track->previous, track);
+ result = 1;
}
}
int Tracks::move_tracks_down()
{
- Track *track, *previous_track;
int result = 0;
-
- for(track = last;
- track;
- track = previous_track)
- {
- previous_track = track->previous;
-
- if(track->record)
- {
- if(track->next)
- {
- change_modules(number_of(track), number_of(track->next), 1);
-
- swap(track, track->next);
- result = 1;
- }
+ Track *prev = last;
+ while( prev ) {
+ Track *track = prev; prev = track->previous;
+ if( !track->record ) continue;
+ if( track->next ) {
+ change_modules(number_of(track), number_of(track->next), 1);
+ swap(track, track->next);
+ result = 1;
}
}
}
-
void Tracks::paste_audio_transition(PluginServer *server)
{
for(Track *current = first; current; current = NEXT)
track->modify_edithandles(oldposition, newposition,
currentend, handle_mode, edit_labels,
edit_plugins, edit_autos, group_id);
+// labels follow first armed track
+ edit_labels = 0;
}
return 0;
}