diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2016-02-11 17:30:35 -0800 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2016-02-11 17:30:35 -0800 |
commit | 62bbf2627a32a57188e4026aca8dc337e07ded7f (patch) | |
tree | 4db2a7e2bef2491eb7a8b98b0caa8b61aeae7283 /src/mbgl/tile/vector_tile.hpp | |
parent | 43c44eccdc56c50e41e8efbe5f7a34b57eed756f (diff) | |
download | qtlocation-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.hpp | 77 |
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 |