summaryrefslogtreecommitdiff
path: root/include/mbgl/map/mode.hpp
blob: d94cdc0eb5fc0946c6418d43ee7d21f313465e0e (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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#ifndef MBGL_MAP_MODE
#define MBGL_MAP_MODE

#include <cstdint>

namespace mbgl {

using EnumType = uint32_t;

enum class MapMode : EnumType {
    Continuous, // continually updating map
    Still, // a once-off still image
};

// We can avoid redundant GL calls when it is known that the GL context is not
// being shared. In a shared GL context case, we need to make sure that the
// correct GL configurations are in use - they might have changed between render
// calls.
enum class GLContextMode : EnumType {
    Unique,
    Shared,
};

// We can choose to constrain the map both horizontally or vertically, or only
// vertically e.g. while panning.
enum class ConstrainMode : EnumType {
    None,
    HeightOnly,
    WidthAndHeight,
};

// Satisfies embedding platforms that requires the viewport coordinate systems
// to be set according to its standards.
enum class ViewportMode : EnumType {
    Default,
    FlippedY,
};

enum class MapDebugOptions : EnumType {
    NoDebug     = 0,
    TileBorders = 1 << 1,
    ParseStatus = 1 << 2,
    Timestamps  = 1 << 3,
    Collision   = 1 << 4,
    Wireframe   = 1 << 5,
// FIXME: https://github.com/mapbox/mapbox-gl-native/issues/5117
#ifndef GL_ES_VERSION_2_0
    StencilClip = 1 << 6,
#endif // GL_ES_VERSION_2_0
};

inline MapDebugOptions operator| (const MapDebugOptions& lhs, const MapDebugOptions& rhs) {
    return MapDebugOptions(static_cast<EnumType>(lhs) | static_cast<EnumType>(rhs));
}

inline MapDebugOptions& operator|=(MapDebugOptions& lhs, const MapDebugOptions& rhs) {
    lhs = lhs | rhs;
    return lhs;
}

inline bool operator& (const MapDebugOptions& lhs, const MapDebugOptions& rhs) {
    return static_cast<EnumType>(lhs) & static_cast<EnumType>(rhs);
}

} // namespace mbgl

#endif // MBGL_MAP_MODE