summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2020-03-24 14:04:32 +0200
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2020-03-24 20:53:55 +0200
commit5f1847d9a2c928633f17243d66dee63af3793a4b (patch)
tree4a7dc8309f5c64141d4c6f315f9b56844eae4bf6
parent20d960ed51dcd9267b7ff7a0373c72bf6e287f1f (diff)
downloadqtlocation-mapboxgl-5f1847d9a2c928633f17243d66dee63af3793a4b.tar.gz
[core] conversion::Layer uses setProperty API to set max/min zoom & filter
-rw-r--r--src/mbgl/layermanager/layer_factory.cpp11
-rw-r--r--src/mbgl/style/conversion/layer.cpp38
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<style::Filter> filter = style::conversion::convert<style::Filter>(*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>& 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) {