#include #include #include #include #include #include #include namespace mbgl { using namespace style; class TileSourceRenderItem : public RenderItem { public: TileSourceRenderItem(Immutable> renderTiles_, std::string name_) : renderTiles(std::move(renderTiles_)) , name(std::move(name_)) {} private: void upload(gfx::UploadPass&) const override; void render(PaintParameters&) const override; bool hasRenderPass(RenderPass) const override { return false; } const std::string& getName() const override { return name; } Immutable> renderTiles; std::string name; }; void TileSourceRenderItem::upload(gfx::UploadPass& parameters) const { for (auto& tile : *renderTiles) { tile.upload(parameters); } } void TileSourceRenderItem::render(PaintParameters& parameters) const { for (auto& tile : *renderTiles) { tile.finishRender(parameters); } } RenderTileSource::RenderTileSource(Immutable impl_) : RenderSource(std::move(impl_)) , renderTiles(makeMutable>()) { tilePyramid.setObserver(this); } RenderTileSource::~RenderTileSource() = default; bool RenderTileSource::isLoaded() const { return tilePyramid.isLoaded(); } std::unique_ptr RenderTileSource::createRenderItem() { return std::make_unique(renderTiles, baseImpl->id); } void RenderTileSource::prepare(const SourcePrepareParameters& parameters) { auto tiles = makeMutable>(); tiles->reserve(tilePyramid.getRenderedTiles().size()); for (auto& entry : tilePyramid.getRenderedTiles()) { tiles->emplace_back(entry.first, entry.second); tiles->back().prepare(parameters); } renderTiles = std::move(tiles); } void RenderTileSource::updateFadingTiles() { tilePyramid.updateFadingTiles(); } bool RenderTileSource::hasFadingTiles() const { return tilePyramid.hasFadingTiles(); } RenderTiles RenderTileSource::getRenderTiles() { return { renderTiles->begin(), renderTiles->end() }; } const Tile* RenderTileSource::getRenderedTile(const UnwrappedTileID& tileID) const { return tilePyramid.getRenderedTile(tileID); } std::unordered_map> RenderTileSource::queryRenderedFeatures(const ScreenLineString& geometry, const TransformState& transformState, const std::unordered_map& layers, const RenderedQueryOptions& options, const mat4& projMatrix) const { return tilePyramid.queryRenderedFeatures(geometry, transformState, layers, options, projMatrix); } std::vector RenderTileSource::querySourceFeatures(const SourceQueryOptions& options) const { return tilePyramid.querySourceFeatures(options); } void RenderTileSource::reduceMemoryUse() { tilePyramid.reduceMemoryUse(); } void RenderTileSource::dumpDebugLogs() const { tilePyramid.dumpDebugLogs(); } } // namespace mbgl