From 59886567974bd3e79d30a4a9425d86d50bf425f3 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 26 Jan 2014 21:35:02 +0000 Subject: It builds again. --- src/subtitle.cc | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/subtitle.cc (limited to 'src/subtitle.cc') diff --git a/src/subtitle.cc b/src/subtitle.cc new file mode 100644 index 00000000..dc7a6b22 --- /dev/null +++ b/src/subtitle.cc @@ -0,0 +1,60 @@ +/* + Copyright (C) 2012-2014 Carl Hetherington + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include "subtitle.h" +#include "xml.h" +#include "font.h" +#include "text.h" +#include + +using std::string; +using boost::shared_ptr; +using boost::lexical_cast; +using namespace dcp; + +Subtitle::Subtitle (shared_ptr node) +{ + in = Time (node->string_attribute ("TimeIn")); + out = Time (node->string_attribute ("TimeOut")); + font_nodes = type_children (node, "Font"); + text_nodes = type_children (node, "Text"); + fade_up_time = fade_time (node, "FadeUpTime"); + fade_down_time = fade_time (node, "FadeDownTime"); +} + +Time +Subtitle::fade_time (shared_ptr node, string name) +{ + string const u = node->optional_string_attribute (name).get_value_or (""); + Time t; + + if (u.empty ()) { + t = Time (0, 0, 0, 20); + } else if (u.find (":") != string::npos) { + t = Time (u); + } else { + t = Time (0, 0, 0, lexical_cast (u)); + } + + if (t > Time (0, 0, 8, 0)) { + t = Time (0, 0, 8, 0); + } + + return t; +} -- cgit v1.2.3