summary refs log tree commit diff
path: root/drw.c
diff options
context:
space:
mode:
authorZach DeCook <zachdecook@librem.one>2021-12-03 11:57:19 -0500
committerJohn Sullivan <jsullivan@csumb.edu>2022-01-10 03:08:06 +0000
commit8120fd052120423cc4e84d7e893bef125fb06a6b (patch)
tree06baa3f1e015df4175133253f5044a4a0b504e1b /drw.c
parent7ec530ef4612dc5b9df5e4faf57708df9e4fad8f (diff)
downloadsuggpicker-8120fd052120423cc4e84d7e893bef125fb06a6b.tar.gz
overlapped key output: highlight letters swiped through
Diffstat (limited to 'drw.c')
-rw-r--r--drw.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/drw.c b/drw.c
index fec4a50..89cb100 100644
--- a/drw.c
+++ b/drw.c
@@ -69,11 +69,15 @@ drw_draw_text(struct drwsurf *d, Color color, uint32_t x, uint32_t y,
 }
 
 void
-drw_fill_rectangle(struct drwsurf *d, Color color, uint32_t x, uint32_t y,
-                   uint32_t w, uint32_t h) {
+drw_do_rectangle(struct drwsurf *d, Color color, uint32_t x, uint32_t y,
+                 uint32_t w, uint32_t h, bool over) {
 	cairo_save(d->cairo);
 
-	cairo_set_operator(d->cairo, CAIRO_OPERATOR_SOURCE);
+	if (over) {
+		cairo_set_operator(d->cairo, CAIRO_OPERATOR_OVER);
+	} else {
+		cairo_set_operator(d->cairo, CAIRO_OPERATOR_SOURCE);
+	}
 
 	cairo_rectangle(d->cairo, x, y, w, h);
 	cairo_set_source_rgba(
@@ -81,11 +85,24 @@ drw_fill_rectangle(struct drwsurf *d, Color color, uint32_t x, uint32_t y,
 	  color.bgra[0] / (double)255, color.bgra[3] / (double)255);
 	cairo_fill(d->cairo);
 
+
 	cairo_restore(d->cairo);
 
 	wl_surface_damage(d->surf, x, y, w, h);
 }
 
+void
+drw_fill_rectangle(struct drwsurf *d, Color color, uint32_t x, uint32_t y,
+                   uint32_t w, uint32_t h) {
+	drw_do_rectangle(d, color, x, y, w, h, false);
+}
+
+void
+drw_over_rectangle(struct drwsurf *d, Color color, uint32_t x, uint32_t y,
+                   uint32_t w, uint32_t h) {
+	drw_do_rectangle(d, color, x, y, w, h, true);
+}
+
 uint32_t
 setup_buffer(struct drwsurf *drwsurf) {
 	int stride = drwsurf->width * 4;