collect expressions from format_properties

This commit is contained in:
artemp 2014-07-24 12:00:46 +01:00
parent 1927a00ee0
commit 9c39d4ebd2
2 changed files with 18 additions and 1 deletions

View file

@ -68,6 +68,8 @@ struct MAPNIK_DECL format_properties
void from_xml(xml_node const& sym, fontset_map const& fontsets);
void to_xml(boost::property_tree::ptree & node, bool explicit_defaults,
format_properties const& dfl = format_properties()) const;
// collect expressions
void add_expressions(expression_set & output) const;
// expressions
symbolizer_base::value_type text_size;
symbolizer_base::value_type character_spacing;
@ -79,6 +81,7 @@ struct MAPNIK_DECL format_properties
symbolizer_base::value_type fill;
symbolizer_base::value_type halo_fill;
//
std::string face_name;
boost::optional<font_set> fontset;
text_transform_e text_transform; //Per expression

View file

@ -206,7 +206,7 @@ void text_symbolizer_properties::to_xml(boost::property_tree::ptree &node,
void text_symbolizer_properties::add_expressions(expression_set & output) const
{
layout_defaults.add_expressions(output);
//format_defaults.add_expressions(output); FIXME
format_defaults.add_expressions(output);
if (tree_) tree_->add_expressions(output);
}
@ -355,4 +355,18 @@ void format_properties::to_xml(boost::property_tree::ptree & node, bool explicit
}
}
void format_properties::add_expressions(expression_set & output) const
{
if (is_expression(text_size)) output.insert(boost::get<expression_ptr>(text_size));
if (is_expression(character_spacing)) output.insert(boost::get<expression_ptr>(character_spacing));
if (is_expression(line_spacing)) output.insert(boost::get<expression_ptr>(line_spacing));
if (is_expression(halo_radius)) output.insert(boost::get<expression_ptr>(halo_radius));
if (is_expression(text_opacity)) output.insert(boost::get<expression_ptr>(text_opacity));
if (is_expression(halo_opacity)) output.insert(boost::get<expression_ptr>(halo_opacity));
if (is_expression(wrap_char)) output.insert(boost::get<expression_ptr>(wrap_char));
if (is_expression(fill)) output.insert(boost::get<expression_ptr>(fill));
if (is_expression(halo_fill)) output.insert(boost::get<expression_ptr>(halo_fill));
}
} //ns mapnik