diff options
Diffstat (limited to 'src/lib/layout_closed_captions.cc')
| -rw-r--r-- | src/lib/layout_closed_captions.cc | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/lib/layout_closed_captions.cc b/src/lib/layout_closed_captions.cc index 0f55f79f5..858b91c39 100644 --- a/src/lib/layout_closed_captions.cc +++ b/src/lib/layout_closed_captions.cc @@ -22,10 +22,12 @@ #include "dcpomatic_assert.h" #include "layout_closed_captions.h" #include "string_text.h" +#include "util.h" using std::string; using std::vector; +using boost::optional; vector<string> @@ -48,8 +50,19 @@ layout_closed_captions(vector<StringText> text) std::sort(text.begin(), text.end(), [&](StringText const & a, StringText const & b) { return from_top(a) < from_top(b); }); vector<string> strings; + string current; + optional<float> last_position; for (auto const& t: text) { - strings.push_back(t.text()); + if (last_position && !text_positions_close(*last_position, t.v_position()) && !current.empty()) { + strings.push_back(current); + current = ""; + } + current += t.text(); + last_position = t.v_position(); + } + + if (!current.empty()) { + strings.push_back(current); } return strings; |
