fix naive blur
This commit is contained in:
parent
2040285ce9
commit
29251d61cd
11
blur.c
11
blur.c
|
@ -96,9 +96,10 @@ blur_image_surface (cairo_surface_t *surface, int sigma)
|
||||||
}
|
}
|
||||||
|
|
||||||
void blur_impl_horizontal_pass_generic(uint32_t *src, uint32_t *dst, int width, int height) {
|
void blur_impl_horizontal_pass_generic(uint32_t *src, uint32_t *dst, int width, int height) {
|
||||||
|
uint32_t *o_src = src;
|
||||||
for (int row = 0; row < height; row++) {
|
for (int row = 0; row < height; row++) {
|
||||||
for (int column = 0; column < width; column++, src++) {
|
for (int column = 0; column < width; column++, src++) {
|
||||||
uint32_t rgbaIn[KERNEL_SIZE];
|
uint32_t rgbaIn[KERNEL_SIZE + 1];
|
||||||
|
|
||||||
// handle borders
|
// handle borders
|
||||||
int leftBorder = column < HALF_KERNEL;
|
int leftBorder = column < HALF_KERNEL;
|
||||||
|
@ -119,8 +120,12 @@ void blur_impl_horizontal_pass_generic(uint32_t *src, uint32_t *dst, int width,
|
||||||
for (int k = 0; i < KERNEL_SIZE; i++, k++)
|
for (int k = 0; i < KERNEL_SIZE; i++, k++)
|
||||||
rgbaIn[i] = *(src - k);
|
rgbaIn[i] = *(src - k);
|
||||||
} else {
|
} else {
|
||||||
for (; i < KERNEL_SIZE; i++)
|
for (; i < KERNEL_SIZE; i++) {
|
||||||
rgbaIn[i] = *(src + i - HALF_KERNEL);
|
if ((long long) ((src + 4*i - HALF_KERNEL) + 1)
|
||||||
|
> (long long) (o_src + (height * width)))
|
||||||
|
break;
|
||||||
|
rgbaIn[i] = *(src + i - HALF_KERNEL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t acc[4] = {0};
|
uint32_t acc[4] = {0};
|
||||||
|
|
Loading…
Reference in New Issue