diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2017-04-26 12:42:17 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2017-04-26 16:29:44 -0700 |
commit | 1c42daa152c1e7302c0997c00e206cf7c4b33d73 (patch) | |
tree | edc0115651ed5e2931c8362016d2e7da5928f3ea /src/mbgl/renderer | |
parent | ea0e45b4019ea18c03718e67a3397202080a644a (diff) | |
download | qtlocation-mapboxgl-1c42daa152c1e7302c0997c00e206cf7c4b33d73.tar.gz |
[core] Tweak handling of annotation special case SpriteAtlas
* Simplify SymbolLayout; it never needs to care about more than one SpriteAtlas.
* Move the reference from SymbolLayer::Impl to SymbolBucket. This is a prerequisite for making layer Impls immutable.
Diffstat (limited to 'src/mbgl/renderer')
-rw-r--r-- | src/mbgl/renderer/painter_symbol.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/render_symbol_layer.cpp | 5 | ||||
-rw-r--r-- | src/mbgl/renderer/render_symbol_layer.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/symbol_bucket.hpp | 2 |
4 files changed, 6 insertions, 5 deletions
diff --git a/src/mbgl/renderer/painter_symbol.cpp b/src/mbgl/renderer/painter_symbol.cpp index 9bafb5df80..5a66d1e62f 100644 --- a/src/mbgl/renderer/painter_symbol.cpp +++ b/src/mbgl/renderer/painter_symbol.cpp @@ -67,7 +67,7 @@ void Painter::renderSymbol(PaintParameters& parameters, auto values = layer.iconPropertyValues(layout); auto paintPropertyValues = layer.iconPaintProperties(); - SpriteAtlas& atlas = *layer.impl->spriteAtlas; + SpriteAtlas& atlas = *bucket.spriteAtlas; const bool iconScaled = layout.get<IconSize>().constantOr(1.0) != 1.0 || frame.pixelRatio != atlas.getPixelRatio() || bucket.iconsNeedLinear; diff --git a/src/mbgl/renderer/render_symbol_layer.cpp b/src/mbgl/renderer/render_symbol_layer.cpp index 90cc0a7615..d46dc614f0 100644 --- a/src/mbgl/renderer/render_symbol_layer.cpp +++ b/src/mbgl/renderer/render_symbol_layer.cpp @@ -26,12 +26,11 @@ std::unique_ptr<SymbolLayout> RenderSymbolLayer::createLayout(const BucketParame const std::vector<const RenderLayer*>& group, const GeometryTileLayer& layer, GlyphDependencies& glyphDependencies, - IconDependencyMap& iconDependencyMap) const { + IconDependencies& iconDependencies) const { return std::make_unique<SymbolLayout>(parameters, group, layer, - iconDependencyMap[impl->spriteAtlas], - (uintptr_t) impl->spriteAtlas, + iconDependencies, glyphDependencies); } diff --git a/src/mbgl/renderer/render_symbol_layer.hpp b/src/mbgl/renderer/render_symbol_layer.hpp index dbe7c4ea83..b19b236e90 100644 --- a/src/mbgl/renderer/render_symbol_layer.hpp +++ b/src/mbgl/renderer/render_symbol_layer.hpp @@ -77,7 +77,7 @@ public: std::unique_ptr<Bucket> createBucket(const BucketParameters&, const std::vector<const RenderLayer*>&) const override; std::unique_ptr<SymbolLayout> createLayout(const BucketParameters&, const std::vector<const RenderLayer*>&, - const GeometryTileLayer&, GlyphDependencies&, IconDependencyMap&) const; + const GeometryTileLayer&, GlyphDependencies&, IconDependencies&) const; // Paint properties style::SymbolPaintProperties::Unevaluated unevaluated; diff --git a/src/mbgl/renderer/symbol_bucket.hpp b/src/mbgl/renderer/symbol_bucket.hpp index e00de03fd2..f7e4bcfa20 100644 --- a/src/mbgl/renderer/symbol_bucket.hpp +++ b/src/mbgl/renderer/symbol_bucket.hpp @@ -70,6 +70,8 @@ public: optional<gl::VertexBuffer<CollisionBoxVertex>> vertexBuffer; optional<gl::IndexBuffer<gl::Lines>> indexBuffer; } collisionBox; + + SpriteAtlas* spriteAtlas = nullptr; }; } // namespace mbgl |