diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2019-12-10 17:38:21 +0100 |
---|---|---|
committer | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2020-01-15 15:02:11 +0200 |
commit | 5a1e4c6b816ef495e53e54f563ecfcef3c5839aa (patch) | |
tree | f5654a0a5f9c517170b231dfb23ec4d430479761 /src/mbgl/layout | |
parent | 027e803b722301a03e9ef53b584c2795ff47e7bd (diff) | |
download | qtlocation-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.cpp | 5 | ||||
-rw-r--r-- | src/mbgl/layout/symbol_instance.hpp | 1 | ||||
-rw-r--r-- | src/mbgl/layout/symbol_layout.cpp | 4 |
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); }; |