summaryrefslogtreecommitdiff
path: root/src/mbgl/tile
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/tile')
-rw-r--r--src/mbgl/tile/geojson_tile.cpp6
-rw-r--r--src/mbgl/tile/geojson_tile.hpp6
-rw-r--r--src/mbgl/tile/raster_tile_data.cpp5
-rw-r--r--src/mbgl/tile/raster_tile_data.hpp2
-rw-r--r--src/mbgl/tile/tile_cache.cpp8
-rw-r--r--src/mbgl/tile/tile_cache.hpp14
-rw-r--r--src/mbgl/tile/tile_data.cpp4
-rw-r--r--src/mbgl/tile/tile_data.hpp6
-rw-r--r--src/mbgl/tile/tile_worker.cpp11
-rw-r--r--src/mbgl/tile/tile_worker.hpp4
-rw-r--r--src/mbgl/tile/vector_tile.cpp6
-rw-r--r--src/mbgl/tile/vector_tile.hpp6
-rw-r--r--src/mbgl/tile/vector_tile_data.cpp2
-rw-r--r--src/mbgl/tile/vector_tile_data.hpp2
14 files changed, 44 insertions, 38 deletions
diff --git a/src/mbgl/tile/geojson_tile.cpp b/src/mbgl/tile/geojson_tile.cpp
index 39cca01728..9162cedf14 100644
--- a/src/mbgl/tile/geojson_tile.cpp
+++ b/src/mbgl/tile/geojson_tile.cpp
@@ -101,7 +101,8 @@ std::unique_ptr<GeoJSONTile> convertTile(const mapbox::geojsonvt::Tile& tile) {
return std::make_unique<GeoJSONTile>(layer);
}
-GeoJSONTileMonitor::GeoJSONTileMonitor(mapbox::geojsonvt::GeoJSONVT* geojsonvt_, const TileID& id)
+GeoJSONTileMonitor::GeoJSONTileMonitor(mapbox::geojsonvt::GeoJSONVT* geojsonvt_,
+ const OverscaledTileID& id)
: tileID(id), geojsonvt(geojsonvt_) {
}
@@ -119,7 +120,8 @@ void GeoJSONTileMonitor::setGeoJSONVT(mapbox::geojsonvt::GeoJSONVT* vt) {
void GeoJSONTileMonitor::update() {
if (geojsonvt) {
- auto tile = convertTile(geojsonvt->getTile(tileID.sourceZ, tileID.x, tileID.y));
+ auto tile = convertTile(
+ geojsonvt->getTile(tileID.canonical.z, tileID.canonical.x, tileID.canonical.y));
callback(nullptr, std::move(tile), {}, {});
}
}
diff --git a/src/mbgl/tile/geojson_tile.hpp b/src/mbgl/tile/geojson_tile.hpp
index f6d9d9cce7..768f005482 100644
--- a/src/mbgl/tile/geojson_tile.hpp
+++ b/src/mbgl/tile/geojson_tile.hpp
@@ -2,7 +2,7 @@
#define MBGL_ANNOTATION_GEOJSON_VT_TILE
#include <mbgl/tile/geometry_tile.hpp>
-#include <mbgl/map/tile_id.hpp>
+#include <mbgl/tile/tile_id.hpp>
#include <unordered_map>
@@ -56,7 +56,7 @@ private:
class GeoJSONTileMonitor : public GeometryTileMonitor {
public:
- GeoJSONTileMonitor(mapbox::geojsonvt::GeoJSONVT*, const TileID&);
+ GeoJSONTileMonitor(mapbox::geojsonvt::GeoJSONVT*, const OverscaledTileID&);
virtual ~GeoJSONTileMonitor();
std::unique_ptr<AsyncRequest> monitorTile(const GeometryTileMonitor::Callback&) override;
@@ -67,7 +67,7 @@ private:
void update();
public:
- const TileID tileID;
+ const OverscaledTileID tileID;
private:
mapbox::geojsonvt::GeoJSONVT* geojsonvt = nullptr;
diff --git a/src/mbgl/tile/raster_tile_data.cpp b/src/mbgl/tile/raster_tile_data.cpp
index abf46b22f0..10445cdcdd 100644
--- a/src/mbgl/tile/raster_tile_data.cpp
+++ b/src/mbgl/tile/raster_tile_data.cpp
@@ -8,7 +8,7 @@
using namespace mbgl;
-RasterTileData::RasterTileData(const TileID& id_,
+RasterTileData::RasterTileData(const OverscaledTileID& id_,
float pixelRatio,
const std::string& urlTemplate,
gl::TexturePool &texturePool_,
@@ -20,7 +20,8 @@ RasterTileData::RasterTileData(const TileID& id_,
worker(worker_) {
state = State::loading;
- const Resource resource = Resource::tile(urlTemplate, pixelRatio, id.x, id.y, id.sourceZ);
+ const Resource resource =
+ Resource::tile(urlTemplate, pixelRatio, id.canonical.x, id.canonical.y, id.canonical.z);
req = fileSource.request(resource, [callback, this](Response res) {
if (res.error) {
callback(std::make_exception_ptr(std::runtime_error(res.error->message)));
diff --git a/src/mbgl/tile/raster_tile_data.hpp b/src/mbgl/tile/raster_tile_data.hpp
index dfc8b85731..af15bba948 100644
--- a/src/mbgl/tile/raster_tile_data.hpp
+++ b/src/mbgl/tile/raster_tile_data.hpp
@@ -13,7 +13,7 @@ namespace gl { class TexturePool; }
class RasterTileData : public TileData {
public:
- RasterTileData(const TileID&,
+ RasterTileData(const OverscaledTileID&,
float pixelRatio,
const std::string& urlTemplate,
gl::TexturePool&,
diff --git a/src/mbgl/tile/tile_cache.cpp b/src/mbgl/tile/tile_cache.cpp
index 423b355827..0f0a231d54 100644
--- a/src/mbgl/tile/tile_cache.cpp
+++ b/src/mbgl/tile/tile_cache.cpp
@@ -15,11 +15,9 @@ void TileCache::setSize(size_t size_) {
}
assert(orderedKeys.size() <= size);
-
- tiles.reserve(size);
}
-void TileCache::add(uint64_t key, std::shared_ptr<TileData> data) {
+void TileCache::add(const OverscaledTileID& key, std::shared_ptr<TileData> data) {
// insert new or query existing data
if (tiles.emplace(key, data).second) {
@@ -38,7 +36,7 @@ void TileCache::add(uint64_t key, std::shared_ptr<TileData> data) {
assert(orderedKeys.size() <= size);
};
-std::shared_ptr<TileData> TileCache::get(uint64_t key) {
+std::shared_ptr<TileData> TileCache::get(const OverscaledTileID& key) {
std::shared_ptr<TileData> data;
@@ -53,7 +51,7 @@ std::shared_ptr<TileData> TileCache::get(uint64_t key) {
return data;
};
-bool TileCache::has(uint64_t key) {
+bool TileCache::has(const OverscaledTileID& key) {
return tiles.find(key) != tiles.end();
}
diff --git a/src/mbgl/tile/tile_cache.hpp b/src/mbgl/tile/tile_cache.hpp
index 4d0b42242a..8bf747035e 100644
--- a/src/mbgl/tile/tile_cache.hpp
+++ b/src/mbgl/tile/tile_cache.hpp
@@ -1,9 +1,11 @@
#ifndef MBGL_MAP_TILE_CACHE
#define MBGL_MAP_TILE_CACHE
+#include <mbgl/tile/tile_id.hpp>
+
#include <list>
#include <memory>
-#include <unordered_map>
+#include <map>
namespace mbgl {
@@ -15,14 +17,14 @@ public:
void setSize(size_t);
size_t getSize() const { return size; };
- void add(uint64_t key, std::shared_ptr<TileData> data);
- std::shared_ptr<TileData> get(uint64_t key);
- bool has(uint64_t key);
+ void add(const OverscaledTileID& key, std::shared_ptr<TileData> data);
+ std::shared_ptr<TileData> get(const OverscaledTileID& key);
+ bool has(const OverscaledTileID& key);
void clear();
private:
- std::unordered_map<uint64_t, std::shared_ptr<TileData>> tiles;
- std::list<uint64_t> orderedKeys;
+ std::map<OverscaledTileID, std::shared_ptr<TileData>> tiles;
+ std::list<OverscaledTileID> orderedKeys;
size_t size;
};
diff --git a/src/mbgl/tile/tile_data.cpp b/src/mbgl/tile/tile_data.cpp
index 49a426b466..d5179c5b0b 100644
--- a/src/mbgl/tile/tile_data.cpp
+++ b/src/mbgl/tile/tile_data.cpp
@@ -4,7 +4,7 @@
namespace mbgl {
-TileData::TileData(const TileID& id_)
+TileData::TileData(const OverscaledTileID& id_)
: id(id_),
state(State::initial) {
}
@@ -25,7 +25,7 @@ const char* TileData::StateToString(const State state) {
}
void TileData::dumpDebugLogs() const {
- Log::Info(Event::General, "TileData::id: %s", std::string(id).c_str());
+ Log::Info(Event::General, "TileData::id: %s", util::toString(id).c_str());
Log::Info(Event::General, "TileData::state: %s", TileData::StateToString(state));
}
diff --git a/src/mbgl/tile/tile_data.hpp b/src/mbgl/tile/tile_data.hpp
index 338f246da0..b608c026ad 100644
--- a/src/mbgl/tile/tile_data.hpp
+++ b/src/mbgl/tile/tile_data.hpp
@@ -5,7 +5,7 @@
#include <mbgl/util/chrono.hpp>
#include <mbgl/util/optional.hpp>
#include <mbgl/util/feature.hpp>
-#include <mbgl/map/tile_id.hpp>
+#include <mbgl/tile/tile_id.hpp>
#include <mbgl/renderer/bucket.hpp>
#include <mbgl/text/placement_config.hpp>
#include <mbgl/tile/geometry_tile.hpp>
@@ -73,7 +73,7 @@ public:
return state == State::partial || state == State::parsed;
}
- TileData(const TileID&);
+ TileData(const OverscaledTileID&);
virtual ~TileData();
// Mark this tile as no longer needed and cancel any pending work.
@@ -106,7 +106,7 @@ public:
void dumpDebugLogs() const;
- const TileID id;
+ const OverscaledTileID id;
optional<SystemTimePoint> modified;
optional<SystemTimePoint> expires;
diff --git a/src/mbgl/tile/tile_worker.cpp b/src/mbgl/tile/tile_worker.cpp
index bc1fdb4195..0a9ab35779 100644
--- a/src/mbgl/tile/tile_worker.cpp
+++ b/src/mbgl/tile/tile_worker.cpp
@@ -11,12 +11,13 @@
#include <mbgl/renderer/symbol_bucket.hpp>
#include <mbgl/platform/log.hpp>
#include <mbgl/util/constants.hpp>
+#include <mbgl/util/string.hpp>
#include <mbgl/util/exception.hpp>
#include <utility>
using namespace mbgl;
-TileWorker::TileWorker(TileID id_,
+TileWorker::TileWorker(const OverscaledTileID& id_,
std::string sourceID_,
SpriteStore& spriteStore_,
GlyphAtlas& glyphAtlas_,
@@ -139,8 +140,8 @@ void TileWorker::parseLayer(const StyleLayer* layer) {
// Skip this bucket if we are to not render this
if ((layer->source != sourceID) ||
- (id.z < std::floor(layer->minZoom)) ||
- (id.z >= std::ceil(layer->maxZoom)) ||
+ (id.overscaledZ < std::floor(layer->minZoom)) ||
+ (id.overscaledZ >= std::ceil(layer->maxZoom)) ||
(layer->visibility == VisibilityType::None)) {
return;
}
@@ -149,8 +150,8 @@ void TileWorker::parseLayer(const StyleLayer* layer) {
if (!geometryLayer) {
// The layer specified in the bucket does not exist. Do nothing.
if (debug::tileParseWarnings) {
- Log::Warning(Event::ParseTile, "layer '%s' does not exist in tile %d/%d/%d",
- layer->sourceLayer.c_str(), id.z, id.x, id.y);
+ Log::Warning(Event::ParseTile, "layer '%s' does not exist in tile %s",
+ layer->sourceLayer.c_str(), util::toString(id).c_str());
}
return;
}
diff --git a/src/mbgl/tile/tile_worker.hpp b/src/mbgl/tile/tile_worker.hpp
index 7c4b147d08..7cb2536c90 100644
--- a/src/mbgl/tile/tile_worker.hpp
+++ b/src/mbgl/tile/tile_worker.hpp
@@ -42,7 +42,7 @@ using TileParseResult = variant<
class TileWorker : public util::noncopyable {
public:
- TileWorker(TileID,
+ TileWorker(const OverscaledTileID&,
std::string sourceID,
SpriteStore&,
GlyphAtlas&,
@@ -66,7 +66,7 @@ private:
void insertBucket(const std::string& name, std::unique_ptr<Bucket>);
std::unique_ptr<CollisionTile> placeLayers(PlacementConfig);
- const TileID id;
+ const OverscaledTileID id;
const std::string sourceID;
SpriteStore& spriteStore;
diff --git a/src/mbgl/tile/vector_tile.cpp b/src/mbgl/tile/vector_tile.cpp
index 25314c114c..27edd85324 100644
--- a/src/mbgl/tile/vector_tile.cpp
+++ b/src/mbgl/tile/vector_tile.cpp
@@ -217,7 +217,8 @@ std::string VectorTileLayer::getName() const {
return name;
}
-VectorTileMonitor::VectorTileMonitor(const TileID& tileID_, float pixelRatio_, const std::string& urlTemplate_, FileSource& fileSource_)
+VectorTileMonitor::VectorTileMonitor(const OverscaledTileID& tileID_, float pixelRatio_,
+ const std::string& urlTemplate_, FileSource& fileSource_)
: tileID(tileID_),
pixelRatio(pixelRatio_),
urlTemplate(urlTemplate_),
@@ -225,7 +226,8 @@ VectorTileMonitor::VectorTileMonitor(const TileID& tileID_, float pixelRatio_, c
}
std::unique_ptr<AsyncRequest> VectorTileMonitor::monitorTile(const GeometryTileMonitor::Callback& callback) {
- const Resource resource = Resource::tile(urlTemplate, pixelRatio, tileID.x, tileID.y, tileID.sourceZ);
+ const Resource resource = Resource::tile(urlTemplate, pixelRatio, tileID.canonical.x,
+ tileID.canonical.y, tileID.canonical.z);
return fileSource.request(resource, [callback, this](Response res) {
if (res.error) {
callback(std::make_exception_ptr(std::runtime_error(res.error->message)), nullptr, res.modified, res.expires);
diff --git a/src/mbgl/tile/vector_tile.hpp b/src/mbgl/tile/vector_tile.hpp
index 153d7dcef4..c0892cd243 100644
--- a/src/mbgl/tile/vector_tile.hpp
+++ b/src/mbgl/tile/vector_tile.hpp
@@ -2,7 +2,7 @@
#define MBGL_MAP_VECTOR_TILE
#include <mbgl/tile/geometry_tile.hpp>
-#include <mbgl/map/tile_id.hpp>
+#include <mbgl/tile/tile_id.hpp>
#include <protozero/pbf_reader.hpp>
#include <map>
@@ -72,12 +72,12 @@ class FileSource;
class VectorTileMonitor : public GeometryTileMonitor {
public:
- VectorTileMonitor(const TileID&, float pixelRatio, const std::string& urlTemplate, FileSource&);
+ VectorTileMonitor(const OverscaledTileID&, float pixelRatio, const std::string& urlTemplate, FileSource&);
std::unique_ptr<AsyncRequest> monitorTile(const GeometryTileMonitor::Callback&) override;
private:
- TileID tileID;
+ OverscaledTileID tileID;
float pixelRatio;
std::string urlTemplate;
FileSource& fileSource;
diff --git a/src/mbgl/tile/vector_tile_data.cpp b/src/mbgl/tile/vector_tile_data.cpp
index 1840dca9fe..77e314e3b9 100644
--- a/src/mbgl/tile/vector_tile_data.cpp
+++ b/src/mbgl/tile/vector_tile_data.cpp
@@ -10,7 +10,7 @@
namespace mbgl {
-VectorTileData::VectorTileData(const TileID& id_,
+VectorTileData::VectorTileData(const OverscaledTileID& id_,
std::unique_ptr<GeometryTileMonitor> monitor_,
std::string sourceID,
Style& style_,
diff --git a/src/mbgl/tile/vector_tile_data.hpp b/src/mbgl/tile/vector_tile_data.hpp
index 52cef71d1b..e785595913 100644
--- a/src/mbgl/tile/vector_tile_data.hpp
+++ b/src/mbgl/tile/vector_tile_data.hpp
@@ -19,7 +19,7 @@ class FeatureIndex;
class VectorTileData : public TileData {
public:
- VectorTileData(const TileID&,
+ VectorTileData(const OverscaledTileID&,
std::unique_ptr<GeometryTileMonitor> monitor,
std::string sourceID,
Style&,