summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnsis Brammanis <ansis@mapbox.com>2019-10-17 13:07:36 -0400
committerAnsis Brammanis <ansis@mapbox.com>2019-10-22 17:31:18 -0400
commit0fe6136c3d8cb18823da5d4307778efea83b859a (patch)
tree8726a9cfb5c57925440b020c770cfb188b62aabb
parent36e9a299962d4a8e94da89ccc1cc4f9fa5911d39 (diff)
downloadqtlocation-mapboxgl-upstream/icon-text-fit-variable-placement.tar.gz
-rw-r--r--src/mbgl/text/placement.cpp35
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};
};