1 #pragma once
2 
3 #include <mbgl/text/glyph_atlas.hpp>
4 #include <mbgl/style/types.hpp>
5 #include <mbgl/style/layers/symbol_layer_properties.hpp>
6 #include <mbgl/tile/geometry_tile_data.hpp>
7 
8 #include <vector>
9 
10 namespace mbgl {
11 
12 class Anchor;
13 class PositionedIcon;
14 
15 class SymbolQuad {
16 public:
SymbolQuad(Point<float> tl_,Point<float> tr_,Point<float> bl_,Point<float> br_,Rect<uint16_t> tex_,WritingModeType writingMode_,Point<float> glyphOffset_)17     SymbolQuad(Point<float> tl_,
18                Point<float> tr_,
19                Point<float> bl_,
20                Point<float> br_,
21                Rect<uint16_t> tex_,
22                WritingModeType writingMode_,
23                Point<float> glyphOffset_)
24         : tl(std::move(tl_)),
25         tr(std::move(tr_)),
26         bl(std::move(bl_)),
27         br(std::move(br_)),
28         tex(std::move(tex_)),
29         writingMode(writingMode_),
30         glyphOffset(glyphOffset_) {}
31 
32     Point<float> tl;
33     Point<float> tr;
34     Point<float> bl;
35     Point<float> br;
36     Rect<uint16_t> tex;
37     WritingModeType writingMode;
38     Point<float> glyphOffset;
39 };
40 
41 using SymbolQuads = std::vector<SymbolQuad>;
42 
43 SymbolQuad getIconQuad(const PositionedIcon& shapedIcon,
44                        const style::SymbolLayoutProperties::Evaluated&,
45                        const float layoutTextSize,
46                        const Shaping& shapedText);
47 
48 SymbolQuads getGlyphQuads(const Shaping& shapedText,
49                           const style::SymbolLayoutProperties::Evaluated&,
50                           style::SymbolPlacementType placement,
51                           const GlyphPositionMap& positions);
52 
53 } // namespace mbgl
54