diff options
author | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2015-10-13 14:19:44 -0700 |
---|---|---|
committer | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2015-10-14 11:49:18 -0700 |
commit | 9a97333e852fe81fff9c1f84f6ae30bfb7966ff9 (patch) | |
tree | 7ad6e3fc3ba56fc802dda12ef2743731f5e77b53 | |
parent | 071dbcf44cc394a95a15ba172c4ed3ed018c5eca (diff) | |
download | qtlocation-mapboxgl-9a97333e852fe81fff9c1f84f6ae30bfb7966ff9.tar.gz |
[core] Set fade/transition duration to 0 if map mode is still
-rw-r--r-- | src/mbgl/map/map_data.hpp | 20 | ||||
-rw-r--r-- | src/mbgl/style/style_parser.cpp | 8 |
2 files changed, 22 insertions, 6 deletions
diff --git a/src/mbgl/map/map_data.hpp b/src/mbgl/map/map_data.hpp index 5d9e79fecc..09b54c0ae3 100644 --- a/src/mbgl/map/map_data.hpp +++ b/src/mbgl/map/map_data.hpp @@ -24,7 +24,7 @@ public: : mode(mode_) , pixelRatio(pixelRatio_) , animationTime(Duration::zero()) - , defaultFadeDuration(std::chrono::milliseconds(300)) + , defaultFadeDuration(mode_ == MapMode::Continuous ? std::chrono::milliseconds(300) : Duration::zero()) , defaultTransitionDuration(Duration::zero()) , defaultTransitionDelay(Duration::zero()) { assert(pixelRatio > 0); @@ -71,9 +71,13 @@ public: inline TimePoint getAnimationTime() const { // We're casting the TimePoint to and from a Duration because libstdc++ // has a bug that doesn't allow TimePoints to be atomic. - return TimePoint(animationTime); + return mode == MapMode::Continuous ? TimePoint(animationTime) : Clock::now(); } inline void setAnimationTime(const TimePoint& timePoint) { + if (mode == MapMode::Still) { + return; + } + animationTime = timePoint.time_since_epoch(); }; @@ -82,6 +86,10 @@ public: } inline void setDefaultFadeDuration(const Duration& duration) { + if (mode == MapMode::Still) { + return; + } + defaultFadeDuration = duration; } @@ -90,6 +98,10 @@ public: } inline void setDefaultTransitionDuration(const Duration& duration) { + if (mode == MapMode::Still) { + return; + } + defaultTransitionDuration = duration; } @@ -98,6 +110,10 @@ public: } inline void setDefaultTransitionDelay(const Duration& delay) { + if (mode == MapMode::Still) { + return; + } + defaultTransitionDelay = delay; } diff --git a/src/mbgl/style/style_parser.cpp b/src/mbgl/style/style_parser.cpp index 1d66938307..fac5306601 100644 --- a/src/mbgl/style/style_parser.cpp +++ b/src/mbgl/style/style_parser.cpp @@ -520,11 +520,11 @@ template<> StyleParser::Result<PropertyTransition> StyleParser::parseProperty(JS PropertyTransition transition { data.getDefaultTransitionDuration(), data.getDefaultTransitionDelay() }; if (value.IsObject()) { bool parsed = false; - if (value.HasMember("duration") && value["duration"].IsNumber()) { + if (value.HasMember("duration") && value["duration"].IsNumber() && data.mode == MapMode::Continuous) { transition.duration = std::chrono::milliseconds(value["duration"].GetUint()); parsed = true; } - if (value.HasMember("delay") && value["delay"].IsNumber()) { + if (value.HasMember("delay") && value["delay"].IsNumber() && data.mode == MapMode::Continuous) { transition.delay = std::chrono::milliseconds(value["delay"].GetUint()); parsed = true; } @@ -594,7 +594,7 @@ template<> StyleParser::Result<Function<Color>> StyleParser::parseProperty(JSVal template<> StyleParser::Result<PiecewiseConstantFunction<Faded<std::vector<float>>>> StyleParser::parseProperty(JSVal value, const char *property_name, JSVal transition) { Duration duration = data.getDefaultFadeDuration(); - if (transition.HasMember("duration")) { + if (transition.HasMember("duration") && data.mode == MapMode::Continuous) { duration = std::chrono::milliseconds(transition["duration"].GetUint()); } @@ -613,7 +613,7 @@ template<> StyleParser::Result<PiecewiseConstantFunction<Faded<std::vector<float template<> StyleParser::Result<PiecewiseConstantFunction<Faded<std::string>>> StyleParser::parseProperty(JSVal value, const char *property_name, JSVal transition) { Duration duration = data.getDefaultFadeDuration(); - if (transition.HasMember("duration")) { + if (transition.HasMember("duration") && data.mode == MapMode::Continuous) { duration = std::chrono::milliseconds(transition["duration"].GetUint()); } |