diff options
author | Chris Loer <chris.loer@gmail.com> | 2017-10-31 12:21:41 -0700 |
---|---|---|
committer | Chris Loer <chris.loer@mapbox.com> | 2017-11-01 10:49:07 -0700 |
commit | b677ba3f62e9389a9f0330e9baa657406eb3ea05 (patch) | |
tree | bebb06395f0ea82656b2be796d2a68d4897380c1 | |
parent | 3fe147c6ec2de6a4221a4d24ce8de2e0ea1415b9 (diff) | |
download | qtlocation-mapboxgl-b677ba3f62e9389a9f0330e9baa657406eb3ea05.tar.gz |
Don't do fade animations in MapMode::Still
-rw-r--r-- | src/mbgl/renderer/paint_parameters.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/renderer_impl.cpp | 4 | ||||
-rw-r--r-- | src/mbgl/text/placement.cpp | 11 | ||||
-rw-r--r-- | src/mbgl/text/placement.hpp | 3 |
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 |