added support for the LS/MLS difference; need to add tests as well

This commit is contained in:
Menelaos Karavelas
2014-02-18 18:02:02 +02:00
parent b1d78e1a85
commit 1fdf91064c
2 changed files with 56 additions and 0 deletions

View File

@@ -273,6 +273,44 @@ struct linestring_linestring_linestring
};
//===========================================================================
//===========================================================================
//===========================================================================
template <typename LinestringOut>
struct linestring_multilinestring_linestring
{
typedef typename point_type<LinestringOut>::type PointOut;
typedef overlay::traversal_turn_info<PointOut> turn_info;
template
<
typename Linestring, typename MultiLinestring,
typename OutputIterator, typename Strategy
>
static inline OutputIterator apply(Linestring const& linestring,
MultiLinestring const& multilinestring,
OutputIterator oit,
Strategy const& strategy)
{
geometry::model::multi_linestring<Linestring> mls;
mls.push_back(linestring);
return
multilinestring_multilinestring_linestring
<
LinestringOut
>::apply(mls, multilinestring, oit, strategy);
}
};
}} // namespace detail::difference

View File

@@ -531,6 +531,24 @@ struct intersection_insert
{};
template
<
typename LineString, typename MultiLineString,
typename LineStringOut,
bool Reverse1, bool Reverse2, bool ReverseOut
>
struct intersection_insert
<
LineString, MultiLineString,
LineStringOut,
overlay_difference,
Reverse1, Reverse2, ReverseOut,
linestring_tag, multi_linestring_tag, linestring_tag,
false, false, false
> : detail::difference::linestring_multilinestring_linestring<LineStringOut>
{};
template
<
typename MultiLineString1, typename MultiLineString2,