diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2017-05-18 09:37:21 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2017-05-23 12:59:27 -0700 |
commit | 1759603e128ad0a08f4a25009b82695420ec2840 (patch) | |
tree | 77d74c683ca34efc25bd79cbb25774049dbfc695 /src/mbgl/tile | |
parent | 9e1cbbeacb4007f9c7919185df0aae90fc8f7ad1 (diff) | |
download | qtlocation-mapboxgl-1759603e128ad0a08f4a25009b82695420ec2840.tar.gz |
[core] Simplify and fix sprite atlas coordinate calculations
* Always return image metrics exclusive of padding
* Work with integer coordinates whenever possible
* Eliminate redundant SpriteAtlasElement members
* Fix asymmetric re-padding in getIconQuad when pixelRatio != 1
* Add explanatory comments
Diffstat (limited to 'src/mbgl/tile')
-rw-r--r-- | src/mbgl/tile/geometry_tile.cpp | 3 | ||||
-rw-r--r-- | src/mbgl/tile/geometry_tile_worker.cpp | 8 | ||||
-rw-r--r-- | src/mbgl/tile/geometry_tile_worker.hpp | 4 |
3 files changed, 10 insertions, 5 deletions
diff --git a/src/mbgl/tile/geometry_tile.cpp b/src/mbgl/tile/geometry_tile.cpp index 8f14a9c8aa..e3c4e7bf3b 100644 --- a/src/mbgl/tile/geometry_tile.cpp +++ b/src/mbgl/tile/geometry_tile.cpp @@ -40,7 +40,8 @@ GeometryTile::GeometryTile(const OverscaledTileID& id_, ActorRef<GeometryTile>(*this, mailbox), id_, obsolete, - parameters.mode), + parameters.mode, + parameters.pixelRatio), glyphAtlas(glyphAtlas_), spriteAtlas(spriteAtlas_), placementThrottler(Milliseconds(300), [this] { invokePlacement(); }) { diff --git a/src/mbgl/tile/geometry_tile_worker.cpp b/src/mbgl/tile/geometry_tile_worker.cpp index 1d683b3a11..3fd6bb47f0 100644 --- a/src/mbgl/tile/geometry_tile_worker.cpp +++ b/src/mbgl/tile/geometry_tile_worker.cpp @@ -26,12 +26,14 @@ GeometryTileWorker::GeometryTileWorker(ActorRef<GeometryTileWorker> self_, ActorRef<GeometryTile> parent_, OverscaledTileID id_, const std::atomic<bool>& obsolete_, - const MapMode mode_) + const MapMode mode_, + const float pixelRatio_) : self(std::move(self_)), parent(std::move(parent_)), id(std::move(id_)), obsolete(obsolete_), - mode(mode_) { + mode(mode_), + pixelRatio(pixelRatio_) { } GeometryTileWorker::~GeometryTileWorker() = default; @@ -275,7 +277,7 @@ void GeometryTileWorker::redoLayout() { std::unordered_map<std::string, std::unique_ptr<SymbolLayout>> symbolLayoutMap; std::unordered_map<std::string, std::shared_ptr<Bucket>> buckets; auto featureIndex = std::make_unique<FeatureIndex>(); - BucketParameters parameters { id, mode }; + BucketParameters parameters { id, mode, pixelRatio }; GlyphDependencies glyphDependencies; IconDependencies iconDependencies; diff --git a/src/mbgl/tile/geometry_tile_worker.hpp b/src/mbgl/tile/geometry_tile_worker.hpp index 0d4cba04b3..3a15763a82 100644 --- a/src/mbgl/tile/geometry_tile_worker.hpp +++ b/src/mbgl/tile/geometry_tile_worker.hpp @@ -31,7 +31,8 @@ public: ActorRef<GeometryTile> parent, OverscaledTileID, const std::atomic<bool>&, - const MapMode); + const MapMode, + const float pixelRatio); ~GeometryTileWorker(); void setLayers(std::vector<Immutable<style::Layer::Impl>>, uint64_t correlationID); @@ -61,6 +62,7 @@ private: const OverscaledTileID id; const std::atomic<bool>& obsolete; const MapMode mode; + const float pixelRatio; enum State { Idle, |