#pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace mbgl { class PaintParameters; class TransformState; class RenderLayer; class RenderedQueryOptions; class SourceQueryOptions; class TileParameters; class SourcePrepareParameters; class TilePyramid { public: TilePyramid(); ~TilePyramid(); bool isLoaded() const; void update(const std::vector>& visibleLayers, bool needsRendering, bool needsRelayout, const TileParameters&, const style::Source::Impl&, uint16_t tileSize, Range zoomRange, optional bounds, std::function(const OverscaledTileID&)> createTile); const std::map>& getRenderedTiles() const { return renderedTiles; } Tile* getTile(const OverscaledTileID&); const Tile* getRenderedTile(const UnwrappedTileID&) const; void handleWrapJump(float lng); std::unordered_map> queryRenderedFeatures( const ScreenLineString& geometry, const TransformState& transformState, const std::unordered_map&, const RenderedQueryOptions& options, const mat4& projMatrix, const mbgl::SourceFeatureState& featureState) 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(); void updateFadingTiles(); bool hasFadingTiles() const { return fadingTiles; } private: void addRenderTile(const UnwrappedTileID& tileID, Tile& tile); std::map> tiles; TileCache cache; std::map> renderedTiles; // Sorted by tile id. TileObserver* observer = nullptr; float prevLng = 0; bool fadingTiles = false; }; } // namespace mbgl