1 #pragma once
2 
3 #include <mbgl/text/quads.hpp>
4 #include <mbgl/text/glyph_atlas.hpp>
5 #include <mbgl/text/collision_feature.hpp>
6 #include <mbgl/style/layers/symbol_layer_properties.hpp>
7 
8 
9 namespace mbgl {
10 
11 class Anchor;
12 class IndexedSubfeature;
13 
14 class SymbolInstance {
15 public:
16     SymbolInstance(Anchor& anchor,
17                    GeometryCoordinates line,
18                    const std::pair<Shaping, Shaping>& shapedTextOrientations,
19                    optional<PositionedIcon> shapedIcon,
20                    const style::SymbolLayoutProperties::Evaluated&,
21                    const float layoutTextSize,
22                    const float textBoxScale,
23                    const float textPadding,
24                    style::SymbolPlacementType textPlacement,
25                    const std::array<float, 2> textOffset,
26                    const float iconBoxScale,
27                    const float iconPadding,
28                    const std::array<float, 2> iconOffset,
29                    const GlyphPositionMap&,
30                    const IndexedSubfeature&,
31                    const std::size_t layoutFeatureIndex,
32                    const std::size_t dataFeatureIndex,
33                    const std::u16string& key,
34                    const float overscaling);
35 
36     Anchor anchor;
37     GeometryCoordinates line;
38     bool hasText;
39     bool hasIcon;
40     SymbolQuads horizontalGlyphQuads;
41     SymbolQuads verticalGlyphQuads;
42     optional<SymbolQuad> iconQuad;
43     CollisionFeature textCollisionFeature;
44     CollisionFeature iconCollisionFeature;
45     WritingModeType writingModes;
46     std::size_t layoutFeatureIndex; // Index into the set of features included at layout time
47     std::size_t dataFeatureIndex;   // Index into the underlying tile data feature set
48     std::array<float, 2> textOffset;
49     std::array<float, 2> iconOffset;
50     std::u16string key;
51     bool isDuplicate;
52     optional<size_t> placedTextIndex;
53     optional<size_t> placedVerticalTextIndex;
54     optional<size_t> placedIconIndex;
55     uint32_t crossTileID = 0;
56 };
57 
58 } // namespace mbgl
59