blob: e9b475f73b4b6d2a7996cd5da5202f55dbe33204 (
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
|
#ifndef LLMR_RENDERER_PAINTER
#define LLMR_RENDERER_PAINTER
#include "shader-fill.hpp"
#include "shader-plain.hpp"
#include "shader-outline.hpp"
#include "shader-line.hpp"
#include "../map/tile.hpp"
namespace llmr {
class Settings;
class Transform;
class Style;
class LayerDescription;
class FillBucket;
class LineBucket;
class Painter {
public:
Painter(Transform& transform, Settings& settings, Style& style);
// Make noncopyable
Painter(const Painter&) = delete;
Painter(const Painter&&) = delete;
Painter &operator=(const Painter&) = delete;
Painter &operator=(const Painter&&) = delete;
void setup();
void teardown();
void clear();
void render(const std::shared_ptr<Tile>& tile);
void renderLayers(const std::shared_ptr<Tile>& tile, const std::vector<LayerDescription>& layers);
void renderDebug(const std::shared_ptr<Tile>& tile);
void renderMatte();
void renderBackground();
void renderFill(FillBucket& bucket, const std::string& layer_name);
void renderLine(LineBucket& bucket, const std::string& layer_name);
void drawClippingMask();
bool switchShader(std::shared_ptr<Shader> shader);
private:
void setupShaders();
void changeMatrix(const std::shared_ptr<Tile>& tile);
public:
private:
Transform& transform;
Settings& settings;
Style& style;
float nativeMatrix[16];
float matrix[16];
float exMatrix[16];
std::shared_ptr<Shader> currentShader;
std::shared_ptr<FillShader> fillShader;
std::shared_ptr<PlainShader> plainShader;
std::shared_ptr<OutlineShader> outlineShader;
std::shared_ptr<LineShader> lineShader;
uint32_t tile_stencil_buffer;
uint32_t tile_border_buffer;
uint32_t matte_buffer;
};
}
#endif
|