projects
/
goodguy
/
cinelerra.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
configure.ac add with-cuda/nv, update cakewalk theme, add cuda/plugins=mandel+nbody...
[goodguy/cinelerra.git]
/
cinelerra-5.1
/
cinelerra
/
track.C
diff --git
a/cinelerra-5.1/cinelerra/track.C
b/cinelerra-5.1/cinelerra/track.C
index ddbc3837e66084651896e64c851d0e3610e0008c..ee16058bd1db7054d97c5a3f9eb9979288402c77 100644
(file)
--- 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;
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;
this->play = track->play;
this->track_w = track->track_w;
this->track_h = track->track_h;
- strcpy(this->title, track->title);
return 0;
}
return 0;
}
@@
-194,12
+194,9
@@
void Track::copy_from(Track *track)
{
copy_settings(track);
edits->copy_from(track->edits);
{
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();
this->plugin_set.remove_all_objects();
- for(int i = 0; i < track->plugin_set.total; i++)
- {
+ for( int i=0; i<track->plugin_set.total; ++i ) {
PluginSet *new_plugin_set = plugin_set.append(new PluginSet(edl, this));
new_plugin_set->copy_from(track->plugin_set.values[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
//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),
edits->insert_edits(track->edits,
to_units(position, 0),
@@
-474,23
+472,17
@@
void Track::insert_plugin_set(Track *track,
int edit_autos)
{
// Extend plugins if no incoming plugins
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);
}
}
@@
-670,11
+662,11
@@
void Track::shift_keyframes(int64_t position, int64_t length)
// Effect keyframes are shifted in shift_effects
}
// 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; i<plugin_set.total; ++i ) {
+ if( !trim_edits || trim_edits == (Edits*)plugin_set.values[i] )
+
plugin_set.values[i]->shift_effects(position, length, edit_autos);
}
}
}
}
@@
-859,46
+851,22
@@
void Track::synchronize_params(Track *track)
}
}
-
-
-
int Track::dump(FILE *fp)
{
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)
fprintf(fp," Title %s\n", title);
fprintf(fp," Edits:\n");
for(Edit* current = edits->first; current; current = NEXT)
- {
current->dump(fp);
current->dump(fp);
- }
automation->dump(fp);
fprintf(fp," Plugin Sets: %d\n", plugin_set.total);
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; i<plugin_set.total; ++i )
+ plugin_set[i]->dump(fp);
return 0;
}
return 0;
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Track::Track() : ListItem<Track>()
{
Track::Track() : ListItem<Track>()
{
@@
-1068,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.
{
// Use a copy of the selection in converted units
// So copy_automation doesn't reconvert.
@@
-1111,16
+1077,18
@@
int Track::copy(double start,
// file->append_tag();
// file->append_newline();
// 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; i<plugin_set.total; ++i )
+
plugin_set.values[i]->copy(start_unit, end_unit, file);
}
copy_derived(start_unit, end_unit, file);
}
copy_derived(start_unit, end_unit, file);
@@
-1192,9
+1160,10
@@
int Track::clear(int64_t start, int64_t end,
if( edit_autos )
automation->clear(start, end, 0, 1);
if( edit_plugins ) {
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])
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_
auto
s);
+ plugin_set.values[i]->clear(start, end, edit_
keyframe
s);
}
}
if( edit_edits )
}
}
if( edit_edits )
@@
-1220,25
+1189,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;
}
return 0;
}
@@
-1253,16
+1210,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])
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.
// 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;
}
}
return 0;
}
@@
-1280,7
+1230,7
@@
int Track::paste_silence(int64_t start, int64_t end, int edit_plugins, int edit_
if( edit_autos )
shift_keyframes(start, end - start);
if( edit_plugins )
if( edit_autos )
shift_keyframes(start, end - start);
if( edit_plugins )
- shift_effects(start, end - start, edit_autos);
+ shift_effects(start, end - start, edit_autos
, 0
);
edits->optimize();
return 0;
}
edits->optimize();
return 0;
}