1 #pragma once 2 3 #include <mbgl/tile/tile_id.hpp> 4 #include <mbgl/tile/tile_observer.hpp> 5 #include <mbgl/tile/tile.hpp> 6 #include <mbgl/tile/tile_cache.hpp> 7 #include <mbgl/style/types.hpp> 8 #include <mbgl/style/layer_impl.hpp> 9 10 #include <mbgl/util/mat4.hpp> 11 #include <mbgl/util/feature.hpp> 12 #include <mbgl/util/range.hpp> 13 14 #include <memory> 15 #include <unordered_map> 16 #include <vector> 17 #include <map> 18 19 namespace mbgl { 20 21 class PaintParameters; 22 class TransformState; 23 class RenderTile; 24 class RenderLayer; 25 class RenderedQueryOptions; 26 class SourceQueryOptions; 27 class TileParameters; 28 29 class TilePyramid { 30 public: 31 TilePyramid(); 32 ~TilePyramid(); 33 34 bool isLoaded() const; 35 36 void update(const std::vector<Immutable<style::Layer::Impl>>&, 37 bool needsRendering, 38 bool needsRelayout, 39 const TileParameters&, 40 style::SourceType type, 41 uint16_t tileSize, 42 Range<uint8_t> zoomRange, 43 optional<LatLngBounds> bounds, 44 std::function<std::unique_ptr<Tile> (const OverscaledTileID&)> createTile); 45 46 void startRender(PaintParameters&); 47 void finishRender(PaintParameters&); 48 49 std::vector<std::reference_wrapper<RenderTile>> getRenderTiles(); 50 Tile* getTile(const OverscaledTileID&); 51 52 void handleWrapJump(float lng); 53 54 std::unordered_map<std::string, std::vector<Feature>> 55 queryRenderedFeatures(const ScreenLineString& geometry, 56 const TransformState& transformState, 57 const std::vector<const RenderLayer*>&, 58 const RenderedQueryOptions& options, 59 const mat4& projMatrix) const; 60 61 std::vector<Feature> querySourceFeatures(const SourceQueryOptions&) const; 62 63 void setCacheSize(size_t); 64 void reduceMemoryUse(); 65 66 void setObserver(TileObserver*); 67 void dumpDebugLogs() const; 68 69 bool enabled = false; 70 71 std::map<OverscaledTileID, std::unique_ptr<Tile>> tiles; 72 TileCache cache; 73 74 std::vector<RenderTile> renderTiles; 75 76 TileObserver* observer = nullptr; 77 78 float prevLng = 0; 79 }; 80 81 } // namespace mbgl 82