$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r77063 - in trunk: boost/geometry/algorithms/detail/overlay boost/geometry/extensions/algorithms boost/geometry/extensions/algorithms/buffer libs/geometry/test_extensions/algorithms
From: barend.gehrels_at_[hidden]
Date: 2012-02-18 06:04:20
Author: barendgehrels
Date: 2012-02-18 06:04:19 EST (Sat, 18 Feb 2012)
New Revision: 77063
URL: http://svn.boost.org/trac/boost/changeset/77063
Log:
Boost.Geometry fixes for offset-extension w.r.t. new buffer approach (does not run yet but compiles)
Text files modified: 
   trunk/boost/geometry/algorithms/detail/overlay/get_turn_info.hpp                |     5 ++-                                     
   trunk/boost/geometry/extensions/algorithms/buffer/buffered_piece_collection.hpp |     4 ++                                      
   trunk/boost/geometry/extensions/algorithms/buffer/buffered_ring.hpp             |     5 +--                                     
   trunk/boost/geometry/extensions/algorithms/offset.hpp                           |    56 +++++++++++++++-------------------------
   trunk/libs/geometry/test_extensions/algorithms/offset.cpp                       |     3 -                                       
   5 files changed, 30 insertions(+), 43 deletions(-)
Modified: trunk/boost/geometry/algorithms/detail/overlay/get_turn_info.hpp
==============================================================================
--- trunk/boost/geometry/algorithms/detail/overlay/get_turn_info.hpp	(original)
+++ trunk/boost/geometry/algorithms/detail/overlay/get_turn_info.hpp	2012-02-18 06:04:19 EST (Sat, 18 Feb 2012)
@@ -763,8 +763,9 @@
 
     typedef typename si::segment_intersection_strategy_type strategy;
 
