]> git.proxmox.com Git - ceph.git/blame - 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
CommitLineData
7c673cae
FG
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
29namespace boost { namespace geometry
30{
31
32#ifndef DOXYGEN_NO_DETAIL
33namespace detail { namespace envelope
34{
35
36
37struct 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
54namespace dispatch
55{
56
57
58template <typename Linestring, typename CS_Tag>
59struct envelope<Linestring, linestring_tag, CS_Tag>
60 : detail::envelope::envelope_range
61{};
62
63template <typename Linestring>
64struct envelope<Linestring, linestring_tag, spherical_equatorial_tag>
65 : detail::envelope::envelope_linestring_on_spheroid
66{};
67
68
69template <typename MultiLinestring, typename CS_Tag>
70struct envelope
71 <
72 MultiLinestring, multi_linestring_tag, CS_Tag
73 > : detail::envelope::envelope_multi_range
74 <
75 detail::envelope::envelope_range
76 >
77{};
78
79template <typename MultiLinestring>
80struct 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