1 #pragma once 2 3 #include <mbgl/util/noncopyable.hpp> 4 #include <mbgl/style/image.hpp> 5 6 #include <string> 7 #include <map> 8 #include <set> 9 #include <vector> 10 #include <array> 11 #include <memory> 12 13 namespace mbgl { 14 15 class Scheduler; 16 class FileSource; 17 class SpriteLoaderObserver; 18 19 class SpriteLoader : public util::noncopyable { 20 public: 21 SpriteLoader(float pixelRatio); 22 ~SpriteLoader(); 23 24 void load(const std::string& url, Scheduler&, FileSource&); 25 26 void setObserver(SpriteLoaderObserver*); 27 28 private: 29 void emitSpriteLoadedIfComplete(); 30 31 // Invoked by SpriteAtlasWorker 32 friend class SpriteLoaderWorker; 33 void onParsed(std::vector<std::unique_ptr<style::Image>>&&); 34 void onError(std::exception_ptr); 35 36 const float pixelRatio; 37 38 struct Loader; 39 std::unique_ptr<Loader> loader; 40 41 SpriteLoaderObserver* observer = nullptr; 42 }; 43 44 } // namespace mbgl 45