diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2016-08-29 13:53:55 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2016-09-06 14:29:22 -0700 |
commit | b4864ca9d5a18dda4476baa31e33fe8547d55b40 (patch) | |
tree | 677e8a3876e7e3ab8b3c26b106a256ab235db48c /platform/node | |
parent | fe2a26225f3746381b36ad8b6c6a3ce7727bf655 (diff) | |
download | qtlocation-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.cpp | 44 |
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) { |