summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/sources/render_tile_source.hpp
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-07-17 13:00:45 +0300
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-07-22 10:41:03 +0300
commit3a0db3921c0db4719e9b33a0fab2f30905a0c79d (patch)
treeb174239b9f3c8260541c5c3023bdd28246e4782e /src/mbgl/renderer/sources/render_tile_source.hpp
parentff42997b01ee8034338b3ff1591f35d1e6d782c1 (diff)
downloadqtlocation-mapboxgl-3a0db3921c0db4719e9b33a0fab2f30905a0c79d.tar.gz
[core] Introduce RenderTileSetSource class
Encapsulates the tiles update logic based on the given tile set.
Diffstat (limited to 'src/mbgl/renderer/sources/render_tile_source.hpp')
-rw-r--r--src/mbgl/renderer/sources/render_tile_source.hpp29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/mbgl/renderer/sources/render_tile_source.hpp b/src/mbgl/renderer/sources/render_tile_source.hpp
index f961c20561..7edff726d5 100644
--- a/src/mbgl/renderer/sources/render_tile_source.hpp
+++ b/src/mbgl/renderer/sources/render_tile_source.hpp
@@ -11,7 +11,6 @@ namespace mbgl {
*/
class RenderTileSource : public RenderSource {
public:
- RenderTileSource(Immutable<style::Source::Impl>);
~RenderTileSource() override;
bool isLoaded() const override;
@@ -39,6 +38,7 @@ public:
void dumpDebugLogs() const override;
protected:
+ RenderTileSource(Immutable<style::Source::Impl>);
TilePyramid tilePyramid;
Immutable<std::vector<RenderTile>> renderTiles;
mutable RenderTiles filteredRenderTiles;
@@ -46,4 +46,31 @@ protected:
float bearing = 0.0f;
};
+/**
+ * @brief Base class for render sources that use tile sets.
+ */
+class RenderTileSetSource : public RenderTileSource {
+protected:
+ RenderTileSetSource(Immutable<style::Source::Impl>);
+ ~RenderTileSetSource() override;
+
+ virtual void updateInternal(const Tileset&,
+ const std::vector<Immutable<style::LayerProperties>>&,
+ bool needsRendering,
+ bool needsRelayout,
+ const TileParameters&) = 0;
+ // Returns tileset from the current impl.
+ virtual const optional<Tileset>& getTileset() const = 0;
+
+private:
+ uint8_t getMaxZoom() const final;
+ void update(Immutable<style::Source::Impl>,
+ const std::vector<Immutable<style::LayerProperties>>&,
+ bool needsRendering,
+ bool needsRelayout,
+ const TileParameters&) final;
+
+ optional<Tileset> cachedTileset;
+};
+
} // namespace mbgl