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
19namespace mbgl {
20
21class PaintParameters;
22class TransformState;
23class RenderTile;
24class RenderLayer;
25class RenderedQueryOptions;
26class SourceQueryOptions;
27class TileParameters;
28
29class TilePyramid {
30public:
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

source code of qtlocation/src/3rdparty/mapbox-gl-native/src/mbgl/renderer/tile_pyramid.hpp