diff options
-rw-r--r-- | include/mbgl/layermanager/layer_factory.hpp | 1 | ||||
-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 | 5 |
10 files changed, 14 insertions, 45 deletions
diff --git a/include/mbgl/layermanager/layer_factory.hpp b/include/mbgl/layermanager/layer_factory.hpp index f3cfef6bb6..afa25bf92d 100644 --- a/include/mbgl/layermanager/layer_factory.hpp +++ b/include/mbgl/layermanager/layer_factory.hpp @@ -37,7 +37,6 @@ public: protected: optional<std::string> getSource(const style::conversion::Convertible& value) const noexcept; - bool initSourceLayerAndFilter(style::Layer*, const style::conversion::Convertible& value) const noexcept; }; } // namespace mbgl 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 492858a1bc..cd3cc35aa2 100644 --- a/src/mbgl/style/layer.cpp +++ b/src/mbgl/style/layer.cpp @@ -163,6 +163,11 @@ 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)) { + setSourceLayer(*sourceLayer); + return nullopt; + } } return error; // Must be Error{"layer doesn't support this property"}. } |