From 2ebc729cc822e7a2eb6ae983cf4d9ce3b8a43bf7 Mon Sep 17 00:00:00 2001 From: artemp Date: Fri, 10 Apr 2015 14:13:08 +0200 Subject: [PATCH] Clipper - fix PolyTree traversal --- benchmark/test_polygon_clipping.cpp | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/benchmark/test_polygon_clipping.cpp b/benchmark/test_polygon_clipping.cpp index ff6878e45..2fd11fea5 100644 --- a/benchmark/test_polygon_clipping.cpp +++ b/benchmark/test_polygon_clipping.cpp @@ -512,26 +512,25 @@ public: bool first = true; while (polynode) { - //do stuff with polynode here - if (first) first = false; - else mp.emplace_back(); if (!polynode->IsHole()) { + if (first) first = false; + else mp.emplace_back(); // start new polygon for (auto const& pt : polynode->Contour) { mp.back().exterior_ring.add_coord(pt.X, pt.Y); } - } - else - { - mapnik::geometry::linear_ring hole; - for (auto const& pt : polynode->Contour) + // childrens are interior rings + for (auto const* ring : polynode->Childs) { - hole.add_coord(pt.X, pt.Y); + mapnik::geometry::linear_ring hole; + for (auto const& pt : ring->Contour) + { + hole.add_coord(pt.X, pt.Y); + } + mp.back().add_hole(std::move(hole)); } - mp.back().add_hole(std::move(hole)); } - std::cerr << "Is hole? " << polynode->IsHole() << std::endl; polynode = polynode->GetNext(); } std::string expect = expected_+".png";