]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | // Boost.Polygon library voronoi_geometry_type.hpp header file |
2 | ||
3 | // Copyright Andrii Sydorchuk 2010-2012. | |
4 | // Distributed under the Boost Software License, Version 1.0. | |
5 | // (See accompanying file LICENSE_1_0.txt or copy at | |
6 | // http://www.boost.org/LICENSE_1_0.txt) | |
7 | ||
8 | // See http://www.boost.org for updates, documentation, and revision history. | |
9 | ||
10 | #ifndef BOOST_POLYGON_VORONOI_GEOMETRY_TYPE | |
11 | #define BOOST_POLYGON_VORONOI_GEOMETRY_TYPE | |
12 | ||
13 | #include <cstddef> | |
14 | ||
15 | namespace boost { | |
16 | namespace polygon { | |
17 | // Represents topology type of the voronoi site. | |
18 | enum GeometryCategory { | |
19 | GEOMETRY_CATEGORY_POINT = 0x0, | |
20 | GEOMETRY_CATEGORY_SEGMENT = 0x1 | |
21 | }; | |
22 | ||
23 | // Represents category of the input source that forms Voronoi cell. | |
24 | enum SourceCategory { | |
25 | // Point subtypes. | |
26 | SOURCE_CATEGORY_SINGLE_POINT = 0x0, | |
27 | SOURCE_CATEGORY_SEGMENT_START_POINT = 0x1, | |
28 | SOURCE_CATEGORY_SEGMENT_END_POINT = 0x2, | |
29 | ||
30 | // Segment subtypes. | |
31 | SOURCE_CATEGORY_INITIAL_SEGMENT = 0x8, | |
32 | SOURCE_CATEGORY_REVERSE_SEGMENT = 0x9, | |
33 | ||
34 | SOURCE_CATEGORY_GEOMETRY_SHIFT = 0x3, | |
35 | SOURCE_CATEGORY_BITMASK = 0x1F | |
36 | }; | |
37 | ||
38 | inline bool belongs( | |
39 | SourceCategory source_category, | |
40 | GeometryCategory geometry_category) { | |
41 | return (static_cast<std::size_t>(source_category) >> | |
42 | SOURCE_CATEGORY_GEOMETRY_SHIFT) == | |
43 | static_cast<std::size_t>(geometry_category); | |
44 | } | |
45 | } // polygon | |
46 | } // boost | |
47 | ||
48 | #endif // BOOST_POLYGON_VORONOI_GEOMETRY_TYPE |