From ffe1b798816c3dfbe040ae14fe4c0b61076a477c Mon Sep 17 00:00:00 2001 From: Yuxuan Shui Date: Wed, 12 Jan 2022 13:34:37 +0000 Subject: [PATCH] backend: add new property: BORDER_COLOR Signed-off-by: Yuxuan Shui --- src/backend/backend.c | 9 +++++++++ src/backend/backend.h | 3 +++ src/backend/backend_common.c | 1 + src/backend/backend_common.h | 1 + 4 files changed, 14 insertions(+) diff --git a/src/backend/backend.c b/src/backend/backend.c index bbc8bd6..36c5fec 100644 --- a/src/backend/backend.c +++ b/src/backend/backend.c @@ -342,6 +342,15 @@ void paint_all_new(session_t *ps, struct managed_win *t, bool ignore_damage) { ps->backend_data->ops->set_image_property( ps->backend_data, IMAGE_PROPERTY_CORNER_RADIUS, w->win_image, (double[]){w->corner_radius}); + if (w->corner_radius) { + struct color border_color; + ps->backend_data->ops->read_pixel( + ps->backend_data, w->win_image, 0, w->heightb, + &border_color); + ps->backend_data->ops->set_image_property( + ps->backend_data, IMAGE_PROPERTY_BORDER_COLOR, + w->win_image, &border_color); + } } if (w->opacity * MAX_ALPHA < 1) { diff --git a/src/backend/backend.h b/src/backend/backend.h index 613073a..721b197 100644 --- a/src/backend/backend.h +++ b/src/backend/backend.h @@ -58,6 +58,9 @@ enum image_properties { // Gives the image a rounded corner. // 1 double, default: 0 IMAGE_PROPERTY_CORNER_RADIUS, + // Border color + // 1 struct color, default: black + IMAGE_PROPERTY_BORDER_COLOR, }; enum image_operations { diff --git a/src/backend/backend_common.c b/src/backend/backend_common.c index b0145ef..d5dd705 100644 --- a/src/backend/backend_common.c +++ b/src/backend/backend_common.c @@ -451,6 +451,7 @@ bool default_set_image_property(backend_t *base attr_unused, enum image_properti break; case IMAGE_PROPERTY_CORNER_RADIUS: tex->corner_radius = dargs[0]; break; case IMAGE_PROPERTY_MAX_BRIGHTNESS: tex->max_brightness = dargs[0]; break; + case IMAGE_PROPERTY_BORDER_COLOR: tex->border_color = *(struct color *)arg; break; } return true; diff --git a/src/backend/backend_common.h b/src/backend/backend_common.h index 1aaf133..6d967b5 100644 --- a/src/backend/backend_common.h +++ b/src/backend/backend_common.h @@ -41,6 +41,7 @@ struct backend_image { // Effective size of the image int ewidth, eheight; bool color_inverted; + struct color border_color; }; bool build_shadow(xcb_connection_t *, xcb_drawable_t, double opacity, int width,