[core] Introduce StyleCalculationParameters

This makes subsequent changes to the the parameter list less intrusive.
This commit is contained in:
John Firebaugh
2015-10-22 17:23:32 -07:00
parent 7a03d734fd
commit 0665b64590
21 changed files with 126 additions and 90 deletions

View File

@@ -2,10 +2,10 @@
namespace mbgl {
RenderPass BackgroundLayer::applyStyleProperties(const float z, const TimePoint& now, const ZoomHistory& zoomHistory) {
applyTransitionedStyleProperty(PropertyKey::BackgroundOpacity, properties.opacity, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::BackgroundColor, properties.color, z, now, zoomHistory);
applyStyleProperty(PropertyKey::BackgroundImage, properties.image, z, now, zoomHistory);
RenderPass BackgroundLayer::applyStyleProperties(const StyleCalculationParameters& parameters) {
applyTransitionedStyleProperty(PropertyKey::BackgroundOpacity, properties.opacity, parameters);
applyTransitionedStyleProperty(PropertyKey::BackgroundColor, properties.color, parameters);
applyStyleProperty(PropertyKey::BackgroundImage, properties.image, parameters);
return properties.isVisible() ? RenderPass::Translucent : RenderPass::None;
}

View File

@@ -8,7 +8,7 @@ namespace mbgl {
class BackgroundLayer : public StyleLayer {
public:
RenderPass applyStyleProperties(float z, const TimePoint& now, const ZoomHistory&) override;
RenderPass applyStyleProperties(const StyleCalculationParameters&) override;
BackgroundPaintProperties properties;
};

View File

@@ -2,13 +2,13 @@
namespace mbgl {
RenderPass CircleLayer::applyStyleProperties(const float z, const TimePoint& now, const ZoomHistory& zoomHistory) {
applyTransitionedStyleProperty(PropertyKey::CircleRadius, properties.radius, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::CircleColor, properties.color, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::CircleOpacity, properties.opacity, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::CircleTranslate, properties.translate, z, now, zoomHistory);
applyStyleProperty(PropertyKey::CircleTranslateAnchor, properties.translateAnchor, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::CircleBlur, properties.blur, z, now, zoomHistory);
RenderPass CircleLayer::applyStyleProperties(const StyleCalculationParameters& parameters) {
applyTransitionedStyleProperty(PropertyKey::CircleRadius, properties.radius, parameters);
applyTransitionedStyleProperty(PropertyKey::CircleColor, properties.color, parameters);
applyTransitionedStyleProperty(PropertyKey::CircleOpacity, properties.opacity, parameters);
applyTransitionedStyleProperty(PropertyKey::CircleTranslate, properties.translate, parameters);
applyStyleProperty(PropertyKey::CircleTranslateAnchor, properties.translateAnchor, parameters);
applyTransitionedStyleProperty(PropertyKey::CircleBlur, properties.blur, parameters);
return properties.isVisible() ? RenderPass::Translucent : RenderPass::None;
}

View File

@@ -8,7 +8,7 @@ namespace mbgl {
class CircleLayer : public StyleLayer {
public:
RenderPass applyStyleProperties(float z, const TimePoint& now, const ZoomHistory&) override;
RenderPass applyStyleProperties(const StyleCalculationParameters&) override;
CirclePaintProperties properties;
};

View File

@@ -2,14 +2,14 @@
namespace mbgl {
RenderPass FillLayer::applyStyleProperties(const float z, const TimePoint& now, const ZoomHistory& zoomHistory) {
applyStyleProperty(PropertyKey::FillAntialias, properties.antialias, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::FillOpacity, properties.opacity, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::FillColor, properties.fill_color, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::FillOutlineColor, properties.stroke_color, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::FillTranslate, properties.translate, z, now, zoomHistory);
applyStyleProperty(PropertyKey::FillTranslateAnchor, properties.translateAnchor, z, now, zoomHistory);
applyStyleProperty(PropertyKey::FillImage, properties.image, z, now, zoomHistory);
RenderPass FillLayer::applyStyleProperties(const StyleCalculationParameters& parameters) {
applyStyleProperty(PropertyKey::FillAntialias, properties.antialias, parameters);
applyTransitionedStyleProperty(PropertyKey::FillOpacity, properties.opacity, parameters);
applyTransitionedStyleProperty(PropertyKey::FillColor, properties.fill_color, parameters);
applyTransitionedStyleProperty(PropertyKey::FillOutlineColor, properties.stroke_color, parameters);
applyTransitionedStyleProperty(PropertyKey::FillTranslate, properties.translate, parameters);
applyStyleProperty(PropertyKey::FillTranslateAnchor, properties.translateAnchor, parameters);
applyStyleProperty(PropertyKey::FillImage, properties.image, parameters);
RenderPass result = RenderPass::None;

View File

@@ -8,7 +8,7 @@ namespace mbgl {
class FillLayer : public StyleLayer {
public:
RenderPass applyStyleProperties(float z, const TimePoint& now, const ZoomHistory&) override;
RenderPass applyStyleProperties(const StyleCalculationParameters&) override;
FillPaintProperties properties;
};

View File

@@ -2,19 +2,21 @@
namespace mbgl {
RenderPass LineLayer::applyStyleProperties(const float z, const TimePoint& now, const ZoomHistory& zoomHistory) {
applyTransitionedStyleProperty(PropertyKey::LineOpacity, properties.opacity, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::LineColor, properties.color, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::LineTranslate, properties.translate, z, now, zoomHistory);
applyStyleProperty(PropertyKey::LineTranslateAnchor, properties.translateAnchor, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::LineWidth, properties.width, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::LineGapWidth, properties.gap_width, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::LineBlur, properties.blur, z, now, zoomHistory);
applyStyleProperty(PropertyKey::LineDashArray, properties.dash_array, z, now, zoomHistory);
applyStyleProperty(PropertyKey::LineImage, properties.image, z, now, zoomHistory);
RenderPass LineLayer::applyStyleProperties(const StyleCalculationParameters& parameters) {
applyTransitionedStyleProperty(PropertyKey::LineOpacity, properties.opacity, parameters);
applyTransitionedStyleProperty(PropertyKey::LineColor, properties.color, parameters);
applyTransitionedStyleProperty(PropertyKey::LineTranslate, properties.translate, parameters);
applyStyleProperty(PropertyKey::LineTranslateAnchor, properties.translateAnchor, parameters);
applyTransitionedStyleProperty(PropertyKey::LineWidth, properties.width, parameters);
applyTransitionedStyleProperty(PropertyKey::LineGapWidth, properties.gap_width, parameters);
applyTransitionedStyleProperty(PropertyKey::LineBlur, properties.blur, parameters);
applyStyleProperty(PropertyKey::LineDashArray, properties.dash_array, parameters);
applyStyleProperty(PropertyKey::LineImage, properties.image, parameters);
// for scaling dasharrays
applyStyleProperty(PropertyKey::LineWidth, properties.dash_line_width, std::floor(z), now, zoomHistory);
StyleCalculationParameters dashArrayParams = parameters;
dashArrayParams.z = std::floor(dashArrayParams.z);
applyStyleProperty(PropertyKey::LineWidth, properties.dash_line_width, dashArrayParams);
return properties.isVisible() ? RenderPass::Translucent : RenderPass::None;
}

View File

@@ -8,7 +8,7 @@ namespace mbgl {
class LineLayer : public StyleLayer {
public:
RenderPass applyStyleProperties(float z, const TimePoint& now, const ZoomHistory&) override;
RenderPass applyStyleProperties(const StyleCalculationParameters&) override;
LinePaintProperties properties;
};

View File

@@ -2,14 +2,14 @@
namespace mbgl {
RenderPass RasterLayer::applyStyleProperties(const float z, const TimePoint& now, const ZoomHistory& zoomHistory) {
applyTransitionedStyleProperty(PropertyKey::RasterOpacity, properties.opacity, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::RasterHueRotate, properties.hue_rotate, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::RasterBrightnessLow, properties.brightness[0], z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::RasterBrightnessHigh, properties.brightness[1], z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::RasterSaturation, properties.saturation, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::RasterContrast, properties.contrast, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::RasterFade, properties.fade, z, now, zoomHistory);
RenderPass RasterLayer::applyStyleProperties(const StyleCalculationParameters& parameters) {
applyTransitionedStyleProperty(PropertyKey::RasterOpacity, properties.opacity, parameters);
applyTransitionedStyleProperty(PropertyKey::RasterHueRotate, properties.hue_rotate, parameters);
applyTransitionedStyleProperty(PropertyKey::RasterBrightnessLow, properties.brightness[0], parameters);
applyTransitionedStyleProperty(PropertyKey::RasterBrightnessHigh, properties.brightness[1], parameters);
applyTransitionedStyleProperty(PropertyKey::RasterSaturation, properties.saturation, parameters);
applyTransitionedStyleProperty(PropertyKey::RasterContrast, properties.contrast, parameters);
applyTransitionedStyleProperty(PropertyKey::RasterFade, properties.fade, parameters);
return properties.isVisible() ? RenderPass::Translucent : RenderPass::None;
}

View File

@@ -8,7 +8,7 @@ namespace mbgl {
class RasterLayer : public StyleLayer {
public:
RenderPass applyStyleProperties(float z, const TimePoint& now, const ZoomHistory&) override;
RenderPass applyStyleProperties(const StyleCalculationParameters&) override;
RasterPaintProperties properties;
};

View File

@@ -4,32 +4,32 @@
namespace mbgl {
RenderPass SymbolLayer::applyStyleProperties(const float z, const TimePoint& now, const ZoomHistory& zoomHistory) {
applyTransitionedStyleProperty(PropertyKey::IconOpacity, properties.icon.opacity, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::IconColor, properties.icon.color, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::IconHaloColor, properties.icon.halo_color, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::IconHaloWidth, properties.icon.halo_width, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::IconHaloBlur, properties.icon.halo_blur, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::IconTranslate, properties.icon.translate, z, now, zoomHistory);
applyStyleProperty(PropertyKey::IconTranslateAnchor, properties.icon.translate_anchor, z, now, zoomHistory);
RenderPass SymbolLayer::applyStyleProperties(const StyleCalculationParameters& parameters) {
applyTransitionedStyleProperty(PropertyKey::IconOpacity, properties.icon.opacity, parameters);
applyTransitionedStyleProperty(PropertyKey::IconColor, properties.icon.color, parameters);
applyTransitionedStyleProperty(PropertyKey::IconHaloColor, properties.icon.halo_color, parameters);
applyTransitionedStyleProperty(PropertyKey::IconHaloWidth, properties.icon.halo_width, parameters);
applyTransitionedStyleProperty(PropertyKey::IconHaloBlur, properties.icon.halo_blur, parameters);
applyTransitionedStyleProperty(PropertyKey::IconTranslate, properties.icon.translate, parameters);
applyStyleProperty(PropertyKey::IconTranslateAnchor, properties.icon.translate_anchor, parameters);
applyTransitionedStyleProperty(PropertyKey::TextOpacity, properties.text.opacity, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::TextColor, properties.text.color, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::TextHaloColor, properties.text.halo_color, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::TextHaloWidth, properties.text.halo_width, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::TextHaloBlur, properties.text.halo_blur, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::TextTranslate, properties.text.translate, z, now, zoomHistory);
applyStyleProperty(PropertyKey::TextTranslateAnchor, properties.text.translate_anchor, z, now, zoomHistory);
applyTransitionedStyleProperty(PropertyKey::TextOpacity, properties.text.opacity, parameters);
applyTransitionedStyleProperty(PropertyKey::TextColor, properties.text.color, parameters);
applyTransitionedStyleProperty(PropertyKey::TextHaloColor, properties.text.halo_color, parameters);
applyTransitionedStyleProperty(PropertyKey::TextHaloWidth, properties.text.halo_width, parameters);
applyTransitionedStyleProperty(PropertyKey::TextHaloBlur, properties.text.halo_blur, parameters);
applyTransitionedStyleProperty(PropertyKey::TextTranslate, properties.text.translate, parameters);
applyStyleProperty(PropertyKey::TextTranslateAnchor, properties.text.translate_anchor, parameters);
// text-size and icon-size are layout properties but they also need to be evaluated as paint properties:
auto it = bucket->layout.properties.find(PropertyKey::IconSize);
if (it != bucket->layout.properties.end()) {
const PropertyEvaluator<float> evaluator(z, zoomHistory);
const PropertyEvaluator<float> evaluator(parameters);
properties.icon.size = mapbox::util::apply_visitor(evaluator, it->second);
}
it = bucket->layout.properties.find(PropertyKey::TextSize);
if (it != bucket->layout.properties.end()) {
const PropertyEvaluator<float> evaluator(z, zoomHistory);
const PropertyEvaluator<float> evaluator(parameters);
properties.text.size = mapbox::util::apply_visitor(evaluator, it->second);
}

View File

@@ -8,7 +8,7 @@ namespace mbgl {
class SymbolLayer : public StyleLayer {
public:
RenderPass applyStyleProperties(float z, const TimePoint& now, const ZoomHistory&) override;
RenderPass applyStyleProperties(const StyleCalculationParameters&) override;
SymbolPaintProperties properties;
};

View File

@@ -22,6 +22,7 @@ TileWorker::TileWorker(TileID id_,
: layers(std::move(layers_)),
id(id_),
sourceID(sourceID_),
parameters(id.z),
style(style_),
state(state_),
collisionTile(std::move(collision_)) {
@@ -65,10 +66,10 @@ void TileWorker::redoPlacement(float angle, float pitch, bool collisionDebug) {
}
template <typename T>
void applyLayoutProperty(PropertyKey key, const ClassProperties &classProperties, T &target, const float z) {
void applyLayoutProperty(PropertyKey key, const ClassProperties &classProperties, T &target, const StyleCalculationParameters& parameters) {
auto it = classProperties.properties.find(key);
if (it != classProperties.properties.end()) {
const PropertyEvaluator<T> evaluator(z);
const PropertyEvaluator<T> evaluator(parameters);
target = mapbox::util::apply_visitor(evaluator, it->second);
}
}

View File

@@ -7,6 +7,7 @@
#include <mbgl/util/noncopyable.hpp>
#include <mbgl/util/ptr.hpp>
#include <mbgl/style/filter_expression.hpp>
#include <mbgl/style/style_calculation_parameters.hpp>
#include <string>
#include <memory>
@@ -57,6 +58,7 @@ private:
const TileID id;
const std::string sourceID;
const StyleCalculationParameters parameters;
Style& style;
const std::atomic<TileData::State>& state;

View File

@@ -16,16 +16,17 @@ size_t getBiggestStopLessThan(std::vector<std::pair<float, T>> stops, float z) {
}
template <typename T>
T PiecewiseConstantFunction<T>::evaluate(float z, const ZoomHistory &zh) const {
T PiecewiseConstantFunction<T>::evaluate(const StyleCalculationParameters& parameters) const {
T result;
float z = parameters.z;
float fraction = std::fmod(z, 1.0f);
float t = std::min((Clock::now() - zh.lastIntegerZoomTime) / duration, 1.0f);
float t = std::min((Clock::now() - parameters.zoomHistory.lastIntegerZoomTime) / duration, 1.0f);
float fromScale = 1.0f;
float toScale = 1.0f;
size_t from, to;
if (z > zh.lastIntegerZoom) {
if (z > parameters.zoomHistory.lastIntegerZoom) {
result.t = fraction + (1.0f - fraction) * t;
from = getBiggestStopLessThan(values, z - 1.0f);
to = getBiggestStopLessThan(values, z);
@@ -46,7 +47,7 @@ T PiecewiseConstantFunction<T>::evaluate(float z, const ZoomHistory &zh) const {
return result;
}
template Faded<std::string> PiecewiseConstantFunction<Faded<std::string>>::evaluate(float z, const ZoomHistory &zoomHistory) const;
template Faded<std::vector<float>> PiecewiseConstantFunction<Faded<std::vector<float>>>::evaluate(float z, const ZoomHistory &zoomHistory) const;
template Faded<std::string> PiecewiseConstantFunction<Faded<std::string>>::evaluate(const StyleCalculationParameters&) const;
template Faded<std::vector<float>> PiecewiseConstantFunction<Faded<std::vector<float>>>::evaluate(const StyleCalculationParameters&) const;
}

View File

@@ -1,7 +1,7 @@
#ifndef MBGL_STYLE_FADEDFUNCTION_PROPERTIES
#define MBGL_STYLE_FADEDFUNCTION_PROPERTIES
#include <mbgl/style/zoom_history.hpp>
#include <mbgl/style/style_calculation_parameters.hpp>
#include <vector>
@@ -11,7 +11,8 @@ template <typename T>
struct PiecewiseConstantFunction {
inline PiecewiseConstantFunction(const std::vector<std::pair<float, T>> &values_, std::chrono::duration<float> duration_) : values(values_), duration(duration_) {}
inline PiecewiseConstantFunction(T &value, std::chrono::duration<float> duration_) : values({{ 0, value }}), duration(duration_) {}
T evaluate(float z, const ZoomHistory &zoomHistory) const;
T evaluate(const StyleCalculationParameters&) const;
private:
const std::vector<std::pair<float, T>> values;

View File

@@ -4,6 +4,7 @@
#include <mbgl/style/zoom_history.hpp>
#include <mbgl/style/function_properties.hpp>
#include <mbgl/style/piecewisefunction_properties.hpp>
#include <mbgl/style/style_calculation_parameters.hpp>
namespace mbgl {
@@ -14,8 +15,8 @@ class PropertyEvaluator {
public:
typedef T result_type;
PropertyEvaluator(float z_) : z(z_), zoomHistory() {}
PropertyEvaluator(float z_, const ZoomHistory& zoomHistory_) : z(z_), zoomHistory(zoomHistory_) {}
PropertyEvaluator(const StyleCalculationParameters& parameters_)
: parameters(parameters_) {}
template <typename P, typename std::enable_if<std::is_convertible<P, T>::value, int>::type = 0>
T operator()(const P &value) const {
@@ -23,11 +24,11 @@ public:
}
T operator()(const Function<T>& value) const {
return mapbox::util::apply_visitor(FunctionEvaluator<T>(z), value);
return mapbox::util::apply_visitor(FunctionEvaluator<T>(parameters.z), value);
}
T operator()(const PiecewiseConstantFunction<T>& value) const {
return value.evaluate(z, zoomHistory);
return value.evaluate(parameters);
}
template <typename P, typename std::enable_if<!std::is_convertible<P, T>::value, int>::type = 0>
@@ -36,8 +37,7 @@ public:
}
private:
const float z;
ZoomHistory zoomHistory;
StyleCalculationParameters parameters;
};
}

View File

@@ -136,8 +136,10 @@ void Style::recalculate(float z) {
zoomHistory.update(z, data.getAnimationTime());
StyleCalculationParameters parameters(z, data.getAnimationTime(), zoomHistory);
for (const auto& layer : layers) {
layer->updateProperties(z, data.getAnimationTime(), zoomHistory);
layer->updateProperties(parameters);
if (!layer->bucket) {
continue;
}

View File

@@ -0,0 +1,26 @@
#ifndef STYLE_CALCULATION_PARAMETERS
#define STYLE_CALCULATION_PARAMETERS
#include <mbgl/style/zoom_history.hpp>
#include <mbgl/util/chrono.hpp>
namespace mbgl {
class StyleCalculationParameters {
public:
StyleCalculationParameters(float z_)
: z(z_) {}
StyleCalculationParameters(float z_, const TimePoint& now_, const ZoomHistory& zoomHistory_)
: z(z_),
now(now_),
zoomHistory(zoomHistory_) {}
float z;
TimePoint now;
ZoomHistory zoomHistory;
};
}
#endif

View File

@@ -118,14 +118,14 @@ void StyleLayer::applyClassProperties(const ClassID class_id,
}
}
void StyleLayer::updateProperties(float z, const TimePoint& now, ZoomHistory &zoomHistory) {
cleanupAppliedStyleProperties(now);
void StyleLayer::updateProperties(const StyleCalculationParameters& parameters) {
cleanupAppliedStyleProperties(parameters.now);
// Clear the pending transitions flag upon each update.
hasPendingTransitions = false;
// Update the render passes when this layer is visible.
passes = applyStyleProperties(z, now, zoomHistory);
passes = applyStyleProperties(parameters);
}
bool StyleLayer::hasTransitions() const {

View File

@@ -6,6 +6,7 @@
#include <mbgl/style/applied_class_properties.hpp>
#include <mbgl/style/zoom_history.hpp>
#include <mbgl/style/property_evaluator.hpp>
#include <mbgl/style/style_calculation_parameters.hpp>
#include <mbgl/renderer/render_pass.hpp>
@@ -34,7 +35,7 @@ public:
// Updates the StyleProperties information in this layer by evaluating all
// pending transitions and applied classes in order.
void updateProperties(float z, const TimePoint& now, ZoomHistory &zoomHistory);
void updateProperties(const StyleCalculationParameters&);
// Sets the list of classes and creates transitions to the currently applied values.
void setClasses(const std::vector<std::string> &class_names, const TimePoint& now,
@@ -58,14 +59,14 @@ public:
protected:
// TODO: extract
template <typename T>
void applyStyleProperty(PropertyKey key, T& target, const float z, const TimePoint& now, const ZoomHistory& zoomHistory) {
void applyStyleProperty(PropertyKey key, T& target, const StyleCalculationParameters& parameters) {
auto it = appliedStyle.find(key);
if (it != appliedStyle.end()) {
AppliedClassPropertyValues &applied = it->second;
// Iterate through all properties that we need to apply in order.
const PropertyEvaluator<T> evaluator(z, zoomHistory);
const PropertyEvaluator<T> evaluator(parameters);
for (auto& property : applied.propertyValues) {
if (now >= property.begin) {
if (parameters.now >= property.begin) {
// We overwrite the current property with the new value.
target = mapbox::util::apply_visitor(evaluator, property.value);
} else {
@@ -76,19 +77,19 @@ protected:
}
template <typename T>
void applyTransitionedStyleProperty(PropertyKey key, T& target, const float z, const TimePoint& now, const ZoomHistory& zoomHistory) {
void applyTransitionedStyleProperty(PropertyKey key, T& target, const StyleCalculationParameters& parameters) {
auto it = appliedStyle.find(key);
if (it != appliedStyle.end()) {
AppliedClassPropertyValues &applied = it->second;
// Iterate through all properties that we need to apply in order.
const PropertyEvaluator<T> evaluator(z, zoomHistory);
const PropertyEvaluator<T> evaluator(parameters);
for (auto& property : applied.propertyValues) {
if (now >= property.end) {
if (parameters.now >= property.end) {
// We overwrite the current property with the new value.
target = mapbox::util::apply_visitor(evaluator, property.value);
} else if (now >= property.begin) {
} else if (parameters.now >= property.begin) {
// We overwrite the current property partially with the new value.
float progress = std::chrono::duration<float>(now - property.begin) / (property.end - property.begin);
float progress = std::chrono::duration<float>(parameters.now - property.begin) / (property.end - property.begin);
target = util::interpolate(target, mapbox::util::apply_visitor(evaluator, property.value), progress);
hasPendingTransitions = true;
} else {
@@ -105,7 +106,7 @@ private:
// Sets the properties of this object by evaluating all pending transitions and
// aplied classes in order.
virtual RenderPass applyStyleProperties(float z, const TimePoint& now, const ZoomHistory&) = 0;
virtual RenderPass applyStyleProperties(const StyleCalculationParameters&) = 0;
// Removes all expired style transitions.
void cleanupAppliedStyleProperties(const TimePoint& now);