summaryrefslogtreecommitdiff
path: root/boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp')
-rw-r--r--boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp36
1 files changed, 21 insertions, 15 deletions
diff --git a/boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp b/boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp
index 217f4a340b..0ea937a1e4 100644
--- a/boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp
+++ b/boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp
@@ -39,7 +39,7 @@ struct get_turn_info_linear_linear
typename UniqueSubRange1,
typename UniqueSubRange2,
typename TurnInfo,
- typename IntersectionStrategy,
+ typename UmbrellaStrategy,
typename RobustPolicy,
typename OutputIterator
>
@@ -47,7 +47,7 @@ struct get_turn_info_linear_linear
UniqueSubRange1 const& range_p,
UniqueSubRange2 const& range_q,
TurnInfo const& tp_model,
- IntersectionStrategy const& strategy,
+ UmbrellaStrategy const& umbrella_strategy,
RobustPolicy const& robust_policy,
OutputIterator out)
{
@@ -55,11 +55,11 @@ struct get_turn_info_linear_linear
<
UniqueSubRange1, UniqueSubRange2,
typename TurnInfo::point_type,
- IntersectionStrategy,
+ UmbrellaStrategy,
RobustPolicy
> inters_info;
- inters_info inters(range_p, range_q, strategy, robust_policy);
+ inters_info inters(range_p, range_q, umbrella_strategy, robust_policy);
char const method = inters.d_info().how;
@@ -75,7 +75,7 @@ struct get_turn_info_linear_linear
get_turn_info_for_endpoint<true, true>
::apply(range_p, range_q,
tp_model, inters, method_none, out,
- strategy.get_point_in_point_strategy());
+ umbrella_strategy.get_point_in_point_strategy());
break;
case 'd' : // disjoint: never do anything
@@ -86,7 +86,7 @@ struct get_turn_info_linear_linear
if ( get_turn_info_for_endpoint<false, true>
::apply(range_p, range_q,
tp_model, inters, method_touch_interior, out,
- strategy.get_point_in_point_strategy()) )
+ umbrella_strategy.get_point_in_point_strategy()) )
{
// do nothing
}
@@ -102,14 +102,16 @@ struct get_turn_info_linear_linear
{
policy::template apply<0>(range_p, range_q, tp,
inters.i_info(), inters.d_info(),
- inters.sides());
+ inters.sides(),
+ umbrella_strategy);
}
else
{
// Swap p/q
policy::template apply<1>(range_q, range_p, tp,
inters.i_info(), inters.d_info(),
- inters.get_swapped_sides());
+ inters.get_swapped_sides(),
+ umbrella_strategy);
}
if ( tp.operations[0].operation == operation_blocked )
@@ -144,14 +146,16 @@ struct get_turn_info_linear_linear
if ( get_turn_info_for_endpoint<false, true>
::apply(range_p, range_q,
tp_model, inters, method_touch, out,
- strategy.get_point_in_point_strategy()) )
+ umbrella_strategy.get_point_in_point_strategy()) )
{
// do nothing
}
else
{
touch<TurnInfo>::apply(range_p, range_q, tp,
- inters.i_info(), inters.d_info(), inters.sides());
+ inters.i_info(), inters.d_info(),
+ inters.sides(),
+ umbrella_strategy);
// workarounds for touch<> not taking spikes into account starts here
// those was discovered empirically
@@ -274,7 +278,7 @@ struct get_turn_info_linear_linear
if ( get_turn_info_for_endpoint<true, true>
::apply(range_p, range_q,
tp_model, inters, method_equal, out,
- strategy.get_point_in_point_strategy()) )
+ umbrella_strategy.get_point_in_point_strategy()) )
{
// do nothing
}
@@ -288,7 +292,8 @@ struct get_turn_info_linear_linear
// Both equal
// or collinear-and-ending at intersection point
equal<TurnInfo>::apply(range_p, range_q, tp,
- inters.i_info(), inters.d_info(), inters.sides());
+ inters.i_info(), inters.d_info(), inters.sides(),
+ umbrella_strategy);
operation_type spike_op
= ( tp.operations[0].operation != operation_continue
@@ -328,7 +333,7 @@ struct get_turn_info_linear_linear
if ( get_turn_info_for_endpoint<true, true>
::apply(range_p, range_q,
tp_model, inters, method_collinear, out,
- strategy.get_point_in_point_strategy()) )
+ umbrella_strategy.get_point_in_point_strategy()) )
{
// do nothing
}
@@ -347,7 +352,8 @@ struct get_turn_info_linear_linear
{
// Collinear, but similar thus handled as equal
equal<TurnInfo>::apply(range_p, range_q, tp,
- inters.i_info(), inters.d_info(), inters.sides());
+ inters.i_info(), inters.d_info(), inters.sides(),
+ umbrella_strategy);
method_replace = method_touch;
if ( tp.operations[0].operation != operation_continue
@@ -410,7 +416,7 @@ struct get_turn_info_linear_linear
// degenerate points
if ( BOOST_GEOMETRY_CONDITION(AssignPolicy::include_degenerate) )
{
- typedef typename IntersectionStrategy::point_in_point_strategy_type
+ typedef typename UmbrellaStrategy::point_in_point_strategy_type
equals_strategy_type;
only_convert::apply(tp, inters.i_info());