summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2016-05-27 13:43:38 +0200
committerKonstantin Käfer <mail@kkaefer.com>2016-06-10 12:42:14 +0200
commit2c7f7fb5669088cbd6d6a7471a377f28195adaf6 (patch)
tree330d9710aecd0162e03fa1430d975bfdcc3e01c3
parent4673a9d6b3d8bd90c1e6fe9b2cd4bcd07519c0f2 (diff)
downloadqtlocation-mapboxgl-2c7f7fb5669088cbd6d6a7471a377f28195adaf6.tar.gz
[core] createTile callback can load optional and required tiles
-rw-r--r--src/mbgl/algorithm/update_renderables.hpp2
-rw-r--r--src/mbgl/style/source.cpp7
-rw-r--r--test/algorithm/update_renderables.cpp350
3 files changed, 182 insertions, 177 deletions
diff --git a/src/mbgl/algorithm/update_renderables.hpp b/src/mbgl/algorithm/update_renderables.hpp
index 22d4205d90..1f58075a58 100644
--- a/src/mbgl/algorithm/update_renderables.hpp
+++ b/src/mbgl/algorithm/update_renderables.hpp
@@ -33,7 +33,7 @@ void updateRenderables(GetTileDataFn getTileData,
const OverscaledTileID idealDataTileID(dataTileZoom, idealRenderTileID.canonical);
auto data = getTileData(idealDataTileID);
if (!data) {
- data = createTileData(idealDataTileID);
+ data = createTileData(idealDataTileID, true);
assert(data);
}
diff --git a/src/mbgl/style/source.cpp b/src/mbgl/style/source.cpp
index dcf8278c0d..89701a2e8a 100644
--- a/src/mbgl/style/source.cpp
+++ b/src/mbgl/style/source.cpp
@@ -285,9 +285,12 @@ bool Source::update(const UpdateParameters& parameters) {
auto getTileDataFn = [this](const OverscaledTileID& dataTileID) -> TileData* {
return getTileData(dataTileID);
};
- auto createTileDataFn = [this, &parameters](const OverscaledTileID& dataTileID) -> TileData* {
+ auto createTileDataFn = [this, &parameters](const OverscaledTileID& dataTileID,
+ bool required) -> TileData* {
if (auto data = createTile(dataTileID, parameters)) {
- data->getTileSource()->setNecessity(TileSource::Necessity::Required);
+ if (required) {
+ data->getTileSource()->setNecessity(TileSource::Necessity::Required);
+ }
return tileDataMap.emplace(dataTileID, std::move(data)).first->second.get();
} else {
return nullptr;
diff --git a/test/algorithm/update_renderables.cpp b/test/algorithm/update_renderables.cpp
index 67c7d79a0a..b9d2303d3b 100644
--- a/test/algorithm/update_renderables.cpp
+++ b/test/algorithm/update_renderables.cpp
@@ -25,16 +25,18 @@ std::ostream& operator<<(std::ostream& os, const GetTileDataAction& action) {
struct CreateTileDataAction {
const OverscaledTileID tileID;
+ bool required;
bool operator==(const CreateTileDataAction& rhs) const {
- return tileID == rhs.tileID;
+ return tileID == rhs.tileID && required == rhs.required;
}
};
std::ostream& operator<<(std::ostream& os, const CreateTileDataAction& action) {
return os << "CreateTileDataAction{ { " << int(action.tileID.overscaledZ) << ", { "
<< int(action.tileID.canonical.z) << ", " << action.tileID.canonical.x << ", "
- << action.tileID.canonical.y << " } } }";
+ << action.tileID.canonical.y << " } }, " << (action.required ? "true" : "false")
+ << " }";
}
struct RetainTileDataAction {
@@ -86,8 +88,8 @@ auto getTileDataFn(ActionLog& log, const T& dataTiles) {
template <typename T>
auto createTileDataFn(ActionLog& log, T& dataTiles) {
- return [&](const auto& id) {
- log.emplace_back(CreateTileDataAction{ id });
+ return [&](const auto& id, bool required) {
+ log.emplace_back(CreateTileDataAction{ id, required });
return (dataTiles[id] = std::make_unique<MockTileData>(id)).get();
};
}
@@ -142,14 +144,14 @@ TEST(UpdateRenderables, SingleTile) {
algorithm::updateRenderables(getTileData, createTileData, retainTileData, renderTile,
source.idealTiles, source.info, 1);
EXPECT_EQ(ActionLog({
- GetTileDataAction{ { 1, { 1, 0, 1 } }, false }, // missing ideal tile
- CreateTileDataAction{ { 1, { 1, 0, 1 } } }, // create ideal tile
- RetainTileDataAction{ { 1, { 1, 0, 1 } } }, //
- GetTileDataAction{ { 2, { 2, 0, 2 } }, false }, // four child tiles
- GetTileDataAction{ { 2, { 2, 0, 3 } }, false }, // ...
- GetTileDataAction{ { 2, { 2, 1, 2 } }, false }, // ...
- GetTileDataAction{ { 2, { 2, 1, 3 } }, false }, // ...
- GetTileDataAction{ { 0, { 0, 0, 0 } }, false }, // parent tile
+ GetTileDataAction{ { 1, { 1, 0, 1 } }, false }, // missing ideal tile
+ CreateTileDataAction{ { 1, { 1, 0, 1 } }, true }, // create ideal tile
+ RetainTileDataAction{ { 1, { 1, 0, 1 } } }, //
+ GetTileDataAction{ { 2, { 2, 0, 2 } }, false }, // four child tiles
+ GetTileDataAction{ { 2, { 2, 0, 3 } }, false }, // ...
+ GetTileDataAction{ { 2, { 2, 1, 2 } }, false }, // ...
+ GetTileDataAction{ { 2, { 2, 1, 3 } }, false }, // ...
+ GetTileDataAction{ { 0, { 0, 0, 0 } }, false }, // parent tile
GetTileDataAction{ { 1, { 1, 1, 1 } }, true }, // found ideal tile
RetainTileDataAction{ { 1, { 1, 1, 1 } } }, //
@@ -240,30 +242,30 @@ TEST(UpdateRenderables, UseParentTile) {
algorithm::updateRenderables(getTileData, createTileData, retainTileData, renderTile,
source.idealTiles, source.info, 1);
EXPECT_EQ(ActionLog({
- GetTileDataAction{ { 1, { 1, 0, 1 } }, false }, // missing ideal tile
- CreateTileDataAction{ { 1, { 1, 0, 1 } } }, //
- RetainTileDataAction{ { 1, { 1, 0, 1 } } }, //
- GetTileDataAction{ { 2, { 2, 0, 2 } }, false }, // child tile
- GetTileDataAction{ { 2, { 2, 0, 3 } }, false }, // ...
- GetTileDataAction{ { 2, { 2, 1, 2 } }, false }, // ...
- GetTileDataAction{ { 2, { 2, 1, 3 } }, false }, // ...
- GetTileDataAction{ { 0, { 0, 0, 0 } }, true }, // parent found!
- RetainTileDataAction{ { 0, { 0, 0, 0 } } }, //
- RenderTileAction{ { 0, 0, 0 }, *tile_0_0_0_0 }, // render parent
- GetTileDataAction{ { 1, { 1, 1, 0 } }, false }, // missing ideal tile
- CreateTileDataAction{ { 1, { 1, 1, 0 } } }, //
- RetainTileDataAction{ { 1, { 1, 1, 0 } } }, //
- GetTileDataAction{ { 2, { 2, 2, 0 } }, false }, // child tile
- GetTileDataAction{ { 2, { 2, 2, 1 } }, false }, // ...
- GetTileDataAction{ { 2, { 2, 3, 0 } }, false }, // ...
- GetTileDataAction{ { 2, { 2, 3, 1 } }, false }, // ...
- GetTileDataAction{ { 1, { 1, 1, 1 } }, false }, // missing tile
- CreateTileDataAction{ { 1, { 1, 1, 1 } } }, //
- RetainTileDataAction{ { 1, { 1, 1, 1 } } }, //
- GetTileDataAction{ { 2, { 2, 2, 2 } }, false }, // child tile
- GetTileDataAction{ { 2, { 2, 2, 3 } }, false }, // ...
- GetTileDataAction{ { 2, { 2, 3, 2 } }, false }, // ...
- GetTileDataAction{ { 2, { 2, 3, 3 } }, false }, // ...
+ GetTileDataAction{ { 1, { 1, 0, 1 } }, false }, // missing ideal tile
+ CreateTileDataAction{ { 1, { 1, 0, 1 } }, true }, //
+ RetainTileDataAction{ { 1, { 1, 0, 1 } } }, //
+ GetTileDataAction{ { 2, { 2, 0, 2 } }, false }, // child tile
+ GetTileDataAction{ { 2, { 2, 0, 3 } }, false }, // ...
+ GetTileDataAction{ { 2, { 2, 1, 2 } }, false }, // ...
+ GetTileDataAction{ { 2, { 2, 1, 3 } }, false }, // ...
+ GetTileDataAction{ { 0, { 0, 0, 0 } }, true }, // parent found!
+ RetainTileDataAction{ { 0, { 0, 0, 0 } } }, //
+ RenderTileAction{ { 0, 0, 0 }, *tile_0_0_0_0 }, // render parent
+ GetTileDataAction{ { 1, { 1, 1, 0 } }, false }, // missing ideal tile
+ CreateTileDataAction{ { 1, { 1, 1, 0 } }, true }, //
+ RetainTileDataAction{ { 1, { 1, 1, 0 } } }, //
+ GetTileDataAction{ { 2, { 2, 2, 0 } }, false }, // child tile
+ GetTileDataAction{ { 2, { 2, 2, 1 } }, false }, // ...
+ GetTileDataAction{ { 2, { 2, 3, 0 } }, false }, // ...
+ GetTileDataAction{ { 2, { 2, 3, 1 } }, false }, // ...
+ GetTileDataAction{ { 1, { 1, 1, 1 } }, false }, // missing tile
+ CreateTileDataAction{ { 1, { 1, 1, 1 } }, true }, //
+ RetainTileDataAction{ { 1, { 1, 1, 1 } } }, //
+ GetTileDataAction{ { 2, { 2, 2, 2 } }, false }, // child tile
+ GetTileDataAction{ { 2, { 2, 2, 3 } }, false }, // ...
+ GetTileDataAction{ { 2, { 2, 3, 2 } }, false }, // ...
+ GetTileDataAction{ { 2, { 2, 3, 3 } }, false }, // ...
}),
log);
}
@@ -283,15 +285,15 @@ TEST(UpdateRenderables, DontUseWrongParentTile) {
algorithm::updateRenderables(getTileData, createTileData, retainTileData, renderTile,
source.idealTiles, source.info, 2);
EXPECT_EQ(ActionLog({
- GetTileDataAction{ { 2, { 2, 0, 0 } }, false }, // missing ideal tile
- CreateTileDataAction{ { 2, { 2, 0, 0 } } }, //
- RetainTileDataAction{ { 2, { 2, 0, 0 } } }, //
- GetTileDataAction{ { 3, { 3, 0, 0 } }, false }, // child tile
- GetTileDataAction{ { 3, { 3, 0, 1 } }, false }, // ...
- GetTileDataAction{ { 3, { 3, 1, 0 } }, false }, // ...
- GetTileDataAction{ { 3, { 3, 1, 1 } }, false }, // ...
- GetTileDataAction{ { 1, { 1, 0, 0 } }, false }, // parent tile, missing
- GetTileDataAction{ { 0, { 0, 0, 0 } }, false }, // parent tile, missing
+ GetTileDataAction{ { 2, { 2, 0, 0 } }, false }, // missing ideal tile
+ CreateTileDataAction{ { 2, { 2, 0, 0 } }, true }, //
+ RetainTileDataAction{ { 2, { 2, 0, 0 } } }, //
+ GetTileDataAction{ { 3, { 3, 0, 0 } }, false }, // child tile
+ GetTileDataAction{ { 3, { 3, 0, 1 } }, false }, // ...
+ GetTileDataAction{ { 3, { 3, 1, 0 } }, false }, // ...
+ GetTileDataAction{ { 3, { 3, 1, 1 } }, false }, // ...
+ GetTileDataAction{ { 1, { 1, 0, 0 } }, false }, // parent tile, missing
+ GetTileDataAction{ { 0, { 0, 0, 0 } }, false }, // parent tile, missing
}),
log);
@@ -311,16 +313,16 @@ TEST(UpdateRenderables, DontUseWrongParentTile) {
GetTileDataAction{ { 1, { 1, 0, 0 } }, false }, // missing parent tile
GetTileDataAction{ { 0, { 0, 0, 0 } }, false }, // missing parent tile
- GetTileDataAction{ { 2, { 2, 2, 0 } }, false }, // missing ideal tile
- CreateTileDataAction{ { 2, { 2, 2, 0 } } }, //
- RetainTileDataAction{ { 2, { 2, 2, 0 } } }, //
- GetTileDataAction{ { 3, { 3, 4, 0 } }, false }, // child tile
- GetTileDataAction{ { 3, { 3, 4, 1 } }, false }, // ...
- GetTileDataAction{ { 3, { 3, 5, 0 } }, false }, // ...
- GetTileDataAction{ { 3, { 3, 5, 1 } }, false }, // ...
- GetTileDataAction{ { 1, { 1, 1, 0 } }, true }, // found parent tile
- RetainTileDataAction{ { 1, { 1, 1, 0 } } }, //
- RenderTileAction{ { 1, 1, 0 }, *tile_1_1_1_0 }, // render parent tile
+ GetTileDataAction{ { 2, { 2, 2, 0 } }, false }, // missing ideal tile
+ CreateTileDataAction{ { 2, { 2, 2, 0 } }, true }, //
+ RetainTileDataAction{ { 2, { 2, 2, 0 } } }, //
+ GetTileDataAction{ { 3, { 3, 4, 0 } }, false }, // child tile
+ GetTileDataAction{ { 3, { 3, 4, 1 } }, false }, // ...
+ GetTileDataAction{ { 3, { 3, 5, 0 } }, false }, // ...
+ GetTileDataAction{ { 3, { 3, 5, 1 } }, false }, // ...
+ GetTileDataAction{ { 1, { 1, 1, 0 } }, true }, // found parent tile
+ RetainTileDataAction{ { 1, { 1, 1, 0 } } }, //
+ RenderTileAction{ { 1, 1, 0 }, *tile_1_1_1_0 }, // render parent tile
}),
log);
}
@@ -390,16 +392,16 @@ TEST(UpdateRenderables, UseOverlappingParentTile) {
algorithm::updateRenderables(getTileData, createTileData, retainTileData, renderTile,
source.idealTiles, source.info, 1);
EXPECT_EQ(ActionLog({
- GetTileDataAction{ { 1, { 1, 0, 0 } }, false }, // ideal tile not found
- CreateTileDataAction{ { 1, { 1, 0, 0 } } }, //
- RetainTileDataAction{ { 1, { 1, 0, 0 } } }, //
- GetTileDataAction{ { 2, { 2, 0, 0 } }, false }, // child tile
- GetTileDataAction{ { 2, { 2, 0, 1 } }, false }, // ...
- GetTileDataAction{ { 2, { 2, 1, 0 } }, false }, // ...
- GetTileDataAction{ { 2, { 2, 1, 1 } }, false }, // ...
- GetTileDataAction{ { 0, { 0, 0, 0 } }, true }, // parent tile found
- RetainTileDataAction{ { 0, { 0, 0, 0 } } }, //
- RenderTileAction{ { 0, 0, 0 }, *tile_0_0_0_0 }, //
+ GetTileDataAction{ { 1, { 1, 0, 0 } }, false }, // ideal tile not found
+ CreateTileDataAction{ { 1, { 1, 0, 0 } }, true }, //
+ RetainTileDataAction{ { 1, { 1, 0, 0 } } }, //
+ GetTileDataAction{ { 2, { 2, 0, 0 } }, false }, // child tile
+ GetTileDataAction{ { 2, { 2, 0, 1 } }, false }, // ...
+ GetTileDataAction{ { 2, { 2, 1, 0 } }, false }, // ...
+ GetTileDataAction{ { 2, { 2, 1, 1 } }, false }, // ...
+ GetTileDataAction{ { 0, { 0, 0, 0 } }, true }, // parent tile found
+ RetainTileDataAction{ { 0, { 0, 0, 0 } } }, //
+ RenderTileAction{ { 0, 0, 0 }, *tile_0_0_0_0 }, //
GetTileDataAction{ { 1, { 1, 0, 1 } }, true }, // ideal tile found
RetainTileDataAction{ { 1, { 1, 0, 1 } } }, //
@@ -426,17 +428,17 @@ TEST(UpdateRenderables, UseChildTiles) {
algorithm::updateRenderables(getTileData, createTileData, retainTileData, renderTile,
source.idealTiles, source.info, 0);
EXPECT_EQ(ActionLog({
- GetTileDataAction{ { 0, { 0, 0, 0 } }, false }, // ideal tile, missing
- CreateTileDataAction{ { 0, { 0, 0, 0 } } }, //
- RetainTileDataAction{ { 0, { 0, 0, 0 } } }, //
- GetTileDataAction{ { 1, { 1, 0, 0 } }, true }, // child tile found
- RetainTileDataAction{ { 1, { 1, 0, 0 } } }, //
- RenderTileAction{ { 1, 0, 0 }, *tile_1_1_0_0 }, // render child tile
- GetTileDataAction{ { 1, { 1, 0, 1 } }, false }, // child tile not found
- GetTileDataAction{ { 1, { 1, 1, 0 } }, true }, // child tile found
- RetainTileDataAction{ { 1, { 1, 1, 0 } } }, //
- RenderTileAction{ { 1, 1, 0 }, *tile_1_1_1_0 }, // render child tile
- GetTileDataAction{ { 1, { 1, 1, 1 } }, false }, // child tile not found
+ GetTileDataAction{ { 0, { 0, 0, 0 } }, false }, // ideal tile, missing
+ CreateTileDataAction{ { 0, { 0, 0, 0 } }, true }, //
+ RetainTileDataAction{ { 0, { 0, 0, 0 } } }, //
+ GetTileDataAction{ { 1, { 1, 0, 0 } }, true }, // child tile found
+ RetainTileDataAction{ { 1, { 1, 0, 0 } } }, //
+ RenderTileAction{ { 1, 0, 0 }, *tile_1_1_0_0 }, // render child tile
+ GetTileDataAction{ { 1, { 1, 0, 1 } }, false }, // child tile not found
+ GetTileDataAction{ { 1, { 1, 1, 0 } }, true }, // child tile found
+ RetainTileDataAction{ { 1, { 1, 1, 0 } } }, //
+ RenderTileAction{ { 1, 1, 0 }, *tile_1_1_1_0 }, // render child tile
+ GetTileDataAction{ { 1, { 1, 1, 1 } }, false }, // child tile not found
// no parent tile of 0 to consider
}),
log);
@@ -460,18 +462,18 @@ TEST(UpdateRenderables, PreferChildTiles) {
algorithm::updateRenderables(getTileData, createTileData, retainTileData, renderTile,
source.idealTiles, source.info, 1);
EXPECT_EQ(ActionLog({
- GetTileDataAction{ { 1, { 1, 0, 0 } }, false }, // ideal tile, not found
- CreateTileDataAction{ { 1, { 1, 0, 0 } } }, //
- RetainTileDataAction{ { 1, { 1, 0, 0 } } }, //
- GetTileDataAction{ { 2, { 2, 0, 0 } }, true }, // child tile, found
- RetainTileDataAction{ { 2, { 2, 0, 0 } } }, //
- RenderTileAction{ { 2, 0, 0 }, *tile_2_2_0_0 }, //
- GetTileDataAction{ { 2, { 2, 0, 1 } }, false }, // child tile, not found
- GetTileDataAction{ { 2, { 2, 1, 0 } }, false }, // ...
- GetTileDataAction{ { 2, { 2, 1, 1 } }, false }, // ...
- GetTileDataAction{ { 0, { 0, 0, 0 } }, true }, // parent tile, found
- RetainTileDataAction{ { 0, { 0, 0, 0 } } }, //
- RenderTileAction{ { 0, 0, 0 }, *tile_0_0_0_0 }, //
+ GetTileDataAction{ { 1, { 1, 0, 0 } }, false }, // ideal tile, not found
+ CreateTileDataAction{ { 1, { 1, 0, 0 } }, true }, //
+ RetainTileDataAction{ { 1, { 1, 0, 0 } } }, //
+ GetTileDataAction{ { 2, { 2, 0, 0 } }, true }, // child tile, found
+ RetainTileDataAction{ { 2, { 2, 0, 0 } } }, //
+ RenderTileAction{ { 2, 0, 0 }, *tile_2_2_0_0 }, //
+ GetTileDataAction{ { 2, { 2, 0, 1 } }, false }, // child tile, not found
+ GetTileDataAction{ { 2, { 2, 1, 0 } }, false }, // ...
+ GetTileDataAction{ { 2, { 2, 1, 1 } }, false }, // ...
+ GetTileDataAction{ { 0, { 0, 0, 0 } }, true }, // parent tile, found
+ RetainTileDataAction{ { 0, { 0, 0, 0 } } }, //
+ RenderTileAction{ { 0, 0, 0 }, *tile_0_0_0_0 }, //
}),
log);
@@ -570,18 +572,18 @@ TEST(UpdateRenderables, UseParentAndChildTiles) {
algorithm::updateRenderables(getTileData, createTileData, retainTileData, renderTile,
source.idealTiles, source.info, 1);
EXPECT_EQ(ActionLog({
- GetTileDataAction{ { 1, { 1, 0, 0 } }, false }, // ideal tile, missing
- CreateTileDataAction{ { 1, { 1, 0, 0 } } }, //
- RetainTileDataAction{ { 1, { 1, 0, 0 } } }, //
- GetTileDataAction{ { 2, { 2, 0, 0 } }, true }, //
- RetainTileDataAction{ { 2, { 2, 0, 0 } } }, //
- RenderTileAction{ { 2, 0, 0 }, *tile_2_2_0_0 }, //
- GetTileDataAction{ { 2, { 2, 0, 1 } }, false }, //
- GetTileDataAction{ { 2, { 2, 1, 0 } }, false }, //
- GetTileDataAction{ { 2, { 2, 1, 1 } }, false }, //
- GetTileDataAction{ { 0, { 0, 0, 0 } }, true }, //
- RetainTileDataAction{ { 0, { 0, 0, 0 } } }, //
- RenderTileAction{ { 0, 0, 0 }, *tile_0_0_0_0 }, //
+ GetTileDataAction{ { 1, { 1, 0, 0 } }, false }, // ideal tile, missing
+ CreateTileDataAction{ { 1, { 1, 0, 0 } }, true }, //
+ RetainTileDataAction{ { 1, { 1, 0, 0 } } }, //
+ GetTileDataAction{ { 2, { 2, 0, 0 } }, true }, //
+ RetainTileDataAction{ { 2, { 2, 0, 0 } } }, //
+ RenderTileAction{ { 2, 0, 0 }, *tile_2_2_0_0 }, //
+ GetTileDataAction{ { 2, { 2, 0, 1 } }, false }, //
+ GetTileDataAction{ { 2, { 2, 1, 0 } }, false }, //
+ GetTileDataAction{ { 2, { 2, 1, 1 } }, false }, //
+ GetTileDataAction{ { 0, { 0, 0, 0 } }, true }, //
+ RetainTileDataAction{ { 0, { 0, 0, 0 } } }, //
+ RenderTileAction{ { 0, 0, 0 }, *tile_0_0_0_0 }, //
}),
log);
@@ -621,13 +623,13 @@ TEST(UpdateRenderables, DontUseTilesLowerThanMinzoom) {
algorithm::updateRenderables(getTileData, createTileData, retainTileData, renderTile,
source.idealTiles, source.info, 2);
EXPECT_EQ(ActionLog({
- GetTileDataAction{ { 2, { 2, 0, 0 } }, false }, // ideal tile, missing
- CreateTileDataAction{ { 2, { 2, 0, 0 } } }, //
- RetainTileDataAction{ { 2, { 2, 0, 0 } } }, //
- GetTileDataAction{ { 3, { 3, 0, 0 } }, false }, //
- GetTileDataAction{ { 3, { 3, 0, 1 } }, false }, //
- GetTileDataAction{ { 3, { 3, 1, 0 } }, false }, //
- GetTileDataAction{ { 3, { 3, 1, 1 } }, false }, //
+ GetTileDataAction{ { 2, { 2, 0, 0 } }, false }, // ideal tile, missing
+ CreateTileDataAction{ { 2, { 2, 0, 0 } }, true }, //
+ RetainTileDataAction{ { 2, { 2, 0, 0 } } }, //
+ GetTileDataAction{ { 3, { 3, 0, 0 } }, false }, //
+ GetTileDataAction{ { 3, { 3, 0, 1 } }, false }, //
+ GetTileDataAction{ { 3, { 3, 1, 0 } }, false }, //
+ GetTileDataAction{ { 3, { 3, 1, 1 } }, false }, //
// no requests for zoom 1 tiles
}),
log);
@@ -650,9 +652,9 @@ TEST(UpdateRenderables, UseOverzoomedTileAfterMaxzoom) {
algorithm::updateRenderables(getTileData, createTileData, retainTileData, renderTile,
source.idealTiles, source.info, 2);
EXPECT_EQ(ActionLog({
- GetTileDataAction{ { 2, { 2, 0, 0 } }, false }, // ideal tile, missing
- CreateTileDataAction{ { 2, { 2, 0, 0 } } }, //
- RetainTileDataAction{ { 2, { 2, 0, 0 } } }, //
+ GetTileDataAction{ { 2, { 2, 0, 0 } }, false }, // ideal tile, missing
+ CreateTileDataAction{ { 2, { 2, 0, 0 } }, true }, //
+ RetainTileDataAction{ { 2, { 2, 0, 0 } } }, //
GetTileDataAction{ { 3, { 2, 0, 0 } }, false }, // overzoomed tile, not children!
GetTileDataAction{ { 1, { 1, 0, 0 } }, false }, //
GetTileDataAction{ { 0, { 0, 0, 0 } }, false }, //
@@ -666,13 +668,13 @@ TEST(UpdateRenderables, UseOverzoomedTileAfterMaxzoom) {
algorithm::updateRenderables(getTileData, createTileData, retainTileData, renderTile,
source.idealTiles, source.info, 3);
EXPECT_EQ(ActionLog({
- GetTileDataAction{ { 3, { 2, 0, 0 } }, false }, // ideal tile, missing
- CreateTileDataAction{ { 3, { 2, 0, 0 } } }, //
- RetainTileDataAction{ { 3, { 2, 0, 0 } } }, //
- GetTileDataAction{ { 4, { 2, 0, 0 } }, false }, //
- GetTileDataAction{ { 2, { 2, 0, 0 } }, true }, //
- RetainTileDataAction{ { 2, { 2, 0, 0 } } }, //
- RenderTileAction{ { 2, 0, 0 }, *tile_2_2_0_0 }, //
+ GetTileDataAction{ { 3, { 2, 0, 0 } }, false }, // ideal tile, missing
+ CreateTileDataAction{ { 3, { 2, 0, 0 } }, true }, //
+ RetainTileDataAction{ { 3, { 2, 0, 0 } } }, //
+ GetTileDataAction{ { 4, { 2, 0, 0 } }, false }, //
+ GetTileDataAction{ { 2, { 2, 0, 0 } }, true }, //
+ RetainTileDataAction{ { 2, { 2, 0, 0 } } }, //
+ RenderTileAction{ { 2, 0, 0 }, *tile_2_2_0_0 }, //
}),
log);
@@ -709,12 +711,12 @@ TEST(UpdateRenderables, UseOverzoomedTileAfterMaxzoom) {
algorithm::updateRenderables(getTileData, createTileData, retainTileData, renderTile,
source.idealTiles, source.info, 2);
EXPECT_EQ(ActionLog({
- GetTileDataAction{ { 2, { 2, 0, 0 } }, false }, //
- CreateTileDataAction{ { 2, { 2, 0, 0 } } }, //
- RetainTileDataAction{ { 2, { 2, 0, 0 } } }, //
- GetTileDataAction{ { 3, { 2, 0, 0 } }, true }, // use overzoomed tile!
- RetainTileDataAction{ { 3, { 2, 0, 0 } } }, //
- RenderTileAction{ { 2, 0, 0 }, *tile_3_2_0_0 }, //
+ GetTileDataAction{ { 2, { 2, 0, 0 } }, false }, //
+ CreateTileDataAction{ { 2, { 2, 0, 0 } }, true }, //
+ RetainTileDataAction{ { 2, { 2, 0, 0 } } }, //
+ GetTileDataAction{ { 3, { 2, 0, 0 } }, true }, // use overzoomed tile!
+ RetainTileDataAction{ { 3, { 2, 0, 0 } } }, //
+ RenderTileAction{ { 2, 0, 0 }, *tile_3_2_0_0 }, //
}),
log);
}
@@ -751,13 +753,13 @@ TEST(UpdateRenderables, AscendToNonOverzoomedTiles) {
algorithm::updateRenderables(getTileData, createTileData, retainTileData, renderTile,
source.idealTiles, source.info, 3);
EXPECT_EQ(ActionLog({
- GetTileDataAction{ { 3, { 2, 0, 0 } }, false }, //
- CreateTileDataAction{ { 3, { 2, 0, 0 } } }, //
- RetainTileDataAction{ { 3, { 2, 0, 0 } } }, //
- GetTileDataAction{ { 4, { 2, 0, 0 } }, false }, // prefer using a child first
- GetTileDataAction{ { 2, { 2, 0, 0 } }, true }, //
- RetainTileDataAction{ { 2, { 2, 0, 0 } } }, //
- RenderTileAction{ { 2, 0, 0 }, *tile_2_2_0_0 }, //
+ GetTileDataAction{ { 3, { 2, 0, 0 } }, false }, //
+ CreateTileDataAction{ { 3, { 2, 0, 0 } }, true }, //
+ RetainTileDataAction{ { 3, { 2, 0, 0 } } }, //
+ GetTileDataAction{ { 4, { 2, 0, 0 } }, false }, // prefer using a child first
+ GetTileDataAction{ { 2, { 2, 0, 0 } }, true }, //
+ RetainTileDataAction{ { 2, { 2, 0, 0 } } }, //
+ RenderTileAction{ { 2, 0, 0 }, *tile_2_2_0_0 }, //
}),
log);
@@ -795,29 +797,29 @@ TEST(UpdateRenderables, DoNotAscendMultipleTimesIfNotFound) {
algorithm::updateRenderables(getTileData, createTileData, retainTileData, renderTile,
source.idealTiles, source.info, 8);
EXPECT_EQ(ActionLog({
- GetTileDataAction{ { 8, { 8, 0, 0 } }, false }, // ideal tile
- CreateTileDataAction{ { 8, { 8, 0, 0 } } }, //
- RetainTileDataAction{ { 8, { 8, 0, 0 } } }, //
- GetTileDataAction{ { 9, { 9, 0, 0 } }, false }, // child tile
- GetTileDataAction{ { 9, { 9, 0, 1 } }, false }, // ...
- GetTileDataAction{ { 9, { 9, 1, 0 } }, false }, // ...
- GetTileDataAction{ { 9, { 9, 1, 1 } }, false }, // ...
- GetTileDataAction{ { 7, { 7, 0, 0 } }, false }, // ascent
- GetTileDataAction{ { 6, { 6, 0, 0 } }, false }, // ...
- GetTileDataAction{ { 5, { 5, 0, 0 } }, false }, // ...
- GetTileDataAction{ { 4, { 4, 0, 0 } }, false }, // ...
- GetTileDataAction{ { 3, { 3, 0, 0 } }, false }, // ...
- GetTileDataAction{ { 2, { 2, 0, 0 } }, false }, // ...
- GetTileDataAction{ { 1, { 1, 0, 0 } }, false }, // ...
- GetTileDataAction{ { 0, { 0, 0, 0 } }, false }, // ...
-
- GetTileDataAction{ { 8, { 8, 1, 0 } }, false }, // ideal tile
- CreateTileDataAction{ { 8, { 8, 1, 0 } } }, //
- RetainTileDataAction{ { 8, { 8, 1, 0 } } }, //
- GetTileDataAction{ { 9, { 9, 2, 0 } }, false }, // child tile
- GetTileDataAction{ { 9, { 9, 2, 1 } }, false }, // ...
- GetTileDataAction{ { 9, { 9, 3, 0 } }, false }, // ...
- GetTileDataAction{ { 9, { 9, 3, 1 } }, false }, // ...
+ GetTileDataAction{ { 8, { 8, 0, 0 } }, false }, // ideal tile
+ CreateTileDataAction{ { 8, { 8, 0, 0 } }, true }, //
+ RetainTileDataAction{ { 8, { 8, 0, 0 } } }, //
+ GetTileDataAction{ { 9, { 9, 0, 0 } }, false }, // child tile
+ GetTileDataAction{ { 9, { 9, 0, 1 } }, false }, // ...
+ GetTileDataAction{ { 9, { 9, 1, 0 } }, false }, // ...
+ GetTileDataAction{ { 9, { 9, 1, 1 } }, false }, // ...
+ GetTileDataAction{ { 7, { 7, 0, 0 } }, false }, // ascent
+ GetTileDataAction{ { 6, { 6, 0, 0 } }, false }, // ...
+ GetTileDataAction{ { 5, { 5, 0, 0 } }, false }, // ...
+ GetTileDataAction{ { 4, { 4, 0, 0 } }, false }, // ...
+ GetTileDataAction{ { 3, { 3, 0, 0 } }, false }, // ...
+ GetTileDataAction{ { 2, { 2, 0, 0 } }, false }, // ...
+ GetTileDataAction{ { 1, { 1, 0, 0 } }, false }, // ...
+ GetTileDataAction{ { 0, { 0, 0, 0 } }, false }, // ...
+
+ GetTileDataAction{ { 8, { 8, 1, 0 } }, false }, // ideal tile
+ CreateTileDataAction{ { 8, { 8, 1, 0 } }, true }, //
+ RetainTileDataAction{ { 8, { 8, 1, 0 } } }, //
+ GetTileDataAction{ { 9, { 9, 2, 0 } }, false }, // child tile
+ GetTileDataAction{ { 9, { 9, 2, 1 } }, false }, // ...
+ GetTileDataAction{ { 9, { 9, 3, 0 } }, false }, // ...
+ GetTileDataAction{ { 9, { 9, 3, 1 } }, false }, // ...
// no second ascent to 0
}),
log);
@@ -902,27 +904,27 @@ TEST(UpdateRenderables, WrappedTiles) {
algorithm::updateRenderables(getTileData, createTileData, retainTileData, renderTile,
source.idealTiles, source.info, 1);
EXPECT_EQ(ActionLog({
- GetTileDataAction{ { 1, { 1, 1, 0 } }, false }, // ideal tile 1/-1/0
- CreateTileDataAction{ { 1, { 1, 1, 0 } } }, //
- RetainTileDataAction{ { 1, { 1, 1, 0 } } }, //
- GetTileDataAction{ { 2, { 2, 2, 0 } }, false }, //
- GetTileDataAction{ { 2, { 2, 2, 1 } }, false }, //
- GetTileDataAction{ { 2, { 2, 3, 0 } }, false }, //
- GetTileDataAction{ { 2, { 2, 3, 1 } }, false }, //
- GetTileDataAction{ { 0, { 0, 0, 0 } }, true }, //
- RetainTileDataAction{ { 0, { 0, 0, 0 } } }, //
- RenderTileAction{ { 0, -1, 0 }, *tile_0_0_0_0 }, //
-
- GetTileDataAction{ { 1, { 1, 0, 0 } }, false }, // ideal tile 1/0/0
- CreateTileDataAction{ { 1, { 1, 0, 0 } } }, //
- RetainTileDataAction{ { 1, { 1, 0, 0 } } }, //
- GetTileDataAction{ { 2, { 2, 0, 0 } }, false }, //
- GetTileDataAction{ { 2, { 2, 0, 1 } }, false }, //
- GetTileDataAction{ { 2, { 2, 1, 0 } }, false }, //
- GetTileDataAction{ { 2, { 2, 1, 1 } }, false }, //
- GetTileDataAction{ { 0, { 0, 0, 0 } }, true }, //
- RetainTileDataAction{ { 0, { 0, 0, 0 } } }, //
- RenderTileAction{ { 0, 0, 0 }, *tile_0_0_0_0 }, //
+ GetTileDataAction{ { 1, { 1, 1, 0 } }, false }, // ideal tile 1/-1/0
+ CreateTileDataAction{ { 1, { 1, 1, 0 } }, true }, //
+ RetainTileDataAction{ { 1, { 1, 1, 0 } } }, //
+ GetTileDataAction{ { 2, { 2, 2, 0 } }, false }, //
+ GetTileDataAction{ { 2, { 2, 2, 1 } }, false }, //
+ GetTileDataAction{ { 2, { 2, 3, 0 } }, false }, //
+ GetTileDataAction{ { 2, { 2, 3, 1 } }, false }, //
+ GetTileDataAction{ { 0, { 0, 0, 0 } }, true }, //
+ RetainTileDataAction{ { 0, { 0, 0, 0 } } }, //
+ RenderTileAction{ { 0, -1, 0 }, *tile_0_0_0_0 }, //
+
+ GetTileDataAction{ { 1, { 1, 0, 0 } }, false }, // ideal tile 1/0/0
+ CreateTileDataAction{ { 1, { 1, 0, 0 } }, true }, //
+ RetainTileDataAction{ { 1, { 1, 0, 0 } } }, //
+ GetTileDataAction{ { 2, { 2, 0, 0 } }, false }, //
+ GetTileDataAction{ { 2, { 2, 0, 1 } }, false }, //
+ GetTileDataAction{ { 2, { 2, 1, 0 } }, false }, //
+ GetTileDataAction{ { 2, { 2, 1, 1 } }, false }, //
+ GetTileDataAction{ { 0, { 0, 0, 0 } }, true }, //
+ RetainTileDataAction{ { 0, { 0, 0, 0 } } }, //
+ RenderTileAction{ { 0, 0, 0 }, *tile_0_0_0_0 }, //
GetTileDataAction{ { 1, { 1, 1, 0 } }, true }, // ideal tile 1/1/0
RetainTileDataAction{ { 1, { 1, 1, 0 } } }, //