void smooth(int dim, pixel *src, pixel *dst) { register int i; register int j; register int d = dim; for(j = 0; j < d; ++j) { register int rdx = j; for(i = 0; i < d; ++i) { register int red = 0; register int green = 0; register int blue = 0; register int num = 0; register int min_i = min(i+1,d-1); register int min_j = min(j+1,d-1); register int max_i = max(i-1,0); register int jj = max(j-1,0); for(; jj <= min_j; ++jj) { register int rdx2 = jj + max_i * d; register int ii = max_i; for(; ii <= min_i; ++ii) { red += src[rdx2].red; green += src[rdx2].green; blue += src[rdx2].blue; ++num; rdx2 += d; } } dst[rdx].red = (red / num); dst[rdx].green = (green / num); dst[rdx].blue = (blue / num); rdx += d; } } }