diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-01-14 15:13:48 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-01-14 15:13:48 +0000 |
| commit | 972d33c500c9de02aa007440f665637e455610c1 (patch) | |
| tree | 5956c54b3b97ab10b61fd1383cfd12de15959214 /src/stl_binary_writer.cc | |
| parent | 65244fb9190e6d0aefc83c9cc4de83b1df18001d (diff) | |
Forward-port some stuff from 0.x.
Diffstat (limited to 'src/stl_binary_writer.cc')
| -rw-r--r-- | src/stl_binary_writer.cc | 14 |
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; } } |
