timecode: add prefix-sign helper method

This commit is contained in:
Ivandro Ismael 2019-06-14 13:38:59 +01:00
parent 25aca3582b
commit f37a3864ef

View File

@ -6,6 +6,7 @@ namespace Nikse.SubtitleEdit.Core
{
public class TimeCode
{
private static readonly char[] TimeSplitChars = new[] { ':', ',', '.' };
public const double BaseUnit = 1000.0; // Base unit of time
private double _totalMilliseconds;
@ -19,7 +20,7 @@ namespace Nikse.SubtitleEdit.Core
public static double ParseToMilliseconds(string text)
{
string[] parts = text.Split(new[] { ':', ',', '.' }, StringSplitOptions.RemoveEmptyEntries);
string[] parts = text.Split(TimeSplitChars, StringSplitOptions.RemoveEmptyEntries);
if (parts.Length == 4)
{
int hours;
@ -36,7 +37,7 @@ namespace Nikse.SubtitleEdit.Core
public static double ParseHHMMSSFFToMilliseconds(string text)
{
string[] parts = text.Split(new[] { ':', ',', '.' }, StringSplitOptions.RemoveEmptyEntries);
string[] parts = text.Split(TimeSplitChars, StringSplitOptions.RemoveEmptyEntries);
if (parts.Length == 4)
{
int hours;
@ -155,12 +156,7 @@ namespace Nikse.SubtitleEdit.Core
string decimalSeparator = localize ? CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator : ",";
string s = string.Format("{0:00}:{1:00}:{2:00}{3}{4:000}", ts.Hours + ts.Days * 24, ts.Minutes, ts.Seconds, decimalSeparator, ts.Milliseconds);
if (TotalMilliseconds >= 0)
{
return s;
}
return "-" + s.RemoveChar('-');
return PrefixSign(s);
}
public string ToShortString(bool localize = false)
@ -180,13 +176,7 @@ namespace Nikse.SubtitleEdit.Core
{
s = string.Format("{0:0}:{1:00}:{2:00}{3}{4:000}", ts.Hours + ts.Days * 24, ts.Minutes, ts.Seconds, decimalSeparator, ts.Milliseconds);
}
if (TotalMilliseconds >= 0)
{
return s;
}
return "-" + s.RemoveChar('-');
return PrefixSign(s);
}
public string ToShortStringHHMMSSFF()
@ -221,13 +211,7 @@ namespace Nikse.SubtitleEdit.Core
{
s = string.Format("{0:00}:{1:00}:{2:00}:{3:00}", ts.Days * 24 + ts.Hours, ts.Minutes, ts.Seconds, SubtitleFormat.MillisecondsToFramesMaxFrameRate(ts.Milliseconds));
}
if (TotalMilliseconds >= 0)
{
return s;
}
return "-" + s.RemoveChar('-');
return PrefixSign(s);
}
public string ToSSFF()
@ -243,13 +227,7 @@ namespace Nikse.SubtitleEdit.Core
{
s = string.Format("{0:00}:{1:00}", ts.Seconds, SubtitleFormat.MillisecondsToFramesMaxFrameRate(ts.Milliseconds));
}
if (TotalMilliseconds >= 0)
{
return s;
}
return "-" + s.RemoveChar('-');
return PrefixSign(s);
}
public string ToHHMMSSPeriodFF()
@ -266,14 +244,11 @@ namespace Nikse.SubtitleEdit.Core
s = string.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Days * 24 + ts.Hours, ts.Minutes, ts.Seconds, SubtitleFormat.MillisecondsToFramesMaxFrameRate(ts.Milliseconds));
}
if (TotalMilliseconds >= 0)
{
return s;
}
return "-" + s.RemoveChar('-');
return PrefixSign(s);
}
private string PrefixSign(string time) => TotalMilliseconds >= 0 ? time : $"-{time.RemoveChar('-')}";
public string ToDisplayString()
{
if (IsMaxTime)