summaryrefslogtreecommitdiff
path: root/src/mbgl/tile/geometry_tile_data.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/tile/geometry_tile_data.cpp')
-rw-r--r--src/mbgl/tile/geometry_tile_data.cpp23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/mbgl/tile/geometry_tile_data.cpp b/src/mbgl/tile/geometry_tile_data.cpp
index c7aea35944..db9f37ad4b 100644
--- a/src/mbgl/tile/geometry_tile_data.cpp
+++ b/src/mbgl/tile/geometry_tile_data.cpp
@@ -57,32 +57,31 @@ std::vector<GeometryCollection> classifyRings(const GeometryCollection& rings) {
std::size_t len = rings.size();
if (len <= 1) {
- polygons.push_back(rings);
+ polygons.emplace_back(rings.clone());
return polygons;
}
GeometryCollection polygon;
int8_t ccw = 0;
- for (std::size_t i = 0; i < len; i++) {
- double area = signedArea(rings[i]);
-
- if (area == 0)
- continue;
+ for (const auto& ring : rings) {
+ double area = signedArea(ring);
+ if (area == 0) continue;
- if (ccw == 0)
+ if (ccw == 0) {
ccw = (area < 0 ? -1 : 1);
+ }
if (ccw == (area < 0 ? -1 : 1) && !polygon.empty()) {
- polygons.push_back(polygon);
- polygon.clear();
+ polygons.emplace_back(std::move(polygon));
}
- polygon.push_back(rings[i]);
+ polygon.emplace_back(ring);
}
- if (!polygon.empty())
- polygons.push_back(polygon);
+ if (!polygon.empty()) {
+ polygons.emplace_back(std::move(polygon));
+ }
return polygons;
}