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:
niksedk 2013-03-10 07:34:04 +00:00
parent 44c7d074bf
commit 3692755863
2 changed files with 53 additions and 13 deletions

View File

@ -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))

View File

@ -681,7 +681,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2
CAAAAk1TRnQBSQFMAgEBAgEAAdABHQHQAR0BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
CAAAAk1TRnQBSQFMAgEBAgEAAeABHQHgAR0BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA