diff --git a/include/boost/geometry/algorithms/detail/overlay/segment_ratio.hpp b/include/boost/geometry/algorithms/detail/overlay/segment_ratio.hpp index d881e0d11..e2b72182b 100644 --- a/include/boost/geometry/algorithms/detail/overlay/segment_ratio.hpp +++ b/include/boost/geometry/algorithms/detail/overlay/segment_ratio.hpp @@ -127,6 +127,16 @@ public : return result; } +#if defined(BOOST_GEOMETRY_DEFINE_STREAM_OPERATOR_SEGMENT_RATIO) + friend std::ostream& operator<<(std::ostream &os, segment_ratio const& ratio) + { + os << ratio.m_numerator << "/" << ratio.m_denominator; + return os; + } +#endif + + + private : Type m_numerator; Type m_denominator; diff --git a/test/strategies/Jamfile.v2 b/test/strategies/Jamfile.v2 index 889ce66a9..9475f6a5d 100644 --- a/test/strategies/Jamfile.v2 +++ b/test/strategies/Jamfile.v2 @@ -15,6 +15,7 @@ test-suite boost-geometry-strategies [ run projected_point.cpp ] [ run pythagoras.cpp ] [ run spherical_side.cpp ] + [ run segment_intersection_collinear.cpp ] [ run transform_cs.cpp ] [ run transformer.cpp ] [ run within.cpp ] diff --git a/test/strategies/segment_intersection.cpp b/test/strategies/segment_intersection.cpp index c0191c18f..fdd66eeb9 100644 --- a/test/strategies/segment_intersection.cpp +++ b/test/strategies/segment_intersection.cpp @@ -103,16 +103,23 @@ static void test_segment_intersection(int caseno, segment_type s34(p3,p4); // Get the intersection point (or two points) - segment_intersection_points
is - = strategy::intersection::relate_cartesian_segments + typedef bg::detail::no_rescale_policy rescale_policy_type; + rescale_policy_type rescale_policy; + + typedef bg::segment_intersection_points + < + P, + typename bg::segment_ratio_type < - policies::relate::segments_intersection_points - < - segment_type, - segment_type, - segment_intersection_points
- >
- >::apply(s12, s34);
+ P,
+ rescale_policy_type
+ >::type
+ > result_type;
+
+ result_type is = strategy::intersection::relate_cartesian_segments
+ <
+ bg::policies::relate::segments_intersection_points is
+ result_type is
= bg::strategy::intersection::relate_cartesian_segments
<
- bg::policies::relate::segments_intersection_points
- <
- segment_type,
- segment_type,
- bg::segment_intersection_points
- >
- >::apply(s12, s34, p1, p2, p3, p4);
+ bg::policies::relate::segments_intersection_points is
+ result_type is
= bg::strategy::intersection::relate_cartesian_segments
<
- bg::policies::relate::segments_intersection_points
- <
- segment_type,
- segment_type,
- bg::segment_intersection_points
- >
- >::apply(s12, s34, p1, p2, p3, p4);
+ bg::policies::relate::segments_intersection_points