blob: 7c0d4e0fe2fad2e0df7af980ebd7e34cd4572883 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
#pragma once
#include <mbgl/map/zoom_history.hpp>
#include <mbgl/util/chrono.hpp>
namespace mbgl {
class CrossfadeParameters {
public:
float fromScale;
float toScale;
float t;
};
class PropertyEvaluationParameters {
public:
explicit PropertyEvaluationParameters(float z_)
: z(z_),
now(Clock::time_point::max()),
zoomHistory(),
defaultFadeDuration(0) {}
PropertyEvaluationParameters(ZoomHistory zoomHistory_,
TimePoint now_,
Duration defaultFadeDuration_)
: z(zoomHistory_.lastZoom),
now(std::move(now_)),
zoomHistory(std::move(zoomHistory_)),
defaultFadeDuration(std::move(defaultFadeDuration_)) {}
CrossfadeParameters getCrossfadeParameters() const {
const float fraction = z - std::floor(z);
const std::chrono::duration<float> d = defaultFadeDuration;
const float t = d != std::chrono::duration<float>::zero()
? std::min((now - zoomHistory.lastIntegerZoomTime) / d, 1.0f)
: 1.0f;
return z > zoomHistory.lastIntegerZoom
? CrossfadeParameters { 2.0f, 1.0f, fraction + (1.0f - fraction) * t }
: CrossfadeParameters { 0.5f, 1.0f, 1 - (1 - t) * fraction };
}
float z;
TimePoint now;
ZoomHistory zoomHistory;
Duration defaultFadeDuration;
};
} // namespace mbgl
|