diff --git a/src/mbgl/tile/vector_tile.cpp b/src/mbgl/tile/vector_tile.cpp index fc37363dd..dc4ed04d7 100644 --- a/src/mbgl/tile/vector_tile.cpp +++ b/src/mbgl/tile/vector_tile.cpp @@ -1,11 +1,73 @@ #include #include +#include #include +#include + +#include +#include +#include #include namespace mbgl { +class VectorTileLayer; + +using pbf_iter_type = protozero::pbf_reader::const_uint32_iterator; +using packed_iter_type = std::pair; + +class VectorTileFeature : public GeometryTileFeature { +public: + VectorTileFeature(protozero::pbf_reader, const VectorTileLayer&); + + FeatureType getType() const override { return type; } + optional getValue(const std::string&) const override; + std::unordered_map getProperties() const override; + optional getID() const override; + GeometryCollection getGeometries() const override; + +private: + const VectorTileLayer& layer; + optional 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 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 keysMap; + std::vector> keys; + std::vector values; + std::vector features; +}; + +class VectorTile : public GeometryTile { +public: + VectorTile(std::shared_ptr data); + + util::ptr getLayer(const std::string&) const override; + +private: + std::shared_ptr data; + mutable bool parsed = false; + mutable std::map> 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 1484dd0a6..4815f9276 100644 --- a/src/mbgl/tile/vector_tile.hpp +++ b/src/mbgl/tile/vector_tile.hpp @@ -1,20 +1,11 @@ #pragma once -#include #include -#include #include -#include - -#include -#include -#include - namespace mbgl { class Tileset; -class GeometryTile; namespace style { class UpdateParameters; @@ -36,60 +27,4 @@ private: TileSource tileSource; }; -class VectorTileLayer; - -using pbf_iter_type = protozero::pbf_reader::const_uint32_iterator; -using packed_iter_type = std::pair; - -class VectorTileFeature : public GeometryTileFeature { -public: - VectorTileFeature(protozero::pbf_reader, const VectorTileLayer&); - - FeatureType getType() const override { return type; } - optional getValue(const std::string&) const override; - std::unordered_map getProperties() const override; - optional getID() const override; - GeometryCollection getGeometries() const override; - -private: - const VectorTileLayer& layer; - optional 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 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 keysMap; - std::vector> keys; - std::vector values; - std::vector features; -}; - -class VectorTile : public GeometryTile { -public: - VectorTile(std::shared_ptr data); - - util::ptr getLayer(const std::string&) const override; - -private: - std::shared_ptr data; - mutable bool parsed = false; - mutable std::map> layers; -}; - } // namespace mbgl