diff options
Diffstat (limited to 'src/mbgl/layout/symbol_instance.hpp')
-rw-r--r-- | src/mbgl/layout/symbol_instance.hpp | 82 |
1 files changed, 45 insertions, 37 deletions
diff --git a/src/mbgl/layout/symbol_instance.hpp b/src/mbgl/layout/symbol_instance.hpp index 95159deeb1..633233fa17 100644 --- a/src/mbgl/layout/symbol_instance.hpp +++ b/src/mbgl/layout/symbol_instance.hpp @@ -1,10 +1,9 @@ #pragma once -#include <mbgl/text/quads.hpp> -#include <mbgl/text/glyph_atlas.hpp> -#include <mbgl/text/collision_feature.hpp> #include <mbgl/style/layers/symbol_layer_properties.hpp> - +#include <mbgl/text/collision_feature.hpp> +#include <mbgl/text/glyph_atlas.hpp> +#include <mbgl/text/quads.hpp> namespace mbgl { @@ -15,38 +14,29 @@ struct ShapedTextOrientations { Shaping horizontal; Shaping vertical; // The following are used with variable text placement on. - Shaping& right = horizontal; + Shaping& right = horizontal; Shaping center; Shaping left; bool singleLine = false; }; -class SymbolInstance { +class SymbolInstanceCommonData { public: - SymbolInstance(Anchor& anchor, - GeometryCoordinates line, - const ShapedTextOrientations& shapedTextOrientations, - optional<PositionedIcon> shapedIcon, - const style::SymbolLayoutProperties::Evaluated&, - const float layoutTextSize, - const float textBoxScale, - const float textPadding, - style::SymbolPlacementType textPlacement, - const std::array<float, 2> textOffset, - const float iconBoxScale, - const float iconPadding, - const std::array<float, 2> iconOffset, - const GlyphPositions&, - const IndexedSubfeature&, - const std::size_t layoutFeatureIndex, - const std::size_t dataFeatureIndex, - std::u16string key, - const float overscaling, - const float rotate, - float radialTextOffset); - - optional<size_t> getDefaultHorizontalPlacedTextIndex() const; - Anchor anchor; + SymbolInstanceCommonData(const GeometryCoordinates& line_, + const ShapedTextOrientations& shapedTextOrientations, + optional<PositionedIcon> shapedIcon, + const style::SymbolLayoutProperties::Evaluated& layout, + const float layoutTextSize, + const float textBoxScale_, + const style::SymbolPlacementType textPlacement, + const std::array<float, 2> textOffset_, + const std::array<float, 2> iconOffset_, + const GlyphPositions& positions, + const std::size_t layoutFeatureIndex_, + const std::size_t dataFeatureIndex_, + std::u16string key_, + float radialTextOffset_); + GeometryCoordinates line; bool hasText; bool hasIcon; @@ -58,24 +48,42 @@ public: SymbolQuads verticalGlyphQuads; optional<SymbolQuad> iconQuad; - CollisionFeature textCollisionFeature; - CollisionFeature iconCollisionFeature; WritingModeType writingModes; std::size_t layoutFeatureIndex; // Index into the set of features included at layout time std::size_t dataFeatureIndex; // Index into the underlying tile data feature set std::array<float, 2> textOffset; std::array<float, 2> iconOffset; std::u16string key; - bool isDuplicate; + float textBoxScale; + float radialTextOffset; + bool singleLine; +}; + +class SymbolInstance { +public: + SymbolInstance(const Anchor& anchor_, + std::shared_ptr<SymbolInstanceCommonData> data_, + const ShapedTextOrientations& shapedTextOrientations, + optional<PositionedIcon> shapedIcon, + const float textPadding, + const style::SymbolPlacementType textPlacement, + const float iconBoxScale, + const float iconPadding, + const IndexedSubfeature& indexedFeature_, + const float overscaling, + const float rotate); + + optional<size_t> getDefaultHorizontalPlacedTextIndex() const; + Anchor anchor; + std::shared_ptr<SymbolInstanceCommonData> commonData{nullptr}; + CollisionFeature textCollisionFeature; + CollisionFeature iconCollisionFeature; optional<size_t> placedRightTextIndex; optional<size_t> placedCenterTextIndex; optional<size_t> placedLeftTextIndex; optional<size_t> placedVerticalTextIndex; optional<size_t> placedIconIndex; - float textBoxScale; - float radialTextOffset; - bool singleLine; - uint32_t crossTileID = 0; + uint32_t crossTileID{0}; }; } // namespace mbgl |