@@ -45,6 +45,7 @@ static void boxes_for_gauss(REBDEC sigma, REBINT sizes[3])
45
45
REBDEC mIdeal ;
46
46
REBINT m ;
47
47
REBINT n = 3 ;
48
+ REBINT i ;
48
49
49
50
wIdeal = sqrt ((REBDEC )(12 * sigma * sigma / n ) + 1 ); /* Ideal averaging filter width */
50
51
wl = (REBINT )floor (wIdeal );
@@ -55,7 +56,7 @@ static void boxes_for_gauss(REBDEC sigma, REBINT sizes[3])
55
56
mIdeal = (12 * sigma * sigma - (REBDEC )wl * wl * n - 4.0 * n * wl - 3.0 * n ) / (-4.0 * wl - 4 );
56
57
m = (REBINT )round (mIdeal );
57
58
58
- for (REBINT i = 0 ; i < n ; i ++ )
59
+ for (i = 0 ; i < n ; i ++ )
59
60
{
60
61
if (i < m )
61
62
{
@@ -70,36 +71,37 @@ static void boxes_for_gauss(REBDEC sigma, REBINT sizes[3])
70
71
71
72
static void box_blur_H (REBYTE * scl , REBYTE * tcl , REBINT w , REBINT h , REBINT r , REBINT bpp )
72
73
{
73
- for (REBINT i = 0 ; i < h ; i ++ )
74
+ REBINT i , j , k , ti , li , ri , fv , lv , val ;
75
+ for (i = 0 ; i < h ; i ++ )
74
76
{
75
- for (REBINT k = 0 ; k < bpp ; k ++ )
77
+ for (k = 0 ; k < bpp ; k ++ )
76
78
{
77
- REBINT ti = i * w * bpp + k ;
78
- REBINT li = ti ;
79
- REBINT ri = ti + r * bpp ;
80
- REBINT fv = scl [li ];
81
- REBINT lv = scl [ti + (w - 1 ) * bpp ];
82
- REBINT val = (r + 1 ) * fv ;
83
- for (REBINT j = 0 ; j < r ; j ++ )
79
+ ti = i * w * bpp + k ;
80
+ li = ti ;
81
+ ri = ti + r * bpp ;
82
+ fv = scl [li ];
83
+ lv = scl [ti + (w - 1 ) * bpp ];
84
+ val = (r + 1 ) * fv ;
85
+ for (j = 0 ; j < r ; j ++ )
84
86
{
85
87
val += scl [ti + (j * bpp )];
86
88
}
87
- for (REBINT j = 0 ; j <= r ; j ++ )
89
+ for (j = 0 ; j <= r ; j ++ )
88
90
{
89
91
val += scl [ri ] - fv ;
90
92
tcl [ti ] = (REBYTE )round (val / (r + r + 1 ));
91
93
ri += bpp ;
92
94
ti += bpp ;
93
95
}
94
- for (REBINT j = r + 1 ; j < (w - r ); j ++ )
96
+ for (j = r + 1 ; j < (w - r ); j ++ )
95
97
{
96
98
val += scl [ri ] - scl [li ];
97
99
tcl [ti ] = (REBYTE )round (val / (r + r + 1 ));
98
100
li += bpp ;
99
101
ri += bpp ;
100
102
ti += bpp ;
101
103
}
102
- for (REBINT j = w - r ; j < w ; j ++ )
104
+ for (j = w - r ; j < w ; j ++ )
103
105
{
104
106
val += lv - scl [li ];
105
107
tcl [ti ] = (REBYTE )round (val / (r + r + 1 ));
@@ -155,7 +157,8 @@ static void box_blur_T(REBYTE*scl, REBYTE*tcl, REBINT w, REBINT h, REBINT r, REB
155
157
156
158
static void box_blur (REBYTE * scl , REBYTE * tcl , REBINT w , REBINT h , REBINT r , REBINT bpp )
157
159
{
158
- for (REBINT i = 0 ; i < (h * w * bpp ); i ++ )
160
+ REBINT i ;
161
+ for (i = 0 ; i < (h * w * bpp ); i ++ )
159
162
{
160
163
tcl [i ] = scl [i ];
161
164
}
@@ -165,13 +168,14 @@ static void box_blur(REBYTE*scl, REBYTE*tcl, REBINT w, REBINT h, REBINT r, REBIN
165
168
166
169
void fast_gauss_blur (REBYTE * scl , REBYTE * tcl , REBINT w , REBINT h , REBINT r , REBINT bpp )
167
170
{
171
+ REBINT i ;
168
172
REBINT bxs [3 ];
169
173
boxes_for_gauss (r , bxs );
170
174
box_blur (scl , tcl , w , h , (bxs [0 ] - 1 ) / 2 , bpp );
171
175
box_blur (tcl , scl , w , h , (bxs [1 ] - 1 ) / 2 , bpp );
172
176
box_blur (scl , tcl , w , h , (bxs [2 ] - 1 ) / 2 , bpp );
173
177
// result would be in tcl, so copy it back to source, as it is modified anyway
174
- for (REBINT i = 0 ; i < (h * w * bpp ); i ++ )
178
+ for (i = 0 ; i < (h * w * bpp ); i ++ )
175
179
{
176
180
scl [i ] = tcl [i ];
177
181
}
0 commit comments