summaryrefslogtreecommitdiff
path: root/src/mbgl/layout
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2019-12-10 17:38:21 +0100
committerAlexander Shalamov <alexander.shalamov@mapbox.com>2020-01-15 15:02:11 +0200
commit5a1e4c6b816ef495e53e54f563ecfcef3c5839aa (patch)
treef5654a0a5f9c517170b231dfb23ec4d430479761 /src/mbgl/layout
parent027e803b722301a03e9ef53b584c2795ff47e7bd (diff)
downloadqtlocation-mapboxgl-5a1e4c6b816ef495e53e54f563ecfcef3c5839aa.tar.gz
[core] implement stretchable icons for icon-text-fit
Diffstat (limited to 'src/mbgl/layout')
-rw-r--r--src/mbgl/layout/symbol_instance.cpp5
-rw-r--r--src/mbgl/layout/symbol_instance.hpp1
-rw-r--r--src/mbgl/layout/symbol_layout.cpp4
3 files changed, 7 insertions, 3 deletions
diff --git a/src/mbgl/layout/symbol_instance.cpp b/src/mbgl/layout/symbol_instance.cpp
index 01ba3e26a6..9eda80d4ea 100644
--- a/src/mbgl/layout/symbol_instance.cpp
+++ b/src/mbgl/layout/symbol_instance.cpp
@@ -28,13 +28,14 @@ SymbolInstanceSharedData::SymbolInstanceSharedData(GeometryCoordinates line_,
const ImageMap& imageMap,
float iconRotation,
SymbolContent iconType,
+ bool hasIconTextFit,
bool allowVerticalPlacement)
: line(std::move(line_)) {
// Create the quads used for rendering the icon and glyphs.
if (shapedIcon) {
- iconQuads = getIconQuads(*shapedIcon, iconRotation, iconType);
+ iconQuads = getIconQuads(*shapedIcon, iconRotation, iconType, hasIconTextFit);
if (verticallyShapedIcon) {
- verticalIconQuads = getIconQuads(*verticallyShapedIcon, iconRotation, iconType);
+ verticalIconQuads = getIconQuads(*verticallyShapedIcon, iconRotation, iconType, hasIconTextFit);
}
}
diff --git a/src/mbgl/layout/symbol_instance.hpp b/src/mbgl/layout/symbol_instance.hpp
index 56dd82240e..2a25c655aa 100644
--- a/src/mbgl/layout/symbol_instance.hpp
+++ b/src/mbgl/layout/symbol_instance.hpp
@@ -34,6 +34,7 @@ struct SymbolInstanceSharedData {
const ImageMap& imageMap,
float iconRotation,
SymbolContent iconType,
+ bool hasIconTextFit,
bool allowVerticalPlacement);
bool empty() const;
GeometryCoordinates line;
diff --git a/src/mbgl/layout/symbol_layout.cpp b/src/mbgl/layout/symbol_layout.cpp
index 1772d1ef91..1f447ddc9f 100644
--- a/src/mbgl/layout/symbol_layout.cpp
+++ b/src/mbgl/layout/symbol_layout.cpp
@@ -555,9 +555,10 @@ void SymbolLayout::addFeature(const std::size_t layoutFeatureIndex,
IndexedSubfeature indexedFeature(feature.index, sourceLayer->getName(), bucketLeaderID, symbolInstances.size());
const auto iconTextFit = evaluatedLayoutProperties.get<style::IconTextFit>();
+ const bool hasIconTextFit = iconTextFit != IconTextFitType::None;
// Adjust shaped icon size when icon-text-fit is used.
optional<PositionedIcon> verticallyShapedIcon;
- if (shapedIcon && iconTextFit != IconTextFitType::None) {
+ if (shapedIcon && hasIconTextFit) {
// Create vertically shaped icon for vertical writing mode if needed.
if (allowVerticalPlacement && shapedTextOrientations.vertical) {
verticallyShapedIcon = shapedIcon;
@@ -602,6 +603,7 @@ void SymbolLayout::addFeature(const std::size_t layoutFeatureIndex,
imageMap,
iconRotation,
iconType,
+ hasIconTextFit,
allowVerticalPlacement);
};