diff options
| -rw-r--r-- | src/text_asset.cc | 132 | ||||
| -rw-r--r-- | src/text_asset.h | 6 |
2 files changed, 73 insertions, 65 deletions
diff --git a/src/text_asset.cc b/src/text_asset.cc index ff662b69..1a58d22f 100644 --- a/src/text_asset.cc +++ b/src/text_asset.cc @@ -409,70 +409,7 @@ TextAsset::maybe_add_text( return; } - ParseState ps; - for (auto const& i: parse_state) { - if (i.font_id) { - ps.font_id = i.font_id.get(); - } - if (i.size) { - ps.size = i.size.get(); - } - if (i.aspect_adjust) { - ps.aspect_adjust = i.aspect_adjust.get(); - } - if (i.italic) { - ps.italic = i.italic.get(); - } - if (i.bold) { - ps.bold = i.bold.get(); - } - if (i.underline) { - ps.underline = i.underline.get(); - } - if (i.colour) { - ps.colour = i.colour.get(); - } - if (i.effect) { - ps.effect = i.effect.get(); - } - if (i.effect_colour) { - ps.effect_colour = i.effect_colour.get(); - } - if (i.h_position) { - ps.h_position = i.h_position.get(); - } - if (i.h_align) { - ps.h_align = i.h_align.get(); - } - if (i.v_position) { - ps.v_position = i.v_position.get(); - } - if (i.v_align) { - ps.v_align = i.v_align.get(); - } - if (i.z_position) { - ps.z_position = i.z_position.get(); - } - if (i.direction) { - ps.direction = i.direction.get(); - } - if (i.in) { - ps.in = i.in.get(); - } - if (i.out) { - ps.out = i.out.get(); - } - if (i.fade_up_time) { - ps.fade_up_time = i.fade_up_time.get(); - } - if (i.fade_down_time) { - ps.fade_down_time = i.fade_down_time.get(); - } - if (i.type) { - ps.type = i.type.get(); - } - } - + ParseState ps(parse_state); if (!ps.in || !ps.out) { /* We're not in a <Subtitle> node; just ignore this content */ return; @@ -1003,3 +940,70 @@ TextAsset::ensure_font(string load_id, dcp::ArrayData data) } } + +dcp::TextAsset::ParseState::ParseState(std::vector<dcp::TextAsset::ParseState> const& ps) +{ + for (auto const& i: ps) { + if (i.font_id) { + font_id = i.font_id.get(); + } + if (i.size) { + size = i.size.get(); + } + if (i.aspect_adjust) { + aspect_adjust = i.aspect_adjust.get(); + } + if (i.italic) { + italic = i.italic.get(); + } + if (i.bold) { + bold = i.bold.get(); + } + if (i.underline) { + underline = i.underline.get(); + } + if (i.colour) { + colour = i.colour.get(); + } + if (i.effect) { + effect = i.effect.get(); + } + if (i.effect_colour) { + effect_colour = i.effect_colour.get(); + } + if (i.h_position) { + h_position = i.h_position.get(); + } + if (i.h_align) { + h_align = i.h_align.get(); + } + if (i.v_position) { + v_position = i.v_position.get(); + } + if (i.v_align) { + v_align = i.v_align.get(); + } + if (i.z_position) { + z_position = i.z_position.get(); + } + if (i.direction) { + direction = i.direction.get(); + } + if (i.in) { + in = i.in.get(); + } + if (i.out) { + out = i.out.get(); + } + if (i.fade_up_time) { + fade_up_time = i.fade_up_time.get(); + } + if (i.fade_down_time) { + fade_down_time = i.fade_down_time.get(); + } + if (i.type) { + type = i.type.get(); + } + } +} + diff --git a/src/text_asset.h b/src/text_asset.h index 4d739027..0a8ed78c 100644 --- a/src/text_asset.h +++ b/src/text_asset.h @@ -141,7 +141,11 @@ protected: friend struct ::interop_dcp_font_test; friend struct ::smpte_dcp_font_test; - struct ParseState { + struct ParseState + { + ParseState() = default; + explicit ParseState(std::vector<ParseState> const& ps); + boost::optional<std::string> font_id; boost::optional<int64_t> size; boost::optional<float> aspect_adjust; |
