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