summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2017-04-26 12:42:17 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2017-04-26 16:29:44 -0700
commit1c42daa152c1e7302c0997c00e206cf7c4b33d73 (patch)
treeedc0115651ed5e2931c8362016d2e7da5928f3ea /src/mbgl/renderer
parentea0e45b4019ea18c03718e67a3397202080a644a (diff)
downloadqtlocation-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.cpp2
-rw-r--r--src/mbgl/renderer/render_symbol_layer.cpp5
-rw-r--r--src/mbgl/renderer/render_symbol_layer.hpp2
-rw-r--r--src/mbgl/renderer/symbol_bucket.hpp2
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