summaryrefslogtreecommitdiff
path: root/include/mbgl/renderer/icon_bucket.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/mbgl/renderer/icon_bucket.hpp')
-rw-r--r--include/mbgl/renderer/icon_bucket.hpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/include/mbgl/renderer/icon_bucket.hpp b/include/mbgl/renderer/icon_bucket.hpp
new file mode 100644
index 0000000000..e3b311332d
--- /dev/null
+++ b/include/mbgl/renderer/icon_bucket.hpp
@@ -0,0 +1,53 @@
+#ifndef MBGL_RENDERER_ICONBUCKET
+#define MBGL_RENDERER_ICONBUCKET
+
+#include <mbgl/renderer/bucket.hpp>
+#include <mbgl/geometry/elements_buffer.hpp>
+#include <mbgl/geometry/icon_buffer.hpp>
+#include <mbgl/style/style_bucket.hpp>
+
+#include <vector>
+#include <memory>
+
+#ifndef BUFFER_OFFSET
+#define BUFFER_OFFSET(i) ((char *)nullptr + (i))
+#endif
+
+namespace mbgl {
+
+class Style;
+class IconVertexBuffer;
+class BucketDescription;
+class IconShader;
+class DotShader;
+class SpriteAtlas;
+class VectorTileFeature;
+
+class IconBucket : public Bucket {
+public:
+ IconBucket(IconVertexBuffer& vertexBuffer,
+ const StyleBucketIcon& properties);
+
+ virtual void render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id);
+ virtual bool hasData() const;
+
+ void addFeature(const VectorTileFeature &feature, SpriteAtlas &sprite_atlas);
+
+ void drawIcons(IconShader& shader);
+ void drawIcons(DotShader& shader);
+
+public:
+ const StyleBucketIcon &properties;
+
+private:
+
+ IconVertexBuffer& vertexBuffer;
+ VertexArrayObject array;
+
+ const size_t vertex_start;
+ size_t vertex_end = 0;
+};
+
+}
+
+#endif