mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-11-25 04:33:04 +01:00
Add reading of TTML images from ISMT - thx azrie :)
This commit is contained in:
parent
996a84df64
commit
fec514f846
@ -12,6 +12,7 @@
|
||||
* Add "Toggle custom surround text with" shortcut - thx HadiSparrow
|
||||
* Add "Go to next/previous time code from video position" shortcuts - thx faon-92
|
||||
* Add option to change search engine in "Spell check" - thx Keddyan
|
||||
* Add reading of TTML images from ISMT - thx azrie
|
||||
* IMPROVED:
|
||||
* Update French translation - thx Pierre
|
||||
* Update Hungarian translation - thx Zityi
|
||||
|
@ -21,7 +21,7 @@ namespace Nikse.SubtitleEdit.Core.Common
|
||||
|
||||
public static int MaximumHistoryItems => 100;
|
||||
|
||||
public SubtitleFormat OriginalFormat { get; private set; }
|
||||
public SubtitleFormat OriginalFormat { get; set; }
|
||||
public Encoding OriginalEncoding { get; private set; }
|
||||
|
||||
public List<HistoryItem> HistoryItems { get; }
|
||||
@ -101,17 +101,39 @@ namespace Nikse.SubtitleEdit.Core.Common
|
||||
return Paragraphs.Find(p => p.Id == id);
|
||||
}
|
||||
|
||||
public SubtitleFormat ReloadLoadSubtitle(List<string> lines, string fileName, SubtitleFormat format)
|
||||
public SubtitleFormat ReloadLoadSubtitle(List<string> lines, string fileName, SubtitleFormat format, SubtitleFormat format2 = null, SubtitleFormat format3 = null)
|
||||
{
|
||||
Paragraphs.Clear();
|
||||
|
||||
if (format != null && format.IsMine(lines, fileName))
|
||||
{
|
||||
format.LoadSubtitle(this, lines, fileName);
|
||||
OriginalFormat = format;
|
||||
return format;
|
||||
}
|
||||
|
||||
if (format2 != null && format2.IsMine(lines, fileName))
|
||||
{
|
||||
format2.LoadSubtitle(this, lines, fileName);
|
||||
OriginalFormat = format2;
|
||||
return format2;
|
||||
}
|
||||
|
||||
if (format3 != null && format3.IsMine(lines, fileName))
|
||||
{
|
||||
format3.LoadSubtitle(this, lines, fileName);
|
||||
OriginalFormat = format3;
|
||||
return format3;
|
||||
}
|
||||
|
||||
foreach (var subtitleFormat in SubtitleFormat.AllSubtitleFormats)
|
||||
{
|
||||
var name = subtitleFormat.Name;
|
||||
if (format?.Name == name || format2?.Name == name || format3?.Name == name)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (subtitleFormat.IsMine(lines, fileName))
|
||||
{
|
||||
subtitleFormat.LoadSubtitle(this, lines, fileName);
|
||||
@ -119,6 +141,7 @@ namespace Nikse.SubtitleEdit.Core.Common
|
||||
return subtitleFormat;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
||||
}
|
||||
|
||||
var buffer = new byte[12];
|
||||
int l = fs.Read(buffer, 0, buffer.Length);
|
||||
var l = fs.Read(buffer, 0, buffer.Length);
|
||||
if (l != buffer.Length)
|
||||
{
|
||||
return false;
|
||||
@ -54,6 +54,8 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
||||
var mp4Parser = new MP4Parser(fileName);
|
||||
var dfxpStrings = mp4Parser.GetMdatsAsStrings();
|
||||
SubtitleFormat format = new TimedText10();
|
||||
SubtitleFormat format2 = new TimedTextBase64Image();
|
||||
SubtitleFormat format3 = new TimedTextImage();
|
||||
foreach (var xmlAsString in dfxpStrings)
|
||||
{
|
||||
try
|
||||
@ -71,7 +73,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
||||
|
||||
var sub = new Subtitle();
|
||||
var mdatLines = xmlAsString.SplitToLines(25_000);
|
||||
format = sub.ReloadLoadSubtitle(mdatLines, null, format);
|
||||
format = sub.ReloadLoadSubtitle(mdatLines, null, format, format2, format3);
|
||||
if (sub.Paragraphs.Count == 0)
|
||||
{
|
||||
continue;
|
||||
@ -93,6 +95,8 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
||||
{
|
||||
_errorCount++;
|
||||
}
|
||||
|
||||
subtitle.OriginalFormat = format;
|
||||
}
|
||||
|
||||
var merged = MergeLinesSameTextUtils.MergeLinesWithSameTextInSubtitle(subtitle, false, 250);
|
||||
|
@ -2960,6 +2960,19 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
if (f.IsMine(null, fileName))
|
||||
{
|
||||
f.LoadSubtitle(_subtitle, null, fileName);
|
||||
|
||||
if (_subtitle.OriginalFormat?.Name == new TimedTextBase64Image().Name)
|
||||
{
|
||||
ImportAndInlineBase64(_subtitle, _loading, fileName);
|
||||
return;
|
||||
}
|
||||
|
||||
if (_subtitle.OriginalFormat?.Name == new TimedTextImage().Name)
|
||||
{
|
||||
ImportAndOcrDost(fileName, _subtitle);
|
||||
return;
|
||||
}
|
||||
|
||||
SetCurrentFormat(Configuration.Settings.General.DefaultSubtitleFormat);
|
||||
SetEncoding(Configuration.Settings.General.DefaultEncoding);
|
||||
encoding = GetCurrentEncoding();
|
||||
@ -4324,6 +4337,35 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
}
|
||||
}
|
||||
|
||||
private void ImportAndOcrDost(string fileName, Subtitle sub)
|
||||
{
|
||||
using (var formSubOcr = new VobSubOcr())
|
||||
{
|
||||
formSubOcr.Initialize(sub, Configuration.Settings.VobSubOcr, false);
|
||||
if (formSubOcr.ShowDialog(this) == DialogResult.OK)
|
||||
{
|
||||
MakeHistoryForUndo(_language.BeforeImportingBdnXml);
|
||||
FileNew();
|
||||
_subtitle.Paragraphs.Clear();
|
||||
SetCurrentFormat(Configuration.Settings.General.DefaultSubtitleFormat);
|
||||
foreach (var p in formSubOcr.SubtitleFromOcr.Paragraphs)
|
||||
{
|
||||
_subtitle.Paragraphs.Add(p);
|
||||
}
|
||||
|
||||
UpdateSourceView();
|
||||
SubtitleListview1.Fill(_subtitle, _subtitleOriginal);
|
||||
_subtitleListViewIndex = -1;
|
||||
SubtitleListview1.FirstVisibleIndex = -1;
|
||||
SubtitleListview1.SelectIndexAndEnsureVisible(0, true);
|
||||
|
||||
_fileName = Path.ChangeExtension(formSubOcr.FileName, GetCurrentSubtitleFormat().Extension);
|
||||
SetTitle();
|
||||
_converted = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ImportAndOcrSst(string fileName, SonicScenaristBitmaps format, List<string> list)
|
||||
{
|
||||
using (var formSubOcr = new VobSubOcr())
|
||||
|
Loading…
Reference in New Issue
Block a user