diff options
author | Ansis Brammanis <ansis@mapbox.com> | 2019-10-17 13:07:36 -0400 |
---|---|---|
committer | Ansis Brammanis <ansis@mapbox.com> | 2019-10-22 17:31:18 -0400 |
commit | 0fe6136c3d8cb18823da5d4307778efea83b859a (patch) | |
tree | 8726a9cfb5c57925440b020c770cfb188b62aabb | |
parent | 36e9a299962d4a8e94da89ccc1cc4f9fa5911d39 (diff) | |
download | qtlocation-mapboxgl-upstream/icon-text-fit-variable-placement.tar.gz |
-rw-r--r-- | src/mbgl/text/placement.cpp | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/src/mbgl/text/placement.cpp b/src/mbgl/text/placement.cpp index 90cd5a050b..f7ee2f204a 100644 --- a/src/mbgl/text/placement.cpp +++ b/src/mbgl/text/placement.cpp @@ -305,9 +305,12 @@ void Placement::placeBucket( } } - const bool doVariableIconPlacement = hasIconTextFit && !iconAllowOverlap && symbolInstance.placedIconIndex; + const bool doVariableIconPlacement = + hasIconTextFit && !iconAllowOverlap && symbolInstance.placedIconIndex; - const auto placeFeatureForVariableAnchors = [&] (const CollisionFeature& collisionFeature, style::TextWritingModeType orientation, const CollisionFeature& iconCollisionFeature) { + const auto placeFeatureForVariableAnchors = [&](const CollisionFeature& collisionFeature, + style::TextWritingModeType orientation, + const CollisionFeature& iconCollisionFeature) { const CollisionBox& textBox = collisionFeature.boxes[0]; const float width = textBox.x2 - textBox.x1; const float height = textBox.y2 - textBox.y1; @@ -333,9 +336,20 @@ void Placement::placeBucket( params.showCollisionBoxes, avoidEdges, collisionGroup.second, textBoxes); if (doVariableIconPlacement) { - auto placedIconFeature = collisionIndex.placeFeature(iconCollisionFeature, shift, - posMatrix, iconLabelPlaneMatrix, pixelRatio, placedSymbol, scale, fontSize, iconAllowOverlap, pitchWithMap, - params.showCollisionBoxes, avoidEdges, collisionGroup.second, iconBoxes); + auto placedIconFeature = collisionIndex.placeFeature(iconCollisionFeature, + shift, + posMatrix, + iconLabelPlaneMatrix, + pixelRatio, + placedSymbol, + scale, + fontSize, + iconAllowOverlap, + pitchWithMap, + params.showCollisionBoxes, + avoidEdges, + collisionGroup.second, + iconBoxes); iconBoxes.clear(); if (!placedIconFeature.first) continue; } @@ -377,13 +391,18 @@ void Placement::placeBucket( }; const auto placeHorizontal = [&] { - return placeFeatureForVariableAnchors(symbolInstance.textCollisionFeature, style::TextWritingModeType::Horizontal, symbolInstance.iconCollisionFeature); + return placeFeatureForVariableAnchors(symbolInstance.textCollisionFeature, + style::TextWritingModeType::Horizontal, + symbolInstance.iconCollisionFeature); }; const auto placeVertical = [&] { if (bucket.allowVerticalPlacement && !placed.first && symbolInstance.verticalTextCollisionFeature) { - return placeFeatureForVariableAnchors(*symbolInstance.verticalTextCollisionFeature, style::TextWritingModeType::Vertical, - symbolInstance.verticalIconCollisionFeature ? *symbolInstance.verticalIconCollisionFeature : symbolInstance.iconCollisionFeature); + return placeFeatureForVariableAnchors(*symbolInstance.verticalTextCollisionFeature, + style::TextWritingModeType::Vertical, + symbolInstance.verticalIconCollisionFeature + ? *symbolInstance.verticalIconCollisionFeature + : symbolInstance.iconCollisionFeature); } return std::pair<bool, bool>{false, false}; }; |