From 91171bc1a98acf3d21704fa86ad7ada5d1ac762e Mon Sep 17 00:00:00 2001 From: Juha Alanen Date: Wed, 21 Aug 2019 14:29:57 +0300 Subject: [core] Add feature-state compound expression --- src/mbgl/style/expression/compound_expression.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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 { + 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 { @@ -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 }, -- cgit v1.2.1