#ifndef MBGL_STORAGE_RESOURCE #define MBGL_STORAGE_RESOURCE #include #include #include #include namespace mbgl { class Resource { public: enum Kind : uint8_t { Unknown = 0, Style, Source, Tile, Glyphs, SpriteImage, SpriteJSON }; struct TileData { std::string urlTemplate; uint8_t pixelRatio; int32_t x; int32_t y; int8_t z; }; Resource(Kind kind_, const std::string& url_, optional tileData_ = {}) : kind(kind_), url(url_), tileData(std::move(tileData_)) { } static Resource style(const std::string& url); static Resource source(const std::string& url); static Resource tile(const std::string& urlTemplate, float pixelRatio, int32_t x, int32_t y, int8_t z); static Resource glyphs(const std::string& urlTemplate, const FontStack& fontStack, const std::pair& glyphRange); static Resource spriteImage(const std::string& base, float pixelRatio); static Resource spriteJSON(const std::string& base, float pixelRatio); Kind kind; std::string url; // Includes auxiliary data if this is a tile request. optional tileData; optional priorModified = {}; optional priorExpires = {}; optional priorEtag = {}; }; } // namespace mbgl #endif