]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/boost/geometry/geometries/adapted/boost_polygon/box.hpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / boost / geometry / geometries / adapted / boost_polygon / box.hpp
1 // Boost.Geometry (aka GGL, Generic Geometry Library)
2
3 // Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
4
5 // Use, modification and distribution is subject to the Boost Software License,
6 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt)
8
9 #ifndef BOOST_GEOMETRY_GEOMETRIES_ADAPTED_BOOST_POLYGON_BOX_HPP
10 #define BOOST_GEOMETRY_GEOMETRIES_ADAPTED_BOOST_POLYGON_BOX_HPP
11
12 // Adapts Geometries from Boost.Polygon for usage in Boost.Geometry
13 // boost::polygon::rectangle_data -> boost::geometry::box
14
15
16 #include <boost/polygon/polygon.hpp>
17
18 #include <boost/geometry/core/access.hpp>
19 #include <boost/geometry/core/cs.hpp>
20 #include <boost/geometry/core/coordinate_dimension.hpp>
21 #include <boost/geometry/core/coordinate_type.hpp>
22 #include <boost/geometry/core/tags.hpp>
23
24
25 namespace boost { namespace geometry
26 {
27
28
29 #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS
30 namespace traits
31 {
32
33
34 template <typename CoordinateType>
35 struct tag<boost::polygon::rectangle_data<CoordinateType> >
36 {
37 typedef box_tag type;
38 };
39
40
41 template <typename CoordinateType>
42 struct point_type<boost::polygon::rectangle_data<CoordinateType> >
43 {
44 // Not sure what to do here. Boost.Polygon's rectangle does NOT define its
45 // point_type (but uses it...)
46 typedef boost::polygon::point_data<CoordinateType> type;
47 };
48
49
50 template <typename CoordinateType>
51 struct indexed_access
52 <
53 boost::polygon::rectangle_data<CoordinateType>,
54 min_corner, 0
55 >
56 {
57 typedef boost::polygon::rectangle_data<CoordinateType> box_type;
58
59 static inline CoordinateType get(box_type const& b)
60 {
61 return boost::polygon::xl(b);
62 }
63
64 static inline void set(box_type& b, CoordinateType const& value)
65 {
66 boost::polygon::xl(b, value);
67 }
68 };
69
70
71 template <typename CoordinateType>
72 struct indexed_access
73 <
74 boost::polygon::rectangle_data<CoordinateType>,
75 min_corner, 1
76 >
77 {
78 typedef boost::polygon::rectangle_data<CoordinateType> box_type;
79
80 static inline CoordinateType get(box_type const& b)
81 {
82 return boost::polygon::yl(b);
83 }
84
85 static inline void set(box_type& b, CoordinateType const& value)
86 {
87 boost::polygon::yl(b, value);
88 }
89 };
90
91
92 template <typename CoordinateType>
93 struct indexed_access
94 <
95 boost::polygon::rectangle_data<CoordinateType>,
96 max_corner, 0
97 >
98 {
99 typedef boost::polygon::rectangle_data<CoordinateType> box_type;
100
101 static inline CoordinateType get(box_type const& b)
102 {
103 return boost::polygon::xh(b);
104 }
105
106 static inline void set(box_type& b, CoordinateType const& value)
107 {
108 boost::polygon::xh(b, value);
109 }
110 };
111
112
113 template <typename CoordinateType>
114 struct indexed_access
115 <
116 boost::polygon::rectangle_data<CoordinateType>,
117 max_corner, 1
118 >
119 {
120 typedef boost::polygon::rectangle_data<CoordinateType> box_type;
121
122 static inline CoordinateType get(box_type const& b)
123 {
124 return boost::polygon::yh(b);
125 }
126
127 static inline void set(box_type& b, CoordinateType const& value)
128 {
129 boost::polygon::yh(b, value);
130 }
131 };
132
133
134 } // namespace traits
135 #endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS
136
137
138 }} // namespace boost::geometry
139
140
141 #endif // BOOST_GEOMETRY_GEOMETRIES_ADAPTED_BOOST_POLYGON_BOX_HPP