#pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include namespace mbgl { class PaintParameters; class TransformState; class RenderTile; class RenderLayer; class RenderedQueryOptions; class SourceQueryOptions; class TileParameters; class TilePyramid { public: TilePyramid(); ~TilePyramid(); bool isLoaded() const; void update(const std::vector>& visibleLayers, bool needsRendering, bool needsRelayout, const TileParameters&, style::SourceType type, uint16_t tileSize, Range zoomRange, optional bounds, std::function (const OverscaledTileID&)> createTile); void upload(gfx::UploadPass&); void prepare(PaintParameters&); void finishRender(PaintParameters&); std::vector> getRenderTiles(); Tile* getTile(const OverscaledTileID&); void handleWrapJump(float lng); std::unordered_map> queryRenderedFeatures(const ScreenLineString& geometry, const TransformState& transformState, const std::vector&, const RenderedQueryOptions& options, const mat4& projMatrix) const; std::vector querySourceFeatures(const SourceQueryOptions&) const; void setCacheSize(size_t); void reduceMemoryUse(); void setObserver(TileObserver*); void dumpDebugLogs() const; const std::map>& getTiles() const { return tiles; } void clearAll(); private: void addRenderTile(const UnwrappedTileID& tileID, Tile& tile); std::map> tiles; TileCache cache; std::list renderTiles; TileObserver* observer = nullptr; float prevLng = 0; }; } // namespace mbgl