From 2bc2e6b85eca9501f5d9d0befd640e0234729f46 Mon Sep 17 00:00:00 2001 From: artemp Date: Wed, 8 Apr 2015 16:38:33 +0200 Subject: [PATCH] use geometry_to_path to convert geometry --- src/svg/output/process_symbolizers.cpp | 38 +++++--------------------- 1 file changed, 7 insertions(+), 31 deletions(-) diff --git a/src/svg/output/process_symbolizers.cpp b/src/svg/output/process_symbolizers.cpp index 8ccb72398..27748b5ec 100644 --- a/src/svg/output/process_symbolizers.cpp +++ b/src/svg/output/process_symbolizers.cpp @@ -33,6 +33,7 @@ #include #include #include +#include // boost #include @@ -103,33 +104,13 @@ void generate_path_impl(OutputIterator & output_iterator, PathType const& path, boost::spirit::karma::generate(output_iterator, lit(" ") << attributes_grammar << lit("/>\n"), path_attributes); } -namespace detail { - -template -struct generate_path -{ - generate_path( OutputIterator & out, svg::path_output_attributes const& path_attributes) - : out_(out), - path_attributes_(path_attributes) {} - - template - void operator() (Adapter const& adapter) const - { - generate_path_impl(out_, adapter, path_attributes_); - } - OutputIterator & out_; - svg::path_output_attributes const& path_attributes_; -}; - -} // ns detail - template bool svg_renderer::process(rule::symbolizers const& syms, mapnik::feature_impl & feature, proj_transform const& prj_trans) { // svg renderer supports processing of multiple symbolizers. - using path_type = transform_path_adapter; + using trans_path_type = transform_path_adapter; bool process_path = false; // process each symbolizer to collect its (path) information. @@ -147,16 +128,11 @@ bool svg_renderer::process(rule::symbolizers const& syms, if (process_path) { // generate path output for each geometry of the current feature. - - // FIXME! needs generic adapter - //vertex_adapter va(geom); - //path_type path(common_.t_, va, prj_trans); - //generate_path(generator_.output_iterator_, path, path_attributes_); - auto transformed_geom = geometry::transform(feature.get_geometry(), geometry::coord_transformer(common_.t_, prj_trans)); - using vertex_processor_type = geometry::vertex_processor >; - detail::generate_path apply_generator(generator_.output_iterator_,path_attributes_); - //mapnik::util::apply_visitor(vertex_processor_type(apply_generator),feature.get_geometry()); - + path_type path; + geometry::to_path(feature.get_geometry(), path); + vertex_adapter va(path); + trans_path_type trans_path(common_.t_, va, prj_trans); + generate_path_impl(generator_.output_iterator_, trans_path, path_attributes_); // set the previously collected values back to their defaults // for the feature that will be processed next. path_attributes_.reset();