X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Ffont_node.cc;h=1aa4be6bfa44978ff9c6eed9675d2fdaed2fee0b;hb=943af65e7833ef96bcfcfa957f1703d3a425c9ff;hp=5461d6aeacb3921559cf3f532baa176f68cb469f;hpb=c899557fb27d553275c9b20e24ebb7732e9cfd02;p=libdcp.git diff --git a/src/font_node.cc b/src/font_node.cc index 5461d6ae..1aa4be6b 100644 --- a/src/font_node.cc +++ b/src/font_node.cc @@ -1,20 +1,34 @@ /* - Copyright (C) 2012-2015 Carl Hetherington + Copyright (C) 2012-2016 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of libdcp. + + libdcp 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, + libdcp 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. + along with libdcp. If not, see . + + In addition, as a special exception, the copyright holders give + permission to link the code of portions of this program with the + OpenSSL library under certain conditions as described in each + individual source file, and distribute linked combinations + including the two. + You must obey the GNU General Public License in all respects + for all of the code used other than OpenSSL. If you modify + file(s) with this exception, you may extend this exception to your + version of the file(s), but you are not obligated to do so. If you + do not wish to do so, delete this exception statement from your + version. If you delete this exception statement from all source + files in the program, then also delete it here. */ #include "types.h" @@ -31,14 +45,24 @@ using boost::shared_ptr; using boost::optional; using namespace dcp; -FontNode::FontNode (cxml::ConstNodePtr node, int tcr) +FontNode::FontNode (cxml::ConstNodePtr node, optional tcr, Standard standard) { text = node->content (); - id = node->optional_string_attribute ("Id"); + if (standard == INTEROP) { + id = node->optional_string_attribute ("Id"); + } else { + id = node->optional_string_attribute ("ID"); + } size = node->optional_number_attribute ("Size").get_value_or (0); aspect_adjust = node->optional_number_attribute ("AspectAdjust"); italic = node->optional_bool_attribute ("Italic"); + bold = node->optional_string_attribute("Weight").get_value_or("normal") == "bold"; + if (standard == INTEROP) { + underline = node->optional_bool_attribute ("Underlined"); + } else { + underline = node->optional_bool_attribute ("Underline"); + } optional c = node->optional_string_attribute ("Color"); if (c) { colour = Colour (c.get ()); @@ -54,23 +78,25 @@ FontNode::FontNode (cxml::ConstNodePtr node, int tcr) list s = node->node_children ("Subtitle"); BOOST_FOREACH (cxml::NodePtr& i, s) { - subtitle_nodes.push_back (shared_ptr (new SubtitleNode (i, tcr))); + subtitle_nodes.push_back (shared_ptr (new SubtitleNode (i, tcr, standard))); } list f = node->node_children ("Font"); BOOST_FOREACH (cxml::NodePtr& i, f) { - font_nodes.push_back (shared_ptr (new FontNode (i, tcr))); + font_nodes.push_back (shared_ptr (new FontNode (i, tcr, standard))); } list t = node->node_children ("Text"); BOOST_FOREACH (cxml::NodePtr& i, t) { - text_nodes.push_back (shared_ptr (new TextNode (i, tcr))); + text_nodes.push_back (shared_ptr (new TextNode (i, tcr, standard))); } } FontNode::FontNode (std::list > const & font_nodes) : size (0) , italic (false) + , bold (false) + , underline (false) , colour ("FFFFFFFF") , effect_colour ("FFFFFFFF") { @@ -87,6 +113,12 @@ FontNode::FontNode (std::list > const & font_nodes) if ((*i)->italic) { italic = (*i)->italic.get (); } + if ((*i)->bold) { + bold = (*i)->bold.get (); + } + if ((*i)->underline) { + underline = (*i)->underline.get (); + } if ((*i)->colour) { colour = (*i)->colour.get (); }