]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/geometry/include/boost/geometry/geometries/adapted/boost_polygon/box.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / geometry / include / boost / geometry / geometries / adapted / boost_polygon / box.hpp
CommitLineData
7c673cae
FG
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
25namespace boost { namespace geometry
26{
27
28
29#ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS
30namespace traits
31{
32
33
34template <typename CoordinateType>
35struct tag<boost::polygon::rectangle_data<CoordinateType> >
36{
37 typedef box_tag type;
38};
39
40
41template <typename CoordinateType>
42struct 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
50template <typename CoordinateType>
51struct 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
71template <typename CoordinateType>
72struct 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
92template <typename CoordinateType>
93struct 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
113template <typename CoordinateType>
114struct 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