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 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; } } }