Fixed ugly dark shadows in case of smaller window than shadow radius. (#695)

This commit is contained in:
Istvan Petres 2021-09-21 19:01:18 +03:00 committed by GitHub
parent ee7d96101d
commit de959f910b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 7 deletions

View File

@ -100,7 +100,7 @@ make_shadow(xcb_connection_t *c, const conv *kernel, double opacity, int width,
for (int x = 0; x < swidth; x++) { for (int x = 0; x < swidth; x++) {
double sum = sum_kernel_normalized( double sum = sum_kernel_normalized(
kernel, d - x - 1, d - y - 1, width, height); kernel, d - x - 1, d - y - 1, width, height);
data[y * sstride + x] = (uint8_t)(sum * 255.0); data[y * sstride + x] = (uint8_t)(sum * 255.0 * opacity);
} }
} }
return ximage; return ximage;
@ -118,14 +118,14 @@ make_shadow(xcb_connection_t *c, const conv *kernel, double opacity, int width,
for (int x = 0; x < r * 2; x++) { for (int x = 0; x < r * 2; x++) {
double sum = sum_kernel_normalized(kernel, d - x - 1, double sum = sum_kernel_normalized(kernel, d - x - 1,
d - y - 1, d, height) * d - y - 1, d, height) *
255.0; 255.0 * opacity;
data[y * sstride + x] = (uint8_t)sum; data[y * sstride + x] = (uint8_t)sum;
data[y * sstride + swidth - x - 1] = (uint8_t)sum; data[y * sstride + swidth - x - 1] = (uint8_t)sum;
} }
} }
for (int y = 0; y < sheight; y++) { for (int y = 0; y < sheight; y++) {
double sum = double sum = sum_kernel_normalized(kernel, 0, d - y - 1, d, height) *
sum_kernel_normalized(kernel, 0, d - y - 1, d, height) * 255.0; 255.0 * opacity;
memset(&data[y * sstride + r * 2], (uint8_t)sum, memset(&data[y * sstride + r * 2], (uint8_t)sum,
(size_t)(width - 2 * r)); (size_t)(width - 2 * r));
} }
@ -137,14 +137,14 @@ make_shadow(xcb_connection_t *c, const conv *kernel, double opacity, int width,
for (int x = 0; x < swidth; x++) { for (int x = 0; x < swidth; x++) {
double sum = sum_kernel_normalized(kernel, d - x - 1, double sum = sum_kernel_normalized(kernel, d - x - 1,
d - y - 1, width, d) * d - y - 1, width, d) *
255.0; 255.0 * opacity;
data[y * sstride + x] = (uint8_t)sum; data[y * sstride + x] = (uint8_t)sum;
data[(sheight - y - 1) * sstride + x] = (uint8_t)sum; data[(sheight - y - 1) * sstride + x] = (uint8_t)sum;
} }
} }
for (int x = 0; x < swidth; x++) { for (int x = 0; x < swidth; x++) {
double sum = double sum = sum_kernel_normalized(kernel, d - x - 1, 0, width, d) *
sum_kernel_normalized(kernel, d - x - 1, 0, width, d) * 255.0; 255.0 * opacity;
for (int y = r * 2; y < height; y++) { for (int y = r * 2; y < height; y++) {
data[y * sstride + x] = (uint8_t)sum; data[y * sstride + x] = (uint8_t)sum;
} }