summaryrefslogtreecommitdiff
path: root/src/mbgl/util/geometry_within.hpp
blob: b07878350148d6f855faa6a3c9136e4b5f4bb9e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#pragma once

#include <array>
#include <limits>
#include <mbgl/util/geometry.hpp>

namespace mbgl {

// contains minX, minY, maxX, maxY
using WithinBBox = std::array<int64_t, 4>;
const WithinBBox DefaultBBox = WithinBBox{std::numeric_limits<int64_t>::max(),
                                          std::numeric_limits<int64_t>::max(),
                                          std::numeric_limits<int64_t>::min(),
                                          std::numeric_limits<int64_t>::min()};

// check if bbox1 is within bbox2
bool boxWithinBox(const WithinBBox& bbox1, const WithinBBox& bbox2);

void updateBBox(WithinBBox& bbox, const Point<int64_t>& p);

bool pointWithinPolygon(const Point<int64_t>& point, const Polygon<int64_t>& polygon);

bool pointWithinPolygons(const Point<int64_t>& point, const MultiPolygon<int64_t>& polygons);

bool lineStringWithinPolygon(const LineString<int64_t>& lineString, const Polygon<int64_t>& polygon);

bool lineStringWithinPolygons(const LineString<int64_t>& line, const MultiPolygon<int64_t>& polygons);

} // namespace mbgl