#pragma once #include #include #include #include #include #include #include namespace mbgl { class FileSource; class SpriteLoaderObserver; class Scheduler; class SpriteLoader { public: SpriteLoader(float pixelRatio); ~SpriteLoader(); void load(const std::string& url, FileSource&); void setObserver(SpriteLoaderObserver*); private: void emitSpriteLoadedIfComplete(); // Invoked by SpriteAtlasWorker friend class SpriteLoaderWorker; const float pixelRatio; struct Data; std::unique_ptr data; SpriteLoaderObserver* observer = nullptr; std::shared_ptr threadPool; mapbox::base::WeakPtrFactory weakFactory{this}; }; } // namespace mbgl