diff options
-rw-r--r-- | metrics/expectations/platform-all/render-tests/text-pitch-alignment/viewport-overzoomed/expected.png | bin | 0 -> 23021 bytes | |||
-rw-r--r-- | metrics/expectations/platform-all/render-tests/text-pitch-scaling/line-half/expected.png | bin | 0 -> 46378 bytes | |||
-rw-r--r-- | src/mbgl/text/collision_index.cpp | 14 |
3 files changed, 11 insertions, 3 deletions
diff --git a/metrics/expectations/platform-all/render-tests/text-pitch-alignment/viewport-overzoomed/expected.png b/metrics/expectations/platform-all/render-tests/text-pitch-alignment/viewport-overzoomed/expected.png Binary files differnew file mode 100644 index 0000000000..b996d264c4 --- /dev/null +++ b/metrics/expectations/platform-all/render-tests/text-pitch-alignment/viewport-overzoomed/expected.png diff --git a/metrics/expectations/platform-all/render-tests/text-pitch-scaling/line-half/expected.png b/metrics/expectations/platform-all/render-tests/text-pitch-scaling/line-half/expected.png Binary files differnew file mode 100644 index 0000000000..dbb104ee0f --- /dev/null +++ b/metrics/expectations/platform-all/render-tests/text-pitch-scaling/line-half/expected.png diff --git a/src/mbgl/text/collision_index.cpp b/src/mbgl/text/collision_index.cpp index e749db3ffa..0447886166 100644 --- a/src/mbgl/text/collision_index.cpp +++ b/src/mbgl/text/collision_index.cpp @@ -16,19 +16,27 @@ namespace mbgl { +namespace { // When a symbol crosses the edge that causes it to be included in // collision detection, it will cause changes in the symbols around // it. This constant specifies how many pixels to pad the edge of // the viewport for collision detection so that the bulk of the changes // occur offscreen. Making this constant greater increases label // stability, but it's expensive. -static const float viewportPaddingDefault = 100; +const float viewportPaddingDefault = 100; // Viewport padding must be much larger for static tiles to avoid clipped labels. -static const float viewportPaddingForStaticTiles = 1024; +const float viewportPaddingForStaticTiles = 1024; + +inline float getViewportPadding(const TransformState& transformState, MapMode mapMode) { + if (mapMode == MapMode::Tile) return viewportPaddingForStaticTiles; + return (transformState.getPitch() != 0.0f) ? viewportPaddingDefault * 2 : viewportPaddingDefault; +} + +} // namespace CollisionIndex::CollisionIndex(const TransformState& transformState_, MapMode mapMode) : transformState(transformState_), - viewportPadding(mapMode == MapMode::Tile ? viewportPaddingForStaticTiles : viewportPaddingDefault), + viewportPadding(getViewportPadding(transformState_, mapMode)), collisionGrid(transformState.getSize().width + 2 * viewportPadding, transformState.getSize().height + 2 * viewportPadding, 25), |