summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2016-06-13 14:45:22 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2016-06-14 11:25:45 -0700
commit6eab895bc0683881f793a3a751fa7470603ae9a0 (patch)
tree5e1b231702bb1c93e6a0c8823500a6e6980b0970 /src
parent615a6685a47609310930890203f41815a5f19d48 (diff)
downloadqtlocation-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.hpp14
-rw-r--r--src/mbgl/style/parser.cpp4
-rw-r--r--src/mbgl/style/source.cpp6
-rw-r--r--src/mbgl/style/sources/geojson_source.cpp4
-rw-r--r--src/mbgl/util/tileset.hpp4
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;