aboutsummaryrefslogtreecommitdiff
path: root/include/wlr/render/interface.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/wlr/render/interface.h')
-rw-r--r--include/wlr/render/interface.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/include/wlr/render/interface.h b/include/wlr/render/interface.h
new file mode 100644
index 00000000..80471ac8
--- /dev/null
+++ b/include/wlr/render/interface.h
@@ -0,0 +1,43 @@
+#ifndef _WLR_RENDER_INTERFACE_H
+#define _WLR_RENDER_INTERFACE_H
+#include <wayland-server-protocol.h>
+#include <stdbool.h>
+#include <wlr/render.h>
+#include <wlr/types.h>
+
+struct wlr_renderer_impl;
+struct wlr_renderer_state;
+
+struct wlr_renderer {
+ struct wlr_renderer_impl *impl;
+ struct wlr_renderer_state *state;
+};
+
+struct wlr_renderer_impl {
+ void (*begin)(struct wlr_renderer_state *state, struct wlr_output *output);
+ void (*end)(struct wlr_renderer_state *state);
+ struct wlr_surface *(*surface_init)(struct wlr_renderer_state *state);
+ bool (*render_with_matrix)(struct wlr_renderer_state *state,
+ struct wlr_surface *surface, const float (*matrix)[16]);
+ void (*destroy)(struct wlr_renderer_state *state);
+};
+
+struct wlr_renderer *wlr_renderer_init(struct wlr_renderer_state *state,
+ struct wlr_renderer_impl *impl);
+
+struct wlr_surface_impl {
+ bool (*attach_pixels)(struct wlr_surface_state *state, uint32_t format,
+ int width, int height, const unsigned char *pixels);
+ bool (*attach_shm)(struct wlr_surface_state *state, uint32_t format,
+ struct wl_shm_buffer *shm);
+ // TODO: egl
+ void (*get_matrix)(struct wlr_surface_state *state,
+ float (*matrix)[16], const float (*projection)[16], int x, int y);
+ void (*bind)(struct wlr_surface_state *state);
+ void (*destroy)(struct wlr_surface_state *state);
+};
+
+struct wlr_surface *wlr_surface_init();
+void wlr_surface_bind(struct wlr_surface *surface);
+
+#endif