diff --git a/src/Logic/SubtitleFormats/CapMakerPlus.cs b/src/Logic/SubtitleFormats/CapMakerPlus.cs
index 5e559dfc3..52c01d0d1 100644
--- a/src/Logic/SubtitleFormats/CapMakerPlus.cs
+++ b/src/Logic/SubtitleFormats/CapMakerPlus.cs
@@ -42,92 +42,96 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
buffer[1400] = (byte)(gridDataCount % 256); // paragraphs - low byte
buffer[1401] = (byte)(gridDataCount / 256); // paragraphs - high byte
- var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
- fs.Write(buffer, 0, buffer.Length);
-
- p = null;
- for (int i = 0; i < subtitle.Paragraphs.Count; i++)
+ using (var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
{
- p = subtitle.Paragraphs[i];
- Paragraph next = subtitle.GetParagraphOrDefault(i + 1);
-
- WriteTime(fs, p.StartTime);
-
- buffer = new byte[] { // styles 00 00 80 BF 00 00 00 C0 02 00 01 00
- 0,
- 0,
- 0x80, //horizontal align, 0x80BF= center, 0x0000=left, 0x00c0=right
- 0xBF,
- 0,
- 0,
- 0,
- 0xC0, // vertical Position: C0=bottom, 0=top
- 2, //justification, 1=left, 2=center
- 0,
- 1, //1=normal font, 3=italic
- 0 };
-
- string text = p.Text;
- if (text.StartsWith("{\\a6}"))
- {
- text = p.Text.Remove(0, 5);
- buffer[7] = 0; // align top
- }
- else if (text.StartsWith("{\\a1}"))
- {
- text = p.Text.Remove(0, 5);
- buffer[2] = 0; // align left
- buffer[3] = 0; // align left
- }
- else if (text.StartsWith("{\\a3}"))
- {
- text = p.Text.Remove(0, 5);
- buffer[2] = 0; // align right
- buffer[3] = 0xc0; // align right
- }
- else if (text.StartsWith("{\\a5}"))
- {
- text = p.Text.Remove(0, 5);
- buffer[7] = 0; // align top
- buffer[2] = 0; // align left
- buffer[3] = 0; // align left
- }
- else if (text.StartsWith("{\\a7}"))
- {
- text = p.Text.Remove(0, 5);
- buffer[7] = 0; // align top
- buffer[2] = 0; // align right
- buffer[3] = 0xc0; // align right
- }
-
- if (text.StartsWith("") && text.EndsWith(""))
- buffer[10] = 3;
fs.Write(buffer, 0, buffer.Length);
- text = Utilities.RemoveHtmlTags(text);
- if (text.Length > 118)
- text = text.Substring(0, 118);
- fs.WriteByte((byte)(text.Length));
- buffer = Encoding.GetEncoding(1252).GetBytes(text);
- fs.Write(buffer, 0, buffer.Length);
+ p = null;
+ for (int i = 0; i < subtitle.Paragraphs.Count; i++)
+ {
+ p = subtitle.Paragraphs[i];
+ Paragraph next = subtitle.GetParagraphOrDefault(i + 1);
- for (int j = 0; j < 74; j++)
- fs.WriteByte(0);
+ WriteTime(fs, p.StartTime);
- if (next != null && next.StartTime.TotalMilliseconds - p.EndTime.TotalMilliseconds > 100)
- { // write empty end
+ buffer = new byte[] {
+ // styles 00 00 80 BF 00 00 00 C0 02 00 01 00
+ 0,
+ 0,
+ 0x80, //horizontal align, 0x80BF= center, 0x0000=left, 0x00c0=right
+ 0xBF,
+ 0,
+ 0,
+ 0,
+ 0xC0, // vertical Position: C0=bottom, 0=top
+ 2, //justification, 1=left, 2=center
+ 0,
+ 1, //1=normal font, 3=italic
+ 0
+ };
+
+ string text = p.Text;
+ if (text.StartsWith("{\\a6}"))
+ {
+ text = p.Text.Remove(0, 5);
+ buffer[7] = 0; // align top
+ }
+ else if (text.StartsWith("{\\a1}"))
+ {
+ text = p.Text.Remove(0, 5);
+ buffer[2] = 0; // align left
+ buffer[3] = 0; // align left
+ }
+ else if (text.StartsWith("{\\a3}"))
+ {
+ text = p.Text.Remove(0, 5);
+ buffer[2] = 0; // align right
+ buffer[3] = 0xc0; // align right
+ }
+ else if (text.StartsWith("{\\a5}"))
+ {
+ text = p.Text.Remove(0, 5);
+ buffer[7] = 0; // align top
+ buffer[2] = 0; // align left
+ buffer[3] = 0; // align left
+ }
+ else if (text.StartsWith("{\\a7}"))
+ {
+ text = p.Text.Remove(0, 5);
+ buffer[7] = 0; // align top
+ buffer[2] = 0; // align right
+ buffer[3] = 0xc0; // align right
+ }
+
+ if (text.StartsWith("") && text.EndsWith(""))
+ buffer[10] = 3;
+ fs.Write(buffer, 0, buffer.Length);
+
+ text = Utilities.RemoveHtmlTags(text);
+ if (text.Length > 118)
+ text = text.Substring(0, 118);
+ fs.WriteByte((byte) (text.Length));
+ buffer = Encoding.GetEncoding(1252).GetBytes(text);
+ fs.Write(buffer, 0, buffer.Length);
+
+ for (int j = 0; j < 74; j++)
+ fs.WriteByte(0);
+
+ if (next != null && next.StartTime.TotalMilliseconds - p.EndTime.TotalMilliseconds > 100)
+ {
+ // write empty end
+ WriteTime(fs, p.EndTime);
+ buffer = new byte[] { 0, 0, 0, 0xC0, 0, 0, 0, 0, 0x01, 0, 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+ fs.Write(buffer, 0, buffer.Length);
+ }
+ }
+ if (p != null)
+ {
WriteTime(fs, p.EndTime);
- buffer = new byte[] { 0, 0, 0, 0xC0, 0, 0, 0, 0, 0x01, 0, 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+ buffer = new byte[] { 0, 0, 0x80, 0xBF, 0, 0, 0, 0xC0, 0x02, 0, 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x40, 0x40, 0x40, 0, 0xFF, 0xFF, 0xFF, 0, 0, 0, 0, 0, 0x80, 0x80, 0x80, 0, 0x01, 0, 0, 0, 0xFF, 0, 0, 0, 0x01, 0, 0, 0, 0x02, 0, 0, 0, 0x48, 0, 0, 0, 0x30, 0, 0, 0, 0x48, 0, 0, 0, 0x30, 0, 0, 0, 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
fs.Write(buffer, 0, buffer.Length);
}
}
- if (p != null)
- {
- WriteTime(fs, p.EndTime);
- buffer = new byte[] { 0, 0, 0x80, 0xBF, 0, 0, 0, 0xC0, 0x02, 0, 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x40, 0x40, 0x40, 0, 0xFF, 0xFF, 0xFF, 0, 0, 0, 0, 0, 0x80, 0x80, 0x80, 0, 0x01, 0, 0, 0, 0xFF, 0, 0, 0, 0x01, 0, 0, 0, 0x02, 0, 0, 0, 0x48, 0, 0, 0, 0x30, 0, 0, 0, 0x48, 0, 0, 0, 0x30, 0, 0, 0, 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- fs.Write(buffer, 0, buffer.Length);
- }
- fs.Close();
}
private static void WriteTime(FileStream fs, TimeCode timeCode)