mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-27 22:42:38 +01:00
Fix overlapping display times now smarter
git-svn-id: https://subtitleedit.googlecode.com/svn/trunk@1715 99eadd0c-20b8-1223-b5c4-2a2b2df33de2
This commit is contained in:
parent
44c7d074bf
commit
3692755863
@ -681,6 +681,8 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
string oldPrevious = prev.ToString();
|
||||
double prevWantedDisplayTime = Utilities.GetOptimalDisplayMilliseconds(prev.Text, Configuration.Settings.General.SubtitleMaximumCharactersPerSeconds);
|
||||
double currentWantedDisplayTime = Utilities.GetOptimalDisplayMilliseconds(p.Text, Configuration.Settings.General.SubtitleMaximumCharactersPerSeconds);
|
||||
double prevOptimalDisplayTime = Utilities.GetOptimalDisplayMilliseconds(prev.Text);
|
||||
double currentOptimalDisplayTime = Utilities.GetOptimalDisplayMilliseconds(p.Text);
|
||||
bool canBeEqual = _format != null && (_format.GetType() == typeof(AdvancedSubStationAlpha) || _format.GetType() == typeof(SubStationAlpha));
|
||||
|
||||
if (prev != null && !prev.StartTime.IsMaxTime && !p.StartTime.IsMaxTime &&
|
||||
@ -712,6 +714,56 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
}
|
||||
prev.EndTime.TotalMilliseconds--;
|
||||
}
|
||||
else if (diff > 0 && currentOptimalDisplayTime <= p.Duration.TotalMilliseconds - diffHalf &&
|
||||
prevOptimalDisplayTime <= prev.Duration.TotalMilliseconds - diffHalf)
|
||||
{
|
||||
if (AllowFix(p, fixAction))
|
||||
{
|
||||
prev.EndTime.TotalMilliseconds -= diffHalf;
|
||||
p.StartTime.TotalMilliseconds = prev.EndTime.TotalMilliseconds + 1;
|
||||
_totalFixes++;
|
||||
noOfOverlappingDisplayTimesFixed++;
|
||||
AddFixToListView(p, fixAction, oldCurrent, p.ToString());
|
||||
}
|
||||
}
|
||||
else if (prevOptimalDisplayTime <= (p.StartTime.TotalMilliseconds - prev.StartTime.TotalMilliseconds))
|
||||
{
|
||||
if (AllowFix(target, fixAction))
|
||||
{
|
||||
prev.EndTime.TotalMilliseconds = p.StartTime.TotalMilliseconds - 1;
|
||||
if (canBeEqual)
|
||||
prev.EndTime.TotalMilliseconds++;
|
||||
_totalFixes++;
|
||||
noOfOverlappingDisplayTimesFixed++;
|
||||
AddFixToListView(target, fixAction, oldPrevious, prev.ToString());
|
||||
}
|
||||
}
|
||||
else if (currentOptimalDisplayTime <= p.EndTime.TotalMilliseconds - prev.EndTime.TotalMilliseconds)
|
||||
{
|
||||
if (AllowFix(p, fixAction))
|
||||
{
|
||||
p.StartTime.TotalMilliseconds = prev.EndTime.TotalMilliseconds + 1;
|
||||
if (canBeEqual)
|
||||
p.StartTime.TotalMilliseconds = prev.EndTime.TotalMilliseconds;
|
||||
|
||||
_totalFixes++;
|
||||
noOfOverlappingDisplayTimesFixed++;
|
||||
AddFixToListView(p, fixAction, oldCurrent, p.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
else if (diff > 0 && currentWantedDisplayTime <= p.Duration.TotalMilliseconds - diffHalf &&
|
||||
prevWantedDisplayTime <= prev.Duration.TotalMilliseconds - diffHalf)
|
||||
{
|
||||
if (AllowFix(p, fixAction))
|
||||
{
|
||||
prev.EndTime.TotalMilliseconds -= diffHalf;
|
||||
p.StartTime.TotalMilliseconds = prev.EndTime.TotalMilliseconds + 1;
|
||||
_totalFixes++;
|
||||
noOfOverlappingDisplayTimesFixed++;
|
||||
AddFixToListView(p, fixAction, oldCurrent, p.ToString());
|
||||
}
|
||||
}
|
||||
else if (prevWantedDisplayTime <= (p.StartTime.TotalMilliseconds - prev.StartTime.TotalMilliseconds))
|
||||
{
|
||||
if (AllowFix(target, fixAction))
|
||||
@ -750,18 +802,6 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
AddFixToListView(p, fixAction, oldCurrent, p.ToString());
|
||||
}
|
||||
}
|
||||
else if (diff > 0 && currentWantedDisplayTime <= p.Duration.TotalMilliseconds - diffHalf &&
|
||||
prevWantedDisplayTime <= prev.Duration.TotalMilliseconds - diffHalf)
|
||||
{
|
||||
if (AllowFix(p, fixAction))
|
||||
{
|
||||
prev.EndTime.TotalMilliseconds = p.StartTime.TotalMilliseconds - diffHalf;
|
||||
p.StartTime.TotalMilliseconds = prev.EndTime.TotalMilliseconds + 1;
|
||||
_totalFixes++;
|
||||
noOfOverlappingDisplayTimesFixed++;
|
||||
AddFixToListView(p, fixAction, oldCurrent, p.ToString());
|
||||
}
|
||||
}
|
||||
else if (Math.Abs(p.StartTime.TotalMilliseconds - prev.StartTime.TotalMilliseconds) < 10 && Math.Abs(p.EndTime.TotalMilliseconds - prev.EndTime.TotalMilliseconds) < 10)
|
||||
{ // merge lines with same time codes
|
||||
if (AllowFix(target, fixAction))
|
||||
|
@ -681,7 +681,7 @@
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2
|
||||
CAAAAk1TRnQBSQFMAgEBAgEAAdABHQHQAR0BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
CAAAAk1TRnQBSQFMAgEBAgEAAeABHQHgAR0BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
|
||||
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
|
||||
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
|
||||
|
Loading…
Reference in New Issue
Block a user