summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Agafonkin <agafonkin@gmail.com>2018-01-24 17:53:00 +0200
committerVladimir Agafonkin <agafonkin@gmail.com>2018-01-24 17:53:00 +0200
commit739a02886c0f5e4fdcf885ccf8925a5888f86271 (patch)
treea42d11e6d4b8cbd210c9888ddd0b5d68ee4d0402
parent2b844a7625fade90f5d23b907f5c36917362c4c8 (diff)
downloadqtlocation-mapboxgl-upstream/heatmap-color-ramp.tar.gz
working color ramp updatesupstream/heatmap-color-ramp
-rw-r--r--include/mbgl/style/heatmap_color_property_value.hpp2
-rw-r--r--src/mbgl/renderer/layers/render_heatmap_layer.cpp9
-rw-r--r--src/mbgl/renderer/renderer_impl.cpp16
3 files changed, 18 insertions, 9 deletions
diff --git a/include/mbgl/style/heatmap_color_property_value.hpp b/include/mbgl/style/heatmap_color_property_value.hpp
index 796331206e..7d97b5e137 100644
--- a/include/mbgl/style/heatmap_color_property_value.hpp
+++ b/include/mbgl/style/heatmap_color_property_value.hpp
@@ -27,7 +27,7 @@ public:
HeatmapColorPropertyValue() : value(nullptr) {}
HeatmapColorPropertyValue(std::shared_ptr<expression::Expression> value_) : value(std::move(value_)) {}
- bool isUndefined() const { return value.get() != nullptr; }
+ bool isUndefined() const { return value.get() == nullptr; }
// noop, needed for batch evaluation of paint property values to compile
template <typename Evaluator>
diff --git a/src/mbgl/renderer/layers/render_heatmap_layer.cpp b/src/mbgl/renderer/layers/render_heatmap_layer.cpp
index efcfd05f38..b843566f28 100644
--- a/src/mbgl/renderer/layers/render_heatmap_layer.cpp
+++ b/src/mbgl/renderer/layers/render_heatmap_layer.cpp
@@ -5,6 +5,7 @@
#include <mbgl/programs/programs.hpp>
#include <mbgl/programs/heatmap_program.hpp>
#include <mbgl/tile/tile.hpp>
+#include <mbgl/style/layers/heatmap_layer.hpp>
#include <mbgl/style/layers/heatmap_layer_impl.hpp>
#include <mbgl/geometry/feature_index.hpp>
#include <mbgl/util/math.hpp>
@@ -17,8 +18,6 @@ using namespace style;
RenderHeatmapLayer::RenderHeatmapLayer(Immutable<style::HeatmapLayer::Impl> _impl)
: RenderLayer(style::LayerType::Heatmap, _impl),
unevaluated(impl().paint.untransitioned()) {
-
- updateColorRamp();
}
const style::HeatmapLayer::Impl& RenderHeatmapLayer::impl() const {
@@ -88,7 +87,11 @@ void RenderHeatmapLayer::render(PaintParameters& parameters, RenderSource*) {
}
void RenderHeatmapLayer::updateColorRamp() {
- const auto colorValue = unevaluated.get<HeatmapColor>().getValue();
+ auto colorValue = unevaluated.get<HeatmapColor>().getValue();
+ if (colorValue.isUndefined()) {
+ colorValue = HeatmapLayer::getDefaultHeatmapColor();
+ }
+
const auto size = colorRamp.size();
for (uint32_t i = 0; i < size; i += 4) {
diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp
index aa138df662..65fa397714 100644
--- a/src/mbgl/renderer/renderer_impl.cpp
+++ b/src/mbgl/renderer/renderer_impl.cpp
@@ -14,6 +14,7 @@
#include <mbgl/renderer/layers/render_background_layer.hpp>
#include <mbgl/renderer/layers/render_custom_layer.hpp>
#include <mbgl/renderer/layers/render_fill_extrusion_layer.hpp>
+#include <mbgl/renderer/layers/render_heatmap_layer.hpp>
#include <mbgl/renderer/style_diff.hpp>
#include <mbgl/renderer/query.hpp>
#include <mbgl/renderer/backend_scope.hpp>
@@ -90,9 +91,9 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
// Reset zoom history state.
zoomHistory.first = true;
}
-
+
assert(BackendScope::exists());
-
+
updateParameters.annotationManager.updateData();
const bool zoomChanged = zoomHistory.update(updateParameters.transformState.getZoom(), updateParameters.timePoint);
@@ -183,8 +184,13 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
if (layerAdded || layerChanged) {
layer.transition(transitionParameters);
+
+ if (layer.is<RenderHeatmapLayer>()) {
+ layer.as<RenderHeatmapLayer>()->updateColorRamp();
+ }
}
+
if (layerAdded || layerChanged || zoomChanged || layer.hasTransition()) {
layer.evaluate(evaluationParameters);
}
@@ -393,7 +399,7 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
}
placement->setRecent(parameters.timePoint);
-
+
updateFadingTiles();
} else {
placement->setStale();
@@ -416,7 +422,7 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
parameters.imageManager.upload(parameters.context, 0);
parameters.lineAtlas.upload(parameters.context, 0);
-
+
// Update all clipping IDs + upload buckets.
for (const auto& entry : renderSources) {
if (entry.second->isEnabled()) {
@@ -760,7 +766,7 @@ bool Renderer::Impl::hasTransitions(TimePoint timePoint) const {
if (placement->hasTransitions(timePoint)) {
return true;
}
-
+
if (fadingTiles) {
return true;
}