summaryrefslogtreecommitdiff
path: root/src/mbgl/tile/vector_tile.hpp
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2016-02-11 17:30:35 -0800
committerJohn Firebaugh <john.firebaugh@gmail.com>2016-02-11 17:30:35 -0800
commit62bbf2627a32a57188e4026aca8dc337e07ded7f (patch)
tree4db2a7e2bef2491eb7a8b98b0caa8b61aeae7283 /src/mbgl/tile/vector_tile.hpp
parent43c44eccdc56c50e41e8efbe5f7a34b57eed756f (diff)
downloadqtlocation-mapboxgl-62bbf2627a32a57188e4026aca8dc337e07ded7f.tar.gz
[core] Organize files that were in map folder better
Fixes #996
Diffstat (limited to 'src/mbgl/tile/vector_tile.hpp')
-rw-r--r--src/mbgl/tile/vector_tile.hpp77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/mbgl/tile/vector_tile.hpp b/src/mbgl/tile/vector_tile.hpp
new file mode 100644
index 0000000000..15cd70a9d4
--- /dev/null
+++ b/src/mbgl/tile/vector_tile.hpp
@@ -0,0 +1,77 @@
+#ifndef MBGL_MAP_VECTOR_TILE
+#define MBGL_MAP_VECTOR_TILE
+
+#include <mbgl/tile/geometry_tile.hpp>
+#include <mbgl/map/tile_id.hpp>
+#include <mbgl/util/pbf.hpp>
+
+#include <map>
+
+namespace mbgl {
+
+class VectorTileLayer;
+
+class VectorTileFeature : public GeometryTileFeature {
+public:
+ VectorTileFeature(pbf, const VectorTileLayer&);
+
+ FeatureType getType() const override { return type; }
+ optional<Value> getValue(const std::string&) const override;
+ GeometryCollection getGeometries() const override;
+ uint32_t getExtent() const override;
+
+private:
+ const VectorTileLayer& layer;
+ uint64_t id = 0;
+ FeatureType type = FeatureType::Unknown;
+ pbf tags_pbf;
+ pbf geometry_pbf;
+};
+
+class VectorTileLayer : public GeometryTileLayer {
+public:
+ VectorTileLayer(pbf);
+
+ std::size_t featureCount() const override { return features.size(); }
+ util::ptr<const GeometryTileFeature> getFeature(std::size_t) const override;
+
+private:
+ friend class VectorTile;
+ friend class VectorTileFeature;
+
+ std::string name;
+ uint32_t extent = 4096;
+ std::map<std::string, uint32_t> keys;
+ std::vector<Value> values;
+ std::vector<pbf> features;
+};
+
+class VectorTile : public GeometryTile {
+public:
+ VectorTile(std::shared_ptr<const std::string> data);
+
+ util::ptr<GeometryTileLayer> getLayer(const std::string&) const override;
+
+private:
+ std::shared_ptr<const std::string> data;
+ mutable bool parsed = false;
+ mutable std::map<std::string, util::ptr<GeometryTileLayer>> layers;
+};
+
+class TileID;
+
+class VectorTileMonitor : public GeometryTileMonitor {
+public:
+ VectorTileMonitor(const TileID&, float pixelRatio, const std::string& urlTemplate);
+
+ std::unique_ptr<FileRequest> monitorTile(const GeometryTileMonitor::Callback&) override;
+
+private:
+ TileID tileID;
+ float pixelRatio;
+ std::string urlTemplate;
+};
+
+} // namespace mbgl
+
+#endif