#ifndef LLMR_RENDERER_LINEBUCKET #define LLMR_RENDERER_LINEBUCKET #include "bucket.hpp" #include #include #include #include #include #include namespace llmr { class Style; class LineVertexBuffer; class TriangleElementsBuffer; class LineShader; class LinejoinShader; struct pbf; class LineBucket : public Bucket { typedef ElementGroup triangle_group_type; typedef ElementGroup point_group_type; public: LineBucket(LineVertexBuffer& vertexBuffer, TriangleElementsBuffer& triangleElementsBuffer, PointElementsBuffer& pointElementsBuffer, const StyleBucketLine& properties); virtual void render(Painter& painter, std::shared_ptr layer_desc, const Tile::ID& id); virtual bool hasData() const; void addGeometry(pbf& data); void addGeometry(const std::vector& line); bool hasPoints() const; void drawLines(LineShader& shader); void drawPoints(LinejoinShader& shader); public: const StyleBucketLine &properties; private: LineVertexBuffer& vertexBuffer; TriangleElementsBuffer& triangleElementsBuffer; PointElementsBuffer& pointElementsBuffer; const size_t vertex_start; const size_t triangle_elements_start; const size_t point_elements_start; std::vector triangleGroups; std::vector pointGroups; }; } #endif