// Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
-// This file was modified by Oracle on 2014.
-// Modifications copyright (c) 2014-2015, Oracle and/or its affiliates.
+// This file was modified by Oracle on 2014, 2020.
+// Modifications copyright (c) 2014-2020, Oracle and/or its affiliates.
// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
<
bool ReverseAreal,
typename LineStringOut,
- overlay_type OverlayType
+ overlay_type OverlayType,
+ bool FollowIsolatedPoints
>
struct intersection_of_multi_linestring_with_areal
{
{
out = intersection_of_linestring_with_areal
<
- ReverseAreal, LineStringOut, OverlayType
+ ReverseAreal, LineStringOut, OverlayType, FollowIsolatedPoints
>::apply(*it, areal, robust_policy, out, strategy);
}
<
bool ReverseAreal,
typename LineStringOut,
- overlay_type OverlayType
+ overlay_type OverlayType,
+ bool FollowIsolatedPoints
>
struct intersection_of_areal_with_multi_linestring
{
{
return intersection_of_multi_linestring_with_areal
<
- ReverseAreal, LineStringOut, OverlayType
+ ReverseAreal, LineStringOut, OverlayType, FollowIsolatedPoints
>::apply(ml, areal, robust_policy, out, strategy);
}
};
typename MultiLinestring1, typename MultiLinestring2,
typename GeometryOut,
overlay_type OverlayType,
- bool Reverse1, bool Reverse2, bool ReverseOut
+ bool Reverse1, bool Reverse2
>
struct intersection_insert
<
MultiLinestring1, MultiLinestring2,
GeometryOut,
OverlayType,
- Reverse1, Reverse2, ReverseOut,
+ Reverse1, Reverse2,
multi_linestring_tag, multi_linestring_tag, point_tag,
linear_tag, linear_tag, pointlike_tag
> : detail::intersection::intersection_multi_linestring_multi_linestring_point
typename Linestring, typename MultiLinestring,
typename GeometryOut,
overlay_type OverlayType,
- bool Reverse1, bool Reverse2, bool ReverseOut
+ bool Reverse1, bool Reverse2
>
struct intersection_insert
<
Linestring, MultiLinestring,
GeometryOut,
OverlayType,
- Reverse1, Reverse2, ReverseOut,
+ Reverse1, Reverse2,
linestring_tag, multi_linestring_tag, point_tag,
linear_tag, linear_tag, pointlike_tag
> : detail::intersection::intersection_linestring_multi_linestring_point
typename MultiLinestring, typename Box,
typename GeometryOut,
overlay_type OverlayType,
- bool Reverse1, bool Reverse2, bool ReverseOut
+ bool Reverse1, bool Reverse2
>
struct intersection_insert
<
MultiLinestring, Box,
GeometryOut,
OverlayType,
- Reverse1, Reverse2, ReverseOut,
+ Reverse1, Reverse2,
multi_linestring_tag, box_tag, linestring_tag,
linear_tag, areal_tag, linear_tag
> : detail::intersection::clip_multi_linestring
typename Linestring, typename MultiPolygon,
typename GeometryOut,
overlay_type OverlayType,
- bool ReverseLinestring, bool ReverseMultiPolygon, bool ReverseOut
+ bool ReverseLinestring, bool ReverseMultiPolygon
>
struct intersection_insert
<
Linestring, MultiPolygon,
GeometryOut,
OverlayType,
- ReverseLinestring, ReverseMultiPolygon, ReverseOut,
+ ReverseLinestring, ReverseMultiPolygon,
linestring_tag, multi_polygon_tag, linestring_tag,
linear_tag, areal_tag, linear_tag
> : detail::intersection::intersection_of_linestring_with_areal
<
ReverseMultiPolygon,
GeometryOut,
- OverlayType
+ OverlayType,
+ false
>
{};
typename Polygon, typename MultiLinestring,
typename GeometryOut,
overlay_type OverlayType,
- bool ReversePolygon, bool ReverseMultiLinestring, bool ReverseOut
+ bool ReversePolygon, bool ReverseMultiLinestring
>
struct intersection_insert
<
Polygon, MultiLinestring,
GeometryOut,
OverlayType,
- ReversePolygon, ReverseMultiLinestring, ReverseOut,
+ ReversePolygon, ReverseMultiLinestring,
polygon_tag, multi_linestring_tag, linestring_tag,
areal_tag, linear_tag, linear_tag
> : detail::intersection::intersection_of_areal_with_multi_linestring
<
ReversePolygon,
GeometryOut,
- OverlayType
+ OverlayType,
+ false
>
{};
typename MultiLinestring, typename Ring,
typename GeometryOut,
overlay_type OverlayType,
- bool ReverseMultiLinestring, bool ReverseRing, bool ReverseOut
+ bool ReverseMultiLinestring, bool ReverseRing
>
struct intersection_insert
<
MultiLinestring, Ring,
GeometryOut,
OverlayType,
- ReverseMultiLinestring, ReverseRing, ReverseOut,
+ ReverseMultiLinestring, ReverseRing,
multi_linestring_tag, ring_tag, linestring_tag,
linear_tag, areal_tag, linear_tag
> : detail::intersection::intersection_of_multi_linestring_with_areal
<
ReverseRing,
GeometryOut,
- OverlayType
+ OverlayType,
+ false
>
{};
typename MultiLinestring, typename Polygon,
typename GeometryOut,
overlay_type OverlayType,
- bool ReverseMultiLinestring, bool ReverseRing, bool ReverseOut
+ bool ReverseMultiLinestring, bool ReversePolygon
>
struct intersection_insert
<
MultiLinestring, Polygon,
GeometryOut,
OverlayType,
- ReverseMultiLinestring, ReverseRing, ReverseOut,
+ ReverseMultiLinestring, ReversePolygon,
multi_linestring_tag, polygon_tag, linestring_tag,
linear_tag, areal_tag, linear_tag
> : detail::intersection::intersection_of_multi_linestring_with_areal
<
- ReverseRing,
+ ReversePolygon,
GeometryOut,
- OverlayType
+ OverlayType,
+ false
>
{};
typename MultiLinestring, typename MultiPolygon,
typename GeometryOut,
overlay_type OverlayType,
- bool ReverseMultiLinestring, bool ReverseMultiPolygon, bool ReverseOut
+ bool ReverseMultiLinestring, bool ReverseMultiPolygon
>
struct intersection_insert
<
MultiLinestring, MultiPolygon,
GeometryOut,
OverlayType,
- ReverseMultiLinestring, ReverseMultiPolygon, ReverseOut,
+ ReverseMultiLinestring, ReverseMultiPolygon,
multi_linestring_tag, multi_polygon_tag, linestring_tag,
linear_tag, areal_tag, linear_tag
> : detail::intersection::intersection_of_multi_linestring_with_areal
<
ReverseMultiPolygon,
GeometryOut,
- OverlayType
+ OverlayType,
+ false
+ >
+{};
+
+
+
+template
+<
+ typename MultiLinestring, typename Ring,
+ typename TupledOut,
+ overlay_type OverlayType,
+ bool ReverseMultiLinestring, bool ReverseRing
+>
+struct intersection_insert
+ <
+ MultiLinestring, Ring,
+ TupledOut,
+ OverlayType,
+ ReverseMultiLinestring, ReverseRing,
+ multi_linestring_tag, ring_tag, detail::intersection::tupled_output_tag,
+ linear_tag, areal_tag, detail::intersection::tupled_output_tag
+ > : detail::intersection::intersection_of_multi_linestring_with_areal
+ <
+ ReverseRing,
+ TupledOut,
+ OverlayType,
+ true
+ >
+ , detail::intersection::expect_output_pl<MultiLinestring, Ring, TupledOut>
+{};
+
+
+template
+<
+ typename MultiLinestring, typename Polygon,
+ typename TupledOut,
+ overlay_type OverlayType,
+ bool ReverseMultiLinestring, bool ReversePolygon
+>
+struct intersection_insert
+ <
+ MultiLinestring, Polygon,
+ TupledOut,
+ OverlayType,
+ ReverseMultiLinestring, ReversePolygon,
+ multi_linestring_tag, polygon_tag, detail::intersection::tupled_output_tag,
+ linear_tag, areal_tag, detail::intersection::tupled_output_tag
+ > : detail::intersection::intersection_of_multi_linestring_with_areal
+ <
+ ReversePolygon,
+ TupledOut,
+ OverlayType,
+ true
+ >
+ , detail::intersection::expect_output_pl<MultiLinestring, Polygon, TupledOut>
+{};
+
+template
+<
+ typename Polygon, typename MultiLinestring,
+ typename TupledOut,
+ overlay_type OverlayType,
+ bool ReversePolygon, bool ReverseMultiLinestring
+>
+struct intersection_insert
+ <
+ Polygon, MultiLinestring,
+ TupledOut,
+ OverlayType,
+ ReversePolygon, ReverseMultiLinestring,
+ polygon_tag, multi_linestring_tag, detail::intersection::tupled_output_tag,
+ areal_tag, linear_tag, detail::intersection::tupled_output_tag
+ > : detail::intersection::intersection_of_areal_with_multi_linestring
+ <
+ ReversePolygon,
+ TupledOut,
+ OverlayType,
+ true
+ >
+ , detail::intersection::expect_output_pl<Polygon, MultiLinestring, TupledOut>
+{};
+
+template
+<
+ typename MultiLinestring, typename MultiPolygon,
+ typename TupledOut,
+ overlay_type OverlayType,
+ bool ReverseMultiLinestring, bool ReverseMultiPolygon
+>
+struct intersection_insert
+ <
+ MultiLinestring, MultiPolygon,
+ TupledOut,
+ OverlayType,
+ ReverseMultiLinestring, ReverseMultiPolygon,
+ multi_linestring_tag, multi_polygon_tag, detail::intersection::tupled_output_tag,
+ linear_tag, areal_tag, detail::intersection::tupled_output_tag
+ > : detail::intersection::intersection_of_multi_linestring_with_areal
+ <
+ ReverseMultiPolygon,
+ TupledOut,
+ OverlayType,
+ true
>
+ , detail::intersection::expect_output_pl<MultiLinestring, MultiPolygon, TupledOut>
{};