From 13d3465000cfffb40ddbf59ff607c29f13a4b952 Mon Sep 17 00:00:00 2001 From: artemp Date: Wed, 2 Jul 2014 11:01:38 +0100 Subject: [PATCH] update point_placement_enum, gamma_method_enum, line_rasterizer_enum parsing, gamma-method --- include/mapnik/symbolizer.hpp | 5 ++- src/load_map.cpp | 67 ++++++++++++++++------------------- 2 files changed, 34 insertions(+), 38 deletions(-) diff --git a/include/mapnik/symbolizer.hpp b/include/mapnik/symbolizer.hpp index 79ea29ba7..3e1612f2d 100644 --- a/include/mapnik/symbolizer.hpp +++ b/include/mapnik/symbolizer.hpp @@ -40,7 +40,7 @@ #include #include #include - +#include // stl #include #include @@ -308,6 +308,9 @@ template <> struct enum_traits { \ ENUM_FROM_STRING( line_join_enum ) ENUM_FROM_STRING( line_cap_enum ) +ENUM_FROM_STRING( point_placement_enum ) +ENUM_FROM_STRING( gamma_method_enum ) +ENUM_FROM_STRING( line_rasterizer_enum ) // enum template diff --git a/src/load_map.cpp b/src/load_map.cpp index f181362f7..1c36241a7 100644 --- a/src/load_map.cpp +++ b/src/load_map.cpp @@ -877,7 +877,7 @@ struct set_symbolizer_property_impl { std::string const& name = std::get<0>(get_meta(key)); optional transform = node.get_opt_attr(name); - if (transform) put(sym, key, mapnik::parse_transform(*transform)); + if (transform) put(sym, key, mapnik::parse_transform(*transform)); } }; @@ -952,14 +952,15 @@ void map_parser::parse_point_symbolizer(rule & rule, xml_node const & node) optional base = node.get_opt_attr("base"); optional image_transform_wkt = node.get_opt_attr("transform"); - point_symbolizer symbol; - set_symbolizer_property(symbol, keys::allow_overlap, node); - set_symbolizer_property(symbol, keys::opacity, node); - set_symbolizer_property(symbol, keys::ignore_placement, node); - - boost::optional placement = node.get_opt_attr("placement"); - if (placement) put(symbol, keys::point_placement_type, point_placement_enum(*placement)); - + point_symbolizer sym; + // allow-overlap + set_symbolizer_property(sym, keys::allow_overlap, node); + // opacity + set_symbolizer_property(sym, keys::opacity, node); + // ignore-placement + set_symbolizer_property(sym, keys::ignore_placement, node); + // point placement + set_symbolizer_property(sym, keys::point_placement_type, node); if (file && !file->empty()) { if(base) @@ -974,15 +975,15 @@ void map_parser::parse_point_symbolizer(rule & rule, xml_node const & node) *file = ensure_relative_to_xml(file); std::string filename = *file; ensure_exists(filename); - put(symbol, keys::file, parse_path(filename)); + put(sym, keys::file, parse_path(filename)); if (image_transform_wkt) { - put(symbol, keys::image_transform, mapnik::parse_transform(*image_transform_wkt)); + put(sym, keys::image_transform, mapnik::parse_transform(*image_transform_wkt)); } } - parse_symbolizer_base(symbol, node); - rule.append(std::move(symbol)); + parse_symbolizer_base(sym, node); + rule.append(std::move(sym)); } catch (config_error const& ex) { @@ -1313,30 +1314,26 @@ void map_parser::parse_shield_symbolizer(rule & rule, xml_node const& node) } } -void map_parser::parse_stroke(symbolizer_base & symbol, xml_node const & node) +void map_parser::parse_stroke(symbolizer_base & sym, xml_node const & node) { // stroke - set_symbolizer_property(symbol, keys::stroke, node); + set_symbolizer_property(sym, keys::stroke, node); // stroke-width - set_symbolizer_property(symbol, keys::stroke_width, node); + set_symbolizer_property(sym, keys::stroke_width, node); // stroke-opacity - set_symbolizer_property(symbol, keys::stroke_opacity, node); + set_symbolizer_property(sym, keys::stroke_opacity, node); // stroke-linejoin - set_symbolizer_property(symbol, keys::stroke_linejoin, node); + set_symbolizer_property(sym, keys::stroke_linejoin, node); // stroke-linecap - set_symbolizer_property(symbol, keys::stroke_linecap, node); + set_symbolizer_property(sym, keys::stroke_linecap, node); // stroke-gamma - optional gamma = node.get_opt_attr("stroke-gamma"); - if (gamma) put(symbol, keys::stroke_gamma, *gamma); - + set_symbolizer_property(sym, keys::stroke_gamma, node); // stroke-gamma-method - optional gamma_method = node.get_opt_attr("stroke-gamma-method"); - if (gamma_method) put(symbol, keys::stroke_gamma_method, gamma_method_enum(*gamma_method)); - + set_symbolizer_property(sym, keys::stroke_gamma_method, node); // stroke-dashoffset - optional dash_offset = node.get_opt_attr("stroke-dashoffset"); - if (dash_offset) put(symbol,keys::stroke_dashoffset, *dash_offset); - + set_symbolizer_property(sym, keys::stroke_dashoffset, node); + // stroke-miterlimit + set_symbolizer_property(sym, keys::stroke_miterlimit, node); // stroke-dasharray optional str = node.get_opt_attr("stroke-dasharray"); if (str) @@ -1364,7 +1361,7 @@ void map_parser::parse_stroke(symbolizer_base & symbol, xml_node const & node) } if (dash.size() > 0) { - put(symbol,keys::stroke_dasharray,dash); + put(sym,keys::stroke_dasharray,dash); } } } @@ -1376,9 +1373,7 @@ void map_parser::parse_stroke(symbolizer_base & symbol, xml_node const & node) } } - // stroke-miterlimit - optional miterlimit = node.get_opt_attr("stroke-miterlimit"); - if (miterlimit) put(symbol, keys::stroke_miterlimit, *miterlimit); + } void map_parser::parse_line_symbolizer(rule & rule, xml_node const & node) @@ -1392,8 +1387,7 @@ void map_parser::parse_line_symbolizer(rule & rule, xml_node const & node) // offset set_symbolizer_property(sym, keys::offset, node); // rasterizer - optional rasterizer = node.get_opt_attr("rasterizer"); - if (rasterizer) put(sym, keys::line_rasterizer, line_rasterizer_enum(*rasterizer)); + set_symbolizer_property(sym, keys::line_rasterizer, node); rule.append(std::move(sym)); } catch (config_error const& ex) @@ -1416,9 +1410,8 @@ void map_parser::parse_polygon_symbolizer(rule & rule, xml_node const & node) // gamma set_symbolizer_property(sym, keys::gamma, node); // gamma method - optional gamma_method = node.get_opt_attr("gamma-method"); - if (gamma_method) put(sym, keys::gamma_method, gamma_method_enum(*gamma_method)); - // + set_symbolizer_property(sym, keys::gamma_method, node); + rule.append(std::move(sym)); } catch (config_error const& ex)