summaryrefslogtreecommitdiff
path: root/src/mbgl/map/live_tile.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/map/live_tile.hpp')
-rw-r--r--src/mbgl/map/live_tile.hpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/mbgl/map/live_tile.hpp b/src/mbgl/map/live_tile.hpp
new file mode 100644
index 0000000000..019c9da740
--- /dev/null
+++ b/src/mbgl/map/live_tile.hpp
@@ -0,0 +1,53 @@
+#ifndef MBGL_MAP_LIVE_TILE
+#define MBGL_MAP_LIVE_TILE
+
+#include <map>
+
+#include <mbgl/map/geometry_tile.hpp>
+
+namespace mbgl {
+
+class LiveTileFeature : public GeometryTileFeature {
+public:
+ LiveTileFeature(FeatureType, GeometryCollection, std::map<std::string, std::string> properties = {{}});
+
+ FeatureType getType() const override { return type; }
+ mapbox::util::optional<Value> getValue(const std::string&) const override;
+ GeometryCollection getGeometries() const override { return geometries; }
+
+private:
+ FeatureType type = FeatureType::Unknown;
+ std::map<std::string, std::string> properties;
+ GeometryCollection geometries;
+};
+
+ class LiveTileLayer : public GeometryTileLayer {
+public:
+ LiveTileLayer();
+
+ void prepareToAddFeatures(size_t count);
+ void addFeature(util::ptr<const LiveTileFeature>);
+ void removeFeature(util::ptr<const LiveTileFeature>);
+ std::size_t featureCount() const override { return features.size(); }
+ util::ptr<const GeometryTileFeature> feature(std::size_t i) const override { return features[i]; }
+
+private:
+ std::vector<util::ptr<const LiveTileFeature>> features;
+};
+
+class LiveTile : public GeometryTile {
+public:
+ LiveTile();
+
+ void addLayer(const std::string&, util::ptr<LiveTileLayer>);
+ util::ptr<GeometryTileLayer> getLayer(const std::string&) const override;
+ util::ptr<LiveTileLayer> getMutableLayer(const std::string&) const;
+ bool operator()(const LiveTile&) const { return layers.size() > 0; }
+
+private:
+ std::map<std::string, util::ptr<LiveTileLayer>> layers;
+};
+
+}
+
+#endif