mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-11-23 19:52:48 +01:00
82 lines
3.1 KiB
C#
82 lines
3.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Xml;
|
|
|
|
namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|
{
|
|
public class TmpegEncAW5 : TmpegEncXml
|
|
{
|
|
public override string Name => "TMPGEnc AW5";
|
|
|
|
public override string ToText(Subtitle subtitle, string title)
|
|
{
|
|
string xmlStructure = Layout.Replace("'", "\"");
|
|
var xml = new XmlDocument();
|
|
xml.LoadXml(xmlStructure);
|
|
XmlNode div = xml.DocumentElement.SelectSingleNode("Subtitle");
|
|
div.InnerXml = string.Empty;
|
|
int no = 0;
|
|
foreach (Paragraph p in subtitle.Paragraphs)
|
|
{
|
|
XmlNode paragraph = xml.CreateElement("SubtitleItem");
|
|
|
|
var text = HtmlUtil.RemoveHtmlTags(p.Text, true);
|
|
paragraph.InnerText = text;
|
|
paragraph.InnerXml = "<Text><![CDATA[" + paragraph.InnerXml.Replace(Environment.NewLine, "\\n") + "\\n]]></Text>";
|
|
|
|
XmlAttribute layoutIndex = xml.CreateAttribute("layoutindex");
|
|
if (p.Text.TrimStart().StartsWith("<i>", StringComparison.Ordinal) && p.Text.TrimEnd().EndsWith("</i>", StringComparison.Ordinal))
|
|
{
|
|
layoutIndex.InnerText = "4";
|
|
}
|
|
else
|
|
{
|
|
layoutIndex.InnerText = "0";
|
|
}
|
|
|
|
paragraph.Attributes.Append(layoutIndex);
|
|
|
|
XmlAttribute enable = xml.CreateAttribute("enable");
|
|
enable.InnerText = "1";
|
|
paragraph.Attributes.Append(enable);
|
|
|
|
XmlAttribute start = xml.CreateAttribute("starttime");
|
|
start.InnerText = p.StartTime.ToString();
|
|
paragraph.Attributes.Append(start);
|
|
|
|
XmlAttribute end = xml.CreateAttribute("endtime");
|
|
end.InnerText = p.EndTime.ToString();
|
|
paragraph.Attributes.Append(end);
|
|
|
|
div.AppendChild(paragraph);
|
|
no++;
|
|
}
|
|
|
|
string s = ToUtf8XmlString(xml);
|
|
int startPos = s.IndexOf("<Subtitle>", StringComparison.Ordinal) + 10;
|
|
s = s.Substring(startPos, s.IndexOf("</Subtitle>", StringComparison.Ordinal) - startPos).Trim();
|
|
return Layout.Replace("@", s);
|
|
}
|
|
|
|
public override bool IsMine(List<string> lines, string fileName)
|
|
{
|
|
var sb = new StringBuilder();
|
|
lines.ForEach(line => sb.AppendLine(line));
|
|
string xmlAsString = sb.ToString().Trim();
|
|
if ((xmlAsString.Contains("<TMPGEncVMESubtitleTextFormat>") || xmlAsString.Contains("<SubtitleItem ")) && (xmlAsString.Contains("<Subtitle")))
|
|
{
|
|
return base.IsMine(lines, fileName);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
|
|
{
|
|
_errorCount = 0;
|
|
LoadTMpeg(subtitle, lines, true);
|
|
}
|
|
|
|
}
|
|
}
|