summaryrefslogtreecommitdiff
path: root/src/mbgl/text/collision_index.hpp
diff options
context:
space:
mode:
authorWilhelm Berg <wb@BergWerk-GIS.at>2018-08-22 16:56:32 +0200
committerWilhelm Berg <wb@BergWerk-GIS.at>2018-08-22 16:56:32 +0200
commit797f622a26b34db5a30e7f1728d87c6700a2ec1e (patch)
tree75ea93979db2baf3eb2234c6fbb3d1a9c5b70329 /src/mbgl/text/collision_index.hpp
parent86fc3f525e42d042f239876b93525ff411ad7182 (diff)
parent520df7f02049cdbbb9e68041e755d6c3a8d5b21f (diff)
downloadqtlocation-mapboxgl-797f622a26b34db5a30e7f1728d87c6700a2ec1e.tar.gz
Merge branch 'master' of github.com:mapbox/mapbox-gl-native into bwg-vs2017
Diffstat (limited to 'src/mbgl/text/collision_index.hpp')
-rw-r--r--src/mbgl/text/collision_index.hpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/mbgl/text/collision_index.hpp b/src/mbgl/text/collision_index.hpp
index b2be4c6ade..78782fe61c 100644
--- a/src/mbgl/text/collision_index.hpp
+++ b/src/mbgl/text/collision_index.hpp
@@ -3,13 +3,18 @@
#include <mbgl/geometry/feature_index.hpp>
#include <mbgl/text/collision_feature.hpp>
#include <mbgl/util/grid_index.hpp>
+#include <mbgl/util/optional.hpp>
#include <mbgl/map/transform_state.hpp>
+#include <array>
+
namespace mbgl {
class PlacedSymbol;
struct TileDistance;
+
+using CollisionTileBoundaries = std::array<float,4>;
class CollisionIndex {
public:
@@ -26,15 +31,19 @@ public:
const float fontSize,
const bool allowOverlap,
const bool pitchWithMap,
- const bool collisionDebug);
+ const bool collisionDebug,
+ const optional<CollisionTileBoundaries>& avoidEdges);
void insertFeature(CollisionFeature& feature, bool ignorePlacement, uint32_t bucketInstanceId);
std::unordered_map<uint32_t, std::vector<IndexedSubfeature>> queryRenderedSymbols(const ScreenLineString&) const;
+
+ CollisionTileBoundaries projectTileBoundaries(const mat4& posMatrix) const;
private:
bool isOffscreen(const CollisionBox&) const;
bool isInsideGrid(const CollisionBox&) const;
+ bool isInsideTile(const CollisionBox&, const CollisionTileBoundaries& tileBoundaries) const;
std::pair<bool,bool> placeLineFeature(CollisionFeature& feature,
const mat4& posMatrix,
@@ -45,7 +54,8 @@ private:
const float fontSize,
const bool allowOverlap,
const bool pitchWithMap,
- const bool collisionDebug);
+ const bool collisionDebug,
+ const optional<CollisionTileBoundaries>& avoidEdges);
float approximateTileDistance(const TileDistance& tileDistance, const float lastSegmentAngle, const float pixelsToTileUnits, const float cameraToAnchorDistance, const bool pitchWithMap);