2 Copyright (C) 2012 Carl Hetherington <cth@carlh.net>
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
29 class TextNode : public XMLNode
33 TextNode (xmlpp::Node const * node);
42 Time fade_time (std::string name);
46 class SubtitleNode : public XMLNode
50 SubtitleNode (xmlpp::Node const * node);
54 std::list<boost::shared_ptr<FontNode> > font_nodes;
55 std::list<boost::shared_ptr<TextNode> > text_nodes;
58 class FontNode : public XMLNode
62 FontNode (xmlpp::Node const * node);
63 FontNode (std::list<boost::shared_ptr<FontNode> > const & font_nodes);
67 boost::optional<bool> italic;
68 boost::optional<Color> color;
69 boost::optional<Effect> effect;
70 boost::optional<Color> effect_color;
72 std::list<boost::shared_ptr<SubtitleNode> > subtitle_nodes;
73 std::list<boost::shared_ptr<FontNode> > font_nodes;
74 std::list<boost::shared_ptr<TextNode> > text_nodes;
77 class LoadFontNode : public XMLNode
81 LoadFontNode (xmlpp::Node const * node);
106 std::string font () const {
110 bool italic () const {
114 Color color () const {
126 std::string text () const {
130 float v_position () const {
134 VAlign v_align () const {
138 Effect effect () const {
142 Color effect_color () const {
143 return _effect_color;
146 Time fade_up_time () const {
147 return _fade_up_time;
150 Time fade_down_time () const {
151 return _fade_down_time;
154 int size_in_pixels (int screen_height) const;
169 Time _fade_down_time;
172 class SubtitleAsset : public Asset, public XMLFile
175 SubtitleAsset (std::string directory, std::string xml);
177 void write_to_cpl (std::ostream&) const {}
178 virtual std::list<std::string> equals (boost::shared_ptr<const Asset>, EqualityOptions) const {
180 return std::list<std::string> ();
183 std::string language () const {
187 std::list<boost::shared_ptr<Subtitle> > subtitles_at (Time t) const;
190 std::string font_id_to_name (std::string id) const;
192 void examine_font_nodes (
193 std::list<boost::shared_ptr<FontNode> > const & font_nodes,
194 std::list<boost::shared_ptr<FontNode> >& current_font_nodes,
195 std::list<boost::shared_ptr<SubtitleNode> >& current_subtitle_nodes
198 void examine_text_nodes (
199 boost::shared_ptr<SubtitleNode> subtitle_node,
200 std::list<boost::shared_ptr<TextNode> > const & text_nodes,
201 std::list<boost::shared_ptr<FontNode> >& current_font_nodes
204 std::string _subtitle_id;
205 std::string _movie_title;
206 int64_t _reel_number;
207 std::string _language;
208 std::list<boost::shared_ptr<LoadFontNode> > _load_font_nodes;
210 std::list<boost::shared_ptr<Subtitle> > _subtitles;