From 5f1847d9a2c928633f17243d66dee63af3793a4b Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Tue, 24 Mar 2020 14:04:32 +0200 Subject: [core] conversion::Layer uses setProperty API to set max/min zoom & filter --- src/mbgl/layermanager/layer_factory.cpp | 11 ---------- src/mbgl/style/conversion/layer.cpp | 38 ++++++++++++++------------------- 2 files changed, 16 insertions(+), 33 deletions(-) diff --git a/src/mbgl/layermanager/layer_factory.cpp b/src/mbgl/layermanager/layer_factory.cpp index f4967b0e5d..be87dd665b 100644 --- a/src/mbgl/layermanager/layer_factory.cpp +++ b/src/mbgl/layermanager/layer_factory.cpp @@ -46,17 +46,6 @@ bool LayerFactory::initSourceLayerAndFilter(style::Layer* layer, const style::co } layer->setSourceLayer(*sourceLayer); } - - auto filterValue = objectMember(value, "filter"); - if (filterValue) { - style::conversion::Error error; - optional filter = style::conversion::convert(*filterValue, error); - if (!filter) { - return false; - } - layer->setFilter(*filter); - } - return true; } diff --git a/src/mbgl/style/conversion/layer.cpp b/src/mbgl/style/conversion/layer.cpp index baf078c3a3..05689d29b1 100644 --- a/src/mbgl/style/conversion/layer.cpp +++ b/src/mbgl/style/conversion/layer.cpp @@ -9,6 +9,18 @@ namespace mbgl { namespace style { namespace conversion { +namespace { +bool setObjectMember(std::unique_ptr& layer, const Convertible& value, const char* member, Error& error) { + if (auto memberValue = objectMember(value, member)) { + if (auto error_ = layer->setProperty(member, *memberValue)) { + error = *error_; + return false; + } + } + return true; +} +} // namespace + optional setPaintProperties(Layer& layer, const Convertible& value) { auto paintValue = objectMember(value, "paint"); if (!paintValue) { @@ -51,29 +63,11 @@ optional> Converter>::operator()(c } std::unique_ptr layer = LayerManager::get()->createLayer(*type, *id, value, error); - if (!layer) { - return nullopt; - } + if (!layer) return nullopt; - auto minzoomValue = objectMember(value, "minzoom"); - if (minzoomValue) { - optional minzoom = toNumber(*minzoomValue); - if (!minzoom) { - error.message = "minzoom must be numeric"; - return nullopt; - } - layer->setMinZoom(*minzoom); - } - - auto maxzoomValue = objectMember(value, "maxzoom"); - if (maxzoomValue) { - optional maxzoom = toNumber(*maxzoomValue); - if (!maxzoom) { - error.message = "maxzoom must be numeric"; - return nullopt; - } - layer->setMaxZoom(*maxzoom); - } + if (!setObjectMember(layer, value, "minzoom", error)) return nullopt; + if (!setObjectMember(layer, value, "maxzoom", error)) return nullopt; + if (!setObjectMember(layer, value, "filter", error)) return nullopt; auto layoutValue = objectMember(value, "layout"); if (layoutValue) { -- cgit v1.2.1