From 2a855e62824653f7634617a2c19d88ba1c650911 Mon Sep 17 00:00:00 2001 From: emersion Date: Tue, 30 Jan 2018 12:01:10 +0100 Subject: rootston: fix urxvt damage on HiDPI outputs util/region: add wlr_region_expand --- util/region.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'util') diff --git a/util/region.c b/util/region.c index 9c4712f9..1bde0cb8 100644 --- a/util/region.c +++ b/util/region.c @@ -101,3 +101,30 @@ void wlr_region_transform(pixman_region32_t *dst, pixman_region32_t *src, pixman_region32_init_rects(dst, dst_rects, nrects); free(dst_rects); } + +void wlr_region_expand(pixman_region32_t *dst, pixman_region32_t *src, + int distance) { + if (distance == 0) { + pixman_region32_copy(dst, src); + return; + } + + int nrects; + pixman_box32_t *src_rects = pixman_region32_rectangles(src, &nrects); + + pixman_box32_t *dst_rects = malloc(nrects * sizeof(pixman_box32_t)); + if (dst_rects == NULL) { + return; + } + + for (int i = 0; i < nrects; ++i) { + dst_rects[i].x1 = src_rects[i].x1 - distance; + dst_rects[i].x2 = src_rects[i].x2 + distance; + dst_rects[i].y1 = src_rects[i].y1 - distance; + dst_rects[i].y2 = src_rects[i].y2 + distance; + } + + pixman_region32_fini(dst); + pixman_region32_init_rects(dst, dst_rects, nrects); + free(dst_rects); +} -- cgit v1.2.3