From 81419154ebcc2f06c2c45133b392f9c000caf121 Mon Sep 17 00:00:00 2001 From: artemp Date: Mon, 4 Jul 2016 10:30:23 +0100 Subject: [PATCH] update geometry adapters to use polygon_interior as mutable interior rings proxy container --- include/mapnik/geometry_adapters.hpp | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/include/mapnik/geometry_adapters.hpp b/include/mapnik/geometry_adapters.hpp index 59efaf3d1..74d06b195 100644 --- a/include/mapnik/geometry_adapters.hpp +++ b/include/mapnik/geometry_adapters.hpp @@ -41,7 +41,7 @@ #include #include #include - +#include #include // register point @@ -183,7 +183,8 @@ struct interior_const_type > template struct interior_mutable_type > { - using type = boost::iterator_range::iterator>; + //using type = boost::iterator_range::iterator>; + using type = mapnik::detail::polygon_interior; }; // exterior @@ -192,17 +193,13 @@ struct exterior_ring > { static mapnik::geometry::linear_ring & get(mapnik::geometry::polygon & p) { - if (p.empty()) { - throw std::runtime_error("ring must be initialized 1"); - } + if (p.empty()) throw std::runtime_error("ring must be initialized 1"); return p[0]; } static mapnik::geometry::linear_ring const& get(mapnik::geometry::polygon const& p) { - if (p.empty()) { - throw std::runtime_error("ring must be initialized 2"); - } + if (p.empty()) throw std::runtime_error("ring must be initialized 2"); return p[0]; } }; @@ -210,18 +207,15 @@ struct exterior_ring > template struct interior_rings > { - using ring_iterator = typename mapbox::geometry::polygon::iterator; using const_ring_iterator = typename mapbox::geometry::polygon::const_iterator; - using holes_type = boost::iterator_range; - using const_holes_type = boost::iterator_range; - static holes_type get(mapnik::geometry::polygon & p) - // -> decltype(boost::make_iterator_range(p.begin() + 1, p.end())) + using interior_type = mapnik::detail::polygon_interior; + using const_interior_type = boost::iterator_range; + static interior_type get(mapnik::geometry::polygon & p) { - return boost::make_iterator_range(p.begin() + 1, p.end()); + return mapnik::detail::polygon_interior(p); } - static const_holes_type get(mapnik::geometry::polygon const& p) - // -> decltype(boost::make_iterator_range(p.begin() + 1, p.end())) const + static const_interior_type get(mapnik::geometry::polygon const& p) { return boost::make_iterator_range(p.begin() + 1, p.end()); }