MapLibre Native Core
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
resource.hpp
Go to the documentation of this file.
1 #pragma once
2 
6 #include <mbgl/util/tileset.hpp>
7 
8 #include <string>
9 #include <optional>
10 
11 namespace mbgl {
12 
13 class Resource {
14 public:
15  enum Kind : uint8_t {
16  Unknown = 0,
23  Image
24  };
25 
26  enum class Priority : bool {
27  Regular,
28  Low
29  };
30 
31  enum class Usage : bool {
32  Online,
33  Offline
34  };
35 
36  enum class StoragePolicy : bool { Permanent, Volatile };
37 
38  struct TileData {
40  uint8_t pixelRatio;
41  int32_t x;
42  int32_t y;
43  int8_t z;
44  };
45 
46  enum class LoadingMethod : uint8_t {
47  None = 0b00,
48  Cache = 0b01,
49  Network = 0b10,
50 
51  CacheOnly = Cache,
53  All = Cache | Network,
54  };
55 
56  Resource(Kind kind_,
57  std::string url_,
58  std::optional<TileData> tileData_ = std::nullopt,
59  LoadingMethod loadingMethod_ = LoadingMethod::All)
60  : kind(kind_),
61  loadingMethod(loadingMethod_),
62  url(std::move(url_)),
63  tileData(std::move(tileData_)) {
64  }
65 
66  void setPriority(Priority p) { priority = p; }
67  void setUsage(Usage u) { usage = u; }
68 
69  bool hasLoadingMethod(LoadingMethod method) const;
70 
71  static Resource style(const std::string& url);
72  static Resource source(const std::string& url);
73  static Resource tile(const std::string& urlTemplate,
74  float pixelRatio,
75  int32_t x,
76  int32_t y,
77  int8_t z,
78  Tileset::Scheme scheme,
80  static Resource glyphs(const std::string& urlTemplate,
81  const FontStack& fontStack,
82  const std::pair<uint16_t, uint16_t>& glyphRange);
83  static Resource spriteImage(const std::string& base, float pixelRatio);
84  static Resource spriteJSON(const std::string& base, float pixelRatio);
85  static Resource image(const std::string& url);
86 
92 
93  // Includes auxiliary data if this is a tile request.
94  std::optional<TileData> tileData;
95 
96  std::optional<Timestamp> priorModified = std::nullopt;
97  std::optional<Timestamp> priorExpires = std::nullopt;
98  std::optional<std::string> priorEtag = std::nullopt;
99  std::shared_ptr<const std::string> priorData;
100  Duration minimumUpdateInterval{Duration::zero()};
102 };
103 
105  return (loadingMethod & method);
106 }
107 
108 } // namespace mbgl
static Resource spriteImage(const std::string &base, float pixelRatio)
void setUsage(Usage u)
Definition: resource.hpp:67
std::optional< Timestamp > priorExpires
Definition: resource.hpp:97
StoragePolicy storagePolicy
Definition: resource.hpp:101
bool hasLoadingMethod(LoadingMethod method) const
Definition: resource.hpp:104
Duration minimumUpdateInterval
Definition: resource.hpp:100
void setPriority(Priority p)
Definition: resource.hpp:66
static Resource tile(const std::string &urlTemplate, float pixelRatio, int32_t x, int32_t y, int8_t z, Tileset::Scheme scheme, LoadingMethod=LoadingMethod::All)
std::string url
Definition: resource.hpp:91
std::optional< Timestamp > priorModified
Definition: resource.hpp:96
static Resource source(const std::string &url)
Priority priority
Definition: resource.hpp:90
std::optional< std::string > priorEtag
Definition: resource.hpp:98
Resource(Kind kind_, std::string url_, std::optional< TileData > tileData_=std::nullopt, LoadingMethod loadingMethod_=LoadingMethod::All)
Definition: resource.hpp:56
LoadingMethod loadingMethod
Definition: resource.hpp:88
static Resource spriteJSON(const std::string &base, float pixelRatio)
static Resource glyphs(const std::string &urlTemplate, const FontStack &fontStack, const std::pair< uint16_t, uint16_t > &glyphRange)
static Resource image(const std::string &url)
static Resource style(const std::string &url)
std::shared_ptr< const std::string > priorData
Definition: resource.hpp:99
std::optional< TileData > tileData
Definition: resource.hpp:94
std::unique_ptr< Expression > string(std::unique_ptr< Expression >, std::unique_ptr< Expression > def=nullptr)
Definition: actor.hpp:15
std::vector< std::string > FontStack
Definition: font_stack.hpp:13
Clock::duration Duration
Definition: chrono.hpp:18
Definition: tile_id.hpp:256
std::string urlTemplate
Definition: resource.hpp:39