From ebff2234e42df1ad14c5e567f87271bc4d9274b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20K=C3=A4fer?= Date: Thu, 12 May 2016 11:24:46 +0200 Subject: [core] remove unused template definition --- src/mbgl/algorithm/update_renderables.cpp | 10 --- src/mbgl/algorithm/update_renderables.hpp | 83 +++++++++++++++++++++++- src/mbgl/algorithm/update_renderables_impl.hpp | 90 -------------------------- 3 files changed, 80 insertions(+), 103 deletions(-) delete mode 100644 src/mbgl/algorithm/update_renderables.cpp delete mode 100644 src/mbgl/algorithm/update_renderables_impl.hpp (limited to 'src/mbgl/algorithm') diff --git a/src/mbgl/algorithm/update_renderables.cpp b/src/mbgl/algorithm/update_renderables.cpp deleted file mode 100644 index 7b571308c7..0000000000 --- a/src/mbgl/algorithm/update_renderables.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include -#include - -namespace mbgl { -namespace algorithm { - -//template void updateRenderables(StyleLayer& layer, const uint8_t z); - -} // namespace algorithm -} // namespace mbgl diff --git a/src/mbgl/algorithm/update_renderables.hpp b/src/mbgl/algorithm/update_renderables.hpp index 898f9e68d3..8948b8eafe 100644 --- a/src/mbgl/algorithm/update_renderables.hpp +++ b/src/mbgl/algorithm/update_renderables.hpp @@ -1,12 +1,89 @@ #pragma once -#include +#include + +#include namespace mbgl { namespace algorithm { -template -void updateRenderables(Layer& layer, const uint8_t z); +namespace { + +template +bool tryTile(const UnwrappedTileID& renderTileID, + const OverscaledTileID& dataTileID, + const DataTiles& dataTiles, + Renderables& renderables) { + if (renderables.find(renderTileID) == renderables.end()) { + const auto it = dataTiles.find(dataTileID); + if (it == dataTiles.end() || !it->second->isRenderable()) { + return false; + } + + using Renderable = typename Renderables::mapped_type; + renderables.emplace(renderTileID, Renderable{ renderTileID, *it->second }); + } + + return true; +} + +} // namespace + +template +std::map updateRenderables(const DataTiles& dataTiles, + const IdealTileIDs& idealTileIDs, + const SourceInfo& info, + const uint8_t z) { + std::map renderables; + + // for (all in the set of ideal tiles of the source) { + for (const auto& renderTileID : idealTileIDs) { + assert(renderTileID.canonical.z >= info.minZoom); + assert(renderTileID.canonical.z <= info.maxZoom); + assert(z >= renderTileID.canonical.z); + const auto wrap = renderTileID.wrap; + const OverscaledTileID dataTileID(z, renderTileID.canonical); + + // if (source has the tile and bucket is loaded) { + if (!tryTile(renderTileID, dataTileID, dataTiles, renderables)) { + // The source doesn't have the tile, or the bucket isn't loaded. + bool covered = true; + int32_t overscaledZ = z + 1; + if (overscaledZ > info.maxZoom) { + // We're looking for an overzoomed child tile. + const auto childDataTileID = dataTileID.scaledTo(overscaledZ); + if (!tryTile(renderTileID, childDataTileID, dataTiles, renderables)) { + covered = false; + } + } else { + // Check all four actual child tiles. + for (const auto& childTileID : dataTileID.canonical.children()) { + const OverscaledTileID childDataTileID(overscaledZ, childTileID); + const UnwrappedTileID childRenderTileID(wrap, childTileID); + if (!tryTile(childRenderTileID, childDataTileID, dataTiles, renderables)) { + // At least one child tile doesn't exist, so we are going to look for + // parents as well. + covered = false; + } + } + } + + if (!covered) { + // We couldn't find child tiles that entirely cover the ideal tile. + for (overscaledZ = z - 1; overscaledZ >= info.minZoom; --overscaledZ) { + const auto parentDataTileID = dataTileID.scaledTo(overscaledZ); + const auto parentRenderTileID = parentDataTileID.unwrapTo(renderTileID.wrap); + if (tryTile(parentRenderTileID, parentDataTileID, dataTiles, renderables)) { + // Break parent tile ascent, since we found one. + break; + } + } + } + } + } + + return renderables; +} } // namespace algorithm } // namespace mbgl diff --git a/src/mbgl/algorithm/update_renderables_impl.hpp b/src/mbgl/algorithm/update_renderables_impl.hpp deleted file mode 100644 index 0f97801021..0000000000 --- a/src/mbgl/algorithm/update_renderables_impl.hpp +++ /dev/null @@ -1,90 +0,0 @@ -#pragma once - -#include -#include - -#include - -namespace mbgl { -namespace algorithm { - -namespace { - -template -bool tryTile(const UnwrappedTileID& renderTileID, - const OverscaledTileID& dataTileID, - const DataTiles& dataTiles, - Renderables& renderables) { - if (renderables.find(renderTileID) == renderables.end()) { - const auto it = dataTiles.find(dataTileID); - if (it == dataTiles.end() || !it->second->isRenderable()) { - return false; - } - - using Renderable = typename Renderables::mapped_type; - renderables.emplace(renderTileID, Renderable{ renderTileID, *it->second }); - } - - return true; -} - -} // namespace - -template -std::map updateRenderables(const DataTiles& dataTiles, - const IdealTileIDs& idealTileIDs, - const SourceInfo& info, - const uint8_t z) { - std::map renderables; - - // for (all in the set of ideal tiles of the source) { - for (const auto& renderTileID : idealTileIDs) { - assert(renderTileID.canonical.z >= info.minZoom); - assert(renderTileID.canonical.z <= info.maxZoom); - assert(z >= renderTileID.canonical.z); - const auto wrap = renderTileID.wrap; - const OverscaledTileID dataTileID(z, renderTileID.canonical); - - // if (source has the tile and bucket is loaded) { - if (!tryTile(renderTileID, dataTileID, dataTiles, renderables)) { - // The source doesn't have the tile, or the bucket isn't loaded. - bool covered = true; - int32_t overscaledZ = z + 1; - if (overscaledZ > info.maxZoom) { - // We're looking for an overzoomed child tile. - const auto childDataTileID = dataTileID.scaledTo(overscaledZ); - if (!tryTile(renderTileID, childDataTileID, dataTiles, renderables)) { - covered = false; - } - } else { - // Check all four actual child tiles. - for (const auto& childTileID : dataTileID.canonical.children()) { - const OverscaledTileID childDataTileID(overscaledZ, childTileID); - const UnwrappedTileID childRenderTileID(wrap, childTileID); - if (!tryTile(childRenderTileID, childDataTileID, dataTiles, renderables)) { - // At least one child tile doesn't exist, so we are going to look for - // parents as well. - covered = false; - } - } - } - - if (!covered) { - // We couldn't find child tiles that entirely cover the ideal tile. - for (overscaledZ = z - 1; overscaledZ >= info.minZoom; --overscaledZ) { - const auto parentDataTileID = dataTileID.scaledTo(overscaledZ); - const auto parentRenderTileID = parentDataTileID.unwrapTo(renderTileID.wrap); - if (tryTile(parentRenderTileID, parentDataTileID, dataTiles, renderables)) { - // Break parent tile ascent, since we found one. - break; - } - } - } - } - } - - return renderables; -} - -} // namespace algorithm -} // namespace mbgl -- cgit v1.2.1