diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2018-06-27 16:57:23 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2018-06-29 15:38:11 -0700 |
commit | 542a4b4501794653b55fd1ffc60cb01348d8fc88 (patch) | |
tree | 9e451d4117427044d4155396992faf0495a544f7 /platform | |
parent | 16a3f318a13448a46a4f59b0e8df6a7f0b73bc17 (diff) | |
download | qtlocation-mapboxgl-542a4b4501794653b55fd1ffc60cb01348d8fc88.tar.gz |
[core] Replace use of *Stops with expressions DSL
Diffstat (limited to 'platform')
-rw-r--r-- | platform/glfw/glfw_view.cpp | 41 |
1 files changed, 14 insertions, 27 deletions
diff --git a/platform/glfw/glfw_view.cpp b/platform/glfw/glfw_view.cpp index fcb470e114..a08dc7c768 100644 --- a/platform/glfw/glfw_view.cpp +++ b/platform/glfw/glfw_view.cpp @@ -7,8 +7,7 @@ #include <mbgl/style/image.hpp> #include <mbgl/style/transition_options.hpp> #include <mbgl/style/layers/fill_extrusion_layer.hpp> -#include <mbgl/style/expression/compound_expression.hpp> -#include <mbgl/style/expression/literal.hpp> +#include <mbgl/style/expression/dsl.hpp> #include <mbgl/util/logging.hpp> #include <mbgl/util/platform.hpp> #include <mbgl/util/string.hpp> @@ -622,8 +621,8 @@ void GLFWView::onDidFinishLoadingStyle() { void GLFWView::toggle3DExtrusions(bool visible) { using namespace mbgl::style; - using namespace mbgl::style::expression; - + using namespace mbgl::style::expression::dsl; + show3DExtrusions = visible; // Satellite-only style does not contain building extrusions data. @@ -632,34 +631,22 @@ void GLFWView::toggle3DExtrusions(bool visible) { } if (auto layer = map->getStyle().getLayer("3d-buildings")) { - layer->setVisibility(mbgl::style::VisibilityType(!show3DExtrusions)); + layer->setVisibility(VisibilityType(!show3DExtrusions)); return; } - auto extrusionLayer = std::make_unique<mbgl::style::FillExtrusionLayer>("3d-buildings", "composite"); + auto extrusionLayer = std::make_unique<FillExtrusionLayer>("3d-buildings", "composite"); extrusionLayer->setSourceLayer("building"); extrusionLayer->setMinZoom(15.0f); - - ParsingContext parsingContext; - extrusionLayer->setFilter(Filter(createCompoundExpression("filter-==", createLiteral("extrude"), createLiteral("true"), parsingContext))); - - auto colorFn = mbgl::style::SourceFunction<mbgl::Color> { "height", - mbgl::style::ExponentialStops<mbgl::Color> { - std::map<float, mbgl::Color> { - { 0.f, *mbgl::Color::parse("#160e23") }, - { 50.f, *mbgl::Color::parse("#00615f") }, - { 100.f, *mbgl::Color::parse("#55e9ff") } - } - } - }; - extrusionLayer->setFillExtrusionColor({ colorFn }); - extrusionLayer->setFillExtrusionOpacity({ 0.6f }); - - auto heightSourceFn = mbgl::style::SourceFunction<float> { "height", mbgl::style::IdentityStops<float>() }; - extrusionLayer->setFillExtrusionHeight({ heightSourceFn }); - - auto baseSourceFn = mbgl::style::SourceFunction<float> { "min_height", mbgl::style::IdentityStops<float>() }; - extrusionLayer->setFillExtrusionBase({ baseSourceFn }); + extrusionLayer->setFilter(Filter(eq(get("extrude"), literal("true")))); + extrusionLayer->setFillExtrusionColor(SourceFunction<mbgl::Color>( + interpolate(linear(), get("height"), + 0.f, toColor("#160e23"), + 50.f, toColor("#00615f"), + 100.f, toColor("#55e9ff")))); + extrusionLayer->setFillExtrusionOpacity(0.6f); + extrusionLayer->setFillExtrusionHeight(SourceFunction<float>(get("height"))); + extrusionLayer->setFillExtrusionBase(SourceFunction<float>(get("min_height"))); map->getStyle().addLayer(std::move(extrusionLayer)); } |