summaryrefslogtreecommitdiff
path: root/src/mbgl/layout/symbol_instance.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/layout/symbol_instance.hpp')
-rw-r--r--src/mbgl/layout/symbol_instance.hpp30
1 files changed, 26 insertions, 4 deletions
diff --git a/src/mbgl/layout/symbol_instance.hpp b/src/mbgl/layout/symbol_instance.hpp
index 6148d7fe88..5169b16adb 100644
--- a/src/mbgl/layout/symbol_instance.hpp
+++ b/src/mbgl/layout/symbol_instance.hpp
@@ -11,11 +11,21 @@ namespace mbgl {
class Anchor;
class IndexedSubfeature;
+struct ShapedTextOrientations {
+ Shaping horizontal;
+ Shaping vertical;
+ // The following are used with variable text placement on.
+ Shaping& right = horizontal;
+ Shaping center;
+ Shaping left;
+ bool singleLine = false;
+};
+
class SymbolInstance {
public:
SymbolInstance(Anchor& anchor,
GeometryCoordinates line,
- const std::pair<Shaping, Shaping>& shapedTextOrientations,
+ const ShapedTextOrientations& shapedTextOrientations,
optional<PositionedIcon> shapedIcon,
const style::SymbolLayoutProperties::Evaluated&,
const float layoutTextSize,
@@ -32,14 +42,21 @@ public:
const std::size_t dataFeatureIndex,
const std::u16string& key,
const float overscaling,
- const float rotate);
+ const float rotate,
+ float radialTextOffset);
+ optional<size_t> getDefaultHorizontalPlacedTextIndex() const;
Anchor anchor;
GeometryCoordinates line;
bool hasText;
bool hasIcon;
- SymbolQuads horizontalGlyphQuads;
+ // Note: When singleLine == true, only `rightJustifiedGlyphQuads` is populated.
+ SymbolQuads rightJustifiedGlyphQuads;
+ SymbolQuads centerJustifiedGlyphQuads;
+ SymbolQuads leftJustifiedGlyphQuads;
+
SymbolQuads verticalGlyphQuads;
+
optional<SymbolQuad> iconQuad;
CollisionFeature textCollisionFeature;
CollisionFeature iconCollisionFeature;
@@ -50,9 +67,14 @@ public:
std::array<float, 2> iconOffset;
std::u16string key;
bool isDuplicate;
- optional<size_t> placedTextIndex;
+ 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;
};