summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2020-04-20 13:15:12 +0300
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2020-04-20 21:54:31 +0300
commit183a634b626cd2a7f6de85108e6852cf03f80bf3 (patch)
treebd4c0e7d1c95446cd995d678aee4dee9430841ff
parent9a698fe3b1a64777835d4d5409c1ff5c43ea2aee (diff)
downloadqtlocation-mapboxgl-183a634b626cd2a7f6de85108e6852cf03f80bf3.tar.gz
[core] TilePyramid::update accepts source impl
-rw-r--r--src/mbgl/annotation/render_annotation_source.cpp6
-rw-r--r--src/mbgl/renderer/sources/render_custom_geometry_source.cpp27
-rw-r--r--src/mbgl/renderer/sources/render_geojson_source.cpp25
-rw-r--r--src/mbgl/renderer/sources/render_raster_dem_source.cpp6
-rw-r--r--src/mbgl/renderer/sources/render_raster_source.cpp6
-rw-r--r--src/mbgl/renderer/sources/render_vector_source.cpp25
-rw-r--r--src/mbgl/renderer/tile_pyramid.cpp10
-rw-r--r--src/mbgl/renderer/tile_pyramid.hpp15
-rw-r--r--test/style/source.test.cpp21
9 files changed, 62 insertions, 79 deletions
diff --git a/src/mbgl/annotation/render_annotation_source.cpp b/src/mbgl/annotation/render_annotation_source.cpp
index b03b7662d8..efa1d1987c 100644
--- a/src/mbgl/annotation/render_annotation_source.cpp
+++ b/src/mbgl/annotation/render_annotation_source.cpp
@@ -33,15 +33,13 @@ void RenderAnnotationSource::update(Immutable<style::Source::Impl> baseImpl_,
needsRendering,
needsRelayout,
parameters,
- SourceType::Annotations,
+ *baseImpl,
util::tileSize,
// Zoom level 16 is typically sufficient for annotations.
// See https://github.com/mapbox/mapbox-gl-native/issues/10197
{0, 16},
optional<LatLngBounds>{},
- [&](const OverscaledTileID& tileID) { return std::make_unique<AnnotationTile>(tileID, parameters); },
- baseImpl->getPrefetchZoomDelta(),
- baseImpl->getMaxOverscaleFactorForParentTiles());
+ [&](const OverscaledTileID& tileID) { return std::make_unique<AnnotationTile>(tileID, parameters); });
}
std::unordered_map<std::string, std::vector<Feature>>
diff --git a/src/mbgl/renderer/sources/render_custom_geometry_source.cpp b/src/mbgl/renderer/sources/render_custom_geometry_source.cpp
index ecb74b6503..fafa81f27a 100644
--- a/src/mbgl/renderer/sources/render_custom_geometry_source.cpp
+++ b/src/mbgl/renderer/sources/render_custom_geometry_source.cpp
@@ -40,21 +40,18 @@ void RenderCustomGeometrySource::update(Immutable<style::Source::Impl> baseImpl_
return;
}
- tilePyramid.update(
- layers,
- needsRendering,
- needsRelayout,
- parameters,
- SourceType::CustomVector,
- util::tileSize,
- impl().getZoomRange(),
- {},
- [&](const OverscaledTileID& tileID) {
- return std::make_unique<CustomGeometryTile>(
- tileID, impl().id, parameters, impl().getTileOptions(), *tileLoader);
- },
- baseImpl->getPrefetchZoomDelta(),
- baseImpl->getMaxOverscaleFactorForParentTiles());
+ tilePyramid.update(layers,
+ needsRendering,
+ needsRelayout,
+ parameters,
+ *baseImpl,
+ util::tileSize,
+ impl().getZoomRange(),
+ {},
+ [&](const OverscaledTileID& tileID) {
+ return std::make_unique<CustomGeometryTile>(
+ tileID, impl().id, parameters, impl().getTileOptions(), *tileLoader);
+ });
}
} // namespace mbgl
diff --git a/src/mbgl/renderer/sources/render_geojson_source.cpp b/src/mbgl/renderer/sources/render_geojson_source.cpp
index 2cf5c9f3b9..7f81ff903a 100644
--- a/src/mbgl/renderer/sources/render_geojson_source.cpp
+++ b/src/mbgl/renderer/sources/render_geojson_source.cpp
@@ -106,20 +106,17 @@ void RenderGeoJSONSource::update(Immutable<style::Source::Impl> baseImpl_,
if (!data_) return;
- tilePyramid.update(
- layers,
- needsRendering,
- needsRelayout,
- parameters,
- SourceType::GeoJSON,
- util::tileSize,
- impl().getZoomRange(),
- optional<LatLngBounds>{},
- [&, data_](const OverscaledTileID& tileID) {
- return std::make_unique<GeoJSONTile>(tileID, impl().id, parameters, data_);
- },
- baseImpl->getPrefetchZoomDelta(),
- baseImpl->getMaxOverscaleFactorForParentTiles());
+ tilePyramid.update(layers,
+ needsRendering,
+ needsRelayout,
+ parameters,
+ *baseImpl,
+ util::tileSize,
+ impl().getZoomRange(),
+ optional<LatLngBounds>{},
+ [&, data_](const OverscaledTileID& tileID) {
+ return std::make_unique<GeoJSONTile>(tileID, impl().id, parameters, data_);
+ });
}
mapbox::util::variant<Value, FeatureCollection>
diff --git a/src/mbgl/renderer/sources/render_raster_dem_source.cpp b/src/mbgl/renderer/sources/render_raster_dem_source.cpp
index 9b2345f8e0..1ad6a6c257 100644
--- a/src/mbgl/renderer/sources/render_raster_dem_source.cpp
+++ b/src/mbgl/renderer/sources/render_raster_dem_source.cpp
@@ -32,13 +32,11 @@ void RenderRasterDEMSource::updateInternal(const Tileset& tileset,
needsRendering,
needsRelayout,
parameters,
- SourceType::RasterDEM,
+ *baseImpl,
impl().getTileSize(),
tileset.zoomRange,
tileset.bounds,
- [&](const OverscaledTileID& tileID) { return std::make_unique<RasterDEMTile>(tileID, parameters, tileset); },
- baseImpl->getPrefetchZoomDelta(),
- baseImpl->getMaxOverscaleFactorForParentTiles());
+ [&](const OverscaledTileID& tileID) { return std::make_unique<RasterDEMTile>(tileID, parameters, tileset); });
algorithm::updateTileMasks(tilePyramid.getRenderedTiles());
}
diff --git a/src/mbgl/renderer/sources/render_raster_source.cpp b/src/mbgl/renderer/sources/render_raster_source.cpp
index f759623cdd..f1a4a61281 100644
--- a/src/mbgl/renderer/sources/render_raster_source.cpp
+++ b/src/mbgl/renderer/sources/render_raster_source.cpp
@@ -30,13 +30,11 @@ void RenderRasterSource::updateInternal(const Tileset& tileset,
needsRendering,
needsRelayout,
parameters,
- SourceType::Raster,
+ *baseImpl,
impl().getTileSize(),
tileset.zoomRange,
tileset.bounds,
- [&](const OverscaledTileID& tileID) { return std::make_unique<RasterTile>(tileID, parameters, tileset); },
- baseImpl->getPrefetchZoomDelta(),
- baseImpl->getMaxOverscaleFactorForParentTiles());
+ [&](const OverscaledTileID& tileID) { return std::make_unique<RasterTile>(tileID, parameters, tileset); });
algorithm::updateTileMasks(tilePyramid.getRenderedTiles());
}
diff --git a/src/mbgl/renderer/sources/render_vector_source.cpp b/src/mbgl/renderer/sources/render_vector_source.cpp
index 3ac16a136f..b581d244d4 100644
--- a/src/mbgl/renderer/sources/render_vector_source.cpp
+++ b/src/mbgl/renderer/sources/render_vector_source.cpp
@@ -21,20 +21,17 @@ void RenderVectorSource::updateInternal(const Tileset& tileset,
const bool needsRendering,
const bool needsRelayout,
const TileParameters& parameters) {
- tilePyramid.update(
- layers,
- needsRendering,
- needsRelayout,
- parameters,
- SourceType::Vector,
- util::tileSize,
- tileset.zoomRange,
- tileset.bounds,
- [&](const OverscaledTileID& tileID) {
- return std::make_unique<VectorTile>(tileID, baseImpl->id, parameters, tileset);
- },
- baseImpl->getPrefetchZoomDelta(),
- baseImpl->getMaxOverscaleFactorForParentTiles());
+ tilePyramid.update(layers,
+ needsRendering,
+ needsRelayout,
+ parameters,
+ *baseImpl,
+ util::tileSize,
+ tileset.zoomRange,
+ tileset.bounds,
+ [&](const OverscaledTileID& tileID) {
+ return std::make_unique<VectorTile>(tileID, baseImpl->id, parameters, tileset);
+ });
}
} // namespace mbgl
diff --git a/src/mbgl/renderer/tile_pyramid.cpp b/src/mbgl/renderer/tile_pyramid.cpp
index 57086cb915..013e6a7f37 100644
--- a/src/mbgl/renderer/tile_pyramid.cpp
+++ b/src/mbgl/renderer/tile_pyramid.cpp
@@ -53,13 +53,11 @@ void TilePyramid::update(const std::vector<Immutable<style::LayerProperties>>& l
const bool needsRendering,
const bool needsRelayout,
const TileParameters& parameters,
- const SourceType type,
+ const style::Source::Impl& sourceImpl,
const uint16_t tileSize,
const Range<uint8_t> zoomRange,
optional<LatLngBounds> bounds,
- std::function<std::unique_ptr<Tile>(const OverscaledTileID&)> createTile,
- const optional<uint8_t>& sourcePrefetchZoomDelta,
- const optional<uint8_t>& maxParentTileOverscaleFactor) {
+ std::function<std::unique_ptr<Tile>(const OverscaledTileID&)> createTile) {
// If we need a relayout, abandon any cached tiles; they're now stale.
if (needsRelayout) {
cache.clear();
@@ -86,11 +84,15 @@ void TilePyramid::update(const std::vector<Immutable<style::LayerProperties>>& l
handleWrapJump(parameters.transformState.getLatLng().longitude());
+ const auto type = sourceImpl.type;
// Determine the overzooming/underzooming amounts and required tiles.
int32_t overscaledZoom = util::coveringZoomLevel(parameters.transformState.getZoom(), type, tileSize);
int32_t tileZoom = overscaledZoom;
int32_t panZoom = zoomRange.max;
+ const optional<uint8_t>& sourcePrefetchZoomDelta = sourceImpl.getPrefetchZoomDelta();
+ const optional<uint8_t>& maxParentTileOverscaleFactor = sourceImpl.getMaxOverscaleFactorForParentTiles();
+
std::vector<OverscaledTileID> idealTiles;
std::vector<OverscaledTileID> panTiles;
diff --git a/src/mbgl/renderer/tile_pyramid.hpp b/src/mbgl/renderer/tile_pyramid.hpp
index 7dd2ab5341..f1c310849a 100644
--- a/src/mbgl/renderer/tile_pyramid.hpp
+++ b/src/mbgl/renderer/tile_pyramid.hpp
@@ -1,11 +1,12 @@
#pragma once
-#include <mbgl/tile/tile_id.hpp>
-#include <mbgl/tile/tile_observer.hpp>
+#include <mbgl/style/layer_properties.hpp>
+#include <mbgl/style/source_impl.hpp>
+#include <mbgl/style/types.hpp>
#include <mbgl/tile/tile.hpp>
#include <mbgl/tile/tile_cache.hpp>
-#include <mbgl/style/types.hpp>
-#include <mbgl/style/layer_properties.hpp>
+#include <mbgl/tile/tile_id.hpp>
+#include <mbgl/tile/tile_observer.hpp>
#include <mbgl/util/mat4.hpp>
#include <mbgl/util/feature.hpp>
@@ -37,13 +38,11 @@ public:
bool needsRendering,
bool needsRelayout,
const TileParameters&,
- style::SourceType type,
+ const style::Source::Impl&,
uint16_t tileSize,
Range<uint8_t> zoomRange,
optional<LatLngBounds> bounds,
- std::function<std::unique_ptr<Tile>(const OverscaledTileID&)> createTile,
- const optional<uint8_t>& sourcePrefetchZoomDelta,
- const optional<uint8_t>& maxParentTileOverscaleFactor);
+ std::function<std::unique_ptr<Tile>(const OverscaledTileID&)> createTile);
const std::map<UnwrappedTileID, std::reference_wrapper<Tile>>& getRenderedTiles() const { return renderedTiles; }
Tile* getTile(const OverscaledTileID&);
diff --git a/test/style/source.test.cpp b/test/style/source.test.cpp
index dae2aef9ca..06afd6427f 100644
--- a/test/style/source.test.cpp
+++ b/test/style/source.test.cpp
@@ -767,18 +767,15 @@ public:
const bool needsRendering,
const bool needsRelayout,
const TileParameters& parameters) override {
- tilePyramid.update(
- layers,
- needsRendering,
- needsRelayout,
- parameters,
- SourceType::Vector,
- util::tileSize,
- tileset.zoomRange,
- tileset.bounds,
- [&](const OverscaledTileID& tileID) { return std::make_unique<FakeTile>(*this, tileID); },
- baseImpl->getPrefetchZoomDelta(),
- baseImpl->getMaxOverscaleFactorForParentTiles());
+ tilePyramid.update(layers,
+ needsRendering,
+ needsRelayout,
+ parameters,
+ *baseImpl,
+ util::tileSize,
+ tileset.zoomRange,
+ tileset.bounds,
+ [&](const OverscaledTileID& tileID) { return std::make_unique<FakeTile>(*this, tileID); });
}
const optional<Tileset>& getTileset() const override {