summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/data_driven_property_evaluator.hpp
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-02-01 20:24:49 +0200
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-02-04 13:30:21 +0200
commite45c3926c26884aceca5789837e1c1b31a51154e (patch)
tree2c954fb953e70b7a670b7c879b67f8bf50ef6471 /src/mbgl/renderer/data_driven_property_evaluator.hpp
parentb56a7181afc40029d4280d60489d989b5dddf304 (diff)
downloadqtlocation-mapboxgl-e45c3926c26884aceca5789837e1c1b31a51154e.tar.gz
[core] Reduce presence of the 'useIntegerZoom' option
The `useIntegerZoom` presence is now limited: it is removed from `PossiblyEvaluatedPropertyValue` class specializations (was never used there!) and from the `PropertyEvaluationParameters` class, so we do not have to copy `PropertyEvaluationParameters` instance at `RenderLineLayer::evaluate`.
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));
}
}