summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuha Alanen <juha.alanen@mapbox.com>2019-08-21 14:29:57 +0300
committerJuha Alanen <19551460+jmalanen@users.noreply.github.com>2019-09-18 14:29:15 +0300
commit91171bc1a98acf3d21704fa86ad7ada5d1ac762e (patch)
tree76e81ebd0b825ec2af5e85546357a6aa7f5dd35c
parent9e262ee55fdbc8b2e409a0d8a0da07841ef5eede (diff)
downloadqtlocation-mapboxgl-91171bc1a98acf3d21704fa86ad7ada5d1ac762e.tar.gz
[core] Add feature-state compound expression
-rw-r--r--src/mbgl/style/expression/compound_expression.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/mbgl/style/expression/compound_expression.cpp b/src/mbgl/style/expression/compound_expression.cpp
index c637856ad9..8bd21bdad7 100644
--- a/src/mbgl/style/expression/compound_expression.cpp
+++ b/src/mbgl/style/expression/compound_expression.cpp
@@ -675,6 +675,20 @@ const auto& errorCompoundExpression() {
return signature;
}
+const auto& featureStateCompoundExpression() {
+ static auto signature = detail::makeSignature("feature-state", [](const EvaluationContext& params, const std::string& key) -> Result<Value> {
+ mbgl::Value state;
+ if (params.featureState) {
+ auto it = params.featureState->find(key);
+ if (it != params.featureState->end()) {
+ state = mbgl::Value(it->second);
+ }
+ }
+ return toExpressionValue(state);
+ });
+ return signature;
+}
+
// Legacy Filters
const auto& filterEqualsCompoundExpression() {
static auto signature = detail::makeSignature("filter-==", [](const EvaluationContext& params, const std::string& key, const Value &lhs) -> Result<bool> {
@@ -921,6 +935,7 @@ MAPBOX_ETERNAL_CONSTEXPR const auto compoundExpressionRegistry = mapbox::eternal
{ "concat", concatCompoundExpression },
{ "resolved-locale", resolvedLocaleCompoundExpression },
{ "error", errorCompoundExpression },
+ { "feature-state", featureStateCompoundExpression },
// Legacy Filters
{ "filter-==", filterEqualsCompoundExpression },
{ "filter-id-==", filterIdEqualsCompoundExpression },