summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/circle_bucket.hpp
diff options
context:
space:
mode:
authorBruno de Oliveira Abinader <brunoabinader@gmail.com>2015-06-17 10:56:18 +0300
committerJohn Firebaugh <john.firebaugh@gmail.com>2015-08-20 11:59:07 -0700
commit98534631e068477930a32ca25459dca4f3bb6170 (patch)
tree4276174b11295db6c491f2cdf9676691ff22eae0 /src/mbgl/renderer/circle_bucket.hpp
parentd1100f34de826bd8eab8a2592635af3341c92e6a (diff)
downloadqtlocation-mapboxgl-98534631e068477930a32ca25459dca4f3bb6170.tar.gz
Add circle render type
As specified in: https://github.com/mapbox/mapbox-gl-style-spec/blob/v8-circle/reference/v8.json Part of #1740.
Diffstat (limited to 'src/mbgl/renderer/circle_bucket.hpp')
-rw-r--r--src/mbgl/renderer/circle_bucket.hpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/mbgl/renderer/circle_bucket.hpp b/src/mbgl/renderer/circle_bucket.hpp
new file mode 100644
index 0000000000..727b9fa376
--- /dev/null
+++ b/src/mbgl/renderer/circle_bucket.hpp
@@ -0,0 +1,46 @@
+#ifndef MBGL_RENDERER_CIRCLE_BUCKET
+#define MBGL_RENDERER_CIRCLE_BUCKET
+
+#include <mbgl/renderer/bucket.hpp>
+
+#include <mbgl/map/geometry_tile.hpp>
+
+#include <mbgl/geometry/elements_buffer.hpp>
+#include <mbgl/geometry/circle_buffer.hpp>
+
+#include <mbgl/style/style_bucket.hpp>
+#include <mbgl/style/style_layout.hpp>
+
+namespace mbgl {
+
+class CircleVertexBuffer;
+class CircleShader;
+
+class CircleBucket : public Bucket {
+ using TriangleGroup = ElementGroup<3>;
+
+public:
+ CircleBucket(CircleVertexBuffer &vertexBuffer, TriangleElementsBuffer &elementsBuffer);
+ ~CircleBucket() override;
+
+ void upload() override;
+ void render(Painter&, const StyleLayer&, const TileID&, const mat4&) override;
+
+ bool hasData() const;
+ void addGeometry(const GeometryCollection&);
+
+ void drawCircles(CircleShader& shader);
+
+private:
+ CircleVertexBuffer& vertexBuffer_;
+ TriangleElementsBuffer& elementsBuffer_;
+
+ const size_t vertexStart_;
+ const size_t elementsStart_;
+
+ std::vector<std::unique_ptr<TriangleGroup>> triangleGroups_;
+};
+
+} // namespace mbgl
+
+#endif // MBGL_RENDERER_CIRCLE_BUCKET