summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/data/horizontal_margin.ssa23
-rw-r--r--test/ssa_reader_test.cc46
2 files changed, 63 insertions, 6 deletions
diff --git a/test/data/horizontal_margin.ssa b/test/data/horizontal_margin.ssa
new file mode 100644
index 0000000..c5a9f9e
--- /dev/null
+++ b/test/data/horizontal_margin.ssa
@@ -0,0 +1,23 @@
+[Script Info]
+Title: libsub test
+ScriptType: v4.00
+WrapStyle: 0
+ScaledBorderAndShadow: yes
+PlayResX: 1920
+PlayResY: 1080
+
+[V4 Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
+Style: Default,Arial,20,16777215,255,0,0,0,0,1,2,2,2,200,100,10,0,1
+
+[Fonts]
+
+[Graphics]
+
+[Events]
+Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: Marked=0,0:00:01.23,0:00:04.55,Default,,100,0,0,,Hello world
+Dialogue: Marked=0,0:01:01.23,0:01:04.55,Default,,10,0,0,,Left of centre
+Dialogue: Marked=0,0:02:01.23,0:02:04.55,Default,,10,0,0,,{\an4}Left
+Dialogue: Marked=0,0:03:01.23,0:03:04.55,Default,,10,0,0,,{\an6}Right
+Dialogue: Marked=0,0:04:01.23,0:04:04.55,Default,,0,100,0,,{\an4}Style left
diff --git a/test/ssa_reader_test.cc b/test/ssa_reader_test.cc
index 89a543c..8820bf4 100644
--- a/test/ssa_reader_test.cc
+++ b/test/ssa_reader_test.cc
@@ -254,7 +254,7 @@ BOOST_AUTO_TEST_CASE (ssa_reader_test3)
/* Alignments */
SUB_START (sub::Time::from_hms (0, 0, 9, 230), sub::Time::from_hms (0, 0, 11, 560));
- LINE ((10.0 / 1080), sub::BOTTOM_OF_SCREEN, 0, sub::LEFT_OF_SCREEN);
+ LINE ((10.0 / 1080), sub::BOTTOM_OF_SCREEN, (10.0 / 1920), sub::LEFT_OF_SCREEN);
BLOCK("bottom left", "Arial", fs(20), false, false, false);
SUB_END ();
@@ -264,13 +264,13 @@ BOOST_AUTO_TEST_CASE (ssa_reader_test3)
SUB_END ();
SUB_START (sub::Time::from_hms (0, 0, 9, 250), sub::Time::from_hms (0, 0, 11, 560));
- LINE ((10.0 / 1080), sub::BOTTOM_OF_SCREEN, 0, sub::RIGHT_OF_SCREEN);
+ LINE ((10.0 / 1080), sub::BOTTOM_OF_SCREEN, (10.0 / 1920), sub::RIGHT_OF_SCREEN);
BLOCK("bottom right", "Arial", fs(20), false, false, false);
SUB_END ();
SUB_START (sub::Time::from_hms (0, 0, 9, 260), sub::Time::from_hms (0, 0, 11, 560));
/* Position is half of a 20pt line (with line spacing) above vertical centre */
- LINE (-vp(10), sub::VERTICAL_CENTRE_OF_SCREEN, 0, sub::LEFT_OF_SCREEN);
+ LINE (-vp(10), sub::VERTICAL_CENTRE_OF_SCREEN, (10.0 / 1920), sub::LEFT_OF_SCREEN);
BLOCK("middle left", "Arial", fs(20), false, false, false);
SUB_END ();
@@ -280,12 +280,12 @@ BOOST_AUTO_TEST_CASE (ssa_reader_test3)
SUB_END ();
SUB_START (sub::Time::from_hms (0, 0, 9, 280), sub::Time::from_hms (0, 0, 11, 560));
- LINE (-vp(10), sub::VERTICAL_CENTRE_OF_SCREEN, 0, sub::RIGHT_OF_SCREEN);
+ LINE (-vp(10), sub::VERTICAL_CENTRE_OF_SCREEN, (10.0 / 1920), sub::RIGHT_OF_SCREEN);
BLOCK("middle right", "Arial", fs(20), false, false, false);
SUB_END ();
SUB_START (sub::Time::from_hms (0, 0, 9, 290), sub::Time::from_hms (0, 0, 11, 560));
- LINE ((10.0 / 1080), sub::TOP_OF_SCREEN, 0, sub::LEFT_OF_SCREEN);
+ LINE ((10.0 / 1080), sub::TOP_OF_SCREEN, (10.0 / 1920), sub::LEFT_OF_SCREEN);
BLOCK("top left", "Arial", fs(20), false, false, false);
SUB_END ();
@@ -295,7 +295,7 @@ BOOST_AUTO_TEST_CASE (ssa_reader_test3)
SUB_END ();
SUB_START (sub::Time::from_hms (0, 0, 9, 310), sub::Time::from_hms (0, 0, 11, 560));
- LINE ((10.0 / 1080), sub::TOP_OF_SCREEN, 0, sub::RIGHT_OF_SCREEN);
+ LINE ((10.0 / 1080), sub::TOP_OF_SCREEN, (10.0 / 1920), sub::RIGHT_OF_SCREEN);
BLOCK("top right", "Arial", fs(20), false, false, false);
SUB_END ();
@@ -637,3 +637,37 @@ BOOST_AUTO_TEST_CASE (ssa_reader_c)
test_c("", "ff00ff");
}
+
+BOOST_AUTO_TEST_CASE(ssa_reader_horizontal_margin)
+{
+ auto subs = read_file("test/data/horizontal_margin.ssa");
+ BOOST_REQUIRE_EQUAL(subs.size(), 5U);
+
+ int n = 0;
+
+ BOOST_REQUIRE_EQUAL(subs[n].lines.size(), 1U);
+ BOOST_CHECK(subs[n].lines[0].horizontal_position.reference == sub::HORIZONTAL_CENTRE_OF_SCREEN);
+ BOOST_CHECK_CLOSE(subs[n].lines[0].horizontal_position.proportional, 0, 1);
+ ++n;
+
+ BOOST_REQUIRE_EQUAL(subs[n].lines.size(), 1U);
+ BOOST_CHECK(subs[n].lines[0].horizontal_position.reference == sub::HORIZONTAL_CENTRE_OF_SCREEN);
+ BOOST_CHECK_CLOSE(subs[n].lines[0].horizontal_position.proportional, -90.0f / (2 * 1920.0f), 1);
+ ++n;
+
+ BOOST_REQUIRE_EQUAL(subs[n].lines.size(), 1U);
+ BOOST_CHECK(subs[n].lines[0].horizontal_position.reference == sub::LEFT_OF_SCREEN);
+ BOOST_CHECK_CLOSE(subs[n].lines[0].horizontal_position.proportional, 10.0f / 1920.f, 1);
+ ++n;
+
+ BOOST_REQUIRE_EQUAL(subs[n].lines.size(), 1U);
+ BOOST_CHECK(subs[n].lines[0].horizontal_position.reference == sub::RIGHT_OF_SCREEN);
+ BOOST_CHECK_CLOSE(subs[n].lines[0].horizontal_position.proportional, 100.0f / 1920.f, 1);
+ ++n;
+
+ BOOST_REQUIRE_EQUAL(subs[n].lines.size(), 1U);
+ BOOST_CHECK(subs[n].lines[0].horizontal_position.reference == sub::LEFT_OF_SCREEN);
+ BOOST_CHECK_CLOSE(subs[n].lines[0].horizontal_position.proportional, 200.0f / 1920.f, 1);
+ ++n;
+}
+