diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-02-01 20:24:49 +0200 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-02-04 13:30:21 +0200 |
commit | e45c3926c26884aceca5789837e1c1b31a51154e (patch) | |
tree | 2c954fb953e70b7a670b7c879b67f8bf50ef6471 /src/mbgl/renderer/data_driven_property_evaluator.hpp | |
parent | b56a7181afc40029d4280d60489d989b5dddf304 (diff) | |
download | qtlocation-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.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)); } } |