From 13a693315da47ee8c1306c92f9af2e95d4e6829e Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sat, 20 Dec 2014 22:25:55 +0000 Subject: Basic comparison of subtitle assets; tweaks to InteropLoadFont. --- src/interop_subtitle_content.cc | 45 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'src/interop_subtitle_content.cc') diff --git a/src/interop_subtitle_content.cc b/src/interop_subtitle_content.cc index 25e49dd9..0fdee0b4 100644 --- a/src/interop_subtitle_content.cc +++ b/src/interop_subtitle_content.cc @@ -26,7 +26,9 @@ using std::list; using std::string; using boost::shared_ptr; +using boost::function; using boost::optional; +using boost::dynamic_pointer_cast; using namespace dcp; InteropSubtitleContent::InteropSubtitleContent (boost::filesystem::path file) @@ -165,3 +167,46 @@ InteropSubtitleContent::xml_as_string () const return doc.write_to_string_formatted ("UTF-8"); } +void +InteropSubtitleContent::add_font (string id, string uri) +{ + _load_font_nodes.push_back (shared_ptr (new InteropLoadFont (id, uri))); +} + +bool +InteropSubtitleContent::equals (shared_ptr other_asset, EqualityOptions options, function note) const +{ + if (!SubtitleContent::equals (other_asset, options, note)) { + return false; + } + + shared_ptr other = dynamic_pointer_cast (other_asset); + if (!other) { + return false; + } + + list >::const_iterator i = _load_font_nodes.begin (); + list >::const_iterator j = other->_load_font_nodes.begin (); + + while (i != _load_font_nodes.end ()) { + if (j == _load_font_nodes.end ()) { + note (DCP_ERROR, " nodes differ"); + return false; + } + + if (**i != **j) { + note (DCP_ERROR, " nodes differ"); + return false; + } + + ++i; + ++j; + } + + if (_movie_title != other->_movie_title) { + note (DCP_ERROR, "Subtitle movie titles differ"); + return false; + } + + return true; +} -- cgit v1.2.3