mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-11-23 03:33:18 +01:00
Export ssa/ass to images now remembers individual line spacing - thx von Suppé :)
This commit is contained in:
parent
2df5c072b9
commit
e45cc61e0f
@ -57,7 +57,7 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
public Color ShadowColor { get; set; }
|
public Color ShadowColor { get; set; }
|
||||||
public int ShadowWidth { get; set; }
|
public int ShadowWidth { get; set; }
|
||||||
public int ShadowAlpha { get; set; }
|
public int ShadowAlpha { get; set; }
|
||||||
public int LineHeight { get; set; }
|
public Dictionary<string,int> LineHeight { get; set; }
|
||||||
public bool Forced { get; set; }
|
public bool Forced { get; set; }
|
||||||
public bool FullFrame { get; set; }
|
public bool FullFrame { get; set; }
|
||||||
public Color FullFrameBackgroundcolor { get; set; }
|
public Color FullFrameBackgroundcolor { get; set; }
|
||||||
@ -70,6 +70,7 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
|
|
||||||
private Subtitle _subtitle;
|
private Subtitle _subtitle;
|
||||||
private SubtitleFormat _format;
|
private SubtitleFormat _format;
|
||||||
|
private static string _formtName;
|
||||||
private Color _subtitleColor = Color.White;
|
private Color _subtitleColor = Color.White;
|
||||||
private string _subtitleFontName = "Verdana";
|
private string _subtitleFontName = "Verdana";
|
||||||
private float _subtitleFontSize = 25.0f;
|
private float _subtitleFontSize = 25.0f;
|
||||||
@ -82,6 +83,7 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
private VobSubOcr _vobSubOcr;
|
private VobSubOcr _vobSubOcr;
|
||||||
private readonly System.Windows.Forms.Timer _previewTimer = new System.Windows.Forms.Timer();
|
private readonly System.Windows.Forms.Timer _previewTimer = new System.Windows.Forms.Timer();
|
||||||
private string _videoFileName;
|
private string _videoFileName;
|
||||||
|
private Dictionary<string, int> _lineHeights;
|
||||||
|
|
||||||
private const string BoxMultiLineText = "BoxMultiLine";
|
private const string BoxMultiLineText = "BoxMultiLine";
|
||||||
private const string BoxSingleLineText = "BoxSingleLine";
|
private const string BoxSingleLineText = "BoxSingleLine";
|
||||||
@ -92,7 +94,7 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
|
|
||||||
var toolTip = new ToolTip { ShowAlways = true };
|
var toolTip = new ToolTip { ShowAlways = true };
|
||||||
toolTip.SetToolTip(panelFullFrameBackground, Configuration.Settings.Language.ExportPngXml.ChooseBackgroundColor);
|
toolTip.SetToolTip(panelFullFrameBackground, Configuration.Settings.Language.ExportPngXml.ChooseBackgroundColor);
|
||||||
|
_lineHeights = new Dictionary<string, int>();
|
||||||
comboBoxImageFormat.SelectedIndex = 4;
|
comboBoxImageFormat.SelectedIndex = 4;
|
||||||
_subtitleColor = Configuration.Settings.Tools.ExportFontColor;
|
_subtitleColor = Configuration.Settings.Tools.ExportFontColor;
|
||||||
_borderColor = Configuration.Settings.Tools.ExportBorderColor;
|
_borderColor = Configuration.Settings.Tools.ExportBorderColor;
|
||||||
@ -340,7 +342,7 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
ShadowColor = panelShadowColor.BackColor,
|
ShadowColor = panelShadowColor.BackColor,
|
||||||
ShadowWidth = comboBoxShadowWidth.SelectedIndex,
|
ShadowWidth = comboBoxShadowWidth.SelectedIndex,
|
||||||
ShadowAlpha = (int)numericUpDownShadowTransparency.Value,
|
ShadowAlpha = (int)numericUpDownShadowTransparency.Value,
|
||||||
LineHeight = (int)numericUpDownLineSpacing.Value,
|
LineHeight = _lineHeights,
|
||||||
FullFrame = checkBoxFullFrameImage.Checked,
|
FullFrame = checkBoxFullFrameImage.Checked,
|
||||||
FullFrameBackgroundcolor = panelFullFrameBackground.BackColor,
|
FullFrameBackgroundcolor = panelFullFrameBackground.BackColor,
|
||||||
};
|
};
|
||||||
@ -1817,7 +1819,7 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
|||||||
mbp.SubtitleColor = _subtitleColor;
|
mbp.SubtitleColor = _subtitleColor;
|
||||||
mbp.SubtitleFontSize = _subtitleFontSize;
|
mbp.SubtitleFontSize = _subtitleFontSize;
|
||||||
mbp.SubtitleFontBold = _subtitleFontBold;
|
mbp.SubtitleFontBold = _subtitleFontBold;
|
||||||
mbp.LineHeight = (int)numericUpDownLineSpacing.Value;
|
mbp.LineHeight = _lineHeights;
|
||||||
mbp.FullFrame = checkBoxFullFrameImage.Checked;
|
mbp.FullFrame = checkBoxFullFrameImage.Checked;
|
||||||
mbp.FullFrameBackgroundcolor = panelFullFrameBackground.BackColor;
|
mbp.FullFrameBackgroundcolor = panelFullFrameBackground.BackColor;
|
||||||
mbp.OverridePosition = GetAssPoint(p.Text);
|
mbp.OverridePosition = GetAssPoint(p.Text);
|
||||||
@ -1873,7 +1875,7 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
|||||||
mbp.ShadowWidth = comboBoxShadowWidth.SelectedIndex;
|
mbp.ShadowWidth = comboBoxShadowWidth.SelectedIndex;
|
||||||
mbp.ShadowAlpha = (int)numericUpDownShadowTransparency.Value;
|
mbp.ShadowAlpha = (int)numericUpDownShadowTransparency.Value;
|
||||||
mbp.ShadowColor = panelShadowColor.BackColor;
|
mbp.ShadowColor = panelShadowColor.BackColor;
|
||||||
mbp.LineHeight = (int)numericUpDownLineSpacing.Value;
|
mbp.LineHeight = _lineHeights;
|
||||||
mbp.Forced = subtitleListView1.Items[_subtitle.GetIndex(p)].Checked;
|
mbp.Forced = subtitleListView1.Items[_subtitle.GetIndex(p)].Checked;
|
||||||
mbp.LineJoin = Configuration.Settings.Tools.ExportPenLineJoin;
|
mbp.LineJoin = Configuration.Settings.Tools.ExportPenLineJoin;
|
||||||
var bmp = GenerateImageFromTextWithStyle(mbp);
|
var bmp = GenerateImageFromTextWithStyle(mbp);
|
||||||
@ -2206,13 +2208,14 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
|||||||
else
|
else
|
||||||
l2 = (int)Math.Round(((w - lineImage.Width) / 2.0));
|
l2 = (int)Math.Round(((w - lineImage.Width) / 2.0));
|
||||||
|
|
||||||
if (parameter.LineHeight > lineImage.Height)
|
var lineHeight = parameter.LineHeight[GetStyleName(parameter.P)];
|
||||||
|
if (lineHeight > lineImage.Height)
|
||||||
{
|
{
|
||||||
h += parameter.LineHeight - lineImage.Height;
|
h += lineHeight - lineImage.Height;
|
||||||
var largeImage = new Bitmap(w, h);
|
var largeImage = new Bitmap(w, h);
|
||||||
var g = Graphics.FromImage(largeImage);
|
var g = Graphics.FromImage(largeImage);
|
||||||
g.DrawImageUnscaled(bmp, new Point(l1, 0));
|
g.DrawImageUnscaled(bmp, new Point(l1, 0));
|
||||||
g.DrawImageUnscaled(lineImage, new Point(l2, bmp.Height + parameter.LineHeight - lineImage.Height));
|
g.DrawImageUnscaled(lineImage, new Point(l2, bmp.Height + lineHeight - lineImage.Height));
|
||||||
bmp.Dispose();
|
bmp.Dispose();
|
||||||
bmp = largeImage;
|
bmp = largeImage;
|
||||||
g.Dispose();
|
g.Dispose();
|
||||||
@ -2729,7 +2732,7 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
|||||||
lastText.Append(sb);
|
lastText.Append(sb);
|
||||||
TextDraw.DrawText(font, sf, path, sb, isItalic, isBold, false, left, top, ref newLine, leftMargin, ref newLinePathPoint);
|
TextDraw.DrawText(font, sf, path, sb, isItalic, isBold, false, left, top, ref newLine, leftMargin, ref newLinePathPoint);
|
||||||
|
|
||||||
top += lineHeight;
|
top += parameter.LineHeight[GetStyleName(parameter.P)];
|
||||||
newLine = true;
|
newLine = true;
|
||||||
i += Environment.NewLine.Length - 1;
|
i += Environment.NewLine.Length - 1;
|
||||||
lineNumber++;
|
lineNumber++;
|
||||||
@ -3659,7 +3662,13 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
|||||||
|
|
||||||
SizeF textSize = g.MeasureString("Hj!", font);
|
SizeF textSize = g.MeasureString("Hj!", font);
|
||||||
int lineHeight = (int)Math.Round(textSize.Height * 0.64f);
|
int lineHeight = (int)Math.Round(textSize.Height * 0.64f);
|
||||||
if (lineHeight >= numericUpDownLineSpacing.Minimum && lineHeight <= numericUpDownLineSpacing.Maximum && lineHeight != numericUpDownLineSpacing.Value)
|
|
||||||
|
var style = string.Empty;
|
||||||
|
if (subtitleListView1.SelectedIndices.Count > 0)
|
||||||
|
style = GetStyleName(_subtitle.Paragraphs[subtitleListView1.SelectedItems[0].Index]);
|
||||||
|
if (_lineHeights.ContainsKey(style))
|
||||||
|
numericUpDownLineSpacing.Value = _lineHeights[style];
|
||||||
|
else if (lineHeight >= numericUpDownLineSpacing.Minimum && lineHeight <= numericUpDownLineSpacing.Maximum && lineHeight != numericUpDownLineSpacing.Value)
|
||||||
numericUpDownLineSpacing.Value = lineHeight;
|
numericUpDownLineSpacing.Value = lineHeight;
|
||||||
else if (lineHeight > numericUpDownLineSpacing.Maximum)
|
else if (lineHeight > numericUpDownLineSpacing.Maximum)
|
||||||
numericUpDownLineSpacing.Value = numericUpDownLineSpacing.Maximum;
|
numericUpDownLineSpacing.Value = numericUpDownLineSpacing.Maximum;
|
||||||
@ -3707,6 +3716,7 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
|||||||
{
|
{
|
||||||
_isLoading = false;
|
_isLoading = false;
|
||||||
subtitleListView1_SelectedIndexChanged(null, null);
|
subtitleListView1_SelectedIndexChanged(null, null);
|
||||||
|
_formtName = _format != null ? _format.Name : string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void comboBoxHAlign_SelectedIndexChanged(object sender, EventArgs e)
|
private void comboBoxHAlign_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
@ -3924,9 +3934,25 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
|||||||
|
|
||||||
private void numericUpDownLineSpacing_ValueChanged(object sender, EventArgs e)
|
private void numericUpDownLineSpacing_ValueChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
var value = (int)numericUpDownLineSpacing.Value;
|
||||||
|
|
||||||
|
var style = string.Empty;
|
||||||
|
if (subtitleListView1.SelectedIndices.Count > 0)
|
||||||
|
style = GetStyleName(_subtitle.Paragraphs[subtitleListView1.SelectedItems[0].Index]);
|
||||||
|
if (_lineHeights.ContainsKey(style))
|
||||||
|
_lineHeights[style] = value;
|
||||||
|
else
|
||||||
|
_lineHeights.Add(style, value);
|
||||||
subtitleListView1_SelectedIndexChanged(null, null);
|
subtitleListView1_SelectedIndexChanged(null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static string GetStyleName(Paragraph paragraph)
|
||||||
|
{
|
||||||
|
if ((_formtName == AdvancedSubStationAlpha.NameOfFormat || _formtName == SubStationAlpha.NameOfFormat) && !string.IsNullOrEmpty(paragraph.Extra))
|
||||||
|
return paragraph.Extra;
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
private void ListViewToggleTag(string tag)
|
private void ListViewToggleTag(string tag)
|
||||||
{
|
{
|
||||||
if (_subtitle.Paragraphs.Count > 0 && subtitleListView1.SelectedItems.Count > 0)
|
if (_subtitle.Paragraphs.Count > 0 && subtitleListView1.SelectedItems.Count > 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user