diff options
Diffstat (limited to 'src/mbgl/map/source.hpp')
-rw-r--r-- | src/mbgl/map/source.hpp | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/src/mbgl/map/source.hpp b/src/mbgl/map/source.hpp index b15de0e64..eb7950225 100644 --- a/src/mbgl/map/source.hpp +++ b/src/mbgl/map/source.hpp @@ -29,6 +29,7 @@ class Sprite; class TexturePool; class Style; class Painter; +class Request; class TransformState; class Tile; struct ClipID; @@ -52,12 +53,18 @@ public: class Source : public std::enable_shared_from_this<Source>, private util::noncopyable { public: + class Observer { + public: + virtual ~Observer() = default; + + virtual void onSourceLoaded() = 0; + virtual void onTileLoaded() = 0; + }; + Source(); ~Source(); - void load(const std::string& accessToken, - Environment&, - std::function<void()> callback); + void load(const std::string& accessToken); bool isLoaded() const; void load(MapData&, Environment&, std::function<void()> callback); @@ -68,8 +75,7 @@ public: GlyphStore&, SpriteAtlas&, util::ptr<Sprite>, - TexturePool&, - std::function<void()> callback); + TexturePool&); void invalidateTiles(const std::vector<TileID>&); @@ -82,11 +88,18 @@ public: void setCacheSize(size_t); void onLowMemory(); + void clearRequest(); + + void setObserver(Observer* observer); SourceInfo info; bool enabled; private: + void emitSourceLoaded(); + void emitTileLoaded(); + + void handlePartialTile(const TileID &id, Worker &worker); bool findLoadedChildren(const TileID& id, int32_t maxCoveringZoom, std::forward_list<TileID>& retain); bool findLoadedParent(const TileID& id, int32_t minCoveringZoom, std::forward_list<TileID>& retain); int32_t coveringZoomLevel(const TransformState&) const; @@ -100,8 +113,7 @@ private: SpriteAtlas&, util::ptr<Sprite>, TexturePool&, - const TileID&, - std::function<void()> callback); + const TileID&); TileData::State hasTile(const TileID& id); void updateTilePtrs(); @@ -117,6 +129,9 @@ private: std::vector<Tile*> tilePtrs; std::map<TileID, std::weak_ptr<TileData>> tile_data; TileCache cache; + + Request* req = nullptr; + Observer* observer_ = nullptr; }; } |