#pragma once #include #include #include #include #include #include #include #include namespace mbgl { class FillShader; class FillPatternShader; class FillOutlineShader; class FillOutlinePatternShader; class FillBucket : public Bucket { public: FillBucket(); ~FillBucket() override; void upload(gl::Context&) override; void render(Painter&, PaintParameters&, const style::Layer&, const RenderTile&) override; bool hasData() const override; bool needsClipping() const override; void addGeometry(const GeometryCollection&); void drawElements(FillShader&, gl::Context&, PaintMode); void drawElements(FillPatternShader&, gl::Context&, PaintMode); void drawVertices(FillOutlineShader&, gl::Context&, PaintMode); void drawVertices(FillOutlinePatternShader&, gl::Context&, PaintMode); private: std::vector vertices; std::vector lines; std::vector triangles; std::vector> lineGroups; std::vector> triangleGroups; optional> vertexBuffer; optional> lineIndexBuffer; optional> triangleIndexBuffer; }; } // namespace mbgl