#pragma once #include #include #include #include #include #include #include #include #include #include #include #include namespace mbgl { class Painter; class TransformState; class RenderTile; class RenderedQueryOptions; class SourceQueryOptions; namespace style { class UpdateParameters; } // namespace style class TilePyramid { public: TilePyramid(); ~TilePyramid(); bool isLoaded() const; // Called when the camera has changed. May load new tiles, unload obsolete tiles, or // trigger re-placement of existing complete tiles. void updateTiles(const style::UpdateParameters&, SourceType type, uint16_t tileSize, Range zoomRange, std::function (const OverscaledTileID&)> createTile); // Removes all tiles (by putting them into the cache). void removeTiles(); // Remove all tiles and clear the cache. void invalidateTiles(); // Request that all loaded tiles re-run the layout operation on the existing source // data with fresh style information. void reloadTiles(); void startRender(const mat4& projMatrix, const mat4& clipMatrix, const TransformState&); void finishRender(Painter&); std::map& getRenderTiles(); std::unordered_map> queryRenderedFeatures(const ScreenLineString& geometry, const TransformState& transformState, const RenderedQueryOptions& options) const; std::vector querySourceFeatures(const SourceQueryOptions&) const; void setCacheSize(size_t); void onLowMemory(); void setObserver(TileObserver*); void dumpDebugLogs() const; bool enabled = false; void removeStaleTiles(const std::set&); std::map> tiles; TileCache cache; std::map renderTiles; TileObserver* observer = nullptr; }; } // namespace mbgl