public override string ToText(Subtitle subtitle, string title) { const string paragraphWriteFormat = "{0} , {1} , {2}\r\n"; const string timeFormat = "{0:00}:{1:00}:{2:00}:{3:00}"; const string header = @"$VertAlign = Bottom $Bold = FALSE $Underlined = FALSE $Italic = FALSE $XOffset = 0 $YOffset = -5 $TextContrast = 15 $Outline1Contrast = 15 $Outline2Contrast = 13 $BackgroundContrast = 0 $ForceDisplay = FALSE $FadeIn = 0 $FadeOut = 0 $HorzAlign = Center "; var lastVerticalAlign = "$VertAlign = Bottom"; var lastHorizontalcalAlign = "$HorzAlign = Center"; var sb = new StringBuilder(); sb.AppendLine(header); foreach (Paragraph p in subtitle.Paragraphs) { string startTime = string.Format(timeFormat, p.StartTime.Hours, p.StartTime.Minutes, p.StartTime.Seconds, MillisecondsToFramesMaxFrameRate(p.StartTime.Milliseconds)); string endTime = string.Format(timeFormat, p.EndTime.Hours, p.EndTime.Minutes, p.EndTime.Seconds, MillisecondsToFramesMaxFrameRate(p.EndTime.Milliseconds)); DvdStudioPro.ToTextAlignment(p, sb, ref lastVerticalAlign, ref lastHorizontalcalAlign); sb.AppendFormat(paragraphWriteFormat, startTime, endTime, DvdStudioPro.EncodeStyles(p.Text)); } return(sb.ToString().Trim()); }
public override void LoadSubtitle(Subtitle subtitle, List <string> lines, string fileName) { _errorCount = 0; int number = 0; foreach (string line in lines) { if (!string.IsNullOrWhiteSpace(line) && line[0] != '$' && !line.StartsWith("//", StringComparison.Ordinal)) { if (RegexTimeCodes.Match(line).Success) { string[] toPart = line.Substring(0, 24).Trim(',').Split(','); var p = new Paragraph(); if (toPart.Length == 2 && DvdStudioPro.GetTimeCode(p.StartTime, toPart[0]) && DvdStudioPro.GetTimeCode(p.EndTime, toPart[1])) { number++; p.Number = number; string text = line.Substring(25).Trim(); p.Text = text.Replace(" | ", Environment.NewLine).Replace("|", Environment.NewLine); p.Text = DvdStudioPro.DecodeStyles(p.Text); subtitle.Paragraphs.Add(p); } } else { _errorCount++; } } } }
public override string ToText(Subtitle subtitle, string title) { const string paragraphWriteFormat = "{0},{1}, {2}\r\n"; const string timeFormat = "{0:00}:{1:00}:{2:00}:{3:00}"; const string header = @"$VertAlign = Bottom $Bold = FALSE $Underlined = FALSE $Italic = 0 $XOffset = 0 $YOffset = -5 $TextContrast = 15 $Outline1Contrast = 15 $Outline2Contrast = 13 $BackgroundContrast = 0 $ForceDisplay = FALSE $FadeIn = 0 $FadeOut = 0 $HorzAlign = Center "; var sb = new StringBuilder(); sb.AppendLine(header); foreach (Paragraph p in subtitle.Paragraphs) { double factor = (TimeCode.BaseUnit / Configuration.Settings.General.CurrentFrameRate); string startTime = string.Format(timeFormat, p.StartTime.Hours, p.StartTime.Minutes, p.StartTime.Seconds, (int)Math.Round(p.StartTime.Milliseconds / factor)); string endTime = string.Format(timeFormat, p.EndTime.Hours, p.EndTime.Minutes, p.EndTime.Seconds, (int)Math.Round(p.EndTime.Milliseconds / factor)); sb.AppendFormat(paragraphWriteFormat, startTime, endTime, DvdStudioPro.EncodeStyles(p.Text)); } return(sb.ToString().Trim()); }
public override void LoadSubtitle(Subtitle subtitle, List <string> lines, string fileName) { _errorCount = 0; int number = 0; bool italicOn = false; foreach (string line in lines) { if (string.IsNullOrWhiteSpace(line)) { } else if (line[0] != '$' && !line.StartsWith("//", StringComparison.Ordinal)) { if (RegexTimeCodes.Match(line).Success) { string[] toPart = line.Substring(0, 24).Trim(',').Split(','); var p = new Paragraph(); if (toPart.Length == 2 && DvdStudioPro.GetTimeCode(p.StartTime, toPart[0]) && DvdStudioPro.GetTimeCode(p.EndTime, toPart[1])) { number++; p.Number = number; string text = line.Substring(25).Trim(); p.Text = text.Replace(" | ", Environment.NewLine).Replace("|", Environment.NewLine); p.Text = DvdStudioPro.DecodeStyles(p.Text); if (italicOn && !p.Text.Contains("<i>")) { p.Text = "<i>" + p.Text + "</i>"; } subtitle.Paragraphs.Add(p); } } else { _errorCount++; } } else if (line.StartsWith("// Format: NTSC - 29.97", StringComparison.OrdinalIgnoreCase)) { Configuration.Settings.General.CurrentFrameRate = 29.97; } else if (line.StartsWith("// Format: NTSC - 23.9", StringComparison.OrdinalIgnoreCase)) { Configuration.Settings.General.CurrentFrameRate = 23.976; } else if (line.StartsWith("$Italic = True", StringComparison.OrdinalIgnoreCase)) { italicOn = true; } else if (line.StartsWith("$Italic = False", StringComparison.OrdinalIgnoreCase)) { italicOn = false; } } }
public override string ToText(Subtitle subtitle, string title) { const string header = @"//Font select and font size $FontName = Arial $FontSize = 30 //Character attributes (global) $Bold = FALSE $UnderLined = FALSE $Italic = FALSE //Position Control $HorzAlign = Center $VertAlign = Bottom $XOffset = 0 $YOffset = 0 //Contrast Control $TextContrast = 15 $Outline1Contrast = 8 $Outline2Contrast = 15 $BackgroundContrast = 0 //Effects Control $ForceDisplay = FALSE $FadeIn = 0 $FadeOut = 0 //Other Controls $TapeOffset = FALSE //$SetFilePathToken = <<:>> //Colors $ColorIndex1 = 0 $ColorIndex2 = 1 $ColorIndex3 = 2 $ColorIndex4 = 3 //Subtitles"; var lastVerticalAlign = "$VertAlign = Bottom"; var lastHorizontalcalAlign = "$HorzAlign = Center"; var sb = new StringBuilder(); sb.AppendLine(header); foreach (Paragraph p in subtitle.Paragraphs) { DvdStudioPro.ToTextAlignment(p, sb, ref lastVerticalAlign, ref lastHorizontalcalAlign); sb.AppendLine($"{EncodeTimeCode(p.StartTime)},{EncodeTimeCode(p.EndTime)},{EncodeText(p.Text)}"); } return(sb.ToString()); }
public override void LoadSubtitle(Subtitle subtitle, List <string> lines, string fileName) { //00:01:54:19,00:01:56:17,We should be thankful|they accepted our offer. _errorCount = 0; subtitle.Paragraphs.Clear(); // Copy reference of static compiled regex (RegexTimeCodes1). Regex timeCodeRegex = RegexTimeCodes1; if (fileName != null && fileName.EndsWith(".stl", StringComparison.OrdinalIgnoreCase)) // allow empty text if extension is ".stl"... { timeCodeRegex = RegexTimeCodes2; } var verticalAlign = "$VertAlign=Bottom"; var horizontalAlign = "$HorzAlign=Center"; foreach (string line in lines) { if (line.IndexOf(':') == 2 && timeCodeRegex.IsMatch(line)) { string start = line.Substring(0, 11); string end = line.Substring(12, 11); try { var text = DecodeText(line.Substring(24)); text = DvdStudioPro.GetAlignment(verticalAlign, horizontalAlign) + text; Paragraph p = new Paragraph(DecodeTimeCode(start), DecodeTimeCode(end), text); subtitle.Paragraphs.Add(p); } catch { _errorCount++; } } else if (line.TrimStart().StartsWith("$VertAlign", StringComparison.OrdinalIgnoreCase)) { verticalAlign = line.RemoveChar(' ').RemoveChar('\t'); } else if (line.TrimStart().StartsWith("$HorzAlign", StringComparison.OrdinalIgnoreCase)) { horizontalAlign = line.RemoveChar(' ').RemoveChar('\t'); } else if (!string.IsNullOrWhiteSpace(line) && !line.StartsWith("//", StringComparison.Ordinal) && !line.StartsWith('$')) { _errorCount++; } } subtitle.Renumber(); }
public override void LoadSubtitle(Subtitle subtitle, List <string> lines, string fileName) { _errorCount = 0; int number = 0; var verticalAlign = "$VertAlign=Bottom"; var horizontalAlign = "$HorzAlign=Center"; foreach (string line in lines) { if (!string.IsNullOrWhiteSpace(line) && line[0] != '$' && !line.StartsWith("//", StringComparison.Ordinal)) { if (RegexTimeCodes.Match(line).Success) { string[] toPart = line.Substring(0, 25).Split(new[] { " ," }, StringSplitOptions.None); Paragraph p = new Paragraph(); if (toPart.Length == 2 && DvdStudioPro.GetTimeCode(p.StartTime, toPart[0]) && DvdStudioPro.GetTimeCode(p.EndTime, toPart[1])) { number++; p.Number = number; string text = line.Substring(27).Trim(); p.Text = text.Replace(" | ", Environment.NewLine).Replace("|", Environment.NewLine); p.Text = DvdStudioPro.DecodeStyles(p.Text); p.Text = DvdStudioPro.GetAlignment(verticalAlign, horizontalAlign) + p.Text; if (p.Text.Trim().StartsWith("<<Graphic>>")) { p.Text = p.Text.Trim().Remove(0, "<<Graphic>>".Length).Trim(); } subtitle.Paragraphs.Add(p); } } else { _errorCount++; } } else if (line != null && line.TrimStart().StartsWith("$VertAlign", StringComparison.OrdinalIgnoreCase)) { verticalAlign = line.RemoveChar(' ').RemoveChar('\t'); } else if (line != null && line.TrimStart().StartsWith("$HorzAlign", StringComparison.OrdinalIgnoreCase)) { horizontalAlign = line.RemoveChar(' ').RemoveChar('\t'); } } }
public override void LoadSubtitle(Subtitle subtitle, List <string> lines, string fileName) { //00:01:54:19,00:01:56:17,We should be thankful|they accepted our offer. _errorCount = 0; var verticalAlign = "$VertAlign=Bottom"; var horizontalAlign = "$HorzAlign=Center"; subtitle.Paragraphs.Clear(); foreach (string line in lines) { if (line.IndexOf(':') == 2 && RegexTimeCodes.IsMatch(line)) { string start = line.Substring(0, 11); string end = line.Substring(13, 11); try { var text = DecodeText(line.Substring(25).Trim()); text = DvdStudioPro.GetAlignment(verticalAlign, horizontalAlign) + text; var startTime = DecodeTimeCodeFramesFourParts(start.Split(SplitCharColon, StringSplitOptions.RemoveEmptyEntries)); var endTime = DecodeTimeCodeFramesFourParts(end.Split(SplitCharColon, StringSplitOptions.RemoveEmptyEntries)); var p = new Paragraph(startTime, endTime, text); subtitle.Paragraphs.Add(p); } catch { _errorCount++; } } else if (line.TrimStart().StartsWith("$VertAlign", StringComparison.OrdinalIgnoreCase)) { verticalAlign = line.RemoveChar(' ').RemoveChar('\t'); } else if (line.TrimStart().StartsWith("$HorzAlign", StringComparison.OrdinalIgnoreCase)) { horizontalAlign = line.RemoveChar(' ').RemoveChar('\t'); } else if (!string.IsNullOrWhiteSpace(line) && !line.StartsWith("//", StringComparison.Ordinal) && !line.StartsWith('$')) { _errorCount++; } } subtitle.Renumber(); }
public override string ToText(Subtitle subtitle, string title) { const string paragraphWriteFormat = "{0},{1}, {2}\r\n"; const string timeFormat = "{0:00}:{1:00}:{2:00};{3:00}"; var header = Configuration.Settings.SubtitleSettings.DvdStudioProHeader.TrimEnd() + Environment.NewLine; var lastVerticalAlign = "$VertAlign = Bottom"; var lastHorizontalcalAlign = "$HorzAlign = Center"; var sb = new StringBuilder(); sb.AppendLine(header); foreach (Paragraph p in subtitle.Paragraphs) { string startTime = string.Format(timeFormat, p.StartTime.Hours, p.StartTime.Minutes, p.StartTime.Seconds, MillisecondsToFramesMaxFrameRate(p.StartTime.Milliseconds)); string endTime = string.Format(timeFormat, p.EndTime.Hours, p.EndTime.Minutes, p.EndTime.Seconds, MillisecondsToFramesMaxFrameRate(p.EndTime.Milliseconds)); DvdStudioPro.ToTextAlignment(p, sb, ref lastVerticalAlign, ref lastHorizontalcalAlign); sb.AppendFormat(paragraphWriteFormat, startTime, endTime, DvdStudioPro.EncodeStyles(p.Text)); } return(sb.ToString().Trim()); }
public override void LoadSubtitle(Subtitle subtitle, List <string> lines, string fileName) { _errorCount = 0; int number = 0; var verticalAlign = "$VertAlign=Bottom"; var horizontalAlign = "$HorzAlign=Center"; bool italicOn = false; bool boldOn = false; bool underlineOn = false; foreach (string line in lines) { if (string.IsNullOrWhiteSpace(line)) { } else if (line[0] != '$' && !line.StartsWith("//", StringComparison.Ordinal)) { if (RegexTimeCodes.Match(line).Success) { string[] toPart = line.Substring(0, 24).Trim(',').Split(','); var p = new Paragraph(); if (toPart.Length == 2 && DvdStudioPro.GetTimeCode(p.StartTime, toPart[0]) && DvdStudioPro.GetTimeCode(p.EndTime, toPart[1])) { number++; p.Number = number; string text = line.Substring(25).Trim(); p.Text = text.Replace(" | ", Environment.NewLine).Replace("|", Environment.NewLine); p.Text = DvdStudioPro.DecodeStyles(p.Text); if (italicOn && !p.Text.Contains("<i>")) { p.Text = "<i>" + p.Text + "</i>"; } if (boldOn && !p.Text.Contains("<b>")) { p.Text = "<b>" + p.Text + "</b>"; } if (underlineOn && !p.Text.Contains("<u>")) { p.Text = "<u>" + p.Text + "</u>"; } p.Text = DvdStudioPro.GetAlignment(verticalAlign, horizontalAlign) + p.Text; subtitle.Paragraphs.Add(p); } } else { _errorCount++; } } else if (line.StartsWith("// Format: NTSC - 29.97", StringComparison.OrdinalIgnoreCase)) { Configuration.Settings.General.CurrentFrameRate = 29.97; } else if (line.StartsWith("// Format: NTSC - 23.9", StringComparison.OrdinalIgnoreCase)) { Configuration.Settings.General.CurrentFrameRate = 23.976; } else if (line.TrimStart().StartsWith("$VertAlign", StringComparison.OrdinalIgnoreCase)) { verticalAlign = line.RemoveChar(' ', '\t'); } else if (line.TrimStart().StartsWith("$HorzAlign", StringComparison.OrdinalIgnoreCase)) { horizontalAlign = line.RemoveChar(' ', '\t'); } else if (line.Replace(" ", string.Empty).Equals("$Italic=True", StringComparison.OrdinalIgnoreCase)) { italicOn = true; } else if (line.Replace(" ", string.Empty).Trim().Equals("$Italic=False", StringComparison.OrdinalIgnoreCase)) { italicOn = false; } else if (line.Replace(" ", string.Empty).Equals("$Bold=True", StringComparison.OrdinalIgnoreCase)) { boldOn = true; } else if (line.Replace(" ", string.Empty).Trim().Equals("$Bold=False", StringComparison.OrdinalIgnoreCase)) { boldOn = false; } else if (line.Replace(" ", string.Empty).Equals("$Underlined=True", StringComparison.OrdinalIgnoreCase)) { underlineOn = true; } else if (line.Replace(" ", string.Empty).Trim().Equals("$Underlined=False", StringComparison.OrdinalIgnoreCase)) { underlineOn = false; } } }