mirror of
https://github.com/boostorg/geometry.git
synced 2026-02-01 20:42:10 +00:00
[buffer] move same code fragments to finish_ring
This commit is contained in:
@@ -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),
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user