diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2016-06-07 15:29:12 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2016-06-13 10:57:46 -0700 |
commit | 0d2db2a5e321b764ca65de7ff6443822f07dc07a (patch) | |
tree | ad6762e40dd4b292203d50f8448b060863e13cb0 /src/mbgl | |
parent | 13d0a8b81592125ecdddc1f25c785bca0ab8b5a5 (diff) | |
download | qtlocation-mapboxgl-0d2db2a5e321b764ca65de7ff6443822f07dc07a.tar.gz |
[core] Privatize vector_tile.hpp contents
Diffstat (limited to 'src/mbgl')
-rw-r--r-- | src/mbgl/tile/vector_tile.cpp | 62 | ||||
-rw-r--r-- | src/mbgl/tile/vector_tile.hpp | 65 |
2 files changed, 62 insertions, 65 deletions
diff --git a/src/mbgl/tile/vector_tile.cpp b/src/mbgl/tile/vector_tile.cpp index fc37363dda..dc4ed04d7f 100644 --- a/src/mbgl/tile/vector_tile.cpp +++ b/src/mbgl/tile/vector_tile.cpp @@ -1,11 +1,73 @@ #include <mbgl/tile/vector_tile.hpp> #include <mbgl/tile/tile_source_impl.hpp> +#include <mbgl/tile/geometry_tile.hpp> #include <mbgl/style/update_parameters.hpp> +#include <protozero/pbf_reader.hpp> + +#include <map> +#include <unordered_map> +#include <functional> #include <utility> namespace mbgl { +class VectorTileLayer; + +using pbf_iter_type = protozero::pbf_reader::const_uint32_iterator; +using packed_iter_type = std::pair<pbf_iter_type,pbf_iter_type>; + +class VectorTileFeature : public GeometryTileFeature { +public: + VectorTileFeature(protozero::pbf_reader, const VectorTileLayer&); + + FeatureType getType() const override { return type; } + optional<Value> getValue(const std::string&) const override; + std::unordered_map<std::string,Value> getProperties() const override; + optional<uint64_t> getID() const override; + GeometryCollection getGeometries() const override; + +private: + const VectorTileLayer& layer; + optional<uint64_t> id; + FeatureType type = FeatureType::Unknown; + packed_iter_type tags_iter; + packed_iter_type geometry_iter; +}; + +class VectorTileLayer : public GeometryTileLayer { +public: + VectorTileLayer(protozero::pbf_reader); + + std::size_t featureCount() const override { return features.size(); } + util::ptr<const GeometryTileFeature> getFeature(std::size_t) const override; + std::string getName() const override; + +private: + friend class VectorTile; + friend class VectorTileFeature; + + std::string name; + uint32_t version = 1; + uint32_t extent = 4096; + std::map<std::string, uint32_t> keysMap; + std::vector<std::reference_wrapper<const std::string>> keys; + std::vector<Value> values; + std::vector<protozero::pbf_reader> 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; +}; + VectorTileData::VectorTileData(const OverscaledTileID& id_, std::string sourceID, const style::UpdateParameters& parameters, diff --git a/src/mbgl/tile/vector_tile.hpp b/src/mbgl/tile/vector_tile.hpp index 1484dd0a61..4815f9276e 100644 --- a/src/mbgl/tile/vector_tile.hpp +++ b/src/mbgl/tile/vector_tile.hpp @@ -1,20 +1,11 @@ #pragma once -#include <mbgl/tile/geometry_tile.hpp> #include <mbgl/tile/geometry_tile_data.hpp> -#include <mbgl/tile/tile_id.hpp> #include <mbgl/tile/tile_source.hpp> -#include <protozero/pbf_reader.hpp> - -#include <map> -#include <unordered_map> -#include <functional> - namespace mbgl { class Tileset; -class GeometryTile; namespace style { class UpdateParameters; @@ -36,60 +27,4 @@ private: TileSource<VectorTileData> tileSource; }; -class VectorTileLayer; - -using pbf_iter_type = protozero::pbf_reader::const_uint32_iterator; -using packed_iter_type = std::pair<pbf_iter_type,pbf_iter_type>; - -class VectorTileFeature : public GeometryTileFeature { -public: - VectorTileFeature(protozero::pbf_reader, const VectorTileLayer&); - - FeatureType getType() const override { return type; } - optional<Value> getValue(const std::string&) const override; - std::unordered_map<std::string,Value> getProperties() const override; - optional<uint64_t> getID() const override; - GeometryCollection getGeometries() const override; - -private: - const VectorTileLayer& layer; - optional<uint64_t> id; - FeatureType type = FeatureType::Unknown; - packed_iter_type tags_iter; - packed_iter_type geometry_iter; -}; - -class VectorTileLayer : public GeometryTileLayer { -public: - VectorTileLayer(protozero::pbf_reader); - - std::size_t featureCount() const override { return features.size(); } - util::ptr<const GeometryTileFeature> getFeature(std::size_t) const override; - std::string getName() const override; - -private: - friend class VectorTile; - friend class VectorTileFeature; - - std::string name; - uint32_t version = 1; - uint32_t extent = 4096; - std::map<std::string, uint32_t> keysMap; - std::vector<std::reference_wrapper<const std::string>> keys; - std::vector<Value> values; - std::vector<protozero::pbf_reader> 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; -}; - } // namespace mbgl |