summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Loer <chris.loer@gmail.com>2017-10-31 12:21:41 -0700
committerChris Loer <chris.loer@mapbox.com>2017-11-01 10:49:07 -0700
commitb677ba3f62e9389a9f0330e9baa657406eb3ea05 (patch)
treebebb06395f0ea82656b2be796d2a68d4897380c1
parent3fe147c6ec2de6a4221a4d24ce8de2e0ea1415b9 (diff)
downloadqtlocation-mapboxgl-b677ba3f62e9389a9f0330e9baa657406eb3ea05.tar.gz
Don't do fade animations in MapMode::Still
-rw-r--r--src/mbgl/renderer/paint_parameters.cpp2
-rw-r--r--src/mbgl/renderer/renderer_impl.cpp4
-rw-r--r--src/mbgl/text/placement.cpp11
-rw-r--r--src/mbgl/text/placement.hpp3
4 files changed, 14 insertions, 6 deletions
diff --git a/src/mbgl/renderer/paint_parameters.cpp b/src/mbgl/renderer/paint_parameters.cpp
index 25d0be7518..beaa9d34f2 100644
--- a/src/mbgl/renderer/paint_parameters.cpp
+++ b/src/mbgl/renderer/paint_parameters.cpp
@@ -26,7 +26,7 @@ PaintParameters::PaintParameters(gl::Context& context_,
debugOptions(updateParameters.debugOptions),
contextMode(contextMode_),
timePoint(updateParameters.timePoint),
- symbolFadeChange(std::chrono::duration<float>(placementCommitTime - updateParameters.timePoint) / Duration(std::chrono::milliseconds(300))), // TODO don't hardcode
+ symbolFadeChange(updateParameters.mode == MapMode::Still ? 1 : std::chrono::duration<float>(placementCommitTime - updateParameters.timePoint) / Duration(std::chrono::milliseconds(300))), // TODO don't hardcode
pixelRatio(pixelRatio_),
#ifndef NDEBUG
programs((debugOptions & MapDebugOptions::Overdraw) ? staticData_.overdrawPrograms : staticData_.programs)
diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp
index 71f42c3ef6..c8bf0f9739 100644
--- a/src/mbgl/renderer/renderer_impl.cpp
+++ b/src/mbgl/renderer/renderer_impl.cpp
@@ -57,7 +57,7 @@ Renderer::Impl::Impl(RendererBackend& backend_,
, sourceImpls(makeMutable<std::vector<Immutable<style::Source::Impl>>>())
, layerImpls(makeMutable<std::vector<Immutable<style::Layer::Impl>>>())
, renderLight(makeMutable<Light::Impl>())
- , placement(std::make_unique<Placement>(TransformState{})) {
+ , placement(std::make_unique<Placement>(TransformState{}, MapMode::Still)) {
glyphManager->setObserver(this);
}
@@ -364,7 +364,7 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
order.emplace_back(RenderItem { *layer, source });
}
- auto newPlacement = std::make_unique<Placement>(parameters.state);
+ auto newPlacement = std::make_unique<Placement>(parameters.state, parameters.mapMode);
for (auto it = order.rbegin(); it != order.rend(); ++it) {
if (it->layer.is<RenderSymbolLayer>()) {
newPlacement->placeLayer(*it->layer.as<RenderSymbolLayer>(), parameters.projMatrix, parameters.debugOptions & MapDebugOptions::Collision);
diff --git a/src/mbgl/text/placement.cpp b/src/mbgl/text/placement.cpp
index e3110d5401..8fdc26f49a 100644
--- a/src/mbgl/text/placement.cpp
+++ b/src/mbgl/text/placement.cpp
@@ -32,7 +32,11 @@ bool JointOpacityState::isHidden() const {
uint32_t Placement::maxCrossTileID = 0;
-Placement::Placement(const TransformState& state_) : collisionIndex(state_), state(state_) {}
+Placement::Placement(const TransformState& state_, MapMode mapMode_)
+ : collisionIndex(state_)
+ , state(state_)
+ , mapMode(mapMode_)
+{}
void Placement::placeLayer(RenderSymbolLayer& symbolLayer, const mat4& projMatrix, bool showCollisionBoxes) {
for (RenderTile& renderTile : symbolLayer.renderTiles) {
@@ -161,7 +165,7 @@ bool Placement::commit(const Placement& prevPlacement, TimePoint now) {
bool placementChanged = false;
- float increment = std::chrono::duration<float>(commitTime - prevPlacement.commitTime) / Duration(std::chrono::milliseconds(300));
+ float increment = mapMode == MapMode::Still ? 1.0 : std::chrono::duration<float>(commitTime - prevPlacement.commitTime) / Duration(std::chrono::milliseconds(300));
if (increment) {}
// add the opacities from the current placement, and copy their current values from the previous placement
@@ -279,6 +283,9 @@ JointOpacityState Placement::getOpacity(uint32_t crossTileSymbolID) const {
}
float Placement::symbolFadeChange(TimePoint now) const {
+ if (mapMode == MapMode::Still) {
+ return 1.0;
+ }
return std::chrono::duration<float>(now - commitTime) / Duration(std::chrono::milliseconds(300));
}
diff --git a/src/mbgl/text/placement.hpp b/src/mbgl/text/placement.hpp
index 7188d600d1..dee7c13dc7 100644
--- a/src/mbgl/text/placement.hpp
+++ b/src/mbgl/text/placement.hpp
@@ -38,7 +38,7 @@ namespace mbgl {
class Placement {
public:
- Placement(const TransformState&);
+ Placement(const TransformState&, MapMode mapMode);
void placeLayer(RenderSymbolLayer&, const mat4&, bool showCollisionBoxes);
bool commit(const Placement& prevPlacement, TimePoint);
void updateLayerOpacities(RenderSymbolLayer&);
@@ -63,6 +63,7 @@ namespace mbgl {
void updateBucketOpacities(SymbolBucket&);
TransformState state;
+ MapMode mapMode;
TimePoint commitTime;
static uint32_t maxCrossTileID; // TODO remove