]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/geometry/include/boost/geometry/algorithms/detail/envelope/linear.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / geometry / include / boost / geometry / algorithms / detail / envelope / linear.hpp
1 // Boost.Geometry (aka GGL, Generic Geometry Library)
2
3 // Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
4 // Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
5 // Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
6
7 // This file was modified by Oracle on 2015.
8 // Modifications copyright (c) 2015, Oracle and/or its affiliates.
9
10 // Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
11
12 // Distributed under the Boost Software License, Version 1.0.
13 // (See accompanying file LICENSE_1_0.txt or copy at
14 // http://www.boost.org/LICENSE_1_0.txt)
15
16 #ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_ENVELOPE_LINEAR_HPP
17 #define BOOST_GEOMETRY_ALGORITHMS_DETAIL_ENVELOPE_LINEAR_HPP
18
19 #include <boost/geometry/core/cs.hpp>
20 #include <boost/geometry/core/tags.hpp>
21
22 #include <boost/geometry/iterators/segment_iterator.hpp>
23
24 #include <boost/geometry/algorithms/detail/envelope/range.hpp>
25
26 #include <boost/geometry/algorithms/dispatch/envelope.hpp>
27
28
29 namespace boost { namespace geometry
30 {
31
32 #ifndef DOXYGEN_NO_DETAIL
33 namespace detail { namespace envelope
34 {
35
36
37 struct envelope_linestring_on_spheroid
38 {
39 template <typename Linestring, typename Box>
40 static inline void apply(Linestring const& linestring, Box& mbr)
41 {
42 envelope_range::apply(geometry::segments_begin(linestring),
43 geometry::segments_end(linestring),
44 mbr);
45 }
46 };
47
48
49 }} // namespace detail::envelope
50 #endif // DOXYGEN_NO_DETAIL
51
52
53 #ifndef DOXYGEN_NO_DISPATCH
54 namespace dispatch
55 {
56
57
58 template <typename Linestring, typename CS_Tag>
59 struct envelope<Linestring, linestring_tag, CS_Tag>
60 : detail::envelope::envelope_range
61 {};
62
63 template <typename Linestring>
64 struct envelope<Linestring, linestring_tag, spherical_equatorial_tag>
65 : detail::envelope::envelope_linestring_on_spheroid
66 {};
67
68
69 template <typename MultiLinestring, typename CS_Tag>
70 struct envelope
71 <
72 MultiLinestring, multi_linestring_tag, CS_Tag
73 > : detail::envelope::envelope_multi_range
74 <
75 detail::envelope::envelope_range
76 >
77 {};
78
79 template <typename MultiLinestring>
80 struct envelope
81 <
82 MultiLinestring, multi_linestring_tag, spherical_equatorial_tag
83 > : detail::envelope::envelope_multi_range_on_spheroid
84 <
85 detail::envelope::envelope_linestring_on_spheroid
86 >
87 {};
88
89
90 } // namespace dispatch
91 #endif // DOXYGEN_NO_DISPATCH
92
93
94 }} // namespace boost::geometry
95
96 #endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_ENVELOPE_LINEAR_HPP