From 2571104b6a208fa00b2c98d50f97849c3e7fa6c9 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 22 Aug 2018 21:04:56 +0100 Subject: Store a name with text content. --- src/lib/text_content.cc | 33 ++++++++++++++++++++++----------- src/lib/text_content.h | 9 +++++++++ 2 files changed, 31 insertions(+), 11 deletions(-) (limited to 'src/lib') diff --git a/src/lib/text_content.cc b/src/lib/text_content.cc index a077b2c46..abc68cf65 100644 --- a/src/lib/text_content.cc +++ b/src/lib/text_content.cc @@ -46,16 +46,17 @@ int const TextContentProperty::X_SCALE = 502; int const TextContentProperty::Y_SCALE = 503; int const TextContentProperty::USE = 504; int const TextContentProperty::BURN = 505; -int const TextContentProperty::LANGUAGE = 506; -int const TextContentProperty::FONTS = 507; -int const TextContentProperty::COLOUR = 508; -int const TextContentProperty::EFFECT = 509; -int const TextContentProperty::EFFECT_COLOUR = 510; -int const TextContentProperty::LINE_SPACING = 511; -int const TextContentProperty::FADE_IN = 512; -int const TextContentProperty::FADE_OUT = 513; -int const TextContentProperty::OUTLINE_WIDTH = 514; -int const TextContentProperty::TYPE = 515; +int const TextContentProperty::NAME = 506; +int const TextContentProperty::LANGUAGE = 507; +int const TextContentProperty::FONTS = 508; +int const TextContentProperty::COLOUR = 509; +int const TextContentProperty::EFFECT = 510; +int const TextContentProperty::EFFECT_COLOUR = 511; +int const TextContentProperty::LINE_SPACING = 512; +int const TextContentProperty::FADE_IN = 513; +int const TextContentProperty::FADE_OUT = 514; +int const TextContentProperty::OUTLINE_WIDTH = 515; +int const TextContentProperty::TYPE = 516; TextContent::TextContent (Content* parent, TextType type, TextType original_type) : ContentPart (parent) @@ -218,6 +219,8 @@ TextContent::TextContent (Content* parent, cxml::ConstNodePtr node, int version) _language = node->optional_string_child ("SubtitleLanguage").get_value_or (""); } + _name = node->optional_string_child("Name").get_value_or(""); + list fonts = node->node_children ("Font"); for (list::const_iterator i = fonts.begin(); i != fonts.end(); ++i) { _fonts.push_back (shared_ptr (new Font (*i))); @@ -304,6 +307,7 @@ TextContent::TextContent (Content* parent, vector > c) _y_offset = ref->y_offset (); _x_scale = ref->x_scale (); _y_scale = ref->y_scale (); + _name = ref->name (); _language = ref->language (); _fonts = ref_fonts; _line_spacing = ref->line_spacing (); @@ -330,6 +334,7 @@ TextContent::as_xml (xmlpp::Node* root) const text->add_child("YOffset")->add_child_text (raw_convert (_y_offset)); text->add_child("XScale")->add_child_text (raw_convert (_x_scale)); text->add_child("YScale")->add_child_text (raw_convert (_y_scale)); + text->add_child("Name")->add_child_text (_name); text->add_child("Language")->add_child_text (_language); if (_colour) { text->add_child("Red")->add_child_text (raw_convert (_colour->r)); @@ -395,7 +400,7 @@ TextContent::identifier () const } } - /* The language is for metadata only, and doesn't affect + /* The name and language are for metadata only, and don't affect how this content looks. */ @@ -502,6 +507,12 @@ TextContent::set_y_scale (double s) maybe_set (_y_scale, s, TextContentProperty::Y_SCALE); } +void +TextContent::set_name (string name) +{ + maybe_set (_name, name, TextContentProperty::NAME); +} + void TextContent::set_language (string language) { diff --git a/src/lib/text_content.h b/src/lib/text_content.h index e5981acaf..0327d4a97 100644 --- a/src/lib/text_content.h +++ b/src/lib/text_content.h @@ -37,6 +37,7 @@ public: static int const Y_SCALE; static int const USE; static int const BURN; + static int const NAME; static int const LANGUAGE; static int const FONTS; static int const COLOUR; @@ -73,6 +74,7 @@ public: void set_y_offset (double); void set_x_scale (double); void set_y_scale (double); + void set_name (std::string name); void set_language (std::string language); void set_colour (dcp::Colour); void unset_colour (); @@ -123,6 +125,11 @@ public: return _fonts; } + std::string name () const { + boost::mutex::scoped_lock lm (_mutex); + return _name; + } + std::string language () const { boost::mutex::scoped_lock lm (_mutex); return _language; @@ -176,6 +183,8 @@ public: static std::list > from_xml (Content* parent, cxml::ConstNodePtr, int version); protected: + /** Name (annotation text) for this subtitle */ + std::string _name; /** subtitle language (e.g. "German") or empty if it is not known */ std::string _language; -- cgit v1.2.3