#ifndef MBGL_RENDERER_LINEBUCKET #define MBGL_RENDERER_LINEBUCKET #include #include #include #include #include #include namespace mbgl { class Style; class LineVertexBuffer; class TriangleElementsBuffer; class LineShader; class LinejoinShader; class LinepatternShader; struct pbf; class LineBucket : public Bucket { typedef ElementGroup<2> triangle_group_type; typedef ElementGroup<1> point_group_type; public: LineBucket(LineVertexBuffer& vertexBuffer, TriangleElementsBuffer& triangleElementsBuffer, PointElementsBuffer& pointElementsBuffer, const StyleBucketLine& properties); virtual void render(Painter& painter, util::ptr layer_desc, const Tile::ID& id, const mat4 &matrix); virtual bool hasData() const; void addGeometry(pbf& data); void addGeometry(const std::vector& line); bool hasPoints() const; void drawLines(LineShader& shader); void drawLinePatterns(LinepatternShader& 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