diff options
Diffstat (limited to 'src/mbgl/layer/background_layer.cpp')
-rw-r--r-- | src/mbgl/layer/background_layer.cpp | 31 |
1 files changed, 14 insertions, 17 deletions
diff --git a/src/mbgl/layer/background_layer.cpp b/src/mbgl/layer/background_layer.cpp index 0a86e2db14..51000e53ba 100644 --- a/src/mbgl/layer/background_layer.cpp +++ b/src/mbgl/layer/background_layer.cpp @@ -1,5 +1,4 @@ #include <mbgl/layer/background_layer.hpp> -#include <mbgl/style/property_parsing.hpp> #include <mbgl/renderer/bucket.hpp> namespace mbgl { @@ -7,34 +6,32 @@ namespace mbgl { std::unique_ptr<StyleLayer> BackgroundLayer::clone() const { std::unique_ptr<BackgroundLayer> result = std::make_unique<BackgroundLayer>(); result->copy(*this); - result->paints.paints = paints.paints; + result->paint = paint; return std::move(result); } void BackgroundLayer::parsePaints(const JSVal& layer) { - paints.parseEach(layer, [&] (ClassProperties& paint, const JSVal& value) { - parseProperty<Function<float>>("background-opacity", PropertyKey::BackgroundOpacity, paint, value); - parseProperty<Function<Color>>("background-color", PropertyKey::BackgroundColor, paint, value); - parseProperty<Function<Faded<std::string>>>("background-pattern", PropertyKey::BackgroundImage, paint, value); - }); + paint.opacity.parse("background-opacity", layer); + paint.color.parse("background-color", layer); + paint.pattern.parse("background-pattern", layer); } void BackgroundLayer::cascade(const StyleCascadeParameters& parameters) { - paints.cascade(parameters); + paint.opacity.cascade(parameters); + paint.color.cascade(parameters); + paint.pattern.cascade(parameters); } -bool BackgroundLayer::hasTransitions() const { - return paints.hasTransitions(); -} +bool BackgroundLayer::recalculate(const StyleCalculationParameters& parameters) { + bool hasTransitions = false; -void BackgroundLayer::recalculate(const StyleCalculationParameters& parameters) { - paints.removeExpiredTransitions(parameters.now); + hasTransitions |= paint.opacity.calculate(parameters); + hasTransitions |= paint.color.calculate(parameters); + hasTransitions |= paint.pattern.calculate(parameters); - paints.calculateTransitioned(PropertyKey::BackgroundOpacity, properties.opacity, parameters); - paints.calculateTransitioned(PropertyKey::BackgroundColor, properties.color, parameters); - paints.calculate(PropertyKey::BackgroundImage, properties.image, parameters); + passes = paint.opacity > 0 ? RenderPass::Translucent : RenderPass::None; - passes = properties.isVisible() ? RenderPass::Translucent : RenderPass::None; + return hasTransitions; } std::unique_ptr<Bucket> BackgroundLayer::createBucket(StyleBucketParameters&) const { |