#pragma once #include #include #include #include #include #include #include #include namespace mbgl { class Scheduler; class FileSource; class SpriteLoaderObserver; class SpriteLoader : public util::noncopyable { public: SpriteLoader(float pixelRatio); ~SpriteLoader(); void load(const std::string& url, Scheduler&, FileSource&); void setObserver(SpriteLoaderObserver*); private: void emitSpriteLoadedIfComplete(); // Invoked by SpriteAtlasWorker friend class SpriteLoaderWorker; void onParsed(std::vector>&&); void onError(std::exception_ptr); const float pixelRatio; struct Loader; std::unique_ptr loader; SpriteLoaderObserver* observer = nullptr; }; } // namespace mbgl