MapLibre Native Core
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
geometry.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <cstdint>
4 
5 #include <mapbox/geometry/geometry.hpp>
6 #include <mapbox/geometry/point_arithmetic.hpp>
7 #include <mapbox/geometry/for_each_point.hpp>
8 
9 namespace mbgl {
10 
11 enum class FeatureType : uint8_t {
12  Unknown = 0,
13  Point = 1,
14  LineString = 2,
15  Polygon = 3
16 };
17 
18 using EmptyGeometry = mapbox::geometry::empty;
19 
20 template <class T>
21 using Point = mapbox::geometry::point<T>;
22 
23 template <class T>
24 using LineString = mapbox::geometry::line_string<T>;
25 
26 template <class T>
27 using Polygon = mapbox::geometry::polygon<T>;
28 
29 template <class T>
30 using MultiPoint = mapbox::geometry::multi_point<T>;
31 
32 template <class T>
33 using MultiLineString = mapbox::geometry::multi_line_string<T>;
34 
35 template <class T>
36 using MultiPolygon = mapbox::geometry::multi_polygon<T>;
37 
38 template <class T>
39 using LinearRing = mapbox::geometry::linear_ring<T>;
40 
41 template <class T>
42 using Geometry = mapbox::geometry::geometry<T>;
43 
44 template <class S, class T>
46  return Point<S>(static_cast<S>(p.x), static_cast<S>(p.y));
47 }
48 
49 struct ToFeatureType {
51  template <class T>
53  template <class T>
55  template <class T>
57  template <class T>
59  template <class T>
61  template <class T>
63  template <class T>
64  FeatureType operator()(const mapbox::geometry::geometry_collection<T> &) const { return FeatureType::Unknown; }
65 };
66 
67 template <class T, typename F>
68 auto forEachPoint(const Geometry<T>& g, F f) {
69  mapbox::geometry::for_each_point(g, f);
70 }
71 
72 } // namespace mbgl
Definition: actor.hpp:15
mapbox::geometry::multi_line_string< T > MultiLineString
Definition: geometry.hpp:33
FeatureType
Definition: geometry.hpp:11
mapbox::geometry::line_string< T > LineString
Definition: geometry.hpp:24
mapbox::geometry::empty EmptyGeometry
Definition: geometry.hpp:18
auto forEachPoint(const Geometry< T > &g, F f)
Definition: geometry.hpp:68
mapbox::geometry::multi_polygon< T > MultiPolygon
Definition: geometry.hpp:36
mapbox::geometry::geometry< T > Geometry
Definition: geometry.hpp:42
mapbox::geometry::polygon< T > Polygon
Definition: geometry.hpp:27
Point< S > convertPoint(const Point< T > &p)
Definition: geometry.hpp:45
mapbox::geometry::point< T > Point
Definition: geometry.hpp:21
mapbox::geometry::multi_point< T > MultiPoint
Definition: geometry.hpp:30
mapbox::geometry::linear_ring< T > LinearRing
Definition: geometry.hpp:39
FeatureType operator()(const Point< T > &) const
Definition: geometry.hpp:52
FeatureType operator()(const MultiPolygon< T > &) const
Definition: geometry.hpp:62
FeatureType operator()(const MultiLineString< T > &) const
Definition: geometry.hpp:58
FeatureType operator()(const Polygon< T > &) const
Definition: geometry.hpp:60
FeatureType operator()(const MultiPoint< T > &) const
Definition: geometry.hpp:54
FeatureType operator()(const mapbox::geometry::geometry_collection< T > &) const
Definition: geometry.hpp:64
FeatureType operator()(const EmptyGeometry &) const
Definition: geometry.hpp:50
FeatureType operator()(const LineString< T > &) const
Definition: geometry.hpp:56