summaryrefslogtreecommitdiff
path: root/src/stl_binary_writer.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-01-14 15:13:48 +0000
committerCarl Hetherington <cth@carlh.net>2015-01-14 15:13:48 +0000
commit972d33c500c9de02aa007440f665637e455610c1 (patch)
tree5956c54b3b97ab10b61fd1383cfd12de15959214 /src/stl_binary_writer.cc
parent65244fb9190e6d0aefc83c9cc4de83b1df18001d (diff)
Forward-port some stuff from 0.x.
Diffstat (limited to 'src/stl_binary_writer.cc')
-rw-r--r--src/stl_binary_writer.cc14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/stl_binary_writer.cc b/src/stl_binary_writer.cc
index aa9a032..b9ad86f 100644
--- a/src/stl_binary_writer.cc
+++ b/src/stl_binary_writer.cc
@@ -192,8 +192,8 @@ sub::write_stl_binary (
output.write (buffer, 1024);
- int N = 0;
for (list<Subtitle>::const_iterator i = subtitles.begin(); i != subtitles.end(); ++i) {
+ int N = 0;
for (list<Line>::const_iterator j = i->lines.begin(); j != i->lines.end(); ++j) {
memset (buffer, 0, 1024);
@@ -235,18 +235,16 @@ sub::write_stl_binary (
break;
}
} else if (j->vertical_position.line) {
- /* XXX: how many lines are there...? We need to correct for any difference
- between the number of lines and our ROWS.
- */
+ float const prop = float (j->vertical_position.line.get()) / j->vertical_position.lines.get ();
switch (j->vertical_position.reference.get_value_or (TOP_OF_SCREEN)) {
case TOP_OF_SCREEN:
- vp = j->vertical_position.line.get();
+ vp = prop * ROWS;
break;
case CENTRE_OF_SCREEN:
- vp = j->vertical_position.line.get() + (ROWS / 2);
+ vp = (prop + 0.5) * ROWS;
break;
case BOTTOM_OF_SCREEN:
- vp = ROWS - (j->vertical_position.line.get());
+ vp = (1 - prop) * ROWS;
break;
default:
break;
@@ -295,6 +293,8 @@ sub::write_stl_binary (
put_string (buffer + 16, text);
output.write (buffer, 128);
+
+ ++N;
}
}