X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fsubtitle_asset.h;h=335b9f37b0af22c3456b12b003348339d34e2d1a;hb=0ad84c854da64d0710f06307f63d8b70ac59b681;hp=d43406d2410eec83151e084e354291747b55c6ca;hpb=62449f8a80feb88c17695dd71af4f881f2029dcf;p=libdcp.git diff --git a/src/subtitle_asset.h b/src/subtitle_asset.h index d43406d2..335b9f37 100644 --- a/src/subtitle_asset.h +++ b/src/subtitle_asset.h @@ -17,6 +17,9 @@ */ +#ifndef LIBDCP_SUBTITLE_ASSET_H +#define LIBDCP_SUBTITLE_ASSET_H + #include #include "asset.h" #include "dcp_time.h" @@ -44,6 +47,7 @@ public: Time out, float v_position, VAlign v_align, + HAlign h_align, std::string text, Effect effect, Color effect_color, @@ -75,6 +79,10 @@ public: return _text; } + void set_text (std::string t) { + _text = t; + } + float v_position () const { return _v_position; } @@ -83,6 +91,10 @@ public: return _v_align; } + HAlign h_align () const { + return _h_align; + } + Effect effect () const { return _effect; } @@ -115,8 +127,12 @@ private: int _size; Time _in; Time _out; + /** Vertical position as a proportion of the screen height from the top + * (between 0 and 100). + */ float _v_position; VAlign _v_align; + HAlign _h_align; std::string _text; Effect _effect; Color _effect_color; @@ -133,7 +149,7 @@ public: SubtitleAsset (std::string directory, std::string xml_file); SubtitleAsset (std::string directory, std::string movie_title, std::string language); - void write_to_cpl (xmlpp::Element *, bool) const; + void write_to_cpl (xmlpp::Element *) const; virtual bool equals (boost::shared_ptr, EqualityOptions, boost::function note) const { /* XXX */ note (ERROR, "subtitle assets not compared yet"); @@ -144,7 +160,7 @@ public: return _language; } - std::list > subtitles_at (Time t) const; + std::list > subtitles_during (Time from, Time to) const; std::list > const & subtitles () const { return _subtitles; } @@ -153,32 +169,30 @@ public: void read_xml (std::string); void write_xml () const; - void write_xml (std::ostream &) const; + Glib::ustring xml_as_string () const; + +protected: + + std::string asdcp_kind () const { + return "Subtitle"; + } private: std::string font_id_to_name (std::string id) const; + void read_mxf (std::string); + void read_xml (boost::shared_ptr, bool smpte); struct ParseState { std::list > font_nodes; std::list > text_nodes; std::list > subtitle_nodes; + boost::shared_ptr current; }; - void maybe_add_subtitle (std::string text, ParseState const & parse_state); - - void examine_font_nodes ( - boost::shared_ptr xml, - std::list > const & font_nodes, - ParseState& parse_state - ); - - void examine_text_nodes ( - boost::shared_ptr xml, - std::list > const & text_nodes, - ParseState& parse_state - ); + void parse_node (xmlpp::Node* node, ParseState& parse_state, boost::optional tcr); + void maybe_add_subtitle (std::string text, ParseState& parse_state); - std::string _movie_title; + boost::optional _movie_title; /* strangely, this is sometimes a string */ std::string _reel_number; std::string _language; @@ -189,3 +203,5 @@ private: }; } + +#endif