From 1b55ca875d96af2ad4a5574241a1eddac261b4ff Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Tue, 7 Jan 2020 17:53:56 +0200 Subject: [PATCH] [core] Fix CollisionIndex::featureIntersectsTileBorders() implementation --- src/mbgl/text/collision_index.cpp | 4 ++-- src/mbgl/text/collision_index.hpp | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/mbgl/text/collision_index.cpp b/src/mbgl/text/collision_index.cpp index 7f22d884c9a..cbb15024280 100644 --- a/src/mbgl/text/collision_index.cpp +++ b/src/mbgl/text/collision_index.cpp @@ -88,7 +88,7 @@ inline bool CollisionIndex::isInsideTile( return x1 >= tileBoundaries[0] && y1 >= tileBoundaries[1] && x2 < tileBoundaries[2] && y2 < tileBoundaries[3]; } -inline bool CollisionIndex::intersectsTileBorders( +inline bool CollisionIndex::overlapsTile( float x1, float y1, float x2, float y2, const CollisionTileBoundaries& tileBoundaries) const { return x1 < tileBoundaries[2] && x2 > tileBoundaries[0] && y1 < tileBoundaries[3] && y2 > tileBoundaries[1]; } @@ -108,7 +108,7 @@ bool CollisionIndex::featureIntersectsTileBorders(const CollisionFeature& featur float px2 = (box.x2 + shift.x) * tileToViewport + projectedPoint.first.x; float py2 = (box.y2 + shift.y) * tileToViewport + projectedPoint.first.y; - return intersectsTileBorders(px1, py1, px2, py2, tileEdges); + return overlapsTile(px1, py1, px2, py2, tileEdges) && !isInsideTile(px1, py1, px2, py2, tileEdges); } std::pair CollisionIndex::placeFeature(const CollisionFeature& feature, diff --git a/src/mbgl/text/collision_index.hpp b/src/mbgl/text/collision_index.hpp index 71a4a7cd060..b02647037af 100644 --- a/src/mbgl/text/collision_index.hpp +++ b/src/mbgl/text/collision_index.hpp @@ -54,8 +54,7 @@ class CollisionIndex { bool isOffscreen(float x1, float y1, float x2, float y2) const; bool isInsideGrid(float x1, float y1, float x2, float y2) const; bool isInsideTile(float x1, float y1, float x2, float y2, const CollisionTileBoundaries& tileBoundaries) const; - bool intersectsTileBorders( - float x1, float y1, float x2, float y2, const CollisionTileBoundaries& tileBoundaries) const; + bool overlapsTile(float x1, float y1, float x2, float y2, const CollisionTileBoundaries& tileBoundaries) const; std::pair placeLineFeature(const CollisionFeature& feature, const mat4& posMatrix,