diff options
author | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2020-04-16 16:52:39 +0300 |
---|---|---|
committer | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2020-04-16 13:52:54 -0400 |
commit | ffea0af9bf0b8cb91a17b58645f9a4c34bc3e8e5 (patch) | |
tree | 6484a9065f11dd0b165b72bbbc4c36854b1b4553 /src/mbgl/style | |
parent | 7f0c13967d7265f9218ee6cec61c28e0ac40fc90 (diff) | |
download | qtlocation-mapboxgl-ffea0af9bf0b8cb91a17b58645f9a4c34bc3e8e5.tar.gz |
Add generic setter for 'source' property
- Add setter for 'source' property
- Test generic setters via setProperty method
Diffstat (limited to 'src/mbgl/style')
-rw-r--r-- | src/mbgl/style/layer.cpp | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/mbgl/style/layer.cpp b/src/mbgl/style/layer.cpp index d6a855fd64..428bcc9a5a 100644 --- a/src/mbgl/style/layer.cpp +++ b/src/mbgl/style/layer.cpp @@ -41,16 +41,25 @@ std::string Layer::getSourceLayer() const { } void Layer::setSourceLayer(const std::string& sourceLayer) { + if (getSourceLayer() == sourceLayer) return; auto impl_ = mutableBaseImpl(); impl_->sourceLayer = sourceLayer; baseImpl = std::move(impl_); } +void Layer::setSourceID(const std::string& sourceID) { + if (getSourceID() == sourceID) return; + auto impl_ = mutableBaseImpl(); + impl_->source = sourceID; + baseImpl = std::move(impl_); +}; + const Filter& Layer::getFilter() const { return baseImpl->filter; } void Layer::setFilter(const Filter& filter) { + if (getFilter() == filter) return; auto impl_ = mutableBaseImpl(); impl_->filter = filter; baseImpl = std::move(impl_); @@ -79,6 +88,7 @@ float Layer::getMaxZoom() const { } void Layer::setMinZoom(float minZoom) { + if (getMinZoom() == minZoom) return; auto impl_ = mutableBaseImpl(); impl_->minZoom = minZoom; baseImpl = std::move(impl_); @@ -86,6 +96,7 @@ void Layer::setMinZoom(float minZoom) { } void Layer::setMaxZoom(float maxZoom) { + if (getMaxZoom() == maxZoom) return; auto impl_ = mutableBaseImpl(); impl_->maxZoom = maxZoom; baseImpl = std::move(impl_); @@ -168,7 +179,7 @@ optional<conversion::Error> Layer::setProperty(const std::string& name, const co 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" + "'source-layer' property cannot be set to" "the layer %s", baseImpl->id.c_str()); return nullopt; @@ -176,6 +187,18 @@ optional<conversion::Error> Layer::setProperty(const std::string& name, const co setSourceLayer(*sourceLayer); return nullopt; } + } else if (name == "source") { + if (auto sourceID = convert<std::string>(value, *error)) { + if (getTypeInfo()->source != LayerTypeInfo::Source::Required) { + Log::Warning(mbgl::Event::General, + "'source' property cannot be set to" + "the layer %s", + baseImpl->id.c_str()); + return nullopt; + } + setSourceID(*sourceID); + return nullopt; + } } return error; } |