Рез даёт хвосту свою связку: удаление куска больше не уносит весь клип
Del удалял весь исходный клип вместо выделенного куска, и звук вместе с ним. Причина: при резе хвост наследовал номер связки головы, а удаление расширяет выделение на всю связку — обе половины оказывались одной связкой и умирали вместе. Дальнейшие резы наследовали тот же номер, так что от удаления одного куска исчезали все. Теперь хвост получает новый номер связки. Один на весь рез: все хвосты, отрезанные от одной связки, остаются связанными между собой — картинка со своим звуком, как и было задумано. Проверено на монтаже: клип 0..4 с парным звуком разрезан на 2 с, удалён первый кусок. Было — исчезал весь клип и весь его звук. Стало — остались хвост 2..4 со своим звуком в новой связке и нетронутый соседний клип 4..8. Проекты, разрезанные прежней сборкой, останутся со сцепленными половинами: у них один номер связки на всё. Развязать их можно Ctrl+G.
This commit is contained in:
parent
62ba75ff2f
commit
36ccbd3015
1 changed files with 30 additions and 1 deletions
|
|
@ -2105,12 +2105,18 @@ var
|
|||
AnyChange: Boolean;
|
||||
Offset: Double;
|
||||
HoverGroup: string;
|
||||
{ Старый номер связки — новый. Одна связка при резе становится двумя:
|
||||
голова со своей парой и хвост со своей. }
|
||||
NewGroups: TStringList;
|
||||
Idx: Integer;
|
||||
begin
|
||||
if FProject = nil then
|
||||
Exit;
|
||||
|
||||
AnyChange := False;
|
||||
FProject.BeginChange;
|
||||
NewGroups := TStringList.Create;
|
||||
try
|
||||
|
||||
{ Связка режется целиком. Резать только картинку, оставив звук цельным,
|
||||
значит развалить пару: дальше они поедут порознь. }
|
||||
|
|
@ -2155,7 +2161,26 @@ begin
|
|||
Tail.FadeIn := 0;
|
||||
Tail.FadeOut := Clip.FadeOut;
|
||||
Tail.Transform := Clip.Transform;
|
||||
Tail.GroupId := Clip.GroupId;
|
||||
|
||||
{ Связка хвоста — новая.
|
||||
|
||||
Оставить прежнюю значило бы связать между собой куски, которые
|
||||
после реза стали разными клипами: удаление одного уносило бы и
|
||||
второй, и весь исходный клип целиком. Проверено на монтаже — от
|
||||
удаления куска 0..2 исчезал весь клип 0..4 вместе со звуком.
|
||||
|
||||
Новый номер один на весь рез: все хвосты, отрезанные от одной
|
||||
связки, остаются связанными между собой — картинка со своим
|
||||
звуком. }
|
||||
if Clip.GroupId = '' then
|
||||
Tail.GroupId := ''
|
||||
else
|
||||
begin
|
||||
Idx := NewGroups.IndexOfName(Clip.GroupId);
|
||||
if Idx < 0 then
|
||||
NewGroups.Add(Clip.GroupId + '=' + FProject.NewGroupId);
|
||||
Tail.GroupId := NewGroups.Values[Clip.GroupId];
|
||||
end;
|
||||
|
||||
{ Новый рез описывается одинаково с обеих сторон: конец первой части
|
||||
и начало второй — это одно и то же место. }
|
||||
|
|
@ -2176,6 +2201,10 @@ begin
|
|||
AnyChange := True;
|
||||
end;
|
||||
|
||||
finally
|
||||
NewGroups.Free;
|
||||
end;
|
||||
|
||||
if AnyChange then
|
||||
StructureChanged
|
||||
else
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue