1 #pragma once
2 
3 #include <mbgl/style/source.hpp>
4 #include <mbgl/util/tileset.hpp>
5 #include <mbgl/util/variant.hpp>
6 
7 namespace mbgl {
8 
9 class AsyncRequest;
10 
11 namespace style {
12 
13 class RasterSource : public Source {
14 public:
15     RasterSource(std::string id, variant<std::string, Tileset> urlOrTileset, uint16_t tileSize, SourceType sourceType = SourceType::Raster);
16     ~RasterSource() override;
17 
18     const variant<std::string, Tileset>& getURLOrTileset() const;
19     optional<std::string> getURL() const;
20 
21     uint16_t getTileSize() const;
22 
23     class Impl;
24     const Impl& impl() const;
25 
26     void loadDescription(FileSource&) final;
27 
28 private:
29     const variant<std::string, Tileset> urlOrTileset;
30     std::unique_ptr<AsyncRequest> req;
31 };
32 
33 template <>
is() const34 inline bool Source::is<RasterSource>() const {
35     return getType() == SourceType::Raster;
36 }
37 
38 } // namespace style
39 } // namespace mbgl
40