1 #pragma once 2 3 #include <mbgl/renderer/bucket.hpp> 4 #include <mbgl/tile/geometry_tile_data.hpp> 5 #include <mbgl/gl/vertex_buffer.hpp> 6 #include <mbgl/gl/index_buffer.hpp> 7 #include <mbgl/programs/segment.hpp> 8 #include <mbgl/programs/fill_program.hpp> 9 #include <mbgl/style/layers/fill_layer_properties.hpp> 10 11 #include <vector> 12 13 namespace mbgl { 14 15 class BucketParameters; 16 17 class FillBucket : public Bucket { 18 public: 19 FillBucket(const BucketParameters&, const std::vector<const RenderLayer*>&); 20 21 void addFeature(const GeometryTileFeature&, 22 const GeometryCollection&) override; 23 bool hasData() const override; 24 25 void upload(gl::Context&) override; 26 27 float getQueryRadius(const RenderLayer&) const override; 28 29 gl::VertexVector<FillLayoutVertex> vertices; 30 gl::IndexVector<gl::Lines> lines; 31 gl::IndexVector<gl::Triangles> triangles; 32 SegmentVector<FillAttributes> lineSegments; 33 SegmentVector<FillAttributes> triangleSegments; 34 35 optional<gl::VertexBuffer<FillLayoutVertex>> vertexBuffer; 36 optional<gl::IndexBuffer<gl::Lines>> lineIndexBuffer; 37 optional<gl::IndexBuffer<gl::Triangles>> triangleIndexBuffer; 38 39 std::map<std::string, FillProgram::PaintPropertyBinders> paintPropertyBinders; 40 }; 41 42 template <> is() const43inline bool Bucket::is<FillBucket>() const { 44 return layerType == style::LayerType::Fill; 45 } 46 47 } // namespace mbgl 48