diff options
| author | Carl Hetherington <cth@carlh.net> | 2025-03-20 23:43:34 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2025-03-24 16:59:24 +0100 |
| commit | 816a7b7a9d9c3cae7565cec139bf28068853f94d (patch) | |
| tree | 718644b178b68fd03e2b1ea18c7bec96da5de4e4 /src/lib | |
| parent | e93b66f4236ec25dbd0603bbe74c904b53180e91 (diff) | |
Basic support for variable-Z 3D subtitles.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/config.cc | 4 | ||||
| -rw-r--r-- | src/lib/dcp_text_track.cc | 4 | ||||
| -rw-r--r-- | src/lib/film.cc | 8 | ||||
| -rw-r--r-- | src/lib/reel_writer.cc | 11 | ||||
| -rw-r--r-- | src/lib/subtitle_film_encoder.cc | 2 | ||||
| -rw-r--r-- | src/lib/text_content.cc | 2 | ||||
| -rw-r--r-- | src/lib/text_decoder.cc | 1 | ||||
| -rw-r--r-- | src/lib/util.cc | 4 | ||||
| -rw-r--r-- | src/lib/video_content.cc | 2 |
9 files changed, 20 insertions, 18 deletions
diff --git a/src/lib/config.cc b/src/lib/config.cc index 49c64e5b6..86bc343da 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -807,7 +807,7 @@ Config::write_config() const cxml::add_text_child(root, "DefaultAudioDelay", fmt::to_string(_default_audio_delay)); if (_default_audio_language) { /* [XML] DefaultAudioLanguage Default audio language to use for new films */ - cxml::add_text_child(root, "DefaultAudioLanguage", _default_audio_language->to_string()); + cxml::add_text_child(root, "DefaultAudioLanguage", _default_audio_language->as_string()); } if (_default_kdm_directory) { /* [XML:opt] DefaultKDMDirectory Default directory to write KDMs to. */ @@ -1111,7 +1111,7 @@ Config::write_config() const _audio_mapping->as_xml(cxml::add_child(root, "AudioMapping")); } for (auto const& i: _custom_languages) { - cxml::add_text_child(root, "CustomLanguage", i.to_string()); + cxml::add_text_child(root, "CustomLanguage", i.as_string()); } for (auto const& initial: _initial_paths) { if (initial.second) { diff --git a/src/lib/dcp_text_track.cc b/src/lib/dcp_text_track.cc index 292932396..ec1d6828b 100644 --- a/src/lib/dcp_text_track.cc +++ b/src/lib/dcp_text_track.cc @@ -50,7 +50,7 @@ DCPTextTrack::DCPTextTrack (string name_, optional<dcp::LanguageTag> language_) string DCPTextTrack::summary () const { - return String::compose("%1 (%2)", name, language ? language->to_string() : _("Unknown")); + return String::compose("%1 (%2)", name, language ? language->as_string() : _("Unknown")); } void @@ -58,7 +58,7 @@ DCPTextTrack::as_xml (xmlpp::Element* parent) const { cxml::add_text_child(parent, "Name", name); if (language) { - cxml::add_text_child(parent, "Language", language->to_string()); + cxml::add_text_child(parent, "Language", language->as_string()); } } diff --git a/src/lib/film.cc b/src/lib/film.cc index 6adc7dff4..5c3b6cee9 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -442,13 +442,13 @@ Film::metadata(bool with_content_paths) const for (auto i: _content_versions) { cxml::add_text_child(root, "ContentVersion", i); } - cxml::add_text_child(root, "NameLanguage", _name_language.to_string()); + cxml::add_text_child(root, "NameLanguage", _name_language.as_string()); cxml::add_text_child(root, "TerritoryType", territory_type_to_string(_territory_type)); if (_release_territory) { cxml::add_text_child(root, "ReleaseTerritory", _release_territory->subtag()); } if (_sign_language_video_language) { - cxml::add_text_child(root, "SignLanguageVideoLanguage", _sign_language_video_language->to_string()); + cxml::add_text_child(root, "SignLanguageVideoLanguage", _sign_language_video_language->as_string()); } cxml::add_text_child(root, "VersionNumber", fmt::to_string(_version_number)); cxml::add_text_child(root, "Status", dcp::status_to_string(_status)); @@ -475,7 +475,7 @@ Film::metadata(bool with_content_paths) const cxml::add_text_child(root, "UserExplicitContainer", _user_explicit_container ? "1" : "0"); cxml::add_text_child(root, "UserExplicitResolution", _user_explicit_resolution ? "1" : "0"); if (_audio_language) { - cxml::add_text_child(root, "AudioLanguage", _audio_language->to_string()); + cxml::add_text_child(root, "AudioLanguage", _audio_language->as_string()); } _playlist->as_xml( cxml::add_child(root, "Playlist"), @@ -1004,7 +1004,7 @@ Film::isdcf_name(bool if_created_now) const auto entry_for_language = [](dcp::LanguageTag const& tag) { /* Look up what we should be using for this tag in the DCNC name */ for (auto const& dcnc: dcp::dcnc_tags()) { - if (tag.to_string() == dcnc.first) { + if (tag.as_string() == dcnc.first) { return dcnc.second; } } diff --git a/src/lib/reel_writer.cc b/src/lib/reel_writer.cc index 9037c9ef9..90cd9f26b 100644 --- a/src/lib/reel_writer.cc +++ b/src/lib/reel_writer.cc @@ -801,9 +801,9 @@ ReelWriter::empty_text_asset (TextType type, optional<DCPTextTrack> track, bool auto s = make_shared<dcp::InteropTextAsset>(); s->set_movie_title (film()->name()); if (is_open(type)) { - s->set_language (lang.first ? lang.first->to_string() : "Unknown"); + s->set_language(lang.first ? lang.first->as_string() : "Unknown"); } else if (track->language) { - s->set_language (track->language->to_string()); + s->set_language(track->language->as_string()); } s->set_reel_number(fmt::to_string(_reel_index + 1)); asset = s; @@ -814,7 +814,7 @@ ReelWriter::empty_text_asset (TextType type, optional<DCPTextTrack> track, bool if (is_open(type) && lang.first) { s->set_language (*lang.first); } else if (track && track->language) { - s->set_language (dcp::LanguageTag(track->language->to_string())); + s->set_language(dcp::LanguageTag(track->language->as_string())); } s->set_edit_rate (dcp::Fraction (film()->video_frame_rate(), 1)); s->set_reel_number (_reel_index + 1); @@ -843,6 +843,7 @@ ReelWriter::empty_text_asset (TextType type, optional<DCPTextTrack> track, bool 0.5, dcp::VAlign::CENTER, 0, + vector<dcp::Text::VariableZPosition>(), dcp::Direction::LTR, " ", dcp::Effect::NONE, @@ -958,11 +959,11 @@ ReelWriter::write(PlayerText subs, TextType type, optional<DCPTextTrack> track, for (auto i: subs.bitmap) { asset->add ( - make_shared<dcp::TextImage>( + std::make_shared<dcp::TextImage>( image_as_png(i.image), dcp::Time(period.from.seconds() - _period.from.seconds(), tcr), dcp::Time(period.to.seconds() - _period.from.seconds(), tcr), - i.rectangle.x, dcp::HAlign::LEFT, i.rectangle.y, dcp::VAlign::TOP, 0, + i.rectangle.x, dcp::HAlign::LEFT, i.rectangle.y, dcp::VAlign::TOP, 0, vector<dcp::Text::VariableZPosition>(), dcp::Time(), dcp::Time() ) ); diff --git a/src/lib/subtitle_film_encoder.cc b/src/lib/subtitle_film_encoder.cc index a127ba73f..2de74bc67 100644 --- a/src/lib/subtitle_film_encoder.cc +++ b/src/lib/subtitle_film_encoder.cc @@ -145,7 +145,7 @@ SubtitleFilmEncoder::text(PlayerText subs, TextType type, optional<DCPTextTrack> auto s = make_shared<dcp::InteropTextAsset>(); s->set_movie_title (_film->name()); if (lang.first) { - s->set_language (lang.first->to_string()); + s->set_language(lang.first->as_string()); } s->set_reel_number(fmt::to_string(_reel_index + 1)); _assets[_reel_index].first = s; diff --git a/src/lib/text_content.cc b/src/lib/text_content.cc index 4a333bb76..93dad2639 100644 --- a/src/lib/text_content.cc +++ b/src/lib/text_content.cc @@ -411,7 +411,7 @@ TextContent::as_xml(xmlpp::Element* root) const } if (_language) { auto lang = cxml::add_child(text, "Language"); - lang->add_child_text (_language->to_string()); + lang->add_child_text(_language->as_string()); lang->set_attribute("additional", _language_is_additional ? "1" : "0"); } } diff --git a/src/lib/text_decoder.cc b/src/lib/text_decoder.cc index ab82177f7..52d6c58d3 100644 --- a/src/lib/text_decoder.cc +++ b/src/lib/text_decoder.cc @@ -284,6 +284,7 @@ TextDecoder::emit_plain_start(ContentTime from, sub::Subtitle const & sub_subtit v_position, v_align, 0, + vector<dcp::Text::VariableZPosition>(), dcp::Direction::LTR, remove_invalid_characters_for_xml(block.text), dcp::Effect::NONE, diff --git a/src/lib/util.cc b/src/lib/util.cc index 1e2f7d61f..81ae4c494 100644 --- a/src/lib/util.cc +++ b/src/lib/util.cc @@ -479,8 +479,8 @@ LIBDCP_ENABLE_WARNINGS /* Render something to fontconfig to create its cache */ vector<StringText> subs; dcp::TextString ss( - optional<string>(), false, false, false, dcp::Colour(), 42, 1, dcp::Time(), dcp::Time(), 0, dcp::HAlign::CENTER, 0, dcp::VAlign::CENTER, 0, dcp::Direction::LTR, - "Hello dolly", dcp::Effect::NONE, dcp::Colour(), dcp::Time(), dcp::Time(), 0, std::vector<dcp::Ruby>() + optional<string>(), false, false, false, dcp::Colour(), 42, 1, dcp::Time(), dcp::Time(), 0, dcp::HAlign::CENTER, 0, dcp::VAlign::CENTER, 0, + vector<dcp::Text::VariableZPosition>(), dcp::Direction::LTR, "Hello dolly", dcp::Effect::NONE, dcp::Colour(), dcp::Time(), dcp::Time(), 0, std::vector<dcp::Ruby>() ); subs.push_back(StringText(ss, 0, make_shared<dcpomatic::Font>("foo"), dcp::SubtitleStandard::SMPTE_2014)); render_text(subs, dcp::Size(640, 480), DCPTime(), 24); diff --git a/src/lib/video_content.cc b/src/lib/video_content.cc index 56262cd14..ae13e1eca 100644 --- a/src/lib/video_content.cc +++ b/src/lib/video_content.cc @@ -304,7 +304,7 @@ VideoContent::as_xml(xmlpp::Element* element) const cxml::add_text_child(element, "Range", _range == VideoRange::FULL ? "full" : "video"); _pixel_quanta.as_xml(cxml::add_child(element, "PixelQuanta")); if (_burnt_subtitle_language) { - cxml::add_text_child(element, "BurntSubtitleLanguage", _burnt_subtitle_language->to_string()); + cxml::add_text_child(element, "BurntSubtitleLanguage", _burnt_subtitle_language->as_string()); } } |
