]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/geometry/include/boost/geometry/strategies/buffer.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / geometry / include / boost / geometry / strategies / buffer.hpp
CommitLineData
7c673cae
FG
1// Boost.Geometry (aka GGL, Generic Geometry Library)
2
3// Copyright (c) 2012-2014 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_STRATEGIES_CARTESIAN_BUFFER_HPP
10#define BOOST_GEOMETRY_STRATEGIES_CARTESIAN_BUFFER_HPP
11
12namespace boost { namespace geometry
13{
14
15namespace strategy { namespace buffer
16{
17
18/*
19
20 A Buffer-join strategy gets 4 input points.
21 On the two consecutive segments s1 and s2 (joining at vertex v):
22
23 The lines from parallel at s1, s2 (at buffer-distance) end/start
24 in two points perpendicular to the segments: p1 and p2.
25 These parallel lines interesct in point ip
26
27 (s2)
28 |
29 |
30 ^
31 |
32 (p2) |(v)
33 * +----<--- (s1)
34
35 x(ip) *(p1)
36
37
38 So, in clockwise order:
39 v : vertex point
40 p1: perpendicular on left side of segment1<1> (perp1)
41 ip: intersection point
42 p2: perpendicular on left side of segment2<0> (perp2)
43*/
44
45
46
47/*!
48\brief Enumerates options for side of buffer (left/right w.r.t. directed
49 segment)
50\ingroup enum
51\details Around a linestring, a buffer can be defined left or right.
52 Around a polygon, assumed clockwise internally,
53 a buffer is either on the left side (inflates the polygon), or on the
54 right side (deflates the polygon)
55*/
56enum buffer_side_selector { buffer_side_left, buffer_side_right };
57
58/*!
59\brief Enumerates types of pieces (parts of buffer) around geometries
60\ingroup enum
61*/
62enum piece_type
63{
64 buffered_segment,
65 buffered_join,
66 buffered_round_end,
67 buffered_flat_end,
68 buffered_point,
69 buffered_concave, // always on the inside
70 piece_type_unknown
71};
72
73
74/*!
75\brief Enumerates types of joins
76\ingroup enum
77*/
78enum join_selector
79{
80 join_convex,
81 join_concave,
82 join_continue, // collinear, next segment touches previous segment
83 join_spike // collinear, with overlap, next segment goes back
84};
85
86/*!
87\brief Enumerates types of result codes from buffer strategies
88\ingroup enum
89*/
90enum result_code
91{
92 result_normal,
93 result_error_numerical,
94 result_no_output
95};
96
97
98}} // namespace strategy::buffer
99
100
101}} // namespace boost::geometry
102
103#endif // BOOST_GEOMETRY_STRATEGIES_CARTESIAN_BUFFER_HPP