Co-authored-by: Bart Louwers <bart@emeel.net>
This commit is contained in:
@@ -50,6 +50,7 @@ RenderBackgroundLayer::~RenderBackgroundLayer() = default;
|
||||
|
||||
void RenderBackgroundLayer::transition(const TransitionParameters& parameters) {
|
||||
unevaluated = impl_cast(baseImpl).paint.transitioned(parameters, std::move(unevaluated));
|
||||
styleDependencies = unevaluated.getDependencies();
|
||||
}
|
||||
|
||||
void RenderBackgroundLayer::evaluate(const PropertyEvaluationParameters& parameters) {
|
||||
|
||||
@@ -68,6 +68,7 @@ RenderCircleLayer::RenderCircleLayer(Immutable<style::CircleLayer::Impl> _impl)
|
||||
|
||||
void RenderCircleLayer::transition(const TransitionParameters& parameters) {
|
||||
unevaluated = impl_cast(baseImpl).paint.transitioned(parameters, std::move(unevaluated));
|
||||
styleDependencies = unevaluated.getDependencies();
|
||||
}
|
||||
|
||||
void RenderCircleLayer::evaluate(const PropertyEvaluationParameters& parameters) {
|
||||
|
||||
@@ -54,6 +54,7 @@ RenderFillExtrusionLayer::~RenderFillExtrusionLayer() = default;
|
||||
|
||||
void RenderFillExtrusionLayer::transition(const TransitionParameters& parameters) {
|
||||
unevaluated = impl_cast(baseImpl).paint.transitioned(parameters, std::move(unevaluated));
|
||||
styleDependencies = unevaluated.getDependencies();
|
||||
}
|
||||
|
||||
void RenderFillExtrusionLayer::evaluate(const PropertyEvaluationParameters& parameters) {
|
||||
|
||||
@@ -66,6 +66,7 @@ RenderFillLayer::~RenderFillLayer() = default;
|
||||
|
||||
void RenderFillLayer::transition(const TransitionParameters& parameters) {
|
||||
unevaluated = impl_cast(baseImpl).paint.transitioned(parameters, std::move(unevaluated));
|
||||
styleDependencies = unevaluated.getDependencies();
|
||||
}
|
||||
|
||||
void RenderFillLayer::evaluate(const PropertyEvaluationParameters& parameters) {
|
||||
|
||||
@@ -50,6 +50,7 @@ RenderHeatmapLayer::~RenderHeatmapLayer() = default;
|
||||
|
||||
void RenderHeatmapLayer::transition(const TransitionParameters& parameters) {
|
||||
unevaluated = impl_cast(baseImpl).paint.transitioned(parameters, std::move(unevaluated));
|
||||
styleDependencies = unevaluated.getDependencies();
|
||||
updateColorRamp();
|
||||
}
|
||||
|
||||
|
||||
@@ -65,6 +65,7 @@ std::array<float, 2> RenderHillshadeLayer::getLight(const PaintParameters& param
|
||||
|
||||
void RenderHillshadeLayer::transition(const TransitionParameters& parameters) {
|
||||
unevaluated = impl_cast(baseImpl).paint.transitioned(parameters, std::move(unevaluated));
|
||||
styleDependencies = unevaluated.getDependencies();
|
||||
}
|
||||
|
||||
#if MLN_DRAWABLE_RENDERER
|
||||
|
||||
@@ -63,6 +63,7 @@ RenderLineLayer::~RenderLineLayer() = default;
|
||||
|
||||
void RenderLineLayer::transition(const TransitionParameters& parameters) {
|
||||
unevaluated = impl_cast(baseImpl).paint.transitioned(parameters, std::move(unevaluated));
|
||||
styleDependencies = unevaluated.getDependencies();
|
||||
updateColorRamp();
|
||||
|
||||
#if MLN_RENDER_BACKEND_METAL
|
||||
|
||||
@@ -944,6 +944,7 @@ RenderLocationIndicatorLayer::~RenderLocationIndicatorLayer() {
|
||||
|
||||
void RenderLocationIndicatorLayer::transition(const TransitionParameters& parameters) {
|
||||
unevaluated = impl(baseImpl).paint.transitioned(parameters, std::move(unevaluated));
|
||||
styleDependencies = unevaluated.getDependencies();
|
||||
}
|
||||
|
||||
void RenderLocationIndicatorLayer::evaluate(const PropertyEvaluationParameters& parameters) {
|
||||
|
||||
@@ -47,6 +47,7 @@ RenderRasterLayer::~RenderRasterLayer() = default;
|
||||
|
||||
void RenderRasterLayer::transition(const TransitionParameters& parameters) {
|
||||
unevaluated = impl_cast(baseImpl).paint.transitioned(parameters, std::move(unevaluated));
|
||||
styleDependencies = unevaluated.getDependencies();
|
||||
}
|
||||
|
||||
void RenderRasterLayer::evaluate(const PropertyEvaluationParameters& parameters) {
|
||||
|
||||
@@ -364,6 +364,7 @@ void RenderSymbolLayer::transition(const TransitionParameters& parameters) {
|
||||
unevaluated = impl_cast(baseImpl).paint.transitioned(parameters, std::move(unevaluated));
|
||||
hasFormatSectionOverrides = SymbolLayerPaintPropertyOverrides::hasOverrides(
|
||||
impl_cast(baseImpl).layout.get<TextField>());
|
||||
styleDependencies = unevaluated.getDependencies();
|
||||
}
|
||||
|
||||
void RenderSymbolLayer::evaluate(const PropertyEvaluationParameters& parameters) {
|
||||
|
||||
BIN
test/fixtures/map/style_update_zoom_dependency/after_update_green/expected.png
vendored
Normal file
BIN
test/fixtures/map/style_update_zoom_dependency/after_update_green/expected.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 913 B |
BIN
test/fixtures/map/style_update_zoom_dependency/initial_red/expected.png
vendored
Normal file
BIN
test/fixtures/map/style_update_zoom_dependency/initial_red/expected.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 853 B |
13
test/fixtures/map/style_update_zoom_dependency/style.json
vendored
Normal file
13
test/fixtures/map/style_update_zoom_dependency/style.json
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"version": 8,
|
||||
"sources": {},
|
||||
"layers": [
|
||||
{
|
||||
"id": "background",
|
||||
"type": "background",
|
||||
"paint": {
|
||||
"background-color": "#ff0000"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -19,8 +19,10 @@
|
||||
#include <mbgl/storage/network_status.hpp>
|
||||
#include <mbgl/storage/online_file_source.hpp>
|
||||
#include <mbgl/storage/resource_options.hpp>
|
||||
#include <mbgl/style/image.hpp>
|
||||
#include <mbgl/style/expression/dsl.hpp>
|
||||
#include <mbgl/style/image_impl.hpp>
|
||||
#include <mbgl/style/image.hpp>
|
||||
#include <mbgl/style/layers/background_layer.hpp>
|
||||
#include <mbgl/style/layers/background_layer.hpp>
|
||||
#include <mbgl/style/layers/fill_layer.hpp>
|
||||
#include <mbgl/style/layers/raster_layer.hpp>
|
||||
@@ -29,8 +31,8 @@
|
||||
#include <mbgl/style/sources/geojson_source.hpp>
|
||||
#include <mbgl/style/sources/image_source.hpp>
|
||||
#include <mbgl/style/sources/vector_source.hpp>
|
||||
#include <mbgl/style/style.hpp>
|
||||
#include <mbgl/style/style_impl.hpp>
|
||||
#include <mbgl/style/style.hpp>
|
||||
#include <mbgl/util/async_task.hpp>
|
||||
#include <mbgl/util/client_options.hpp>
|
||||
#include <mbgl/util/color.hpp>
|
||||
@@ -1866,3 +1868,31 @@ TEST(Map, ObserveTileLifecycle) {
|
||||
EXPECT_FALSE(parsing);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(BackgroundLayer, StyleUpdateZoomDependency) {
|
||||
using namespace mbgl::style::expression::dsl;
|
||||
|
||||
MapTest<> test;
|
||||
test.map.getStyle().loadJSON(util::read_file("test/fixtures/map/style_update_zoom_dependency/style.json"));
|
||||
test.map.jumpTo(CameraOptions().withZoom(0.0));
|
||||
|
||||
// Initial render: background should be red at zoom 0
|
||||
test::checkImage("test/fixtures/map/style_update_zoom_dependency/initial_red",
|
||||
test.frontend.render(test.map).image,
|
||||
0.0006,
|
||||
0.1);
|
||||
|
||||
// Update background layer to use zoom-dependent color
|
||||
auto layer = static_cast<style::BackgroundLayer*>(test.map.getStyle().getLayer("background"));
|
||||
layer->setBackgroundColor(PropertyExpression<Color>(
|
||||
interpolate(linear(), zoom(), 0.0, literal(Color::red()), 14.0, literal(Color::green()))));
|
||||
|
||||
test.frontend.render(test.map);
|
||||
|
||||
// Change zoom to 14 and re-render
|
||||
test.map.jumpTo(CameraOptions().withZoom(14.0));
|
||||
test::checkImage("test/fixtures/map/style_update_zoom_dependency/after_update_green",
|
||||
test.frontend.render(test.map).image,
|
||||
0.0006,
|
||||
0.1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user