#pragma once #include #include #include #include #include #include #include #include namespace mln { class Tileset { public: enum class Scheme : bool { XYZ, TMS }; enum class RasterEncoding : std::uint8_t { Mapbox, // Mapbox DEM Terrarium, // Terrarium DEM }; enum class VectorEncoding : std::uint8_t { Mapbox, // Mapbox Vector Tiles (MVT) MLT, // MapLibre Tiles }; std::vector tiles; Range zoomRange; std::string attribution; Scheme scheme; std::optional rasterEncoding; std::optional vectorEncoding; std::optional bounds; Tileset(std::vector tiles_ = std::vector(), Range zoomRange_ = {0, util::DEFAULT_MAX_ZOOM}, std::string attribution_ = {}, Scheme scheme_ = Scheme::XYZ, std::optional rasterEncoding_ = std::nullopt, std::optional encoding_ = std::nullopt) : tiles(std::move(tiles_)), zoomRange(zoomRange_), attribution(std::move(attribution_)), scheme(scheme_), rasterEncoding(rasterEncoding_), vectorEncoding(encoding_) {} // TileJSON also includes center and zoom but they are not used by mbgl. bool operator==(const Tileset&) const = default; bool operator!=(const Tileset&) const = default; }; } // namespace mln