summaryrefslogtreecommitdiff
path: root/platform/node
diff options
context:
space:
mode:
authorChris Loer <chris.loer@gmail.com>2018-09-06 14:58:37 -0700
committerChris Loer <chris.loer@mapbox.com>2018-09-12 14:10:46 -0700
commitd735d89835fb3076e09594fce2a141fe1495e33f (patch)
tree36fb80484b3952fb730fd34a77439d303d002cdc /platform/node
parent079ba0209ed383c15123902f0810e658c2b0abf4 (diff)
downloadqtlocation-mapboxgl-d735d89835fb3076e09594fce2a141fe1495e33f.tar.gz
[core] Port "collision group" plumbing to gl-native.
[node] Hook up map-wide "crossSourceCollisions" option, defaulting to true. [test] Pass "crossSourceCollisions" test option through test harness; enable cross-source-collisions tests on native.
Diffstat (limited to 'platform/node')
-rw-r--r--platform/node/CHANGELOG.md1
-rw-r--r--platform/node/src/node_map.cpp18
-rw-r--r--platform/node/src/node_map.hpp1
-rw-r--r--platform/node/test/ignores.json2
-rw-r--r--platform/node/test/suite_implementation.js8
5 files changed, 23 insertions, 7 deletions
diff --git a/platform/node/CHANGELOG.md b/platform/node/CHANGELOG.md
index 5b44d5be1f..fc8d2afe7b 100644
--- a/platform/node/CHANGELOG.md
+++ b/platform/node/CHANGELOG.md
@@ -6,6 +6,7 @@
- Remove unnecessary memory use when collision debug mode is not enabled ([#12294](https://github.com/mapbox/mapbox-gl-native/issues/12294))
- Added support for rendering `symbol-placement: line-center` ([#12337](https://github.com/mapbox/mapbox-gl-native/pull/12337))
- Add support for feature expressions in `line-pattern`, `fill-pattern`, and `fill-extrusion-pattern` properties. [#12284](https://github.com/mapbox/mapbox-gl-native/pull/12284)
+- Add `crossSourceCollisions` map option, with default of `true`. When set to `false`, cross-source collision detection is disabled. ([#12820] (https://github.com/mapbox/mapbox-gl-native/issues/12820))
# 3.5.8 - October 19, 2017
- Fixes an issue that causes memory leaks when not deleting the frontend object
diff --git a/platform/node/src/node_map.cpp b/platform/node/src/node_map.cpp
index 7dbccfcf41..e32c576e14 100644
--- a/platform/node/src/node_map.cpp
+++ b/platform/node/src/node_map.cpp
@@ -621,7 +621,10 @@ void NodeMap::cancel() {
frontend = std::make_unique<mbgl::HeadlessFrontend>(mbgl::Size{ 256, 256 }, pixelRatio, *this, threadpool);
map = std::make_unique<mbgl::Map>(*frontend, mapObserver, frontend->getSize(), pixelRatio,
- *this, threadpool, mode);
+ *this, threadpool, mode,
+ mbgl::ConstrainMode::HeightOnly,
+ mbgl::ViewportMode::Default,
+ crossSourceCollisions);
// FIXME: Reload the style after recreating the map. We need to find
// a better way of canceling an ongoing rendering on the core level
@@ -1212,6 +1215,14 @@ NodeMap::NodeMap(v8::Local<v8::Object> options)
return mbgl::MapMode::Static;
}
}())
+ , crossSourceCollisions([&] {
+ Nan::HandleScope scope;
+ return Nan::Has(options, Nan::New("crossSourceCollisions").ToLocalChecked()).FromJust()
+ ? Nan::Get(options, Nan::New("crossSourceCollisions").ToLocalChecked())
+ .ToLocalChecked()
+ ->BooleanValue()
+ : true;
+ }())
, mapObserver(NodeMapObserver())
, frontend(std::make_unique<mbgl::HeadlessFrontend>(mbgl::Size { 256, 256 }, pixelRatio, *this, threadpool))
, map(std::make_unique<mbgl::Map>(*frontend,
@@ -1220,7 +1231,10 @@ NodeMap::NodeMap(v8::Local<v8::Object> options)
pixelRatio,
*this,
threadpool,
- mode)),
+ mode,
+ mbgl::ConstrainMode::HeightOnly,
+ mbgl::ViewportMode::Default,
+ crossSourceCollisions)),
async(new uv_async_t) {
async->data = this;
diff --git a/platform/node/src/node_map.hpp b/platform/node/src/node_map.hpp
index 52fc1ef659..b83a238681 100644
--- a/platform/node/src/node_map.hpp
+++ b/platform/node/src/node_map.hpp
@@ -82,6 +82,7 @@ public:
const float pixelRatio;
mbgl::MapMode mode;
+ bool crossSourceCollisions;
NodeThreadPool threadpool;
NodeMapObserver mapObserver;
std::unique_ptr<mbgl::HeadlessFrontend> frontend;
diff --git a/platform/node/test/ignores.json b/platform/node/test/ignores.json
index d2ec3644d9..67f0ff9a72 100644
--- a/platform/node/test/ignores.json
+++ b/platform/node/test/ignores.json
@@ -95,7 +95,6 @@
"render-tests/geojson/inline-linestring-fill": "current behavior is arbitrary",
"render-tests/geojson/inline-polygon-symbol": "behavior needs reconciliation with gl-js",
"render-tests/icon-rotate/with-offset": "https://github.com/mapbox/mapbox-gl-native/issues/11872",
- "render-tests/icon-no-cross-source-collision/default": "skip - gl-js only",
"render-tests/mixed-zoom/z10-z11": "https://github.com/mapbox/mapbox-gl-native/issues/10397",
"render-tests/raster-masking/overlapping-zoom": "https://github.com/mapbox/mapbox-gl-native/issues/10195",
"render-tests/real-world/bangkok": "https://github.com/mapbox/mapbox-gl-native/issues/10412",
@@ -122,7 +121,6 @@
"render-tests/text-field/formatted-arabic": "skip - https://github.com/mapbox/mapbox-gl-native/pull/12624",
"render-tests/text-field/formatted-line": "skip - https://github.com/mapbox/mapbox-gl-native/pull/12624",
"render-tests/text-field/formatted": "skip - https://github.com/mapbox/mapbox-gl-native/pull/12624",
- "render-tests/text-no-cross-source-collision/default": "skip - gl-js only",
"render-tests/text-pitch-alignment/auto-text-rotation-alignment-map": "https://github.com/mapbox/mapbox-gl-native/issues/9732",
"render-tests/text-pitch-alignment/map-text-rotation-alignment-map": "https://github.com/mapbox/mapbox-gl-native/issues/9732",
"render-tests/text-pitch-alignment/viewport-text-rotation-alignment-map": "https://github.com/mapbox/mapbox-gl-native/issues/9732",
diff --git a/platform/node/test/suite_implementation.js b/platform/node/test/suite_implementation.js
index 704cab8940..f868af8ece 100644
--- a/platform/node/test/suite_implementation.js
+++ b/platform/node/test/suite_implementation.js
@@ -16,7 +16,7 @@ export default function (style, options, callback) {
let map;
if (options.recycleMap) {
- const key = options.pixelRatio + '/' + tileMode;
+ const key = options.pixelRatio + '/' + tileMode + '/' + options.crossSourceCollisions;
if (maps.has(key)) {
map = maps.get(key);
map.request = mapRequest;
@@ -24,7 +24,8 @@ export default function (style, options, callback) {
maps.set(key, new mbgl.Map({
ratio: options.pixelRatio,
request: mapRequest,
- mode: options.mapMode
+ mode: options.mapMode,
+ crossSourceCollisions: typeof options.crossSourceCollisions === "undefined" ? true : options.crossSourceCollisions
}));
map = maps.get(key);
}
@@ -32,7 +33,8 @@ export default function (style, options, callback) {
map = new mbgl.Map({
ratio: options.pixelRatio,
request: mapRequest,
- mode: options.mapMode
+ mode: options.mapMode,
+ crossSourceCollisions: typeof options.crossSourceCollisions === "undefined" ? true : options.crossSourceCollisions
});
}