[buffer] move same code fragments to finish_ring

This commit is contained in:
Barend Gehrels
2015-10-14 12:57:46 +02:00
parent 71143c1b68
commit ec017da3f0
3 changed files with 14 additions and 25 deletions

View File

@@ -392,7 +392,7 @@ inline void buffer_point(Point const& point, Collection& collection,
point_strategy.apply(point, distance_strategy, range_out);
collection.add_piece(strategy::buffer::buffered_point, range_out, false);
collection.set_piece_center(point);
collection.finish_ring();
collection.finish_ring(strategy::buffer::result_normal);
}
@@ -680,14 +680,7 @@ struct buffer_inserter<linestring_tag, Linestring, Polygon>
distance, side_strategy, join_strategy, end_strategy, robust_policy,
first_p1);
}
if (code == strategy::buffer::result_error_numerical)
{
collection.abort_ring();
}
else
{
collection.finish_ring();
}
collection.finish_ring(code);
}
if (code == strategy::buffer::result_no_output && n >= 1)
{
@@ -747,12 +740,7 @@ private:
join_strategy, end_strategy, point_strategy,
robust_policy);
if (code == strategy::buffer::result_error_numerical)
{
collection.abort_ring();
return;
}
collection.finish_ring(is_interior);
collection.finish_ring(code, is_interior);
}
}
@@ -812,14 +800,8 @@ public:
join_strategy, end_strategy, point_strategy,
robust_policy);
if (code == strategy::buffer::result_error_numerical)
{
collection.abort_ring();
}
else
{
collection.finish_ring(false, geometry::num_interior_rings(polygon) > 0u);
}
collection.finish_ring(code, false,
geometry::num_interior_rings(polygon) > 0u);
}
apply_interior_rings(interior_rings(polygon),

View File

@@ -860,8 +860,15 @@ struct buffered_piece_collection
m_robust_policy);
}
inline void finish_ring(bool is_interior = false, bool has_interiors = false)
inline void finish_ring(strategy::buffer::result_code code,
bool is_interior = false, bool has_interiors = false)
{
if (code == strategy::buffer::result_error_numerical)
{
abort_ring();
return;
}
if (m_first_piece_index == -1)
{
return;

View File

@@ -81,7 +81,7 @@ struct offset_range
distance_strategy, side_strategy, join_strategy, end_strategy, robust_policy,
first_p1, first_p2, last_p1, last_p2);
}
collection.finish_ring();
collection.finish_ring(strategy::buffer::result_normal);
}
};