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.hpp82
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