// Boost.Geometry (aka GGL, Generic Geometry Library) // Copyright (c) 2007-2011 Barend Gehrels, Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_GEOMETRY_MULTI_ALGORITHMS_DETAIL_OVERLAY_GET_TURNS_HPP #define BOOST_GEOMETRY_MULTI_ALGORITHMS_DETAIL_OVERLAY_GET_TURNS_HPP #include #include #include #include #include #include namespace boost { namespace geometry { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace get_turns { template < typename Multi, typename Box, bool Reverse, bool ReverseBox, typename Turns, typename TurnPolicy, typename InterruptPolicy > struct get_turns_multi_polygon_cs { static inline void apply( int source_id1, Multi const& multi, int source_id2, Box const& box, Turns& turns, InterruptPolicy& interrupt_policy) { typedef typename boost::range_iterator < Multi const >::type iterator_type; int i = 0; for (iterator_type it = boost::begin(multi); it != boost::end(multi); ++it, ++i) { // Call its single version get_turns_polygon_cs < typename boost::range_value::type, Box, Reverse, ReverseBox, Turns, TurnPolicy, InterruptPolicy >::apply(source_id1, *it, source_id2, box, turns, interrupt_policy, i); } } }; }} // namespace detail::get_turns #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template < typename MultiPolygon, typename Box, bool ReverseMultiPolygon, bool ReverseBox, typename Turns, typename TurnPolicy, typename InterruptPolicy > struct get_turns < multi_polygon_tag, box_tag, MultiPolygon, Box, ReverseMultiPolygon, ReverseBox, Turns, TurnPolicy, InterruptPolicy > : detail::get_turns::get_turns_multi_polygon_cs < MultiPolygon, Box, ReverseMultiPolygon, ReverseBox, Turns, TurnPolicy, InterruptPolicy > {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH }} // namespace boost::geometry #endif // BOOST_GEOMETRY_MULTI_ALGORITHMS_DETAIL_OVERLAY_GET_TURNS_HPP