-
-
+    // Intersect pi-pj with qi-qj
+    // The points pk and qk are only used do determine more information
+    // about the turn.
     template <typename OutputIterator>
     static inline OutputIterator apply(
                 Point1 const& pi, Point1 const& pj, Point1 const& pk,
Modified: trunk/boost/geometry/extensions/algorithms/buffer/buffered_piece_collection.hpp
==============================================================================
--- trunk/boost/geometry/extensions/algorithms/buffer/buffered_piece_collection.hpp	(original)
+++ trunk/boost/geometry/extensions/algorithms/buffer/buffered_piece_collection.hpp	2012-02-18 06:04:19 EST (Sat, 18 Feb 2012)
@@ -20,9 +20,11 @@
 #include <boost/geometry/algorithms/covered_by.hpp>
 #include <boost/geometry/extensions/strategies/buffer_side.hpp>
 
-#include <boost/geometry/algorithms/detail/overlay/turn_info.hpp>
+#include <boost/geometry/algorithms/detail/overlay/calculate_distance_policy.hpp>
 #include <boost/geometry/algorithms/detail/overlay/enrichment_info.hpp>
 #include <boost/geometry/algorithms/detail/overlay/traversal_info.hpp>
+#include <boost/geometry/algorithms/detail/overlay/traverse.hpp>
+#include <boost/geometry/algorithms/detail/overlay/turn_info.hpp>
 
 #include <boost/geometry/extensions/algorithms/buffer/buffered_ring.hpp>
 
Modified: trunk/boost/geometry/extensions/algorithms/buffer/buffered_ring.hpp
==============================================================================
--- trunk/boost/geometry/extensions/algorithms/buffer/buffered_ring.hpp	(original)
+++ trunk/boost/geometry/extensions/algorithms/buffer/buffered_ring.hpp	2012-02-18 06:04:19 EST (Sat, 18 Feb 2012)
@@ -16,13 +16,12 @@
 #include <boost/geometry/core/coordinate_type.hpp>
 #include <boost/geometry/core/point_type.hpp>
 
-#include <boost/geometry/algorithms/equals.hpp>
-#include <boost/geometry/algorithms/covered_by.hpp>
 #include <boost/geometry/extensions/strategies/buffer_side.hpp>
 
-#include <boost/geometry/algorithms/detail/overlay/turn_info.hpp>
 #include <boost/geometry/algorithms/detail/overlay/enrichment_info.hpp>
+#include <boost/geometry/algorithms/detail/overlay/get_ring.hpp>
 #include <boost/geometry/algorithms/detail/overlay/traversal_info.hpp>
+#include <boost/geometry/algorithms/detail/overlay/turn_info.hpp>
 
 #include <boost/geometry/multi/algorithms/detail/overlay/copy_segments.hpp>
 #include <boost/geometry/multi/algorithms/detail/overlay/copy_segment_point.hpp>
Modified: trunk/boost/geometry/extensions/algorithms/offset.hpp
==============================================================================
--- trunk/boost/geometry/extensions/algorithms/offset.hpp	(original)
+++ trunk/boost/geometry/extensions/algorithms/offset.hpp	2012-02-18 06:04:19 EST (Sat, 18 Feb 2012)
@@ -14,9 +14,7 @@
 #include <boost/range/functions.hpp>
 
 #include <boost/geometry/core/point_type.hpp>
-#include <boost/geometry/extensions/algorithms/buffer/line_line_intersection.hpp>
-#include <boost/geometry/extensions/algorithms/buffer/range_buffer.hpp>
-#include <boost/geometry/extensions/algorithms/offset_appender.hpp>
+#include <boost/geometry/extensions/algorithms/buffer/buffer_inserter.hpp>
 #include <boost/geometry/algorithms/detail/disjoint.hpp>
 #include <boost/geometry/geometries/concepts/check.hpp>
 
@@ -34,26 +32,25 @@
 template
 <
     typename Range,
-    typename RangeOut,
-    typename JoinStrategy,
-    typename DistanceStrategy
+    typename RangeOut
 >
 struct offset_range
-    : public geometry::detail::buffer::range_buffer
+    : public geometry::detail::buffer::buffer_range
         <
             RangeOut, 
-            DistanceStrategy, 
-            JoinStrategy,
             linestring_tag
         >
 {
-    template <typename Appender>
-    static inline void apply(Range const& range,
-                Appender& appender,
+    template
+    <
+        typename Collection, typename DistanceStrategy, typename JoinStrategy
+    >
+    static inline void apply(Collection& collection, Range const& range,
                 DistanceStrategy const& distance,
                 JoinStrategy const& join)
     {
-        iterate(appender, boost::begin(range), boost::end(range), 
+        collection.add_input();
+        iterate(collection, boost::begin(range), boost::end(range), 
             buffer_side_left,
             distance, join);
     }
@@ -73,9 +70,7 @@
     typename GeometryTag,
     typename GeometryOutTag,
     typename Geometry,
-    typename GeometryOut,
-    typename JoinStrategy,
-    typename DistanceStrategy
+    typename GeometryOut
 >
 struct offset
 {};
@@ -84,25 +79,19 @@
 template
 <
     typename Geometry,
-    typename GeometryOut,
-    typename JoinStrategy,
-    typename DistanceStrategy
+    typename GeometryOut
 >
 struct offset
     <
         linestring_tag,
         linestring_tag,
         Geometry,
-        GeometryOut,
-        JoinStrategy,
-        DistanceStrategy
+        GeometryOut
     >
     : detail::offset::offset_range
         <
             Geometry,
-            GeometryOut,
-            JoinStrategy,
-            DistanceStrategy
+            GeometryOut
         >
 {};
 
@@ -131,23 +120,20 @@
         > distance_strategy_type;
     distance_strategy_type distance_strategy(distance, distance);
 
-
-    typedef detail::offset::offset_appender
+    detail::buffer::buffered_piece_collection
         <
-            GeometryOut
-        > appender_type;
-    
-    appender_type appender(out);
+            //typename geometry::ring_type<GeometryOut>::type
+            // TODO the piece collection will not require a polygonal argument
+            model::ring<typename point_type<Geometry>::type> 
+        > collection;
 
     dispatch::offset
     <
         typename tag<Geometry>::type,
         typename tag<GeometryOut>::type,
         Geometry,
-        GeometryOut,
-        JoinStrategy,
-        distance_strategy_type
-    >::apply(geometry, appender, distance_strategy, join);
+        GeometryOut
+    >::apply(collection, geometry, distance_strategy, join);
 }
 
 
Modified: trunk/libs/geometry/test_extensions/algorithms/offset.cpp
==============================================================================
--- trunk/libs/geometry/test_extensions/algorithms/offset.cpp	(original)
+++ trunk/libs/geometry/test_extensions/algorithms/offset.cpp	2012-02-18 06:04:19 EST (Sat, 18 Feb 2012)
@@ -45,8 +45,7 @@
     typedef bg::strategy::buffer::join_round
         <
             point_type,
-            point_type,
-            false
+            point_type
         > join_strategy;
 
     GeometryOut moved_by_offset;