summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorWilliam McKinnon <[email protected]>2022-11-11 01:19:02 -0500
committerGitHub <[email protected]>2022-11-11 01:19:02 -0500
commit1930bd0d7136d84900fe1541e4317cbcd7a85ef6 (patch)
tree0953eb462206e0c52c5206370abfd3b33898e1ac /include
parent9ee7fa61af58de3dab3d60e325ef1d0c6f40f9fd (diff)
feat: add round titlebars (#26)
Diffstat (limited to 'include')
-rw-r--r--include/sway/desktop/fx_renderer.h27
1 files changed, 24 insertions, 3 deletions
diff --git a/include/sway/desktop/fx_renderer.h b/include/sway/desktop/fx_renderer.h
index 889d8a82..e3b23411 100644
--- a/include/sway/desktop/fx_renderer.h
+++ b/include/sway/desktop/fx_renderer.h
@@ -4,7 +4,7 @@
#include <GLES2/gl2.h>
#include <stdbool.h>
-enum corner_location {NONE, TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT};
+enum corner_location { NONE, TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT };
struct gles2_tex_shader {
GLuint program;
@@ -16,6 +16,17 @@ struct gles2_tex_shader {
GLint size;
GLint position;
GLint radius;
+ GLint has_titlebar;
+};
+
+struct rounded_quad_shader {
+ GLuint program;
+ GLint proj;
+ GLint color;
+ GLint pos_attrib;
+ GLint size;
+ GLint position;
+ GLint radius;
};
struct fx_renderer {
@@ -31,6 +42,10 @@ struct fx_renderer {
GLint color;
GLint pos_attrib;
} quad;
+
+ struct rounded_quad_shader rounded_tl_quad;
+ struct rounded_quad_shader rounded_tr_quad;
+
struct {
GLuint program;
GLint proj;
@@ -45,6 +60,7 @@ struct fx_renderer {
GLint half_size;
GLint half_thickness;
} corner;
+
struct gles2_tex_shader tex_rgba;
struct gles2_tex_shader tex_rgbx;
struct gles2_tex_shader tex_ext;
@@ -63,14 +79,19 @@ void fx_renderer_scissor(struct wlr_box *box);
bool fx_render_subtexture_with_matrix(struct fx_renderer *renderer, struct wlr_texture *wlr_texture,
const struct wlr_fbox *src_box, const struct wlr_box *dst_box, const float matrix[static 9],
- float alpha, int radius);
+ float alpha, int radius, const bool has_titlebar);
bool fx_render_texture_with_matrix(struct fx_renderer *renderer, struct wlr_texture *wlr_texture,
- const struct wlr_box *dst_box, const float matrix[static 9], float alpha, int radius);
+ const struct wlr_box *dst_box, const float matrix[static 9], float alpha, int radius,
+ const bool has_titlebar);
void fx_render_rect(struct fx_renderer *renderer, const struct wlr_box *box,
const float color[static 4], const float projection[static 9]);
+void fx_render_rounded_rect(struct fx_renderer *renderer, const struct wlr_box *box,
+ const float color[static 4], const float projection[static 9],
+ int radius, enum corner_location corner_location);
+
void fx_render_border_corner(struct fx_renderer *renderer, const struct wlr_box *box,
const float color[static 4], const float projection[static 9],
enum corner_location corner_location, int radius, int border_thickness);