diff options
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/render_text.cc | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/lib/render_text.cc b/src/lib/render_text.cc index 84fc8414d..ddfccbde8 100644 --- a/src/lib/render_text.cc +++ b/src/lib/render_text.cc @@ -408,9 +408,15 @@ render_text(vector<StringText> subtitles, dcp::Size target, DCPTime time, int fr vector<PositionImage> images; for (auto const& i: subtitles) { - if (!pending.empty() && (i.v_align() != pending.back().v_align() || fabs(i.v_position() - pending.back().v_position()) > 1e-4)) { - images.push_back(render_line(pending, target, time, frame_rate)); - pending.clear (); + if (!pending.empty()) { + auto const last = pending.back(); + auto const different_v = i.v_align() != last.v_align() || fabs(i.v_position() - last.v_position()) > 1e-4; + auto const different_h = i.h_align() != last.h_align() || fabs(i.h_position() - pending.back().h_position()) > 1e-4; + if (different_v || different_h) { + /* We need a new line if any new positioning (horizontal or vertical) changes for this section */ + images.push_back(render_line(pending, target, time, frame_rate)); + pending.clear (); + } } pending.push_back (i); } |
