mirror of https://github.com/yshui/picom.git
Fixed ugly dark shadows in case of smaller window than shadow radius. (#695)
This commit is contained in:
parent
ee7d96101d
commit
de959f910b
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue