summaryrefslogtreecommitdiff
path: root/src/mbgl/style/layers/location_indicator_layer_properties.hpp
blob: 065cbe064ad5001b1a315a5d6baf9f7f70f0f129 (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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
// clang-format off

// This file is generated. Edit scripts/generate-style-code.js, then run `make style-code`.

#pragma once

#include <mbgl/style/types.hpp>
#include <mbgl/style/layer_properties.hpp>
#include <mbgl/style/layers/location_indicator_layer.hpp>
#include <mbgl/style/layout_property.hpp>
#include <mbgl/style/paint_property.hpp>
#include <mbgl/style/properties.hpp>
#include <mbgl/programs/attributes.hpp>
#include <mbgl/programs/uniforms.hpp>

namespace mbgl {
namespace style {

struct BearingImage : LayoutProperty<expression::Image> {
    static constexpr const char *name() { return "bearing-image"; }
    static expression::Image defaultValue() { return {}; }
};

struct ShadowImage : LayoutProperty<expression::Image> {
    static constexpr const char *name() { return "shadow-image"; }
    static expression::Image defaultValue() { return {}; }
};

struct TopImage : LayoutProperty<expression::Image> {
    static constexpr const char *name() { return "top-image"; }
    static expression::Image defaultValue() { return {}; }
};

struct AccuracyRadius : PaintProperty<float> {
    static float defaultValue() { return 0; }
};

struct AccuracyRadiusBorderColor : PaintProperty<Color> {
    static Color defaultValue() { return Color::white(); }
};

struct AccuracyRadiusColor : PaintProperty<Color> {
    static Color defaultValue() { return Color::white(); }
};

struct Bearing : PaintProperty<Rotation> {
    static Rotation defaultValue() { return 0; }
};

struct BearingImageSize : PaintProperty<float> {
    static float defaultValue() { return 1; }
};

struct ImageTiltDisplacement : PaintProperty<float> {
    static float defaultValue() { return 0; }
};

struct Location : PaintProperty<std::array<double, 3>> {
    static std::array<double, 3> defaultValue() { return {{0, 0, 0}}; }
};

struct PerspectiveCompensation : PaintProperty<float> {
    static float defaultValue() { return 0.85; }
};

struct ShadowImageSize : PaintProperty<float> {
    static float defaultValue() { return 1; }
};

struct TopImageSize : PaintProperty<float> {
    static float defaultValue() { return 1; }
};

class LocationIndicatorLayoutProperties : public Properties<
    BearingImage,
    ShadowImage,
    TopImage
> {};

class LocationIndicatorPaintProperties : public Properties<
    AccuracyRadius,
    AccuracyRadiusBorderColor,
    AccuracyRadiusColor,
    Bearing,
    BearingImageSize,
    ImageTiltDisplacement,
    Location,
    PerspectiveCompensation,
    ShadowImageSize,
    TopImageSize
> {};

class LocationIndicatorLayerProperties final : public LayerProperties {
public:
    explicit LocationIndicatorLayerProperties(Immutable<LocationIndicatorLayer::Impl>);
    LocationIndicatorLayerProperties(
        Immutable<LocationIndicatorLayer::Impl>,
        LocationIndicatorPaintProperties::PossiblyEvaluated);
    ~LocationIndicatorLayerProperties() override;

    unsigned long constantsMask() const override;

    const LocationIndicatorLayer::Impl& layerImpl() const;
    // Data members.
    LocationIndicatorPaintProperties::PossiblyEvaluated evaluated;
};

} // namespace style
} // namespace mbgl

// clang-format on