diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2020-03-24 14:04:32 +0200 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2020-03-24 20:53:55 +0200 |
commit | 5f1847d9a2c928633f17243d66dee63af3793a4b (patch) | |
tree | 4a7dc8309f5c64141d4c6f315f9b56844eae4bf6 /src/mbgl/style | |
parent | 20d960ed51dcd9267b7ff7a0373c72bf6e287f1f (diff) | |
download | qtlocation-mapboxgl-5f1847d9a2c928633f17243d66dee63af3793a4b.tar.gz |
[core] conversion::Layer uses setProperty API to set max/min zoom & filter
Diffstat (limited to 'src/mbgl/style')
-rw-r--r-- | src/mbgl/style/conversion/layer.cpp | 38 |
1 files changed, 16 insertions, 22 deletions
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>& 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<Error> setPaintProperties(Layer& layer, const Convertible& value) { auto paintValue = objectMember(value, "paint"); if (!paintValue) { @@ -51,29 +63,11 @@ optional<std::unique_ptr<Layer>> Converter<std::unique_ptr<Layer>>::operator()(c } std::unique_ptr<Layer> layer = LayerManager::get()->createLayer(*type, *id, value, error); - if (!layer) { - return nullopt; - } + if (!layer) return nullopt; - auto minzoomValue = objectMember(value, "minzoom"); - if (minzoomValue) { - optional<float> minzoom = toNumber(*minzoomValue); - if (!minzoom) { - error.message = "minzoom must be numeric"; - return nullopt; - } - layer->setMinZoom(*minzoom); - } - - auto maxzoomValue = objectMember(value, "maxzoom"); - if (maxzoomValue) { - optional<float> 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) { |