#ifndef LLMR_MAP_TILE_PARSER #define LLMR_MAP_TILE_PARSER #include #include namespace llmr { class Style; class GlyphAtlas; class TileParser { public: TileParser(const std::string& data, TileData& tile, const Style& style, GlyphAtlas& glyphAtlas, bool is_raster = false); private: bool obsolete() const; void parseGlyphs(); void parseStyleLayers(const std::vector& layers); std::unique_ptr createBucket(const BucketDescription& bucket_desc); std::unique_ptr createFillBucket(const VectorTileLayer& layer, const BucketDescription& bucket_desc); std::unique_ptr createLineBucket(const VectorTileLayer& layer, const BucketDescription& bucket_desc); std::unique_ptr createPointBucket(const VectorTileLayer& layer, const BucketDescription& bucket_desc); std::unique_ptr createTextBucket(const VectorTileLayer& layer, const BucketDescription& bucket_desc); std::unique_ptr createRasterBucket(const BucketDescription& bucket_desc); template void addBucketFeatures(Bucket& bucket, const VectorTileLayer& layer, const BucketDescription& bucket_desc); private: const VectorTile vector_data; const std::string raster_data; TileData& tile; const Style& style; GlyphAtlas& glyphAtlas; Faces faces; Placement placement; }; } #endif