diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-04-09 21:20:10 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-04-09 21:20:10 +0200 |
| commit | c27d14badb229c24533db65dbaee1939dce89455 (patch) | |
| tree | 250f422babe86b56bac69fe45142fd1fd4d0ec11 /src/lib/dcp_text_track.cc | |
| parent | f10849bd52470a93f54bb90686aa9a3b1e72e796 (diff) | |
Make DCP text track language properly optional and ignore bad values on imported DCPs (#1950).
Diffstat (limited to 'src/lib/dcp_text_track.cc')
| -rw-r--r-- | src/lib/dcp_text_track.cc | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/src/lib/dcp_text_track.cc b/src/lib/dcp_text_track.cc index 1c73870aa..0bd751275 100644 --- a/src/lib/dcp_text_track.cc +++ b/src/lib/dcp_text_track.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2018 Carl Hetherington <cth@carlh.net> + Copyright (C) 2018-2021 Carl Hetherington <cth@carlh.net> This file is part of DCP-o-matic. @@ -18,50 +18,65 @@ */ + #include "dcp_text_track.h" #include "compose.hpp" #include <string> +#include "i18n.h" + + using std::string; +using boost::optional; + DCPTextTrack::DCPTextTrack (cxml::ConstNodePtr node) { name = node->string_child("Name"); - language = node->string_child("Language"); + if (auto lang = node->optional_string_child("Language")) { + language = dcp::LanguageTag(*lang); + } } -DCPTextTrack::DCPTextTrack (string name_, string language_) + +DCPTextTrack::DCPTextTrack (string name_, optional<dcp::LanguageTag> language_) : name (name_) , language (language_) { } + string DCPTextTrack::summary () const { - return String::compose("%1 (%2)", name, language); + return String::compose("%1 (%2)", name, language ? language->to_string() : _("Unknown")); } void DCPTextTrack::as_xml (xmlpp::Element* parent) const { parent->add_child("Name")->add_child_text(name); - parent->add_child("Language")->add_child_text(language); + if (language) { + parent->add_child("Language")->add_child_text(language->to_string()); + } } + bool operator== (DCPTextTrack const & a, DCPTextTrack const & b) { return a.name == b.name && a.language == b.language; } + bool operator!= (DCPTextTrack const & a, DCPTextTrack const & b) { return !(a == b); } + bool operator< (DCPTextTrack const & a, DCPTextTrack const & b) { |
