blob: 4266ddec6d35e9130a9309f0104452b427c15ee4 (
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
|
#pragma once
#include <mbgl/renderer/paint_parameters.hpp>
#include <cassert>
#include <memory>
#include <string>
#include <vector>
namespace mbgl {
class PaintParameters;
class PatternAtlas;
namespace gfx {
class UploadPass;
} // namespace gfx
class RenderItem {
public:
virtual ~RenderItem() = default;
virtual void upload(gfx::UploadPass&) const = 0;
virtual void render(PaintParameters&) const = 0;
virtual bool hasRenderPass(RenderPass) const = 0;
virtual const std::string& getName() const = 0;
};
using RenderItems = std::vector<std::reference_wrapper<const RenderItem>>;
class RenderTreeParameters {
public:
explicit RenderTreeParameters(
const TransformState& state_,
MapMode mapMode_,
MapDebugOptions debugOptions_,
TimePoint timePoint_,
const EvaluatedLight& light_)
: transformParams(state_),
mapMode(mapMode_),
debugOptions(debugOptions_),
timePoint(timePoint_),
light(light_) {
}
TransformParameters transformParams;
MapMode mapMode;
MapDebugOptions debugOptions;
TimePoint timePoint;
EvaluatedLight light;
bool has3D = false;
Color backgroundColor;
float symbolFadeChange = 0.0f;
bool needsRepaint = false;
bool loaded = false;
};
class RenderTree {
public:
virtual ~RenderTree() = default;
// Render items
virtual RenderItems getLayerRenderItems() const = 0;
virtual RenderItems getSourceRenderItems() const = 0;
// Resources
virtual LineAtlas& getLineAtlas() const = 0;
virtual PatternAtlas& getPatternAtlas() const = 0;
// Parameters
const RenderTreeParameters& getParameters() const {
return *parameters;
}
protected:
RenderTree(std::unique_ptr<RenderTreeParameters> parameters_)
: parameters(std::move(parameters_)) {
assert(parameters);
}
std::unique_ptr<RenderTreeParameters> parameters;
};
} // namespace mbgl
|