diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2020-03-24 15:35:41 +0200 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2020-03-24 20:53:55 +0200 |
commit | 7234cb3968621f90b0afdf9dd50966923b5fa7ba (patch) | |
tree | ae648ec2edefddf955c3033604106608dea79b2b /src | |
parent | 5f1847d9a2c928633f17243d66dee63af3793a4b (diff) | |
download | qtlocation-mapboxgl-7234cb3968621f90b0afdf9dd50966923b5fa7ba.tar.gz |
[core] Ability to set source-layer setProperty method
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/layermanager/circle_layer_factory.cpp | 6 | ||||
-rw-r--r-- | src/mbgl/layermanager/fill_extrusion_layer_factory.cpp | 6 | ||||
-rw-r--r-- | src/mbgl/layermanager/fill_layer_factory.cpp | 6 | ||||
-rw-r--r-- | src/mbgl/layermanager/heatmap_layer_factory.cpp | 6 | ||||
-rw-r--r-- | src/mbgl/layermanager/layer_factory.cpp | 12 | ||||
-rw-r--r-- | src/mbgl/layermanager/line_layer_factory.cpp | 7 | ||||
-rw-r--r-- | src/mbgl/layermanager/symbol_layer_factory.cpp | 7 | ||||
-rw-r--r-- | src/mbgl/style/conversion/layer.cpp | 3 | ||||
-rw-r--r-- | src/mbgl/style/layer.cpp | 13 |
9 files changed, 22 insertions, 44 deletions
diff --git a/src/mbgl/layermanager/circle_layer_factory.cpp b/src/mbgl/layermanager/circle_layer_factory.cpp index 0f6ee6d407..ce28270c0b 100644 --- a/src/mbgl/layermanager/circle_layer_factory.cpp +++ b/src/mbgl/layermanager/circle_layer_factory.cpp @@ -17,11 +17,7 @@ std::unique_ptr<style::Layer> CircleLayerFactory::createLayer(const std::string& return nullptr; } - std::unique_ptr<style::Layer> layer = std::unique_ptr<style::Layer>(new style::CircleLayer(id, *source)); - if (!initSourceLayerAndFilter(layer.get(), value)) { - return nullptr; - } - return layer; + return std::unique_ptr<style::Layer>(new style::CircleLayer(id, *source)); } std::unique_ptr<Bucket> CircleLayerFactory::createBucket(const BucketParameters& parameters, const std::vector<Immutable<style::LayerProperties>>& layers) noexcept { diff --git a/src/mbgl/layermanager/fill_extrusion_layer_factory.cpp b/src/mbgl/layermanager/fill_extrusion_layer_factory.cpp index e1bedb5246..079d1a0947 100644 --- a/src/mbgl/layermanager/fill_extrusion_layer_factory.cpp +++ b/src/mbgl/layermanager/fill_extrusion_layer_factory.cpp @@ -17,11 +17,7 @@ std::unique_ptr<style::Layer> FillExtrusionLayerFactory::createLayer(const std:: return nullptr; } - std::unique_ptr<style::Layer> layer = std::unique_ptr<style::Layer>(new style::FillExtrusionLayer(id, *source)); - if (!initSourceLayerAndFilter(layer.get(), value)) { - return nullptr; - } - return layer; + return std::unique_ptr<style::Layer>(new style::FillExtrusionLayer(id, *source)); } std::unique_ptr<Layout> FillExtrusionLayerFactory::createLayout(const LayoutParameters& parameters, diff --git a/src/mbgl/layermanager/fill_layer_factory.cpp b/src/mbgl/layermanager/fill_layer_factory.cpp index 0c7c270c98..94f3f47ce8 100644 --- a/src/mbgl/layermanager/fill_layer_factory.cpp +++ b/src/mbgl/layermanager/fill_layer_factory.cpp @@ -17,11 +17,7 @@ std::unique_ptr<style::Layer> FillLayerFactory::createLayer(const std::string& i return nullptr; } - std::unique_ptr<style::Layer> layer = std::unique_ptr<style::Layer>(new style::FillLayer(id, *source)); - if (!initSourceLayerAndFilter(layer.get(), value)) { - return nullptr; - } - return layer; + return std::unique_ptr<style::Layer>(new style::FillLayer(id, *source)); } std::unique_ptr<Layout> diff --git a/src/mbgl/layermanager/heatmap_layer_factory.cpp b/src/mbgl/layermanager/heatmap_layer_factory.cpp index 221a103053..babbe8993b 100644 --- a/src/mbgl/layermanager/heatmap_layer_factory.cpp +++ b/src/mbgl/layermanager/heatmap_layer_factory.cpp @@ -17,11 +17,7 @@ std::unique_ptr<style::Layer> HeatmapLayerFactory::createLayer(const std::string return nullptr; } - std::unique_ptr<style::Layer> layer = std::unique_ptr<style::Layer>(new style::HeatmapLayer(id, *source)); - if (!initSourceLayerAndFilter(layer.get(), value)) { - return nullptr; - } - return layer; + return std::unique_ptr<style::Layer>(new style::HeatmapLayer(id, *source)); } std::unique_ptr<Bucket> HeatmapLayerFactory::createBucket(const BucketParameters& parameters, const std::vector<Immutable<style::LayerProperties>>& layers) noexcept { diff --git a/src/mbgl/layermanager/layer_factory.cpp b/src/mbgl/layermanager/layer_factory.cpp index be87dd665b..9db96f62ca 100644 --- a/src/mbgl/layermanager/layer_factory.cpp +++ b/src/mbgl/layermanager/layer_factory.cpp @@ -37,16 +37,4 @@ std::unique_ptr<Layout> LayerFactory::createLayout(const LayoutParameters&, return nullptr; } -bool LayerFactory::initSourceLayerAndFilter(style::Layer* layer, const style::conversion::Convertible& value) const noexcept { - auto sourceLayerValue = objectMember(value, "source-layer"); - if (sourceLayerValue) { - optional<std::string> sourceLayer = toString(*sourceLayerValue); - if (!sourceLayer) { - return false; - } - layer->setSourceLayer(*sourceLayer); - } - return true; -} - } // namespace mbgl diff --git a/src/mbgl/layermanager/line_layer_factory.cpp b/src/mbgl/layermanager/line_layer_factory.cpp index 53b91a0705..03751fef06 100644 --- a/src/mbgl/layermanager/line_layer_factory.cpp +++ b/src/mbgl/layermanager/line_layer_factory.cpp @@ -16,12 +16,7 @@ std::unique_ptr<style::Layer> LineLayerFactory::createLayer(const std::string& i if (!source) { return nullptr; } - - std::unique_ptr<style::Layer> layer = std::unique_ptr<style::Layer>(new style::LineLayer(id, *source)); - if (!initSourceLayerAndFilter(layer.get(), value)) { - return nullptr; - } - return layer; + return std::unique_ptr<style::Layer>(new style::LineLayer(id, *source)); } std::unique_ptr<Layout> LineLayerFactory::createLayout(const LayoutParameters& parameters, diff --git a/src/mbgl/layermanager/symbol_layer_factory.cpp b/src/mbgl/layermanager/symbol_layer_factory.cpp index 11a4f09ec3..5f3de27bb5 100644 --- a/src/mbgl/layermanager/symbol_layer_factory.cpp +++ b/src/mbgl/layermanager/symbol_layer_factory.cpp @@ -16,12 +16,7 @@ std::unique_ptr<style::Layer> SymbolLayerFactory::createLayer(const std::string& if (!source) { return nullptr; } - - std::unique_ptr<style::Layer> layer = std::unique_ptr<style::Layer>(new style::SymbolLayer(id, *source)); - if (!initSourceLayerAndFilter(layer.get(), value)) { - return nullptr; - } - return layer; + return std::unique_ptr<style::Layer>(new style::SymbolLayer(id, *source)); } std::unique_ptr<Layout> SymbolLayerFactory::createLayout(const LayoutParameters& parameters, diff --git a/src/mbgl/style/conversion/layer.cpp b/src/mbgl/style/conversion/layer.cpp index 05689d29b1..8f29665957 100644 --- a/src/mbgl/style/conversion/layer.cpp +++ b/src/mbgl/style/conversion/layer.cpp @@ -68,6 +68,9 @@ optional<std::unique_ptr<Layer>> Converter<std::unique_ptr<Layer>>::operator()(c if (!setObjectMember(layer, value, "minzoom", error)) return nullopt; if (!setObjectMember(layer, value, "maxzoom", error)) return nullopt; if (!setObjectMember(layer, value, "filter", error)) return nullopt; + if (layer->getTypeInfo()->source == LayerTypeInfo::Source::Required) { + if (!setObjectMember(layer, value, "source-layer", error)) return nullopt; + } auto layoutValue = objectMember(value, "layout"); if (layoutValue) { diff --git a/src/mbgl/style/layer.cpp b/src/mbgl/style/layer.cpp index 748f52c109..5f682873b6 100644 --- a/src/mbgl/style/layer.cpp +++ b/src/mbgl/style/layer.cpp @@ -7,6 +7,7 @@ #include <mbgl/tile/tile.hpp> #include <mbgl/renderer/render_layer.hpp> +#include <mbgl/util/logging.hpp> namespace mbgl { namespace style { @@ -163,6 +164,18 @@ optional<conversion::Error> Layer::setProperty(const std::string& name, const co setFilter(*filter); return nullopt; } + } else if (name == "source-layer") { + if (auto sourceLayer = convert<std::string>(value, *error)) { + if (getTypeInfo()->source != LayerTypeInfo::Source::Required) { + Log::Warning(mbgl::Event::General, + "source-layer property cannot be applied to" + "the layer %s", + baseImpl->id.c_str()); + return nullopt; + } + setSourceLayer(*sourceLayer); + return nullopt; + } } return error; } |