summaryrefslogtreecommitdiff
path: root/src/mbgl/util/geometry_within.hpp
blob: 56f755c7d78caec51b352f62272b27a499f5edfb (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<double, 4>;
const WithinBBox DefaultBBox = WithinBBox{std::numeric_limits<double>::infinity(),
                                          std::numeric_limits<double>::infinity(),
                                          -std::numeric_limits<double>::infinity(),
                                          -std::numeric_limits<double>::infinity()};

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

WithinBBox calculateBBox(const Geometry<double>& geometries);

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

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

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

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

} // namespace mbgl