summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/data_driven_property_evaluator.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/data_driven_property_evaluator.hpp')
-rw-r--r--src/mbgl/renderer/data_driven_property_evaluator.hpp20
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));
}
}