summaryrefslogtreecommitdiff
path: root/platform/node
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2016-08-29 13:53:55 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2016-09-06 14:29:22 -0700
commitb4864ca9d5a18dda4476baa31e33fe8547d55b40 (patch)
tree677e8a3876e7e3ab8b3c26b106a256ab235db48c /platform/node
parentfe2a26225f3746381b36ad8b6c6a3ce7727bf655 (diff)
downloadqtlocation-mapboxgl-b4864ca9d5a18dda4476baa31e33fe8547d55b40.tar.gz
[core] Trigger Source::Impl::reload when a filter or layout property is modified
Diffstat (limited to 'platform/node')
-rw-r--r--platform/node/src/node_map.cpp44
1 files changed, 22 insertions, 22 deletions
diff --git a/platform/node/src/node_map.cpp b/platform/node/src/node_map.cpp
index 31259f8972..a563264db5 100644
--- a/platform/node/src/node_map.cpp
+++ b/platform/node/src/node_map.cpp
@@ -619,6 +619,27 @@ void NodeMap::SetPaintProperty(const Nan::FunctionCallbackInfo<v8::Value>& info)
info.GetReturnValue().SetUndefined();
}
+struct SetFilterVisitor {
+ mbgl::style::Filter& filter;
+
+ void operator()(mbgl::style::CustomLayer&) {
+ Nan::ThrowTypeError("layer doesn't support filters");
+ }
+
+ void operator()(mbgl::style::RasterLayer&) {
+ Nan::ThrowTypeError("layer doesn't support filters");
+ }
+
+ void operator()(mbgl::style::BackgroundLayer&) {
+ Nan::ThrowTypeError("layer doesn't support filters");
+ }
+
+ template <class VectorLayer>
+ void operator()(VectorLayer& layer) {
+ layer.setFilter(filter);
+ }
+};
+
void NodeMap::SetFilter(const Nan::FunctionCallbackInfo<v8::Value>& info) {
using namespace mbgl::style;
using namespace mbgl::style::conversion;
@@ -650,28 +671,7 @@ void NodeMap::SetFilter(const Nan::FunctionCallbackInfo<v8::Value>& info) {
filter = std::move(*converted);
}
- if (layer->is<FillLayer>()) {
- layer->as<FillLayer>()->setFilter(filter);
- info.GetReturnValue().SetUndefined();
- return;
- }
- if (layer->is<LineLayer>()) {
- layer->as<LineLayer>()->setFilter(filter);
- info.GetReturnValue().SetUndefined();
- return;
- }
- if (layer->is<SymbolLayer>()) {
- layer->as<SymbolLayer>()->setFilter(filter);
- info.GetReturnValue().SetUndefined();
- return;
- }
- if (layer->is<CircleLayer>()) {
- layer->as<CircleLayer>()->setFilter(filter);
- info.GetReturnValue().SetUndefined();
- return;
- }
-
- Nan::ThrowTypeError("layer doesn't support filters");
+ layer->accept(SetFilterVisitor { filter });
}
void NodeMap::DumpDebugLogs(const Nan::FunctionCallbackInfo<v8::Value>& info) {