diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2016-06-13 14:45:22 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2016-06-14 11:25:45 -0700 |
commit | 6eab895bc0683881f793a3a751fa7470603ae9a0 (patch) | |
tree | 5e1b231702bb1c93e6a0c8823500a6e6980b0970 /src | |
parent | 615a6685a47609310930890203f41815a5f19d48 (diff) | |
download | qtlocation-mapboxgl-6eab895bc0683881f793a3a751fa7470603ae9a0.tar.gz |
[core] Use Range<uint8_t> instead of full Tileset where possible
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/algorithm/update_renderables.hpp | 14 | ||||
-rw-r--r-- | src/mbgl/style/parser.cpp | 4 | ||||
-rw-r--r-- | src/mbgl/style/source.cpp | 6 | ||||
-rw-r--r-- | src/mbgl/style/sources/geojson_source.cpp | 4 | ||||
-rw-r--r-- | src/mbgl/util/tileset.hpp | 4 |
5 files changed, 16 insertions, 16 deletions
diff --git a/src/mbgl/algorithm/update_renderables.hpp b/src/mbgl/algorithm/update_renderables.hpp index eebabbd211..d47a919bae 100644 --- a/src/mbgl/algorithm/update_renderables.hpp +++ b/src/mbgl/algorithm/update_renderables.hpp @@ -1,6 +1,7 @@ #pragma once #include <mbgl/tile/tile_id.hpp> +#include <mbgl/util/range.hpp> #include <set> @@ -11,14 +12,13 @@ template <typename GetTileFn, typename CreateTileFn, typename RetainTileFn, typename RenderTileFn, - typename IdealTileIDs, - typename SourceInfo> + typename IdealTileIDs> void updateRenderables(GetTileFn getTile, CreateTileFn createTile, RetainTileFn retainTile, RenderTileFn renderTile, const IdealTileIDs& idealTileIDs, - const SourceInfo& info, + const Range<uint8_t>& zoomRange, const uint8_t dataTileZoom) { std::set<UnwrappedTileID> checked; bool covered; @@ -26,8 +26,8 @@ void updateRenderables(GetTileFn getTile, // for (all in the set of ideal tiles of the source) { for (const auto& idealRenderTileID : idealTileIDs) { - assert(idealRenderTileID.canonical.z >= info.minZoom); - assert(idealRenderTileID.canonical.z <= info.maxZoom); + assert(idealRenderTileID.canonical.z >= zoomRange.min); + assert(idealRenderTileID.canonical.z <= zoomRange.max); assert(dataTileZoom >= idealRenderTileID.canonical.z); const OverscaledTileID idealDataTileID(dataTileZoom, idealRenderTileID.canonical); @@ -48,7 +48,7 @@ void updateRenderables(GetTileFn getTile, retainTile(*data, true); covered = true; overscaledZ = dataTileZoom + 1; - if (overscaledZ > info.maxZoom) { + if (overscaledZ > zoomRange.max) { // We're looking for an overzoomed child tile. const auto childDataTileID = idealDataTileID.scaledTo(overscaledZ); data = getTile(childDataTileID); @@ -76,7 +76,7 @@ void updateRenderables(GetTileFn getTile, if (!covered) { // We couldn't find child tiles that entirely cover the ideal tile. - for (overscaledZ = dataTileZoom - 1; overscaledZ >= info.minZoom; --overscaledZ) { + for (overscaledZ = dataTileZoom - 1; overscaledZ >= zoomRange.min; --overscaledZ) { const auto parentDataTileID = idealDataTileID.scaledTo(overscaledZ); const auto parentRenderTileID = parentDataTileID.unwrapTo(idealRenderTileID.wrap); diff --git a/src/mbgl/style/parser.cpp b/src/mbgl/style/parser.cpp index 8a677d29c8..1ca090643d 100644 --- a/src/mbgl/style/parser.cpp +++ b/src/mbgl/style/parser.cpp @@ -254,8 +254,8 @@ std::unique_ptr<Tileset> parseTileJSON(const std::string& json, const std::strin std::unique_ptr<Tileset> parseTileJSON(const JSValue& value) { auto tileset = std::make_unique<Tileset>(); parseTileJSONMember(value, tileset->tiles, "tiles"); - parseTileJSONMember(value, tileset->minZoom, "minzoom"); - parseTileJSONMember(value, tileset->maxZoom, "maxzoom"); + parseTileJSONMember(value, tileset->zoomRange.min, "minzoom"); + parseTileJSONMember(value, tileset->zoomRange.max, "maxzoom"); parseTileJSONMember(value, tileset->attribution, "attribution"); std::array<double, 4> array; diff --git a/src/mbgl/style/source.cpp b/src/mbgl/style/source.cpp index 639c563a64..56063188a0 100644 --- a/src/mbgl/style/source.cpp +++ b/src/mbgl/style/source.cpp @@ -105,8 +105,8 @@ bool Source::update(const UpdateParameters& parameters) { int32_t dataTileZoom = overscaledZoom; std::vector<UnwrappedTileID> idealTiles; - if (overscaledZoom >= tileset->minZoom) { - int32_t idealZoom = std::min<int32_t>(tileset->maxZoom, overscaledZoom); + if (overscaledZoom >= tileset->zoomRange.min) { + int32_t idealZoom = std::min<int32_t>(tileset->zoomRange.max, overscaledZoom); // Make sure we're not reparsing overzoomed raster tiles. if (type == SourceType::Raster) { @@ -150,7 +150,7 @@ bool Source::update(const UpdateParameters& parameters) { renderTiles.clear(); algorithm::updateRenderables(getTileFn, createTileFn, retainTileFn, renderTileFn, - idealTiles, *tileset, dataTileZoom); + idealTiles, tileset->zoomRange, dataTileZoom); if (type != SourceType::Raster && type != SourceType::Annotations && cache.getSize() == 0) { size_t conservativeCacheSize = diff --git a/src/mbgl/style/sources/geojson_source.cpp b/src/mbgl/style/sources/geojson_source.cpp index d0a11ec0bc..d720e38e51 100644 --- a/src/mbgl/style/sources/geojson_source.cpp +++ b/src/mbgl/style/sources/geojson_source.cpp @@ -53,7 +53,7 @@ std::unique_ptr<GeoJSONSource> GeoJSONSource::parse(const std::string& id, } else if (dataVal.IsObject()) { // We need to parse dataVal as a GeoJSON object geojsonvt = parseGeoJSON(dataVal); - tileset->maxZoom = geojsonvt->options.maxZoom; + tileset->zoomRange.max = geojsonvt->options.maxZoom; } else { Log::Error(Event::ParseStyle, "GeoJSON data must be a URL or an object"); return nullptr; @@ -104,7 +104,7 @@ void GeoJSONSource::load(FileSource& fileSource) { } geojsonvt = style::parseGeoJSON(d); - newTileset->maxZoom = geojsonvt->options.maxZoom; + newTileset->zoomRange.max = geojsonvt->options.maxZoom; invalidateTiles(); diff --git a/src/mbgl/util/tileset.hpp b/src/mbgl/util/tileset.hpp index 972fc51f8c..7e53850dfe 100644 --- a/src/mbgl/util/tileset.hpp +++ b/src/mbgl/util/tileset.hpp @@ -1,6 +1,7 @@ #pragma once #include <mbgl/util/constants.hpp> +#include <mbgl/util/range.hpp> #include <mbgl/util/geo.hpp> #include <array> @@ -13,8 +14,7 @@ namespace mbgl { class Tileset { public: std::vector<std::string> tiles; - uint8_t minZoom = 0; - uint8_t maxZoom = 22; + Range<uint8_t> zoomRange { 0, 22 }; std::string attribution; LatLng center; double zoom = 0; |