summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/buckets/symbol_bucket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/buckets/symbol_bucket.cpp')
-rw-r--r--src/mbgl/renderer/buckets/symbol_bucket.cpp29
1 files changed, 26 insertions, 3 deletions
diff --git a/src/mbgl/renderer/buckets/symbol_bucket.cpp b/src/mbgl/renderer/buckets/symbol_bucket.cpp
index 3a3688a60b..9220235f1d 100644
--- a/src/mbgl/renderer/buckets/symbol_bucket.cpp
+++ b/src/mbgl/renderer/buckets/symbol_bucket.cpp
@@ -28,13 +28,17 @@ SymbolBucket::SymbolBucket(style::SymbolLayoutProperties::PossiblyEvaluated layo
iconSizeBinder(SymbolSizeBinder::create(zoom, iconSize, IconSize::defaultValue())) {
for (const auto& pair : paintProperties_) {
+ auto layerPaintProperties = pair.second;
+ if (hasFormatSectionOverrides()) {
+ setPaintPropertyOverrides(layerPaintProperties);
+ }
paintProperties.emplace(
std::piecewise_construct,
std::forward_as_tuple(pair.first),
std::forward_as_tuple(PaintProperties {
- pair.second,
- { RenderSymbolLayer::iconPaintProperties(pair.second), zoom },
- { RenderSymbolLayer::textPaintProperties(pair.second), zoom }
+ layerPaintProperties,
+ { RenderSymbolLayer::iconPaintProperties(layerPaintProperties), zoom },
+ { RenderSymbolLayer::textPaintProperties(layerPaintProperties), zoom }
}));
}
}
@@ -226,4 +230,23 @@ void SymbolBucket::sortFeatures(const float angle) {
}
}
+void SymbolBucket::updatePaintProperties(const std::string& layerID,
+ style::SymbolPaintProperties::PossiblyEvaluated updated) {
+ if (hasFormatSectionOverrides()) {
+ SymbolLayerPaintPropertyOverrides::updateOverrides(paintProperties.at(layerID).evaluated, updated);
+ }
+ paintProperties.at(layerID).evaluated = updated;
+}
+
+void SymbolBucket::setPaintPropertyOverrides(style::SymbolPaintProperties::PossiblyEvaluated& paint) {
+ SymbolLayerPaintPropertyOverrides::setOverrides(layout, paint);
+}
+
+bool SymbolBucket::hasFormatSectionOverrides() {
+ if (!hasFormatSectionOverrides_) {
+ hasFormatSectionOverrides_= SymbolLayerPaintPropertyOverrides::hasOverrides(layout.get<TextField>());
+ }
+ return *hasFormatSectionOverrides_;
+}
+
} // namespace mbgl