$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r75568 - in trunk/boost/geometry: algorithms/detail/overlay multi/algorithms
From: barend.gehrels_at_[hidden]
Date: 2011-11-20 07:33:56
Author: barendgehrels
Date: 2011-11-20 07:33:55 EST (Sun, 20 Nov 2011)
New Revision: 75568
URL: http://svn.boost.org/trac/boost/changeset/75568
Log:
Linestring/polygon overlay, phase 4 (linestring/multi_polygon, which effectively uses the same implementation)
Text files modified: 
   trunk/boost/geometry/algorithms/detail/overlay/intersection_insert.hpp |    21 ++++++++++++---------                   
   trunk/boost/geometry/multi/algorithms/intersection.hpp                 |    26 ++++++++++++++++++++++++++              
   2 files changed, 38 insertions(+), 9 deletions(-)
Modified: trunk/boost/geometry/algorithms/detail/overlay/intersection_insert.hpp
==============================================================================
--- trunk/boost/geometry/algorithms/detail/overlay/intersection_insert.hpp	(original)
+++ trunk/boost/geometry/algorithms/detail/overlay/intersection_insert.hpp	2011-11-20 07:33:55 EST (Sun, 20 Nov 2011)
@@ -103,13 +103,17 @@
     }
 };
 
+/*!
+\brief Version of linestring with an areal feature (polygon or multipolygon)
+\ingroup intersection
+*/
 template
 <
-    typename LineString, typename Polygon,
+    typename LineString, typename Areal,
     typename OutputIterator, typename LineStringOut,
     typename Strategy
 >
-struct intersection_linestring_polygon
+struct intersection_of_linestring_with_areal
 {
 
 #if defined(BOOST_GEOMETRY_DEBUG_FOLLOW)
@@ -129,7 +133,7 @@
         }
 #endif
 
-    static inline OutputIterator apply(LineString const& linestring, Polygon const& polygon,
+    static inline OutputIterator apply(LineString const& linestring, Areal const& areal,
             OutputIterator out,
             Strategy const& strategy)
     {
@@ -147,13 +151,13 @@
         geometry::get_turns
             <
                 false, false, detail::overlay::calculate_distance_policy
-            >(linestring, polygon, turns, policy);
+            >(linestring, areal, turns, policy);
 
         if (turns.empty())
         {
             // No intersection points, it is either completely inside 
             // or completely outside
-            if (geometry::within(linestring[0], polygon))
+            if (geometry::within(linestring[0], areal))
             {
                 LineStringOut copy;
                 geometry::convert(linestring, copy);
@@ -174,10 +178,10 @@
             <
                 LineStringOut,
                 LineString,
-                Polygon
+                Areal
             >::apply
                 (
-                    linestring, polygon,
+                    linestring, areal,
                     geometry::detail::overlay::operation_intersection,
                     turns, out
                 );
@@ -185,7 +189,6 @@
 };
 
 
-
 }} // namespace detail::intersection
 #endif // DOXYGEN_NO_DETAIL
 
@@ -366,7 +369,7 @@
         OutputIterator, GeometryOut,
         OverlayType,
         Strategy
-    > : detail::intersection::intersection_linestring_polygon
+    > : detail::intersection::intersection_of_linestring_with_areal
             <
                 Linestring, Polygon,
                 OutputIterator, GeometryOut,
Modified: trunk/boost/geometry/multi/algorithms/intersection.hpp
==============================================================================
--- trunk/boost/geometry/multi/algorithms/intersection.hpp	(original)
+++ trunk/boost/geometry/multi/algorithms/intersection.hpp	2011-11-20 07:33:55 EST (Sun, 20 Nov 2011)
@@ -222,6 +222,32 @@
 {};
 
 
+template
+<
+    typename Linestring, typename MultiPolygon,
+    bool Reverse1, bool Reverse2, bool ReverseOut,
+    typename OutputIterator, typename GeometryOut,
+    overlay_type OverlayType,
+    typename Strategy
+>
+struct intersection_insert
+    <
+        linestring_tag, multi_polygon_tag, linestring_tag,
+        false, true, false,
+        Linestring, MultiPolygon,
+        Reverse1, Reverse2, ReverseOut,
+        OutputIterator, GeometryOut,
+        OverlayType,
+        Strategy
+    > : detail::intersection::intersection_of_linestring_with_areal
+            <
+                Linestring, MultiPolygon,
+                OutputIterator, GeometryOut,
+                Strategy
+            >
+{};
+
+
 } // namespace dispatch
 #endif