diff options
Diffstat (limited to 'include/wlr/render/interface.h')
| -rw-r--r-- | include/wlr/render/interface.h | 43 | 
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 | 
