diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-05-22 16:41:40 +0300 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-05-24 10:54:06 +0300 |
commit | aa3a7cf02f2b5d0b99bec9d335c9681dcfa38426 (patch) | |
tree | 08d9826c1b419960a1e7a03b6fefb6d21aeab923 /src/mbgl/renderer/buckets/symbol_bucket.hpp | |
parent | d8e9acd0f510a811f5c1fa87738be646ff83b715 (diff) | |
download | qtlocation-mapboxgl-aa3a7cf02f2b5d0b99bec9d335c9681dcfa38426.tar.gz |
[core] SymbolBucket updates complete at placement stage
`RenderSymbolLayer` does not have to update dynamic vertices of its buckets, this logic is moved to placement (which is already updates opacity vertices).
* fixes clustering of labels when text variable placement enabled - as assignes `usesVariablePlacement` per bucket
* simplifies the code in `RenderSymbolLayer` (the `RenderSymbolLayer::upload()` is now omitted).
* symbol buckets are not modified after orchestration finishes
Diffstat (limited to 'src/mbgl/renderer/buckets/symbol_bucket.hpp')
-rw-r--r-- | src/mbgl/renderer/buckets/symbol_bucket.hpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/mbgl/renderer/buckets/symbol_bucket.hpp b/src/mbgl/renderer/buckets/symbol_bucket.hpp index 3b61002890..e47672f1cd 100644 --- a/src/mbgl/renderer/buckets/symbol_bucket.hpp +++ b/src/mbgl/renderer/buckets/symbol_bucket.hpp @@ -60,14 +60,14 @@ public: bool hasData() const override; std::pair<uint32_t, bool> registerAtCrossTileIndex(CrossTileSymbolLayerIndex&, const OverscaledTileID&, uint32_t& maxCrossTileID) override; uint32_t place(Placement&, const BucketPlacementParameters&, std::set<uint32_t>&) override; - void updateOpacities(Placement&, std::set<uint32_t>&) override; + void updateVertices(Placement&, bool updateOpacities, const RenderTile&, std::set<uint32_t>&) override; bool hasTextData() const; bool hasIconData() const; bool hasCollisionBoxData() const; bool hasCollisionCircleData() const; bool hasFormatSectionOverrides() const; - void updateOpacity(); + void sortFeatures(const float angle); // The result contains references to the `symbolInstances` items, sorted by viewport Y. std::vector<std::reference_wrapper<SymbolInstance>> getSortedSymbols(const float angle); @@ -138,6 +138,7 @@ public: const float tilePixelRatio; uint32_t bucketInstanceId; bool justReloaded = false; + bool hasVariablePlacement = false; mutable optional<bool> hasFormatSectionOverrides_; std::shared_ptr<std::vector<size_t>> featureSortOrder; |