diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/endian.h | 8 | ||||
-rw-r--r-- | include/wlr/render.h | 5 | ||||
-rw-r--r-- | include/wlr/render/interface.h | 8 | ||||
-rw-r--r-- | include/wlr/wlcore/wl_shm.h | 13 |
4 files changed, 31 insertions, 3 deletions
diff --git a/include/endian.h b/include/endian.h new file mode 100644 index 00000000..0e9b6101 --- /dev/null +++ b/include/endian.h @@ -0,0 +1,8 @@ +#ifndef _WLR_ENDIAN_H +#define _WLR_ENDIAN_H + +// https://stackoverflow.com/a/4240257 + +#define little_endian() (((union { unsigned x; unsigned char c; }){1}).c) + +#endif diff --git a/include/wlr/render.h b/include/wlr/render.h index 90967dd9..496e3638 100644 --- a/include/wlr/render.h +++ b/include/wlr/render.h @@ -39,6 +39,11 @@ void wlr_render_colored_quad(struct wlr_renderer *r, void wlr_render_colored_ellipse(struct wlr_renderer *r, const float (*color)[4], const float (*matrix)[16]); /** + * Returns a list of pixel formats supported by this renderer. + */ +const enum wl_shm_format *wlr_renderer_get_formats( + struct wlr_renderer *r, size_t *len); +/** * Destroys this wlr_renderer. Surfaces must be destroyed separately. */ void wlr_renderer_destroy(struct wlr_renderer *renderer); diff --git a/include/wlr/render/interface.h b/include/wlr/render/interface.h index 222b0c4d..c7fa54d6 100644 --- a/include/wlr/render/interface.h +++ b/include/wlr/render/interface.h @@ -20,9 +20,11 @@ struct wlr_renderer_impl { bool (*render_with_matrix)(struct wlr_renderer_state *state, struct wlr_surface *surface, const float (*matrix)[16]); void (*render_quad)(struct wlr_renderer_state *state, - const float (*color)[4], const float (*matrix)[16]); + const float (*color)[4], const float (*matrix)[16]); void (*render_ellipse)(struct wlr_renderer_state *state, - const float (*color)[4], const float (*matrix)[16]); + const float (*color)[4], const float (*matrix)[16]); + const enum wl_shm_format *(*formats)( + struct wlr_renderer_state *state, size_t *len); void (*destroy)(struct wlr_renderer_state *state); }; @@ -36,7 +38,7 @@ struct wlr_surface_impl { 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); + 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); }; diff --git a/include/wlr/wlcore/wl_shm.h b/include/wlr/wlcore/wl_shm.h new file mode 100644 index 00000000..12c2ef78 --- /dev/null +++ b/include/wlr/wlcore/wl_shm.h @@ -0,0 +1,13 @@ +#ifndef _WLR_WLCORE_WL_SHM_H +#define _WLR_WLCORE_WL_SHM_H +#include <wayland-server-core.h> +#include <wlr/render.h> + +struct wlr_wl_shm; + +struct wlr_wl_shm *wlr_wl_shm_init(struct wl_display *display); +void wlr_wl_shm_add_format(struct wlr_wl_shm *shm, enum wl_shm_format format); +void wlr_wl_shm_add_renderer_formats( + struct wlr_wl_shm *shm, struct wlr_renderer *renderer); + +#endif |