}
void
-blur_surface(cairo_surface_t *surface)
+blur_surface(cairo_surface_t *surface, int margin)
{
cairo_surface_t *tmp;
int32_t width, height, stride, x, y, z, w;
uint8_t *src, *dst;
uint32_t *s, *d, a, p;
- int i, j, k, size = 23, half;
+ int i, j, k, size = 17, half;
uint8_t kernel[100];
double f;
s = (uint32_t *) (src + i * stride);
d = (uint32_t *) (dst + i * stride);
for (j = 0; j < width; j++) {
+ if (margin < j && j < width - margin &&
+ margin < i && i < height - margin)
+ continue;
x = 0;
y = 0;
z = 0;
s = (uint32_t *) (dst + i * stride);
d = (uint32_t *) (src + i * stride);
for (j = 0; j < width; j++) {
+ if (margin <= j && j < width - margin &&
+ margin <= i && i < height - margin)
+ continue;
x = 0;
y = 0;
z = 0;
buffer_create_from_cairo_surface(int fd, cairo_surface_t *surface);
void
-blur_surface(cairo_surface_t *surface);
+blur_surface(cairo_surface_t *surface, int margin);
#endif
cairo_set_source_rgb(cr, 0, 0, 0);
cairo_stroke_preserve(cr);
cairo_fill(cr);
- blur_surface(surface);
+ blur_surface(surface, INT_MAX);
pointer_path(cr, hotspot_x, hotspot_y);
cairo_stroke_preserve(cr);
rounded_rect(cr, 1, 1, window->width - 1, window->height - 1, radius);
cairo_stroke_preserve(cr);
cairo_fill(cr);
- blur_surface(surface);
+ blur_surface(surface, 16 + radius);
cairo_translate(cr, -5, -3);
cairo_set_line_width (cr, border);
cairo_stroke_preserve(cr);
cairo_set_source_rgb(cr, 1, 1, 1);
cairo_fill(cr);
-
cairo_destroy(cr);
if (window->buffer != NULL)