projects
/
goodguy
/
cinelerra.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add refresh_only to scopewindow, fix alsa prefs for capture source, add python to...
[goodguy/cinelerra.git]
/
cinelerra-5.1
/
cinelerra
/
edit.C
diff --git
a/cinelerra-5.1/cinelerra/edit.C
b/cinelerra-5.1/cinelerra/edit.C
index bd82f45130cbe9f1fb88bdb74cac39ffb162a7a8..56329af3caecc76d71c32c7092bad0429ee6e57c 100644
(file)
--- a/
cinelerra-5.1/cinelerra/edit.C
+++ b/
cinelerra-5.1/cinelerra/edit.C
@@
-52,6
+52,7
@@
Edit::Edit(EDL *edl, Track *track)
this->track = track;
if(track) this->edits = track->edits;
id = EDL::next_id();
this->track = track;
if(track) this->edits = track->edits;
id = EDL::next_id();
+ orig_id = id;
}
Edit::Edit(EDL *edl, Edits *edits)
}
Edit::Edit(EDL *edl, Edits *edits)
@@
-61,6
+62,7
@@
Edit::Edit(EDL *edl, Edits *edits)
this->edits = edits;
if(edits) this->track = edits->track;
id = EDL::next_id();
this->edits = edits;
if(edits) this->track = edits->track;
id = EDL::next_id();
+ orig_id = id;
}
Edit::~Edit()
}
Edit::~Edit()
@@
-83,7
+85,6
@@
void Edit::reset()
channel = 0;
user_title[0] = 0;
nested_edl = 0;
channel = 0;
user_title[0] = 0;
nested_edl = 0;
- is_plugin = 0;
is_selected = 0;
hard_left = 0;
hard_right = 0;
is_selected = 0;
hard_left = 0;
hard_right = 0;
@@
-254,6
+255,7
@@
void Edit::set_selected(int v)
void Edit::copy_from(Edit *edit)
{
void Edit::copy_from(Edit *edit)
{
+ this->orig_id = edit->orig_id;
this->nested_edl = edl->nested_edls.get_nested(edit->nested_edl);
this->asset = edl->assets->update(edit->asset);
this->startsource = edit->startsource;
this->nested_edl = edl->nested_edls.get_nested(edit->nested_edl);
this->asset = edl->assets->update(edit->asset);
this->startsource = edit->startsource;
@@
-276,6
+278,12
@@
void Edit::copy_from(Edit *edit)
this->channel = edit->channel;
}
this->channel = edit->channel;
}
+void Edit::clone_from(Edit *edit)
+{
+ copy_from(edit);
+ edit->orig_id = edit->id;
+}
+
void Edit::equivalent_output(Edit *edit, int64_t *result)
{
// End of edit changed
void Edit::equivalent_output(Edit *edit, int64_t *result)
{
// End of edit changed
@@
-383,8
+391,8
@@
int Edit::picon_h()
int Edit::dump(FILE *fp)
{
fprintf(fp," EDIT %p\n", this); fflush(fp);
int Edit::dump(FILE *fp)
{
fprintf(fp," EDIT %p\n", this); fflush(fp);
- fprintf(fp," nested_edl=%p %s asset=%p %s\n",
- nested_edl, nested_edl ? nested_edl->path : "",
+ fprintf(fp,"
id %d, orig_id %d,
nested_edl=%p %s asset=%p %s\n",
+
id, orig_id,
nested_edl, nested_edl ? nested_edl->path : "",
asset, asset ? asset->path : "");
fflush(fp);
fprintf(fp," channel %d, color %08x, hard lt/rt %d/%d"
asset, asset ? asset->path : "");
fflush(fp);
fprintf(fp," channel %d, color %08x, hard lt/rt %d/%d"
@@
-443,6
+451,7
@@
int Edit::shift_start(int edit_mode, int64_t newposition, int64_t oldposition,
int edit_labels, int edit_autos, int edit_plugins, Edits *trim_edits)
{
int64_t cut_length = newposition - oldposition;
int edit_labels, int edit_autos, int edit_plugins, Edits *trim_edits)
{
int64_t cut_length = newposition - oldposition;
+ int rest_moved = edit_mode == MOVE_RIPPLE || edit_mode == MOVE_EDGE ? 1 : 0;
if( cut_length > length )
cut_length = length;
else if( cut_length < -length )
if( cut_length > length )
cut_length = length;
else if( cut_length < -length )
@@
-450,11
+459,11
@@
int Edit::shift_start(int edit_mode, int64_t newposition, int64_t oldposition,
int64_t start = startproject, end = start + length;
Edit *prev = this->previous, *next = this->next;
int64_t start = startproject, end = start + length;
Edit *prev = this->previous, *next = this->next;
- int edits_moved = 0
, rest_moved = 0
;
+ int edits_moved = 0;
switch( edit_mode ) {
case MOVE_RIPPLE:
switch( edit_mode ) {
case MOVE_RIPPLE:
- edits_moved =
rest_moved =
1;
+ edits_moved = 1;
startsource += cut_length;
cut_length = -cut_length;
length += cut_length;
startsource += cut_length;
cut_length = -cut_length;
length += cut_length;
@@
-488,7
+497,7
@@
int Edit::shift_start(int edit_mode, int64_t newposition, int64_t oldposition,
}
break;
case MOVE_EDGE:
}
break;
case MOVE_EDGE:
- edits_moved =
rest_moved =
1;
+ edits_moved = 1;
startsource -= cut_length;
length += cut_length;
for( Edit *edit=next; edit; edit=edit->next )
startsource -= cut_length;
length += cut_length;
for( Edit *edit=next; edit; edit=edit->next )
@@
-504,18
+513,19
@@
int Edit::shift_end(int edit_mode, int64_t newposition, int64_t oldposition,
int edit_labels, int edit_autos, int edit_plugins, Edits *trim_edits)
{
int64_t cut_length = newposition - oldposition;
int edit_labels, int edit_autos, int edit_plugins, Edits *trim_edits)
{
int64_t cut_length = newposition - oldposition;
- if( cut_length > length )
- cut_length = length;
+ int rest_moved = edit_mode == MOVE_RIPPLE || edit_mode == MOVE_EDGE ? 1 : 0;
+ if( cut_length > length ) {
+ if( !rest_moved ) cut_length = length;
+ }
else if( cut_length < -length )
cut_length = -length;
int64_t start = startproject, end = start + length;
Edit *prev = this->previous, *next = this->next;
else if( cut_length < -length )
cut_length = -length;
int64_t start = startproject, end = start + length;
Edit *prev = this->previous, *next = this->next;
- int edits_moved = 0
, rest_moved = 0
;
+ int edits_moved = 0;
switch( edit_mode ) {
case MOVE_RIPPLE:
case MOVE_EDGE:
switch( edit_mode ) {
case MOVE_RIPPLE:
case MOVE_EDGE:
- rest_moved = 1;
length += cut_length;
for( Edit *edit=next; edit; edit=edit->next )
edit->startproject += cut_length;
length += cut_length;
for( Edit *edit=next; edit; edit=edit->next )
edit->startproject += cut_length;
@@
-651,7
+661,7
@@
int Edit::select_handle(float view_start, float zoom_units, int cursor_x, int cu
int64_t pixel1, pixel2;
pixel1 = left;
int64_t pixel1, pixel2;
pixel1 = left;
- pixel2 = pixel1 +
10
;
+ pixel2 = pixel1 +
xS(10)
;
// test left edit
// cursor_x is faked in acanvas
// test left edit
// cursor_x is faked in acanvas
@@
-663,7
+673,7
@@
int Edit::select_handle(float view_start, float zoom_units, int cursor_x, int cu
//int64_t endproject = startproject + length;
pixel2 = right;
//int64_t endproject = startproject + length;
pixel2 = right;
- pixel1 = pixel2 -
10
;
+ pixel1 = pixel2 -
xS(10)
;
// test right edit
if(cursor_x >= pixel1 && cursor_x <= pixel2)
// test right edit
if(cursor_x >= pixel1 && cursor_x <= pixel2)