diff options
| author | Zach DeCook <zachdecook@librem.one> | 2021-12-03 11:57:19 -0500 |
|---|---|---|
| committer | John Sullivan <jsullivan@csumb.edu> | 2022-01-10 03:08:06 +0000 |
| commit | 8120fd052120423cc4e84d7e893bef125fb06a6b (patch) | |
| tree | 06baa3f1e015df4175133253f5044a4a0b504e1b /drw.c | |
| parent | 7ec530ef4612dc5b9df5e4faf57708df9e4fad8f (diff) | |
| download | suggpicker-8120fd052120423cc4e84d7e893bef125fb06a6b.tar.gz | |
overlapped key output: highlight letters swiped through
Diffstat (limited to 'drw.c')
| -rw-r--r-- | drw.c | 23 |
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; |
