#ifndef MBGL_MAP_TILE_PARSER #define MBGL_MAP_TILE_PARSER #include #include #include #include #include #include #include #include #include #include #include namespace mbgl { class Bucket; class FontStack; class GlyphAtlas; class GlyphStore; class SpriteAtlas; class Sprite; class Style; class StyleBucket; class StyleLayoutFill; class StyleLayoutRaster; class StyleLayoutLine; class StyleLayoutSymbol; class StyleLayerGroup; class VectorTileData; class Collision; class TileParser : private util::noncopyable { public: TileParser(const GeometryTile& geometryTile, VectorTileData& tile, const util::ptr& style, GlyphAtlas& glyphAtlas, GlyphStore& glyphStore, SpriteAtlas& spriteAtlas, const util::ptr& sprite); ~TileParser(); public: void parse(); private: bool obsolete() const; void parseStyleLayers(util::ptr group); std::unique_ptr createBucket(const StyleBucket&); std::unique_ptr createFillBucket(const GeometryTileLayer&, const StyleBucket&); std::unique_ptr createLineBucket(const GeometryTileLayer&, const StyleBucket&); std::unique_ptr createSymbolBucket(const GeometryTileLayer&, const StyleBucket&); template void addBucketGeometries(Bucket&, const GeometryTileLayer&, const FilterExpression&); private: const GeometryTile& geometryTile; VectorTileData& tile; // Cross-thread shared data. util::ptr style; GlyphAtlas& glyphAtlas; GlyphStore& glyphStore; SpriteAtlas& spriteAtlas; util::ptr sprite; std::unique_ptr collision; }; } #endif