typedef typename geometry::point_type<Geometry1>::type point1_type;
typedef typename geometry::point_type<Geometry2>::type point2_type;
- template <typename Result, typename IntersectionStrategy>
+ template <typename Result, typename Strategy>
static inline void apply(Geometry1 const& geometry1, Geometry2 const& geometry2,
Result & result,
- IntersectionStrategy const& intersection_strategy)
+ Strategy const& strategy)
{
// TODO: If Areal geometry may have infinite size, change the following line:
typedef typename turns::get_turns
<
Geometry1, Geometry2
- >::template turn_info_type<IntersectionStrategy>::type turn_type;
+ >::template turn_info_type<Strategy>::type turn_type;
std::vector<turn_type> turns;
interrupt_policy_areal_areal<Result> interrupt_policy(geometry1, geometry2, result);
- turns::get_turns<Geometry1, Geometry2>::apply(turns, geometry1, geometry2, interrupt_policy, intersection_strategy);
+ turns::get_turns<Geometry1, Geometry2>::apply(turns, geometry1, geometry2, interrupt_policy, strategy);
if ( BOOST_GEOMETRY_CONDITION(result.interrupt) )
return;
- typedef typename IntersectionStrategy::cs_tag cs_tag;
+ typedef typename Strategy::cs_tag cs_tag;
- typedef typename IntersectionStrategy::template point_in_geometry_strategy
- <
- Geometry1, Geometry2
- >::type point_in_areal_strategy12_type;
- point_in_areal_strategy12_type point_in_areal_strategy12
- = intersection_strategy.template get_point_in_geometry_strategy<Geometry1, Geometry2>();
- typedef typename IntersectionStrategy::template point_in_geometry_strategy
- <
- Geometry2, Geometry1
- >::type point_in_areal_strategy21_type;
- point_in_areal_strategy21_type point_in_areal_strategy21
- = intersection_strategy.template get_point_in_geometry_strategy<Geometry2, Geometry1>();
-
- no_turns_aa_pred<Geometry2, Result, point_in_areal_strategy12_type, false>
- pred1(geometry2, result, point_in_areal_strategy12);
+ no_turns_aa_pred<Geometry2, Result, Strategy, false>
+ pred1(geometry2, result, strategy);
for_each_disjoint_geometry_if<0, Geometry1>::apply(turns.begin(), turns.end(), geometry1, pred1);
if ( BOOST_GEOMETRY_CONDITION(result.interrupt) )
return;
- no_turns_aa_pred<Geometry1, Result, point_in_areal_strategy21_type, true>
- pred2(geometry1, result, point_in_areal_strategy21);
+ no_turns_aa_pred<Geometry1, Result, Strategy, true>
+ pred2(geometry1, result, strategy);
for_each_disjoint_geometry_if<1, Geometry2>::apply(turns.begin(), turns.end(), geometry2, pred2);
if ( BOOST_GEOMETRY_CONDITION(result.interrupt) )
return;
{
// analyse sorted turns
turns_analyser<turn_type, 0> analyser;
- analyse_each_turn(result, analyser, turns.begin(), turns.end(),
- point_in_areal_strategy12.get_equals_point_point_strategy());
+ analyse_each_turn(result, analyser, turns.begin(), turns.end(), strategy);
if ( BOOST_GEOMETRY_CONDITION(result.interrupt) )
return;
{
// analyse rings for which turns were not generated
// or only i/i or u/u was generated
- uncertain_rings_analyser<0, Result, Geometry1, Geometry2, point_in_areal_strategy12_type>
- rings_analyser(result, geometry1, geometry2, point_in_areal_strategy12);
+ uncertain_rings_analyser<0, Result, Geometry1, Geometry2, Strategy>
+ rings_analyser(result, geometry1, geometry2, strategy);
analyse_uncertain_rings<0>::apply(rings_analyser, turns.begin(), turns.end());
if ( BOOST_GEOMETRY_CONDITION(result.interrupt) )
{
// analyse sorted turns
turns_analyser<turn_type, 1> analyser;
- analyse_each_turn(result, analyser, turns.begin(), turns.end(),
- point_in_areal_strategy21.get_equals_point_point_strategy());
+ analyse_each_turn(result, analyser, turns.begin(), turns.end(), strategy);
if ( BOOST_GEOMETRY_CONDITION(result.interrupt) )
return;
{
// analyse rings for which turns were not generated
// or only i/i or u/u was generated
- uncertain_rings_analyser<1, Result, Geometry2, Geometry1, point_in_areal_strategy21_type>
- rings_analyser(result, geometry2, geometry1, point_in_areal_strategy21);
+ uncertain_rings_analyser<1, Result, Geometry2, Geometry1, Strategy>
+ rings_analyser(result, geometry2, geometry1, strategy);
analyse_uncertain_rings<1>::apply(rings_analyser, turns.begin(), turns.end());
//if ( result.interrupt )