#pragma once #include #include #include #include #include #include #include #include #include #include namespace mbgl { class SymbolBucket : public Bucket { public: SymbolBucket(style::SymbolLayoutProperties::Evaluated, const std::map>&, float zoom, bool sdfIcons, bool iconsNeedLinear); void upload(gl::Context&) override; void render(Painter&, PaintParameters&, const style::Layer&, const RenderTile&) override; bool hasData() const override; bool hasTextData() const; bool hasIconData() const; bool hasCollisionBoxData() const; const style::SymbolLayoutProperties::Evaluated layout; const bool sdfIcons; const bool iconsNeedLinear; std::map> paintPropertyBinders; struct TextBuffer { gl::VertexVector vertices; gl::IndexVector triangles; gl::SegmentVector segments; optional> vertexBuffer; optional> indexBuffer; } text; struct IconBuffer { gl::VertexVector vertices; gl::IndexVector triangles; gl::SegmentVector segments; optional> vertexBuffer; optional> indexBuffer; } icon; struct CollisionBoxBuffer { gl::VertexVector vertices; gl::IndexVector lines; gl::SegmentVector segments; optional> vertexBuffer; optional> indexBuffer; } collisionBox; }; } // namespace mbgl