// Boost.Geometry (aka GGL, Generic Geometry Library) // Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands. // This file was modified by Oracle on 2015. // Modifications copyright (c) 2015, Oracle and/or its affiliates. // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle // 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_ALGORITHMS_DETAIL_OVERLAY_INTERSECTION_BOX_BOX_HPP #define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_INTERSECTION_BOX_BOX_HPP #include #include namespace boost { namespace geometry { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace intersection { template struct intersection_box_box { template < typename Box1, typename Box2, typename RobustPolicy, typename BoxOut, typename Strategy > static inline bool apply(Box1 const& box1, Box2 const& box2, RobustPolicy const& robust_policy, BoxOut& box_out, Strategy const& strategy) { typedef typename coordinate_type::type ct; ct max1 = get(box1); ct min2 = get(box2); if (max1 < min2) { return false; } ct max2 = get(box2); ct min1 = get(box1); if (max2 < min1) { return false; } // Set dimensions of output coordinate set(box_out, min1 < min2 ? min2 : min1); set(box_out, max1 > max2 ? max2 : max1); return intersection_box_box ::apply(box1, box2, robust_policy, box_out, strategy); } }; template struct intersection_box_box { template < typename Box1, typename Box2, typename RobustPolicy, typename BoxOut, typename Strategy > static inline bool apply(Box1 const&, Box2 const&, RobustPolicy const&, BoxOut&, Strategy const&) { return true; } }; }} // namespace detail::intersection #endif // DOXYGEN_NO_DETAIL }} // namespace boost::geometry #endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_INTERSECTION_BOX_BOX_HPP