diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2020-03-10 23:05:47 +0200 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2020-03-12 21:51:00 +0200 |
commit | 12b17205308e8631d6c9465f9ee14e80b5891246 (patch) | |
tree | c776ab20f97824fe05cd9379b2ee86c3ddd7b253 | |
parent | 77070109f3c97a91672c5a6e57ccf68ab1752185 (diff) | |
download | qtlocation-mapboxgl-12b17205308e8631d6c9465f9ee14e80b5891246.tar.gz |
[core] Collision index uses doubled padding with the tilted view
-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), |