diff options
Diffstat (limited to 'src/mbgl/renderer/data_driven_property_evaluator.hpp')
-rw-r--r-- | src/mbgl/renderer/data_driven_property_evaluator.hpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/mbgl/renderer/data_driven_property_evaluator.hpp b/src/mbgl/renderer/data_driven_property_evaluator.hpp index d65ac36713..efac9e4532 100644 --- a/src/mbgl/renderer/data_driven_property_evaluator.hpp +++ b/src/mbgl/renderer/data_driven_property_evaluator.hpp @@ -7,7 +7,7 @@ namespace mbgl { -template <typename T> +template <typename T, bool useIntegerZoom = false> class DataDrivenPropertyEvaluator { public: using ResultType = PossiblyEvaluatedPropertyValue<T>; @@ -25,14 +25,18 @@ public: } ResultType operator()(const style::PropertyExpression<T>& expression) const { - if (!expression.isFeatureConstant()) { - auto returnExpression = expression; - returnExpression.useIntegerZoom = parameters.useIntegerZoom; - return ResultType(returnExpression); - } else if (!parameters.useIntegerZoom) { - return ResultType(expression.evaluate(parameters.z)); - } else { + if (useIntegerZoom) { // Compiler will optimize out the unused branch. + if (!expression.isFeatureConstant()) { + auto returnExpression = expression; + returnExpression.useIntegerZoom = true; + return ResultType(returnExpression); + } return ResultType(expression.evaluate(floor(parameters.z))); + } else { + if (!expression.isFeatureConstant()) { + return ResultType(expression); + } + return ResultType(expression.evaluate(parameters.z)); } } |