]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/boost/geometry/algorithms/detail/envelope/point.hpp
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / boost / geometry / algorithms / detail / envelope / point.hpp
index 86e73f3aa3ee4f29d0c4c44fed5535c754725785..164274a28035741e407ecfb4fc1fbb8e9231bc65 100644 (file)
@@ -4,8 +4,8 @@
 // Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
 // Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
 
-// This file was modified by Oracle on 2015, 2016, 2017.
-// Modifications copyright (c) 2015-2016, Oracle and/or its affiliates.
+// This file was modified by Oracle on 2015, 2016, 2017, 2018.
+// Modifications copyright (c) 2015-2018, Oracle and/or its affiliates.
 
 // Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle
 // Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
 #ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_ENVELOPE_POINT_HPP
 #define BOOST_GEOMETRY_ALGORITHMS_DETAIL_ENVELOPE_POINT_HPP
 
-#include <cstddef>
-
-#include <boost/geometry/core/access.hpp>
-#include <boost/geometry/core/cs.hpp>
-#include <boost/geometry/core/coordinate_dimension.hpp>
-#include <boost/geometry/core/coordinate_system.hpp>
 #include <boost/geometry/core/tags.hpp>
 
-#include <boost/geometry/views/detail/indexed_point_view.hpp>
-
-#include <boost/geometry/algorithms/detail/convert_point_to_point.hpp>
-#include <boost/geometry/algorithms/detail/normalize.hpp>
-
-#include <boost/geometry/algorithms/detail/envelope/transform_units.hpp>
-
 #include <boost/geometry/algorithms/dispatch/envelope.hpp>
 
+// For backward compatibility
+#include <boost/geometry/strategies/cartesian/envelope_point.hpp>
+#include <boost/geometry/strategies/spherical/envelope_point.hpp>
+
 
 namespace boost { namespace geometry
 {
@@ -44,53 +35,12 @@ namespace detail { namespace envelope
 {
 
 
-template <std::size_t Dimension, std::size_t DimensionCount>
-struct envelope_one_point
+struct envelope_point
 {
-    template <std::size_t Index, typename Point, typename Box>
-    static inline void apply(Point const& point, Box& mbr)
-    {
-        detail::indexed_point_view<Box, Index> box_corner(mbr);
-        detail::conversion::point_to_point
-            <
-                Point,
-                detail::indexed_point_view<Box, Index>,
-                Dimension,
-                DimensionCount
-            >::apply(point, box_corner);
-    }
-
     template <typename Point, typename Box, typename Strategy>
-    static inline void apply(Point const& point, Box& mbr, Strategy const&)
+    static inline void apply(Point const& point, Box& mbr, Strategy const& )
     {
-        apply<min_corner>(point, mbr);
-        apply<max_corner>(point, mbr);
-    }
-};
-
-
-struct envelope_point_on_spheroid
-{
-    template<typename Point, typename Box, typename Strategy>
-    static inline void apply(Point const& point, Box& mbr, Strategy const& strategy)
-    {
-        Point normalized_point = detail::return_normalized<Point>(point);
-
-        typename point_type<Box>::type box_point;
-
-        // transform units of input point to units of a box point
-        transform_units(normalized_point, box_point);
-
-        geometry::set<min_corner, 0>(mbr, geometry::get<0>(box_point));
-        geometry::set<min_corner, 1>(mbr, geometry::get<1>(box_point));
-
-        geometry::set<max_corner, 0>(mbr, geometry::get<0>(box_point));
-        geometry::set<max_corner, 1>(mbr, geometry::get<1>(box_point));
-
-        envelope_one_point
-            <
-                2, dimension<Point>::value
-            >::apply(normalized_point, mbr, strategy);
+        Strategy::apply(point, mbr);
     }
 };
 
@@ -104,26 +54,8 @@ namespace dispatch
 
 
 template <typename Point>
-struct envelope<Point, point_tag, cartesian_tag>
-    : detail::envelope::envelope_one_point<0, dimension<Point>::value>
-{};
-
-
-template <typename Point>
-struct envelope<Point, point_tag, spherical_polar_tag>
-    : detail::envelope::envelope_point_on_spheroid
-{};
-
-
-template <typename Point>
-struct envelope<Point, point_tag, spherical_equatorial_tag>
-    : detail::envelope::envelope_point_on_spheroid
-{};
-
-
-template <typename Point>
-struct envelope<Point, point_tag, geographic_tag>
-    : detail::envelope::envelope_point_on_spheroid
+struct envelope<Point, point_tag>
+    : detail::envelope::envelope_point
 {};