X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fsubtitle_asset.h;h=1b834522abff14126c6597143e19208b4d677c55;hb=147cbe31f62fd6087a9a70f0ce2cd4a69b06dbbf;hp=72563470c982c1609a6fba31b35c6e68c4e11a7e;hpb=78979cc6ad60c03bfc2e3757722d8e18d670a4c3;p=libdcp.git diff --git a/src/subtitle_asset.h b/src/subtitle_asset.h index 72563470..1b834522 100644 --- a/src/subtitle_asset.h +++ b/src/subtitle_asset.h @@ -35,12 +35,7 @@ public: float v_position; VAlign v_align; std::string text; - Time fade_up_time; - Time fade_down_time; - -private: - Time fade_time (std::string name); - + std::list > font_nodes; }; class SubtitleNode : public XMLNode @@ -51,8 +46,13 @@ public: Time in; Time out; + Time fade_up_time; + Time fade_down_time; std::list > font_nodes; std::list > text_nodes; + +private: + Time fade_time (std::string name); }; class FontNode : public XMLNode @@ -62,6 +62,7 @@ public: FontNode (xmlpp::Node const * node); FontNode (std::list > const & font_nodes); + std::string text; std::string id; int size; boost::optional italic; @@ -176,15 +177,17 @@ private: bool operator== (Subtitle const & a, Subtitle const & b); std::ostream& operator<< (std::ostream& s, Subtitle const & sub); -class SubtitleAsset : public Asset, public XMLFile +class SubtitleAsset : public Asset { public: - SubtitleAsset (std::string directory, std::string xml); + SubtitleAsset (std::string directory, std::string xml_file); + SubtitleAsset (std::string directory, std::string movie_title, std::string language); - void write_to_cpl (std::ostream&) const {} - virtual std::list equals (boost::shared_ptr, EqualityOptions) const { + void write_to_cpl (std::ostream&) const; + virtual bool equals (boost::shared_ptr, EqualityOptions, std::list& notes) const { /* XXX */ - return std::list (); + notes.push_back ("subtitle assets not compared yet"); + return true; } std::string language () const { @@ -196,24 +199,36 @@ public: return _subtitles; } + void add (boost::shared_ptr); + + void write_xml (); + private: std::string font_id_to_name (std::string id) const; + struct ParseState { + std::list > font_nodes; + std::list > text_nodes; + std::list > subtitle_nodes; + }; + + void maybe_add_subtitle (std::string text, ParseState const & parse_state); + void examine_font_nodes ( + boost::shared_ptr xml, std::list > const & font_nodes, - std::list >& current_font_nodes, - std::list >& current_subtitle_nodes + ParseState& parse_state ); void examine_text_nodes ( - boost::shared_ptr subtitle_node, + boost::shared_ptr xml, std::list > const & text_nodes, - std::list >& current_font_nodes + ParseState& parse_state ); - - std::string _subtitle_id; + std::string _movie_title; - int64_t _reel_number; + /* strangely, this is sometimes a string */ + std::string _reel_number; std::string _language; std::list > _load_font_nodes;