Leptonica  1.83.1
Image processing and image analysis suite
fmorphgenlow.1.c
1 /*====================================================================*
2  - Copyright (C) 2001 Leptonica. All rights reserved.
3  -
4  - Redistribution and use in source and binary forms, with or without
5  - modification, are permitted provided that the following conditions
6  - are met:
7  - 1. Redistributions of source code must retain the above copyright
8  - notice, this list of conditions and the following disclaimer.
9  - 2. Redistributions in binary form must reproduce the above
10  - copyright notice, this list of conditions and the following
11  - disclaimer in the documentation and/or other materials
12  - provided with the distribution.
13  -
14  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15  - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16  - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17  - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY
18  - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19  - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20  - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21  - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22  - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
23  - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24  - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25  *====================================================================*/
26 
38 #include "allheaders.h"
39 
40 static void fdilate_1_0(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
41 static void ferode_1_0(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
42 static void fdilate_1_1(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
43 static void ferode_1_1(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
44 static void fdilate_1_2(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
45 static void ferode_1_2(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
46 static void fdilate_1_3(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
47 static void ferode_1_3(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
48 static void fdilate_1_4(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
49 static void ferode_1_4(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
50 static void fdilate_1_5(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
51 static void ferode_1_5(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
52 static void fdilate_1_6(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
53 static void ferode_1_6(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
54 static void fdilate_1_7(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
55 static void ferode_1_7(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
56 static void fdilate_1_8(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
57 static void ferode_1_8(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
58 static void fdilate_1_9(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
59 static void ferode_1_9(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
60 static void fdilate_1_10(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
61 static void ferode_1_10(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
62 static void fdilate_1_11(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
63 static void ferode_1_11(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
64 static void fdilate_1_12(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
65 static void ferode_1_12(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
66 static void fdilate_1_13(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
67 static void ferode_1_13(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
68 static void fdilate_1_14(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
69 static void ferode_1_14(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
70 static void fdilate_1_15(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
71 static void ferode_1_15(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
72 static void fdilate_1_16(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
73 static void ferode_1_16(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
74 static void fdilate_1_17(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
75 static void ferode_1_17(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
76 static void fdilate_1_18(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
77 static void ferode_1_18(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
78 static void fdilate_1_19(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
79 static void ferode_1_19(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
80 static void fdilate_1_20(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
81 static void ferode_1_20(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
82 static void fdilate_1_21(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
83 static void ferode_1_21(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
84 static void fdilate_1_22(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
85 static void ferode_1_22(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
86 static void fdilate_1_23(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
87 static void ferode_1_23(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
88 static void fdilate_1_24(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
89 static void ferode_1_24(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
90 static void fdilate_1_25(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
91 static void ferode_1_25(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
92 static void fdilate_1_26(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
93 static void ferode_1_26(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
94 static void fdilate_1_27(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
95 static void ferode_1_27(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
96 static void fdilate_1_28(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
97 static void ferode_1_28(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
98 static void fdilate_1_29(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
99 static void ferode_1_29(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
100 static void fdilate_1_30(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
101 static void ferode_1_30(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
102 static void fdilate_1_31(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
103 static void ferode_1_31(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
104 static void fdilate_1_32(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
105 static void ferode_1_32(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
106 static void fdilate_1_33(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
107 static void ferode_1_33(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
108 static void fdilate_1_34(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
109 static void ferode_1_34(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
110 static void fdilate_1_35(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
111 static void ferode_1_35(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
112 static void fdilate_1_36(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
113 static void ferode_1_36(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
114 static void fdilate_1_37(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
115 static void ferode_1_37(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
116 static void fdilate_1_38(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
117 static void ferode_1_38(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
118 static void fdilate_1_39(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
119 static void ferode_1_39(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
120 static void fdilate_1_40(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
121 static void ferode_1_40(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
122 static void fdilate_1_41(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
123 static void ferode_1_41(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
124 static void fdilate_1_42(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
125 static void ferode_1_42(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
126 static void fdilate_1_43(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
127 static void ferode_1_43(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
128 static void fdilate_1_44(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
129 static void ferode_1_44(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
130 static void fdilate_1_45(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
131 static void ferode_1_45(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
132 static void fdilate_1_46(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
133 static void ferode_1_46(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
134 static void fdilate_1_47(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
135 static void ferode_1_47(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
136 static void fdilate_1_48(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
137 static void ferode_1_48(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
138 static void fdilate_1_49(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
139 static void ferode_1_49(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
140 static void fdilate_1_50(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
141 static void ferode_1_50(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
142 static void fdilate_1_51(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
143 static void ferode_1_51(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
144 static void fdilate_1_52(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
145 static void ferode_1_52(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
146 static void fdilate_1_53(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
147 static void ferode_1_53(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
148 static void fdilate_1_54(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
149 static void ferode_1_54(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
150 static void fdilate_1_55(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
151 static void ferode_1_55(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
152 static void fdilate_1_56(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
153 static void ferode_1_56(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
154 static void fdilate_1_57(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
155 static void ferode_1_57(l_uint32 *, l_int32, l_int32, l_int32, l_uint32 *, l_int32);
156 
157 
158 /*---------------------------------------------------------------------*
159  * Fast morph dispatcher *
160  *---------------------------------------------------------------------*/
166 l_int32
167 fmorphopgen_low_1(l_uint32 *datad,
168  l_int32 w,
169  l_int32 h,
170  l_int32 wpld,
171  l_uint32 *datas,
172  l_int32 wpls,
173  l_int32 index)
174 {
175 
176  switch (index)
177  {
178  case 0:
179  fdilate_1_0(datad, w, h, wpld, datas, wpls);
180  break;
181  case 1:
182  ferode_1_0(datad, w, h, wpld, datas, wpls);
183  break;
184  case 2:
185  fdilate_1_1(datad, w, h, wpld, datas, wpls);
186  break;
187  case 3:
188  ferode_1_1(datad, w, h, wpld, datas, wpls);
189  break;
190  case 4:
191  fdilate_1_2(datad, w, h, wpld, datas, wpls);
192  break;
193  case 5:
194  ferode_1_2(datad, w, h, wpld, datas, wpls);
195  break;
196  case 6:
197  fdilate_1_3(datad, w, h, wpld, datas, wpls);
198  break;
199  case 7:
200  ferode_1_3(datad, w, h, wpld, datas, wpls);
201  break;
202  case 8:
203  fdilate_1_4(datad, w, h, wpld, datas, wpls);
204  break;
205  case 9:
206  ferode_1_4(datad, w, h, wpld, datas, wpls);
207  break;
208  case 10:
209  fdilate_1_5(datad, w, h, wpld, datas, wpls);
210  break;
211  case 11:
212  ferode_1_5(datad, w, h, wpld, datas, wpls);
213  break;
214  case 12:
215  fdilate_1_6(datad, w, h, wpld, datas, wpls);
216  break;
217  case 13:
218  ferode_1_6(datad, w, h, wpld, datas, wpls);
219  break;
220  case 14:
221  fdilate_1_7(datad, w, h, wpld, datas, wpls);
222  break;
223  case 15:
224  ferode_1_7(datad, w, h, wpld, datas, wpls);
225  break;
226  case 16:
227  fdilate_1_8(datad, w, h, wpld, datas, wpls);
228  break;
229  case 17:
230  ferode_1_8(datad, w, h, wpld, datas, wpls);
231  break;
232  case 18:
233  fdilate_1_9(datad, w, h, wpld, datas, wpls);
234  break;
235  case 19:
236  ferode_1_9(datad, w, h, wpld, datas, wpls);
237  break;
238  case 20:
239  fdilate_1_10(datad, w, h, wpld, datas, wpls);
240  break;
241  case 21:
242  ferode_1_10(datad, w, h, wpld, datas, wpls);
243  break;
244  case 22:
245  fdilate_1_11(datad, w, h, wpld, datas, wpls);
246  break;
247  case 23:
248  ferode_1_11(datad, w, h, wpld, datas, wpls);
249  break;
250  case 24:
251  fdilate_1_12(datad, w, h, wpld, datas, wpls);
252  break;
253  case 25:
254  ferode_1_12(datad, w, h, wpld, datas, wpls);
255  break;
256  case 26:
257  fdilate_1_13(datad, w, h, wpld, datas, wpls);
258  break;
259  case 27:
260  ferode_1_13(datad, w, h, wpld, datas, wpls);
261  break;
262  case 28:
263  fdilate_1_14(datad, w, h, wpld, datas, wpls);
264  break;
265  case 29:
266  ferode_1_14(datad, w, h, wpld, datas, wpls);
267  break;
268  case 30:
269  fdilate_1_15(datad, w, h, wpld, datas, wpls);
270  break;
271  case 31:
272  ferode_1_15(datad, w, h, wpld, datas, wpls);
273  break;
274  case 32:
275  fdilate_1_16(datad, w, h, wpld, datas, wpls);
276  break;
277  case 33:
278  ferode_1_16(datad, w, h, wpld, datas, wpls);
279  break;
280  case 34:
281  fdilate_1_17(datad, w, h, wpld, datas, wpls);
282  break;
283  case 35:
284  ferode_1_17(datad, w, h, wpld, datas, wpls);
285  break;
286  case 36:
287  fdilate_1_18(datad, w, h, wpld, datas, wpls);
288  break;
289  case 37:
290  ferode_1_18(datad, w, h, wpld, datas, wpls);
291  break;
292  case 38:
293  fdilate_1_19(datad, w, h, wpld, datas, wpls);
294  break;
295  case 39:
296  ferode_1_19(datad, w, h, wpld, datas, wpls);
297  break;
298  case 40:
299  fdilate_1_20(datad, w, h, wpld, datas, wpls);
300  break;
301  case 41:
302  ferode_1_20(datad, w, h, wpld, datas, wpls);
303  break;
304  case 42:
305  fdilate_1_21(datad, w, h, wpld, datas, wpls);
306  break;
307  case 43:
308  ferode_1_21(datad, w, h, wpld, datas, wpls);
309  break;
310  case 44:
311  fdilate_1_22(datad, w, h, wpld, datas, wpls);
312  break;
313  case 45:
314  ferode_1_22(datad, w, h, wpld, datas, wpls);
315  break;
316  case 46:
317  fdilate_1_23(datad, w, h, wpld, datas, wpls);
318  break;
319  case 47:
320  ferode_1_23(datad, w, h, wpld, datas, wpls);
321  break;
322  case 48:
323  fdilate_1_24(datad, w, h, wpld, datas, wpls);
324  break;
325  case 49:
326  ferode_1_24(datad, w, h, wpld, datas, wpls);
327  break;
328  case 50:
329  fdilate_1_25(datad, w, h, wpld, datas, wpls);
330  break;
331  case 51:
332  ferode_1_25(datad, w, h, wpld, datas, wpls);
333  break;
334  case 52:
335  fdilate_1_26(datad, w, h, wpld, datas, wpls);
336  break;
337  case 53:
338  ferode_1_26(datad, w, h, wpld, datas, wpls);
339  break;
340  case 54:
341  fdilate_1_27(datad, w, h, wpld, datas, wpls);
342  break;
343  case 55:
344  ferode_1_27(datad, w, h, wpld, datas, wpls);
345  break;
346  case 56:
347  fdilate_1_28(datad, w, h, wpld, datas, wpls);
348  break;
349  case 57:
350  ferode_1_28(datad, w, h, wpld, datas, wpls);
351  break;
352  case 58:
353  fdilate_1_29(datad, w, h, wpld, datas, wpls);
354  break;
355  case 59:
356  ferode_1_29(datad, w, h, wpld, datas, wpls);
357  break;
358  case 60:
359  fdilate_1_30(datad, w, h, wpld, datas, wpls);
360  break;
361  case 61:
362  ferode_1_30(datad, w, h, wpld, datas, wpls);
363  break;
364  case 62:
365  fdilate_1_31(datad, w, h, wpld, datas, wpls);
366  break;
367  case 63:
368  ferode_1_31(datad, w, h, wpld, datas, wpls);
369  break;
370  case 64:
371  fdilate_1_32(datad, w, h, wpld, datas, wpls);
372  break;
373  case 65:
374  ferode_1_32(datad, w, h, wpld, datas, wpls);
375  break;
376  case 66:
377  fdilate_1_33(datad, w, h, wpld, datas, wpls);
378  break;
379  case 67:
380  ferode_1_33(datad, w, h, wpld, datas, wpls);
381  break;
382  case 68:
383  fdilate_1_34(datad, w, h, wpld, datas, wpls);
384  break;
385  case 69:
386  ferode_1_34(datad, w, h, wpld, datas, wpls);
387  break;
388  case 70:
389  fdilate_1_35(datad, w, h, wpld, datas, wpls);
390  break;
391  case 71:
392  ferode_1_35(datad, w, h, wpld, datas, wpls);
393  break;
394  case 72:
395  fdilate_1_36(datad, w, h, wpld, datas, wpls);
396  break;
397  case 73:
398  ferode_1_36(datad, w, h, wpld, datas, wpls);
399  break;
400  case 74:
401  fdilate_1_37(datad, w, h, wpld, datas, wpls);
402  break;
403  case 75:
404  ferode_1_37(datad, w, h, wpld, datas, wpls);
405  break;
406  case 76:
407  fdilate_1_38(datad, w, h, wpld, datas, wpls);
408  break;
409  case 77:
410  ferode_1_38(datad, w, h, wpld, datas, wpls);
411  break;
412  case 78:
413  fdilate_1_39(datad, w, h, wpld, datas, wpls);
414  break;
415  case 79:
416  ferode_1_39(datad, w, h, wpld, datas, wpls);
417  break;
418  case 80:
419  fdilate_1_40(datad, w, h, wpld, datas, wpls);
420  break;
421  case 81:
422  ferode_1_40(datad, w, h, wpld, datas, wpls);
423  break;
424  case 82:
425  fdilate_1_41(datad, w, h, wpld, datas, wpls);
426  break;
427  case 83:
428  ferode_1_41(datad, w, h, wpld, datas, wpls);
429  break;
430  case 84:
431  fdilate_1_42(datad, w, h, wpld, datas, wpls);
432  break;
433  case 85:
434  ferode_1_42(datad, w, h, wpld, datas, wpls);
435  break;
436  case 86:
437  fdilate_1_43(datad, w, h, wpld, datas, wpls);
438  break;
439  case 87:
440  ferode_1_43(datad, w, h, wpld, datas, wpls);
441  break;
442  case 88:
443  fdilate_1_44(datad, w, h, wpld, datas, wpls);
444  break;
445  case 89:
446  ferode_1_44(datad, w, h, wpld, datas, wpls);
447  break;
448  case 90:
449  fdilate_1_45(datad, w, h, wpld, datas, wpls);
450  break;
451  case 91:
452  ferode_1_45(datad, w, h, wpld, datas, wpls);
453  break;
454  case 92:
455  fdilate_1_46(datad, w, h, wpld, datas, wpls);
456  break;
457  case 93:
458  ferode_1_46(datad, w, h, wpld, datas, wpls);
459  break;
460  case 94:
461  fdilate_1_47(datad, w, h, wpld, datas, wpls);
462  break;
463  case 95:
464  ferode_1_47(datad, w, h, wpld, datas, wpls);
465  break;
466  case 96:
467  fdilate_1_48(datad, w, h, wpld, datas, wpls);
468  break;
469  case 97:
470  ferode_1_48(datad, w, h, wpld, datas, wpls);
471  break;
472  case 98:
473  fdilate_1_49(datad, w, h, wpld, datas, wpls);
474  break;
475  case 99:
476  ferode_1_49(datad, w, h, wpld, datas, wpls);
477  break;
478  case 100:
479  fdilate_1_50(datad, w, h, wpld, datas, wpls);
480  break;
481  case 101:
482  ferode_1_50(datad, w, h, wpld, datas, wpls);
483  break;
484  case 102:
485  fdilate_1_51(datad, w, h, wpld, datas, wpls);
486  break;
487  case 103:
488  ferode_1_51(datad, w, h, wpld, datas, wpls);
489  break;
490  case 104:
491  fdilate_1_52(datad, w, h, wpld, datas, wpls);
492  break;
493  case 105:
494  ferode_1_52(datad, w, h, wpld, datas, wpls);
495  break;
496  case 106:
497  fdilate_1_53(datad, w, h, wpld, datas, wpls);
498  break;
499  case 107:
500  ferode_1_53(datad, w, h, wpld, datas, wpls);
501  break;
502  case 108:
503  fdilate_1_54(datad, w, h, wpld, datas, wpls);
504  break;
505  case 109:
506  ferode_1_54(datad, w, h, wpld, datas, wpls);
507  break;
508  case 110:
509  fdilate_1_55(datad, w, h, wpld, datas, wpls);
510  break;
511  case 111:
512  ferode_1_55(datad, w, h, wpld, datas, wpls);
513  break;
514  case 112:
515  fdilate_1_56(datad, w, h, wpld, datas, wpls);
516  break;
517  case 113:
518  ferode_1_56(datad, w, h, wpld, datas, wpls);
519  break;
520  case 114:
521  fdilate_1_57(datad, w, h, wpld, datas, wpls);
522  break;
523  case 115:
524  ferode_1_57(datad, w, h, wpld, datas, wpls);
525  break;
526  }
527 
528  return 0;
529 }
530 
531 
532 /*--------------------------------------------------------------------------*
533  * Low-level auto-generated static routines *
534  *--------------------------------------------------------------------------*/
535 /*
536  * N.B. In all the low-level routines, the part of the image
537  * that is accessed has been clipped by 32 pixels on
538  * all four sides. This is done in the higher level
539  * code by redefining w and h smaller and by moving the
540  * start-of-image pointers up to the beginning of this
541  * interior rectangle.
542  */
543 static void
544 fdilate_1_0(l_uint32 *datad,
545  l_int32 w,
546  l_int32 h,
547  l_int32 wpld,
548  l_uint32 *datas,
549  l_int32 wpls)
550 {
551 l_int32 i;
552 l_int32 j, pwpls;
553 l_uint32 *sptr, *dptr;
554 
555  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
556 
557  for (i = 0; i < h; i++) {
558  sptr = datas + i * wpls;
559  dptr = datad + i * wpld;
560  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
561  *dptr = ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
562  (*sptr);
563  }
564  }
565 }
566 
567 static void
568 ferode_1_0(l_uint32 *datad,
569  l_int32 w,
570  l_int32 h,
571  l_int32 wpld,
572  l_uint32 *datas,
573  l_int32 wpls)
574 {
575 l_int32 i;
576 l_int32 j, pwpls;
577 l_uint32 *sptr, *dptr;
578 
579  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
580 
581  for (i = 0; i < h; i++) {
582  sptr = datas + i * wpls;
583  dptr = datad + i * wpld;
584  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
585  *dptr = ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
586  (*sptr);
587  }
588  }
589 }
590 
591 static void
592 fdilate_1_1(l_uint32 *datad,
593  l_int32 w,
594  l_int32 h,
595  l_int32 wpld,
596  l_uint32 *datas,
597  l_int32 wpls)
598 {
599 l_int32 i;
600 l_int32 j, pwpls;
601 l_uint32 *sptr, *dptr;
602 
603  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
604 
605  for (i = 0; i < h; i++) {
606  sptr = datas + i * wpls;
607  dptr = datad + i * wpld;
608  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
609  *dptr = ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
610  (*sptr) |
611  ((*(sptr) >> 1) | (*(sptr - 1) << 31));
612  }
613  }
614 }
615 
616 static void
617 ferode_1_1(l_uint32 *datad,
618  l_int32 w,
619  l_int32 h,
620  l_int32 wpld,
621  l_uint32 *datas,
622  l_int32 wpls)
623 {
624 l_int32 i;
625 l_int32 j, pwpls;
626 l_uint32 *sptr, *dptr;
627 
628  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
629 
630  for (i = 0; i < h; i++) {
631  sptr = datas + i * wpls;
632  dptr = datad + i * wpld;
633  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
634  *dptr = ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
635  (*sptr) &
636  ((*(sptr) << 1) | (*(sptr + 1) >> 31));
637  }
638  }
639 }
640 
641 static void
642 fdilate_1_2(l_uint32 *datad,
643  l_int32 w,
644  l_int32 h,
645  l_int32 wpld,
646  l_uint32 *datas,
647  l_int32 wpls)
648 {
649 l_int32 i;
650 l_int32 j, pwpls;
651 l_uint32 *sptr, *dptr;
652 
653  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
654 
655  for (i = 0; i < h; i++) {
656  sptr = datas + i * wpls;
657  dptr = datad + i * wpld;
658  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
659  *dptr = ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
660  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
661  (*sptr) |
662  ((*(sptr) >> 1) | (*(sptr - 1) << 31));
663  }
664  }
665 }
666 
667 static void
668 ferode_1_2(l_uint32 *datad,
669  l_int32 w,
670  l_int32 h,
671  l_int32 wpld,
672  l_uint32 *datas,
673  l_int32 wpls)
674 {
675 l_int32 i;
676 l_int32 j, pwpls;
677 l_uint32 *sptr, *dptr;
678 
679  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
680 
681  for (i = 0; i < h; i++) {
682  sptr = datas + i * wpls;
683  dptr = datad + i * wpld;
684  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
685  *dptr = ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
686  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
687  (*sptr) &
688  ((*(sptr) << 1) | (*(sptr + 1) >> 31));
689  }
690  }
691 }
692 
693 static void
694 fdilate_1_3(l_uint32 *datad,
695  l_int32 w,
696  l_int32 h,
697  l_int32 wpld,
698  l_uint32 *datas,
699  l_int32 wpls)
700 {
701 l_int32 i;
702 l_int32 j, pwpls;
703 l_uint32 *sptr, *dptr;
704 
705  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
706 
707  for (i = 0; i < h; i++) {
708  sptr = datas + i * wpls;
709  dptr = datad + i * wpld;
710  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
711  *dptr = ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
712  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
713  (*sptr) |
714  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
715  ((*(sptr) >> 2) | (*(sptr - 1) << 30));
716  }
717  }
718 }
719 
720 static void
721 ferode_1_3(l_uint32 *datad,
722  l_int32 w,
723  l_int32 h,
724  l_int32 wpld,
725  l_uint32 *datas,
726  l_int32 wpls)
727 {
728 l_int32 i;
729 l_int32 j, pwpls;
730 l_uint32 *sptr, *dptr;
731 
732  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
733 
734  for (i = 0; i < h; i++) {
735  sptr = datas + i * wpls;
736  dptr = datad + i * wpld;
737  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
738  *dptr = ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
739  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
740  (*sptr) &
741  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
742  ((*(sptr) << 2) | (*(sptr + 1) >> 30));
743  }
744  }
745 }
746 
747 static void
748 fdilate_1_4(l_uint32 *datad,
749  l_int32 w,
750  l_int32 h,
751  l_int32 wpld,
752  l_uint32 *datas,
753  l_int32 wpls)
754 {
755 l_int32 i;
756 l_int32 j, pwpls;
757 l_uint32 *sptr, *dptr;
758 
759  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
760 
761  for (i = 0; i < h; i++) {
762  sptr = datas + i * wpls;
763  dptr = datad + i * wpld;
764  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
765  *dptr = ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
766  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
767  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
768  (*sptr) |
769  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
770  ((*(sptr) >> 2) | (*(sptr - 1) << 30));
771  }
772  }
773 }
774 
775 static void
776 ferode_1_4(l_uint32 *datad,
777  l_int32 w,
778  l_int32 h,
779  l_int32 wpld,
780  l_uint32 *datas,
781  l_int32 wpls)
782 {
783 l_int32 i;
784 l_int32 j, pwpls;
785 l_uint32 *sptr, *dptr;
786 
787  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
788 
789  for (i = 0; i < h; i++) {
790  sptr = datas + i * wpls;
791  dptr = datad + i * wpld;
792  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
793  *dptr = ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
794  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
795  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
796  (*sptr) &
797  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
798  ((*(sptr) << 2) | (*(sptr + 1) >> 30));
799  }
800  }
801 }
802 
803 static void
804 fdilate_1_5(l_uint32 *datad,
805  l_int32 w,
806  l_int32 h,
807  l_int32 wpld,
808  l_uint32 *datas,
809  l_int32 wpls)
810 {
811 l_int32 i;
812 l_int32 j, pwpls;
813 l_uint32 *sptr, *dptr;
814 
815  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
816 
817  for (i = 0; i < h; i++) {
818  sptr = datas + i * wpls;
819  dptr = datad + i * wpld;
820  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
821  *dptr = ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
822  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
823  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
824  (*sptr) |
825  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
826  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
827  ((*(sptr) >> 3) | (*(sptr - 1) << 29));
828  }
829  }
830 }
831 
832 static void
833 ferode_1_5(l_uint32 *datad,
834  l_int32 w,
835  l_int32 h,
836  l_int32 wpld,
837  l_uint32 *datas,
838  l_int32 wpls)
839 {
840 l_int32 i;
841 l_int32 j, pwpls;
842 l_uint32 *sptr, *dptr;
843 
844  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
845 
846  for (i = 0; i < h; i++) {
847  sptr = datas + i * wpls;
848  dptr = datad + i * wpld;
849  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
850  *dptr = ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
851  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
852  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
853  (*sptr) &
854  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
855  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
856  ((*(sptr) << 3) | (*(sptr + 1) >> 29));
857  }
858  }
859 }
860 
861 static void
862 fdilate_1_6(l_uint32 *datad,
863  l_int32 w,
864  l_int32 h,
865  l_int32 wpld,
866  l_uint32 *datas,
867  l_int32 wpls)
868 {
869 l_int32 i;
870 l_int32 j, pwpls;
871 l_uint32 *sptr, *dptr;
872 
873  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
874 
875  for (i = 0; i < h; i++) {
876  sptr = datas + i * wpls;
877  dptr = datad + i * wpld;
878  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
879  *dptr = ((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
880  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
881  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
882  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
883  (*sptr) |
884  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
885  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
886  ((*(sptr) >> 3) | (*(sptr - 1) << 29));
887  }
888  }
889 }
890 
891 static void
892 ferode_1_6(l_uint32 *datad,
893  l_int32 w,
894  l_int32 h,
895  l_int32 wpld,
896  l_uint32 *datas,
897  l_int32 wpls)
898 {
899 l_int32 i;
900 l_int32 j, pwpls;
901 l_uint32 *sptr, *dptr;
902 
903  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
904 
905  for (i = 0; i < h; i++) {
906  sptr = datas + i * wpls;
907  dptr = datad + i * wpld;
908  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
909  *dptr = ((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
910  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
911  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
912  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
913  (*sptr) &
914  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
915  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
916  ((*(sptr) << 3) | (*(sptr + 1) >> 29));
917  }
918  }
919 }
920 
921 static void
922 fdilate_1_7(l_uint32 *datad,
923  l_int32 w,
924  l_int32 h,
925  l_int32 wpld,
926  l_uint32 *datas,
927  l_int32 wpls)
928 {
929 l_int32 i;
930 l_int32 j, pwpls;
931 l_uint32 *sptr, *dptr;
932 
933  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
934 
935  for (i = 0; i < h; i++) {
936  sptr = datas + i * wpls;
937  dptr = datad + i * wpld;
938  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
939  *dptr = ((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
940  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
941  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
942  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
943  (*sptr) |
944  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
945  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
946  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
947  ((*(sptr) >> 4) | (*(sptr - 1) << 28));
948  }
949  }
950 }
951 
952 static void
953 ferode_1_7(l_uint32 *datad,
954  l_int32 w,
955  l_int32 h,
956  l_int32 wpld,
957  l_uint32 *datas,
958  l_int32 wpls)
959 {
960 l_int32 i;
961 l_int32 j, pwpls;
962 l_uint32 *sptr, *dptr;
963 
964  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
965 
966  for (i = 0; i < h; i++) {
967  sptr = datas + i * wpls;
968  dptr = datad + i * wpld;
969  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
970  *dptr = ((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
971  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
972  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
973  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
974  (*sptr) &
975  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
976  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
977  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
978  ((*(sptr) << 4) | (*(sptr + 1) >> 28));
979  }
980  }
981 }
982 
983 static void
984 fdilate_1_8(l_uint32 *datad,
985  l_int32 w,
986  l_int32 h,
987  l_int32 wpld,
988  l_uint32 *datas,
989  l_int32 wpls)
990 {
991 l_int32 i;
992 l_int32 j, pwpls;
993 l_uint32 *sptr, *dptr;
994 
995  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
996 
997  for (i = 0; i < h; i++) {
998  sptr = datas + i * wpls;
999  dptr = datad + i * wpld;
1000  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1001  *dptr = ((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
1002  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
1003  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
1004  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
1005  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
1006  (*sptr) |
1007  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
1008  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
1009  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
1010  ((*(sptr) >> 4) | (*(sptr - 1) << 28));
1011  }
1012  }
1013 }
1014 
1015 static void
1016 ferode_1_8(l_uint32 *datad,
1017  l_int32 w,
1018  l_int32 h,
1019  l_int32 wpld,
1020  l_uint32 *datas,
1021  l_int32 wpls)
1022 {
1023 l_int32 i;
1024 l_int32 j, pwpls;
1025 l_uint32 *sptr, *dptr;
1026 
1027  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1028 
1029  for (i = 0; i < h; i++) {
1030  sptr = datas + i * wpls;
1031  dptr = datad + i * wpld;
1032  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1033  *dptr = ((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
1034  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
1035  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
1036  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
1037  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
1038  (*sptr) &
1039  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
1040  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
1041  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
1042  ((*(sptr) << 4) | (*(sptr + 1) >> 28));
1043  }
1044  }
1045 }
1046 
1047 static void
1048 fdilate_1_9(l_uint32 *datad,
1049  l_int32 w,
1050  l_int32 h,
1051  l_int32 wpld,
1052  l_uint32 *datas,
1053  l_int32 wpls)
1054 {
1055 l_int32 i;
1056 l_int32 j, pwpls;
1057 l_uint32 *sptr, *dptr;
1058 
1059  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1060 
1061  for (i = 0; i < h; i++) {
1062  sptr = datas + i * wpls;
1063  dptr = datad + i * wpld;
1064  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1065  *dptr = ((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
1066  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
1067  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
1068  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
1069  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
1070  (*sptr) |
1071  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
1072  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
1073  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
1074  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
1075  ((*(sptr) >> 5) | (*(sptr - 1) << 27));
1076  }
1077  }
1078 }
1079 
1080 static void
1081 ferode_1_9(l_uint32 *datad,
1082  l_int32 w,
1083  l_int32 h,
1084  l_int32 wpld,
1085  l_uint32 *datas,
1086  l_int32 wpls)
1087 {
1088 l_int32 i;
1089 l_int32 j, pwpls;
1090 l_uint32 *sptr, *dptr;
1091 
1092  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1093 
1094  for (i = 0; i < h; i++) {
1095  sptr = datas + i * wpls;
1096  dptr = datad + i * wpld;
1097  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1098  *dptr = ((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
1099  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
1100  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
1101  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
1102  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
1103  (*sptr) &
1104  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
1105  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
1106  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
1107  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
1108  ((*(sptr) << 5) | (*(sptr + 1) >> 27));
1109  }
1110  }
1111 }
1112 
1113 static void
1114 fdilate_1_10(l_uint32 *datad,
1115  l_int32 w,
1116  l_int32 h,
1117  l_int32 wpld,
1118  l_uint32 *datas,
1119  l_int32 wpls)
1120 {
1121 l_int32 i;
1122 l_int32 j, pwpls;
1123 l_uint32 *sptr, *dptr;
1124 
1125  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1126 
1127  for (i = 0; i < h; i++) {
1128  sptr = datas + i * wpls;
1129  dptr = datad + i * wpld;
1130  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1131  *dptr = ((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
1132  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
1133  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
1134  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
1135  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
1136  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
1137  (*sptr) |
1138  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
1139  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
1140  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
1141  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
1142  ((*(sptr) >> 5) | (*(sptr - 1) << 27));
1143  }
1144  }
1145 }
1146 
1147 static void
1148 ferode_1_10(l_uint32 *datad,
1149  l_int32 w,
1150  l_int32 h,
1151  l_int32 wpld,
1152  l_uint32 *datas,
1153  l_int32 wpls)
1154 {
1155 l_int32 i;
1156 l_int32 j, pwpls;
1157 l_uint32 *sptr, *dptr;
1158 
1159  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1160 
1161  for (i = 0; i < h; i++) {
1162  sptr = datas + i * wpls;
1163  dptr = datad + i * wpld;
1164  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1165  *dptr = ((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
1166  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
1167  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
1168  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
1169  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
1170  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
1171  (*sptr) &
1172  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
1173  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
1174  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
1175  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
1176  ((*(sptr) << 5) | (*(sptr + 1) >> 27));
1177  }
1178  }
1179 }
1180 
1181 static void
1182 fdilate_1_11(l_uint32 *datad,
1183  l_int32 w,
1184  l_int32 h,
1185  l_int32 wpld,
1186  l_uint32 *datas,
1187  l_int32 wpls)
1188 {
1189 l_int32 i;
1190 l_int32 j, pwpls;
1191 l_uint32 *sptr, *dptr;
1192 
1193  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1194 
1195  for (i = 0; i < h; i++) {
1196  sptr = datas + i * wpls;
1197  dptr = datad + i * wpld;
1198  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1199  *dptr = ((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
1200  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
1201  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
1202  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
1203  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
1204  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
1205  (*sptr) |
1206  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
1207  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
1208  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
1209  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
1210  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
1211  ((*(sptr) >> 6) | (*(sptr - 1) << 26));
1212  }
1213  }
1214 }
1215 
1216 static void
1217 ferode_1_11(l_uint32 *datad,
1218  l_int32 w,
1219  l_int32 h,
1220  l_int32 wpld,
1221  l_uint32 *datas,
1222  l_int32 wpls)
1223 {
1224 l_int32 i;
1225 l_int32 j, pwpls;
1226 l_uint32 *sptr, *dptr;
1227 
1228  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1229 
1230  for (i = 0; i < h; i++) {
1231  sptr = datas + i * wpls;
1232  dptr = datad + i * wpld;
1233  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1234  *dptr = ((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
1235  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
1236  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
1237  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
1238  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
1239  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
1240  (*sptr) &
1241  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
1242  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
1243  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
1244  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
1245  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
1246  ((*(sptr) << 6) | (*(sptr + 1) >> 26));
1247  }
1248  }
1249 }
1250 
1251 static void
1252 fdilate_1_12(l_uint32 *datad,
1253  l_int32 w,
1254  l_int32 h,
1255  l_int32 wpld,
1256  l_uint32 *datas,
1257  l_int32 wpls)
1258 {
1259 l_int32 i;
1260 l_int32 j, pwpls;
1261 l_uint32 *sptr, *dptr;
1262 
1263  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1264 
1265  for (i = 0; i < h; i++) {
1266  sptr = datas + i * wpls;
1267  dptr = datad + i * wpld;
1268  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1269  *dptr = ((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
1270  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
1271  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
1272  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
1273  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
1274  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
1275  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
1276  (*sptr) |
1277  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
1278  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
1279  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
1280  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
1281  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
1282  ((*(sptr) >> 6) | (*(sptr - 1) << 26));
1283  }
1284  }
1285 }
1286 
1287 static void
1288 ferode_1_12(l_uint32 *datad,
1289  l_int32 w,
1290  l_int32 h,
1291  l_int32 wpld,
1292  l_uint32 *datas,
1293  l_int32 wpls)
1294 {
1295 l_int32 i;
1296 l_int32 j, pwpls;
1297 l_uint32 *sptr, *dptr;
1298 
1299  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1300 
1301  for (i = 0; i < h; i++) {
1302  sptr = datas + i * wpls;
1303  dptr = datad + i * wpld;
1304  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1305  *dptr = ((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
1306  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
1307  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
1308  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
1309  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
1310  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
1311  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
1312  (*sptr) &
1313  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
1314  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
1315  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
1316  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
1317  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
1318  ((*(sptr) << 6) | (*(sptr + 1) >> 26));
1319  }
1320  }
1321 }
1322 
1323 static void
1324 fdilate_1_13(l_uint32 *datad,
1325  l_int32 w,
1326  l_int32 h,
1327  l_int32 wpld,
1328  l_uint32 *datas,
1329  l_int32 wpls)
1330 {
1331 l_int32 i;
1332 l_int32 j, pwpls;
1333 l_uint32 *sptr, *dptr;
1334 
1335  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1336 
1337  for (i = 0; i < h; i++) {
1338  sptr = datas + i * wpls;
1339  dptr = datad + i * wpld;
1340  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1341  *dptr = ((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
1342  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
1343  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
1344  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
1345  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
1346  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
1347  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
1348  (*sptr) |
1349  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
1350  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
1351  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
1352  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
1353  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
1354  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
1355  ((*(sptr) >> 7) | (*(sptr - 1) << 25));
1356  }
1357  }
1358 }
1359 
1360 static void
1361 ferode_1_13(l_uint32 *datad,
1362  l_int32 w,
1363  l_int32 h,
1364  l_int32 wpld,
1365  l_uint32 *datas,
1366  l_int32 wpls)
1367 {
1368 l_int32 i;
1369 l_int32 j, pwpls;
1370 l_uint32 *sptr, *dptr;
1371 
1372  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1373 
1374  for (i = 0; i < h; i++) {
1375  sptr = datas + i * wpls;
1376  dptr = datad + i * wpld;
1377  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1378  *dptr = ((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
1379  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
1380  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
1381  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
1382  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
1383  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
1384  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
1385  (*sptr) &
1386  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
1387  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
1388  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
1389  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
1390  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
1391  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
1392  ((*(sptr) << 7) | (*(sptr + 1) >> 25));
1393  }
1394  }
1395 }
1396 
1397 static void
1398 fdilate_1_14(l_uint32 *datad,
1399  l_int32 w,
1400  l_int32 h,
1401  l_int32 wpld,
1402  l_uint32 *datas,
1403  l_int32 wpls)
1404 {
1405 l_int32 i;
1406 l_int32 j, pwpls;
1407 l_uint32 *sptr, *dptr;
1408 
1409  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1410 
1411  for (i = 0; i < h; i++) {
1412  sptr = datas + i * wpls;
1413  dptr = datad + i * wpld;
1414  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1415  *dptr = ((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
1416  ((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
1417  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
1418  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
1419  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
1420  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
1421  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
1422  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
1423  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
1424  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
1425  (*sptr) |
1426  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
1427  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
1428  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
1429  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
1430  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
1431  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
1432  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
1433  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
1434  ((*(sptr) >> 9) | (*(sptr - 1) << 23));
1435  }
1436  }
1437 }
1438 
1439 static void
1440 ferode_1_14(l_uint32 *datad,
1441  l_int32 w,
1442  l_int32 h,
1443  l_int32 wpld,
1444  l_uint32 *datas,
1445  l_int32 wpls)
1446 {
1447 l_int32 i;
1448 l_int32 j, pwpls;
1449 l_uint32 *sptr, *dptr;
1450 
1451  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1452 
1453  for (i = 0; i < h; i++) {
1454  sptr = datas + i * wpls;
1455  dptr = datad + i * wpld;
1456  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1457  *dptr = ((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
1458  ((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
1459  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
1460  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
1461  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
1462  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
1463  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
1464  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
1465  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
1466  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
1467  (*sptr) &
1468  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
1469  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
1470  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
1471  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
1472  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
1473  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
1474  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
1475  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
1476  ((*(sptr) << 9) | (*(sptr + 1) >> 23));
1477  }
1478  }
1479 }
1480 
1481 static void
1482 fdilate_1_15(l_uint32 *datad,
1483  l_int32 w,
1484  l_int32 h,
1485  l_int32 wpld,
1486  l_uint32 *datas,
1487  l_int32 wpls)
1488 {
1489 l_int32 i;
1490 l_int32 j, pwpls;
1491 l_uint32 *sptr, *dptr;
1492 
1493  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1494 
1495  for (i = 0; i < h; i++) {
1496  sptr = datas + i * wpls;
1497  dptr = datad + i * wpld;
1498  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1499  *dptr = ((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
1500  ((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
1501  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
1502  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
1503  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
1504  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
1505  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
1506  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
1507  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
1508  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
1509  (*sptr) |
1510  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
1511  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
1512  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
1513  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
1514  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
1515  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
1516  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
1517  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
1518  ((*(sptr) >> 9) | (*(sptr - 1) << 23)) |
1519  ((*(sptr) >> 10) | (*(sptr - 1) << 22));
1520  }
1521  }
1522 }
1523 
1524 static void
1525 ferode_1_15(l_uint32 *datad,
1526  l_int32 w,
1527  l_int32 h,
1528  l_int32 wpld,
1529  l_uint32 *datas,
1530  l_int32 wpls)
1531 {
1532 l_int32 i;
1533 l_int32 j, pwpls;
1534 l_uint32 *sptr, *dptr;
1535 
1536  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1537 
1538  for (i = 0; i < h; i++) {
1539  sptr = datas + i * wpls;
1540  dptr = datad + i * wpld;
1541  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1542  *dptr = ((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
1543  ((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
1544  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
1545  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
1546  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
1547  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
1548  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
1549  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
1550  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
1551  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
1552  (*sptr) &
1553  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
1554  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
1555  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
1556  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
1557  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
1558  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
1559  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
1560  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
1561  ((*(sptr) << 9) | (*(sptr + 1) >> 23)) &
1562  ((*(sptr) << 10) | (*(sptr + 1) >> 22));
1563  }
1564  }
1565 }
1566 
1567 static void
1568 fdilate_1_16(l_uint32 *datad,
1569  l_int32 w,
1570  l_int32 h,
1571  l_int32 wpld,
1572  l_uint32 *datas,
1573  l_int32 wpls)
1574 {
1575 l_int32 i;
1576 l_int32 j, pwpls;
1577 l_uint32 *sptr, *dptr;
1578 
1579  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1580 
1581  for (i = 0; i < h; i++) {
1582  sptr = datas + i * wpls;
1583  dptr = datad + i * wpld;
1584  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1585  *dptr = ((*(sptr) << 12) | (*(sptr + 1) >> 20)) |
1586  ((*(sptr) << 11) | (*(sptr + 1) >> 21)) |
1587  ((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
1588  ((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
1589  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
1590  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
1591  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
1592  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
1593  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
1594  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
1595  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
1596  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
1597  (*sptr) |
1598  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
1599  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
1600  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
1601  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
1602  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
1603  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
1604  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
1605  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
1606  ((*(sptr) >> 9) | (*(sptr - 1) << 23)) |
1607  ((*(sptr) >> 10) | (*(sptr - 1) << 22)) |
1608  ((*(sptr) >> 11) | (*(sptr - 1) << 21)) |
1609  ((*(sptr) >> 12) | (*(sptr - 1) << 20));
1610  }
1611  }
1612 }
1613 
1614 static void
1615 ferode_1_16(l_uint32 *datad,
1616  l_int32 w,
1617  l_int32 h,
1618  l_int32 wpld,
1619  l_uint32 *datas,
1620  l_int32 wpls)
1621 {
1622 l_int32 i;
1623 l_int32 j, pwpls;
1624 l_uint32 *sptr, *dptr;
1625 
1626  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1627 
1628  for (i = 0; i < h; i++) {
1629  sptr = datas + i * wpls;
1630  dptr = datad + i * wpld;
1631  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1632  *dptr = ((*(sptr) >> 12) | (*(sptr - 1) << 20)) &
1633  ((*(sptr) >> 11) | (*(sptr - 1) << 21)) &
1634  ((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
1635  ((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
1636  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
1637  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
1638  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
1639  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
1640  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
1641  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
1642  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
1643  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
1644  (*sptr) &
1645  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
1646  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
1647  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
1648  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
1649  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
1650  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
1651  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
1652  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
1653  ((*(sptr) << 9) | (*(sptr + 1) >> 23)) &
1654  ((*(sptr) << 10) | (*(sptr + 1) >> 22)) &
1655  ((*(sptr) << 11) | (*(sptr + 1) >> 21)) &
1656  ((*(sptr) << 12) | (*(sptr + 1) >> 20));
1657  }
1658  }
1659 }
1660 
1661 static void
1662 fdilate_1_17(l_uint32 *datad,
1663  l_int32 w,
1664  l_int32 h,
1665  l_int32 wpld,
1666  l_uint32 *datas,
1667  l_int32 wpls)
1668 {
1669 l_int32 i;
1670 l_int32 j, pwpls;
1671 l_uint32 *sptr, *dptr;
1672 
1673  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1674 
1675  for (i = 0; i < h; i++) {
1676  sptr = datas + i * wpls;
1677  dptr = datad + i * wpld;
1678  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1679  *dptr = ((*(sptr) << 15) | (*(sptr + 1) >> 17)) |
1680  ((*(sptr) << 14) | (*(sptr + 1) >> 18)) |
1681  ((*(sptr) << 13) | (*(sptr + 1) >> 19)) |
1682  ((*(sptr) << 12) | (*(sptr + 1) >> 20)) |
1683  ((*(sptr) << 11) | (*(sptr + 1) >> 21)) |
1684  ((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
1685  ((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
1686  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
1687  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
1688  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
1689  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
1690  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
1691  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
1692  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
1693  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
1694  (*sptr) |
1695  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
1696  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
1697  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
1698  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
1699  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
1700  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
1701  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
1702  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
1703  ((*(sptr) >> 9) | (*(sptr - 1) << 23)) |
1704  ((*(sptr) >> 10) | (*(sptr - 1) << 22)) |
1705  ((*(sptr) >> 11) | (*(sptr - 1) << 21)) |
1706  ((*(sptr) >> 12) | (*(sptr - 1) << 20)) |
1707  ((*(sptr) >> 13) | (*(sptr - 1) << 19)) |
1708  ((*(sptr) >> 14) | (*(sptr - 1) << 18));
1709  }
1710  }
1711 }
1712 
1713 static void
1714 ferode_1_17(l_uint32 *datad,
1715  l_int32 w,
1716  l_int32 h,
1717  l_int32 wpld,
1718  l_uint32 *datas,
1719  l_int32 wpls)
1720 {
1721 l_int32 i;
1722 l_int32 j, pwpls;
1723 l_uint32 *sptr, *dptr;
1724 
1725  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1726 
1727  for (i = 0; i < h; i++) {
1728  sptr = datas + i * wpls;
1729  dptr = datad + i * wpld;
1730  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1731  *dptr = ((*(sptr) >> 15) | (*(sptr - 1) << 17)) &
1732  ((*(sptr) >> 14) | (*(sptr - 1) << 18)) &
1733  ((*(sptr) >> 13) | (*(sptr - 1) << 19)) &
1734  ((*(sptr) >> 12) | (*(sptr - 1) << 20)) &
1735  ((*(sptr) >> 11) | (*(sptr - 1) << 21)) &
1736  ((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
1737  ((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
1738  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
1739  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
1740  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
1741  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
1742  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
1743  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
1744  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
1745  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
1746  (*sptr) &
1747  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
1748  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
1749  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
1750  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
1751  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
1752  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
1753  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
1754  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
1755  ((*(sptr) << 9) | (*(sptr + 1) >> 23)) &
1756  ((*(sptr) << 10) | (*(sptr + 1) >> 22)) &
1757  ((*(sptr) << 11) | (*(sptr + 1) >> 21)) &
1758  ((*(sptr) << 12) | (*(sptr + 1) >> 20)) &
1759  ((*(sptr) << 13) | (*(sptr + 1) >> 19)) &
1760  ((*(sptr) << 14) | (*(sptr + 1) >> 18));
1761  }
1762  }
1763 }
1764 
1765 static void
1766 fdilate_1_18(l_uint32 *datad,
1767  l_int32 w,
1768  l_int32 h,
1769  l_int32 wpld,
1770  l_uint32 *datas,
1771  l_int32 wpls)
1772 {
1773 l_int32 i;
1774 l_int32 j, pwpls;
1775 l_uint32 *sptr, *dptr;
1776 
1777  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1778 
1779  for (i = 0; i < h; i++) {
1780  sptr = datas + i * wpls;
1781  dptr = datad + i * wpld;
1782  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1783  *dptr = ((*(sptr) << 15) | (*(sptr + 1) >> 17)) |
1784  ((*(sptr) << 14) | (*(sptr + 1) >> 18)) |
1785  ((*(sptr) << 13) | (*(sptr + 1) >> 19)) |
1786  ((*(sptr) << 12) | (*(sptr + 1) >> 20)) |
1787  ((*(sptr) << 11) | (*(sptr + 1) >> 21)) |
1788  ((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
1789  ((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
1790  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
1791  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
1792  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
1793  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
1794  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
1795  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
1796  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
1797  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
1798  (*sptr) |
1799  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
1800  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
1801  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
1802  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
1803  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
1804  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
1805  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
1806  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
1807  ((*(sptr) >> 9) | (*(sptr - 1) << 23)) |
1808  ((*(sptr) >> 10) | (*(sptr - 1) << 22)) |
1809  ((*(sptr) >> 11) | (*(sptr - 1) << 21)) |
1810  ((*(sptr) >> 12) | (*(sptr - 1) << 20)) |
1811  ((*(sptr) >> 13) | (*(sptr - 1) << 19)) |
1812  ((*(sptr) >> 14) | (*(sptr - 1) << 18)) |
1813  ((*(sptr) >> 15) | (*(sptr - 1) << 17));
1814  }
1815  }
1816 }
1817 
1818 static void
1819 ferode_1_18(l_uint32 *datad,
1820  l_int32 w,
1821  l_int32 h,
1822  l_int32 wpld,
1823  l_uint32 *datas,
1824  l_int32 wpls)
1825 {
1826 l_int32 i;
1827 l_int32 j, pwpls;
1828 l_uint32 *sptr, *dptr;
1829 
1830  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1831 
1832  for (i = 0; i < h; i++) {
1833  sptr = datas + i * wpls;
1834  dptr = datad + i * wpld;
1835  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1836  *dptr = ((*(sptr) >> 15) | (*(sptr - 1) << 17)) &
1837  ((*(sptr) >> 14) | (*(sptr - 1) << 18)) &
1838  ((*(sptr) >> 13) | (*(sptr - 1) << 19)) &
1839  ((*(sptr) >> 12) | (*(sptr - 1) << 20)) &
1840  ((*(sptr) >> 11) | (*(sptr - 1) << 21)) &
1841  ((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
1842  ((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
1843  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
1844  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
1845  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
1846  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
1847  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
1848  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
1849  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
1850  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
1851  (*sptr) &
1852  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
1853  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
1854  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
1855  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
1856  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
1857  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
1858  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
1859  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
1860  ((*(sptr) << 9) | (*(sptr + 1) >> 23)) &
1861  ((*(sptr) << 10) | (*(sptr + 1) >> 22)) &
1862  ((*(sptr) << 11) | (*(sptr + 1) >> 21)) &
1863  ((*(sptr) << 12) | (*(sptr + 1) >> 20)) &
1864  ((*(sptr) << 13) | (*(sptr + 1) >> 19)) &
1865  ((*(sptr) << 14) | (*(sptr + 1) >> 18)) &
1866  ((*(sptr) << 15) | (*(sptr + 1) >> 17));
1867  }
1868  }
1869 }
1870 
1871 static void
1872 fdilate_1_19(l_uint32 *datad,
1873  l_int32 w,
1874  l_int32 h,
1875  l_int32 wpld,
1876  l_uint32 *datas,
1877  l_int32 wpls)
1878 {
1879 l_int32 i;
1880 l_int32 j, pwpls;
1881 l_uint32 *sptr, *dptr;
1882 
1883  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1884 
1885  for (i = 0; i < h; i++) {
1886  sptr = datas + i * wpls;
1887  dptr = datad + i * wpld;
1888  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1889  *dptr = ((*(sptr) << 17) | (*(sptr + 1) >> 15)) |
1890  ((*(sptr) << 16) | (*(sptr + 1) >> 16)) |
1891  ((*(sptr) << 15) | (*(sptr + 1) >> 17)) |
1892  ((*(sptr) << 14) | (*(sptr + 1) >> 18)) |
1893  ((*(sptr) << 13) | (*(sptr + 1) >> 19)) |
1894  ((*(sptr) << 12) | (*(sptr + 1) >> 20)) |
1895  ((*(sptr) << 11) | (*(sptr + 1) >> 21)) |
1896  ((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
1897  ((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
1898  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
1899  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
1900  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
1901  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
1902  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
1903  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
1904  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
1905  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
1906  (*sptr) |
1907  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
1908  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
1909  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
1910  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
1911  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
1912  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
1913  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
1914  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
1915  ((*(sptr) >> 9) | (*(sptr - 1) << 23)) |
1916  ((*(sptr) >> 10) | (*(sptr - 1) << 22)) |
1917  ((*(sptr) >> 11) | (*(sptr - 1) << 21)) |
1918  ((*(sptr) >> 12) | (*(sptr - 1) << 20)) |
1919  ((*(sptr) >> 13) | (*(sptr - 1) << 19)) |
1920  ((*(sptr) >> 14) | (*(sptr - 1) << 18)) |
1921  ((*(sptr) >> 15) | (*(sptr - 1) << 17)) |
1922  ((*(sptr) >> 16) | (*(sptr - 1) << 16)) |
1923  ((*(sptr) >> 17) | (*(sptr - 1) << 15));
1924  }
1925  }
1926 }
1927 
1928 static void
1929 ferode_1_19(l_uint32 *datad,
1930  l_int32 w,
1931  l_int32 h,
1932  l_int32 wpld,
1933  l_uint32 *datas,
1934  l_int32 wpls)
1935 {
1936 l_int32 i;
1937 l_int32 j, pwpls;
1938 l_uint32 *sptr, *dptr;
1939 
1940  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1941 
1942  for (i = 0; i < h; i++) {
1943  sptr = datas + i * wpls;
1944  dptr = datad + i * wpld;
1945  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
1946  *dptr = ((*(sptr) >> 17) | (*(sptr - 1) << 15)) &
1947  ((*(sptr) >> 16) | (*(sptr - 1) << 16)) &
1948  ((*(sptr) >> 15) | (*(sptr - 1) << 17)) &
1949  ((*(sptr) >> 14) | (*(sptr - 1) << 18)) &
1950  ((*(sptr) >> 13) | (*(sptr - 1) << 19)) &
1951  ((*(sptr) >> 12) | (*(sptr - 1) << 20)) &
1952  ((*(sptr) >> 11) | (*(sptr - 1) << 21)) &
1953  ((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
1954  ((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
1955  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
1956  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
1957  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
1958  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
1959  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
1960  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
1961  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
1962  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
1963  (*sptr) &
1964  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
1965  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
1966  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
1967  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
1968  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
1969  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
1970  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
1971  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
1972  ((*(sptr) << 9) | (*(sptr + 1) >> 23)) &
1973  ((*(sptr) << 10) | (*(sptr + 1) >> 22)) &
1974  ((*(sptr) << 11) | (*(sptr + 1) >> 21)) &
1975  ((*(sptr) << 12) | (*(sptr + 1) >> 20)) &
1976  ((*(sptr) << 13) | (*(sptr + 1) >> 19)) &
1977  ((*(sptr) << 14) | (*(sptr + 1) >> 18)) &
1978  ((*(sptr) << 15) | (*(sptr + 1) >> 17)) &
1979  ((*(sptr) << 16) | (*(sptr + 1) >> 16)) &
1980  ((*(sptr) << 17) | (*(sptr + 1) >> 15));
1981  }
1982  }
1983 }
1984 
1985 static void
1986 fdilate_1_20(l_uint32 *datad,
1987  l_int32 w,
1988  l_int32 h,
1989  l_int32 wpld,
1990  l_uint32 *datas,
1991  l_int32 wpls)
1992 {
1993 l_int32 i;
1994 l_int32 j, pwpls;
1995 l_uint32 *sptr, *dptr;
1996 
1997  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
1998 
1999  for (i = 0; i < h; i++) {
2000  sptr = datas + i * wpls;
2001  dptr = datad + i * wpld;
2002  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2003  *dptr = ((*(sptr) << 20) | (*(sptr + 1) >> 12)) |
2004  ((*(sptr) << 19) | (*(sptr + 1) >> 13)) |
2005  ((*(sptr) << 18) | (*(sptr + 1) >> 14)) |
2006  ((*(sptr) << 17) | (*(sptr + 1) >> 15)) |
2007  ((*(sptr) << 16) | (*(sptr + 1) >> 16)) |
2008  ((*(sptr) << 15) | (*(sptr + 1) >> 17)) |
2009  ((*(sptr) << 14) | (*(sptr + 1) >> 18)) |
2010  ((*(sptr) << 13) | (*(sptr + 1) >> 19)) |
2011  ((*(sptr) << 12) | (*(sptr + 1) >> 20)) |
2012  ((*(sptr) << 11) | (*(sptr + 1) >> 21)) |
2013  ((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
2014  ((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
2015  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
2016  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
2017  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
2018  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
2019  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
2020  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
2021  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
2022  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
2023  (*sptr) |
2024  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
2025  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
2026  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
2027  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
2028  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
2029  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
2030  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
2031  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
2032  ((*(sptr) >> 9) | (*(sptr - 1) << 23)) |
2033  ((*(sptr) >> 10) | (*(sptr - 1) << 22)) |
2034  ((*(sptr) >> 11) | (*(sptr - 1) << 21)) |
2035  ((*(sptr) >> 12) | (*(sptr - 1) << 20)) |
2036  ((*(sptr) >> 13) | (*(sptr - 1) << 19)) |
2037  ((*(sptr) >> 14) | (*(sptr - 1) << 18)) |
2038  ((*(sptr) >> 15) | (*(sptr - 1) << 17)) |
2039  ((*(sptr) >> 16) | (*(sptr - 1) << 16)) |
2040  ((*(sptr) >> 17) | (*(sptr - 1) << 15)) |
2041  ((*(sptr) >> 18) | (*(sptr - 1) << 14)) |
2042  ((*(sptr) >> 19) | (*(sptr - 1) << 13));
2043  }
2044  }
2045 }
2046 
2047 static void
2048 ferode_1_20(l_uint32 *datad,
2049  l_int32 w,
2050  l_int32 h,
2051  l_int32 wpld,
2052  l_uint32 *datas,
2053  l_int32 wpls)
2054 {
2055 l_int32 i;
2056 l_int32 j, pwpls;
2057 l_uint32 *sptr, *dptr;
2058 
2059  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
2060 
2061  for (i = 0; i < h; i++) {
2062  sptr = datas + i * wpls;
2063  dptr = datad + i * wpld;
2064  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2065  *dptr = ((*(sptr) >> 20) | (*(sptr - 1) << 12)) &
2066  ((*(sptr) >> 19) | (*(sptr - 1) << 13)) &
2067  ((*(sptr) >> 18) | (*(sptr - 1) << 14)) &
2068  ((*(sptr) >> 17) | (*(sptr - 1) << 15)) &
2069  ((*(sptr) >> 16) | (*(sptr - 1) << 16)) &
2070  ((*(sptr) >> 15) | (*(sptr - 1) << 17)) &
2071  ((*(sptr) >> 14) | (*(sptr - 1) << 18)) &
2072  ((*(sptr) >> 13) | (*(sptr - 1) << 19)) &
2073  ((*(sptr) >> 12) | (*(sptr - 1) << 20)) &
2074  ((*(sptr) >> 11) | (*(sptr - 1) << 21)) &
2075  ((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
2076  ((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
2077  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
2078  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
2079  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
2080  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
2081  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
2082  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
2083  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
2084  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
2085  (*sptr) &
2086  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
2087  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
2088  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
2089  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
2090  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
2091  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
2092  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
2093  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
2094  ((*(sptr) << 9) | (*(sptr + 1) >> 23)) &
2095  ((*(sptr) << 10) | (*(sptr + 1) >> 22)) &
2096  ((*(sptr) << 11) | (*(sptr + 1) >> 21)) &
2097  ((*(sptr) << 12) | (*(sptr + 1) >> 20)) &
2098  ((*(sptr) << 13) | (*(sptr + 1) >> 19)) &
2099  ((*(sptr) << 14) | (*(sptr + 1) >> 18)) &
2100  ((*(sptr) << 15) | (*(sptr + 1) >> 17)) &
2101  ((*(sptr) << 16) | (*(sptr + 1) >> 16)) &
2102  ((*(sptr) << 17) | (*(sptr + 1) >> 15)) &
2103  ((*(sptr) << 18) | (*(sptr + 1) >> 14)) &
2104  ((*(sptr) << 19) | (*(sptr + 1) >> 13));
2105  }
2106  }
2107 }
2108 
2109 static void
2110 fdilate_1_21(l_uint32 *datad,
2111  l_int32 w,
2112  l_int32 h,
2113  l_int32 wpld,
2114  l_uint32 *datas,
2115  l_int32 wpls)
2116 {
2117 l_int32 i;
2118 l_int32 j, pwpls;
2119 l_uint32 *sptr, *dptr;
2120 
2121  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
2122 
2123  for (i = 0; i < h; i++) {
2124  sptr = datas + i * wpls;
2125  dptr = datad + i * wpld;
2126  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2127  *dptr = ((*(sptr) << 20) | (*(sptr + 1) >> 12)) |
2128  ((*(sptr) << 19) | (*(sptr + 1) >> 13)) |
2129  ((*(sptr) << 18) | (*(sptr + 1) >> 14)) |
2130  ((*(sptr) << 17) | (*(sptr + 1) >> 15)) |
2131  ((*(sptr) << 16) | (*(sptr + 1) >> 16)) |
2132  ((*(sptr) << 15) | (*(sptr + 1) >> 17)) |
2133  ((*(sptr) << 14) | (*(sptr + 1) >> 18)) |
2134  ((*(sptr) << 13) | (*(sptr + 1) >> 19)) |
2135  ((*(sptr) << 12) | (*(sptr + 1) >> 20)) |
2136  ((*(sptr) << 11) | (*(sptr + 1) >> 21)) |
2137  ((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
2138  ((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
2139  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
2140  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
2141  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
2142  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
2143  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
2144  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
2145  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
2146  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
2147  (*sptr) |
2148  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
2149  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
2150  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
2151  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
2152  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
2153  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
2154  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
2155  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
2156  ((*(sptr) >> 9) | (*(sptr - 1) << 23)) |
2157  ((*(sptr) >> 10) | (*(sptr - 1) << 22)) |
2158  ((*(sptr) >> 11) | (*(sptr - 1) << 21)) |
2159  ((*(sptr) >> 12) | (*(sptr - 1) << 20)) |
2160  ((*(sptr) >> 13) | (*(sptr - 1) << 19)) |
2161  ((*(sptr) >> 14) | (*(sptr - 1) << 18)) |
2162  ((*(sptr) >> 15) | (*(sptr - 1) << 17)) |
2163  ((*(sptr) >> 16) | (*(sptr - 1) << 16)) |
2164  ((*(sptr) >> 17) | (*(sptr - 1) << 15)) |
2165  ((*(sptr) >> 18) | (*(sptr - 1) << 14)) |
2166  ((*(sptr) >> 19) | (*(sptr - 1) << 13)) |
2167  ((*(sptr) >> 20) | (*(sptr - 1) << 12));
2168  }
2169  }
2170 }
2171 
2172 static void
2173 ferode_1_21(l_uint32 *datad,
2174  l_int32 w,
2175  l_int32 h,
2176  l_int32 wpld,
2177  l_uint32 *datas,
2178  l_int32 wpls)
2179 {
2180 l_int32 i;
2181 l_int32 j, pwpls;
2182 l_uint32 *sptr, *dptr;
2183 
2184  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
2185 
2186  for (i = 0; i < h; i++) {
2187  sptr = datas + i * wpls;
2188  dptr = datad + i * wpld;
2189  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2190  *dptr = ((*(sptr) >> 20) | (*(sptr - 1) << 12)) &
2191  ((*(sptr) >> 19) | (*(sptr - 1) << 13)) &
2192  ((*(sptr) >> 18) | (*(sptr - 1) << 14)) &
2193  ((*(sptr) >> 17) | (*(sptr - 1) << 15)) &
2194  ((*(sptr) >> 16) | (*(sptr - 1) << 16)) &
2195  ((*(sptr) >> 15) | (*(sptr - 1) << 17)) &
2196  ((*(sptr) >> 14) | (*(sptr - 1) << 18)) &
2197  ((*(sptr) >> 13) | (*(sptr - 1) << 19)) &
2198  ((*(sptr) >> 12) | (*(sptr - 1) << 20)) &
2199  ((*(sptr) >> 11) | (*(sptr - 1) << 21)) &
2200  ((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
2201  ((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
2202  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
2203  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
2204  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
2205  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
2206  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
2207  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
2208  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
2209  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
2210  (*sptr) &
2211  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
2212  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
2213  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
2214  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
2215  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
2216  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
2217  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
2218  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
2219  ((*(sptr) << 9) | (*(sptr + 1) >> 23)) &
2220  ((*(sptr) << 10) | (*(sptr + 1) >> 22)) &
2221  ((*(sptr) << 11) | (*(sptr + 1) >> 21)) &
2222  ((*(sptr) << 12) | (*(sptr + 1) >> 20)) &
2223  ((*(sptr) << 13) | (*(sptr + 1) >> 19)) &
2224  ((*(sptr) << 14) | (*(sptr + 1) >> 18)) &
2225  ((*(sptr) << 15) | (*(sptr + 1) >> 17)) &
2226  ((*(sptr) << 16) | (*(sptr + 1) >> 16)) &
2227  ((*(sptr) << 17) | (*(sptr + 1) >> 15)) &
2228  ((*(sptr) << 18) | (*(sptr + 1) >> 14)) &
2229  ((*(sptr) << 19) | (*(sptr + 1) >> 13)) &
2230  ((*(sptr) << 20) | (*(sptr + 1) >> 12));
2231  }
2232  }
2233 }
2234 
2235 static void
2236 fdilate_1_22(l_uint32 *datad,
2237  l_int32 w,
2238  l_int32 h,
2239  l_int32 wpld,
2240  l_uint32 *datas,
2241  l_int32 wpls)
2242 {
2243 l_int32 i;
2244 l_int32 j, pwpls;
2245 l_uint32 *sptr, *dptr;
2246 
2247  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
2248 
2249  for (i = 0; i < h; i++) {
2250  sptr = datas + i * wpls;
2251  dptr = datad + i * wpld;
2252  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2253  *dptr = ((*(sptr) << 22) | (*(sptr + 1) >> 10)) |
2254  ((*(sptr) << 21) | (*(sptr + 1) >> 11)) |
2255  ((*(sptr) << 20) | (*(sptr + 1) >> 12)) |
2256  ((*(sptr) << 19) | (*(sptr + 1) >> 13)) |
2257  ((*(sptr) << 18) | (*(sptr + 1) >> 14)) |
2258  ((*(sptr) << 17) | (*(sptr + 1) >> 15)) |
2259  ((*(sptr) << 16) | (*(sptr + 1) >> 16)) |
2260  ((*(sptr) << 15) | (*(sptr + 1) >> 17)) |
2261  ((*(sptr) << 14) | (*(sptr + 1) >> 18)) |
2262  ((*(sptr) << 13) | (*(sptr + 1) >> 19)) |
2263  ((*(sptr) << 12) | (*(sptr + 1) >> 20)) |
2264  ((*(sptr) << 11) | (*(sptr + 1) >> 21)) |
2265  ((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
2266  ((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
2267  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
2268  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
2269  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
2270  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
2271  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
2272  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
2273  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
2274  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
2275  (*sptr) |
2276  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
2277  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
2278  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
2279  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
2280  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
2281  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
2282  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
2283  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
2284  ((*(sptr) >> 9) | (*(sptr - 1) << 23)) |
2285  ((*(sptr) >> 10) | (*(sptr - 1) << 22)) |
2286  ((*(sptr) >> 11) | (*(sptr - 1) << 21)) |
2287  ((*(sptr) >> 12) | (*(sptr - 1) << 20)) |
2288  ((*(sptr) >> 13) | (*(sptr - 1) << 19)) |
2289  ((*(sptr) >> 14) | (*(sptr - 1) << 18)) |
2290  ((*(sptr) >> 15) | (*(sptr - 1) << 17)) |
2291  ((*(sptr) >> 16) | (*(sptr - 1) << 16)) |
2292  ((*(sptr) >> 17) | (*(sptr - 1) << 15)) |
2293  ((*(sptr) >> 18) | (*(sptr - 1) << 14)) |
2294  ((*(sptr) >> 19) | (*(sptr - 1) << 13)) |
2295  ((*(sptr) >> 20) | (*(sptr - 1) << 12)) |
2296  ((*(sptr) >> 21) | (*(sptr - 1) << 11)) |
2297  ((*(sptr) >> 22) | (*(sptr - 1) << 10));
2298  }
2299  }
2300 }
2301 
2302 static void
2303 ferode_1_22(l_uint32 *datad,
2304  l_int32 w,
2305  l_int32 h,
2306  l_int32 wpld,
2307  l_uint32 *datas,
2308  l_int32 wpls)
2309 {
2310 l_int32 i;
2311 l_int32 j, pwpls;
2312 l_uint32 *sptr, *dptr;
2313 
2314  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
2315 
2316  for (i = 0; i < h; i++) {
2317  sptr = datas + i * wpls;
2318  dptr = datad + i * wpld;
2319  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2320  *dptr = ((*(sptr) >> 22) | (*(sptr - 1) << 10)) &
2321  ((*(sptr) >> 21) | (*(sptr - 1) << 11)) &
2322  ((*(sptr) >> 20) | (*(sptr - 1) << 12)) &
2323  ((*(sptr) >> 19) | (*(sptr - 1) << 13)) &
2324  ((*(sptr) >> 18) | (*(sptr - 1) << 14)) &
2325  ((*(sptr) >> 17) | (*(sptr - 1) << 15)) &
2326  ((*(sptr) >> 16) | (*(sptr - 1) << 16)) &
2327  ((*(sptr) >> 15) | (*(sptr - 1) << 17)) &
2328  ((*(sptr) >> 14) | (*(sptr - 1) << 18)) &
2329  ((*(sptr) >> 13) | (*(sptr - 1) << 19)) &
2330  ((*(sptr) >> 12) | (*(sptr - 1) << 20)) &
2331  ((*(sptr) >> 11) | (*(sptr - 1) << 21)) &
2332  ((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
2333  ((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
2334  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
2335  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
2336  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
2337  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
2338  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
2339  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
2340  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
2341  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
2342  (*sptr) &
2343  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
2344  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
2345  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
2346  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
2347  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
2348  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
2349  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
2350  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
2351  ((*(sptr) << 9) | (*(sptr + 1) >> 23)) &
2352  ((*(sptr) << 10) | (*(sptr + 1) >> 22)) &
2353  ((*(sptr) << 11) | (*(sptr + 1) >> 21)) &
2354  ((*(sptr) << 12) | (*(sptr + 1) >> 20)) &
2355  ((*(sptr) << 13) | (*(sptr + 1) >> 19)) &
2356  ((*(sptr) << 14) | (*(sptr + 1) >> 18)) &
2357  ((*(sptr) << 15) | (*(sptr + 1) >> 17)) &
2358  ((*(sptr) << 16) | (*(sptr + 1) >> 16)) &
2359  ((*(sptr) << 17) | (*(sptr + 1) >> 15)) &
2360  ((*(sptr) << 18) | (*(sptr + 1) >> 14)) &
2361  ((*(sptr) << 19) | (*(sptr + 1) >> 13)) &
2362  ((*(sptr) << 20) | (*(sptr + 1) >> 12)) &
2363  ((*(sptr) << 21) | (*(sptr + 1) >> 11)) &
2364  ((*(sptr) << 22) | (*(sptr + 1) >> 10));
2365  }
2366  }
2367 }
2368 
2369 static void
2370 fdilate_1_23(l_uint32 *datad,
2371  l_int32 w,
2372  l_int32 h,
2373  l_int32 wpld,
2374  l_uint32 *datas,
2375  l_int32 wpls)
2376 {
2377 l_int32 i;
2378 l_int32 j, pwpls;
2379 l_uint32 *sptr, *dptr;
2380 
2381  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
2382 
2383  for (i = 0; i < h; i++) {
2384  sptr = datas + i * wpls;
2385  dptr = datad + i * wpld;
2386  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2387  *dptr = ((*(sptr) << 25) | (*(sptr + 1) >> 7)) |
2388  ((*(sptr) << 24) | (*(sptr + 1) >> 8)) |
2389  ((*(sptr) << 23) | (*(sptr + 1) >> 9)) |
2390  ((*(sptr) << 22) | (*(sptr + 1) >> 10)) |
2391  ((*(sptr) << 21) | (*(sptr + 1) >> 11)) |
2392  ((*(sptr) << 20) | (*(sptr + 1) >> 12)) |
2393  ((*(sptr) << 19) | (*(sptr + 1) >> 13)) |
2394  ((*(sptr) << 18) | (*(sptr + 1) >> 14)) |
2395  ((*(sptr) << 17) | (*(sptr + 1) >> 15)) |
2396  ((*(sptr) << 16) | (*(sptr + 1) >> 16)) |
2397  ((*(sptr) << 15) | (*(sptr + 1) >> 17)) |
2398  ((*(sptr) << 14) | (*(sptr + 1) >> 18)) |
2399  ((*(sptr) << 13) | (*(sptr + 1) >> 19)) |
2400  ((*(sptr) << 12) | (*(sptr + 1) >> 20)) |
2401  ((*(sptr) << 11) | (*(sptr + 1) >> 21)) |
2402  ((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
2403  ((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
2404  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
2405  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
2406  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
2407  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
2408  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
2409  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
2410  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
2411  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
2412  (*sptr) |
2413  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
2414  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
2415  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
2416  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
2417  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
2418  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
2419  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
2420  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
2421  ((*(sptr) >> 9) | (*(sptr - 1) << 23)) |
2422  ((*(sptr) >> 10) | (*(sptr - 1) << 22)) |
2423  ((*(sptr) >> 11) | (*(sptr - 1) << 21)) |
2424  ((*(sptr) >> 12) | (*(sptr - 1) << 20)) |
2425  ((*(sptr) >> 13) | (*(sptr - 1) << 19)) |
2426  ((*(sptr) >> 14) | (*(sptr - 1) << 18)) |
2427  ((*(sptr) >> 15) | (*(sptr - 1) << 17)) |
2428  ((*(sptr) >> 16) | (*(sptr - 1) << 16)) |
2429  ((*(sptr) >> 17) | (*(sptr - 1) << 15)) |
2430  ((*(sptr) >> 18) | (*(sptr - 1) << 14)) |
2431  ((*(sptr) >> 19) | (*(sptr - 1) << 13)) |
2432  ((*(sptr) >> 20) | (*(sptr - 1) << 12)) |
2433  ((*(sptr) >> 21) | (*(sptr - 1) << 11)) |
2434  ((*(sptr) >> 22) | (*(sptr - 1) << 10)) |
2435  ((*(sptr) >> 23) | (*(sptr - 1) << 9)) |
2436  ((*(sptr) >> 24) | (*(sptr - 1) << 8));
2437  }
2438  }
2439 }
2440 
2441 static void
2442 ferode_1_23(l_uint32 *datad,
2443  l_int32 w,
2444  l_int32 h,
2445  l_int32 wpld,
2446  l_uint32 *datas,
2447  l_int32 wpls)
2448 {
2449 l_int32 i;
2450 l_int32 j, pwpls;
2451 l_uint32 *sptr, *dptr;
2452 
2453  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
2454 
2455  for (i = 0; i < h; i++) {
2456  sptr = datas + i * wpls;
2457  dptr = datad + i * wpld;
2458  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2459  *dptr = ((*(sptr) >> 25) | (*(sptr - 1) << 7)) &
2460  ((*(sptr) >> 24) | (*(sptr - 1) << 8)) &
2461  ((*(sptr) >> 23) | (*(sptr - 1) << 9)) &
2462  ((*(sptr) >> 22) | (*(sptr - 1) << 10)) &
2463  ((*(sptr) >> 21) | (*(sptr - 1) << 11)) &
2464  ((*(sptr) >> 20) | (*(sptr - 1) << 12)) &
2465  ((*(sptr) >> 19) | (*(sptr - 1) << 13)) &
2466  ((*(sptr) >> 18) | (*(sptr - 1) << 14)) &
2467  ((*(sptr) >> 17) | (*(sptr - 1) << 15)) &
2468  ((*(sptr) >> 16) | (*(sptr - 1) << 16)) &
2469  ((*(sptr) >> 15) | (*(sptr - 1) << 17)) &
2470  ((*(sptr) >> 14) | (*(sptr - 1) << 18)) &
2471  ((*(sptr) >> 13) | (*(sptr - 1) << 19)) &
2472  ((*(sptr) >> 12) | (*(sptr - 1) << 20)) &
2473  ((*(sptr) >> 11) | (*(sptr - 1) << 21)) &
2474  ((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
2475  ((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
2476  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
2477  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
2478  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
2479  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
2480  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
2481  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
2482  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
2483  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
2484  (*sptr) &
2485  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
2486  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
2487  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
2488  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
2489  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
2490  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
2491  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
2492  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
2493  ((*(sptr) << 9) | (*(sptr + 1) >> 23)) &
2494  ((*(sptr) << 10) | (*(sptr + 1) >> 22)) &
2495  ((*(sptr) << 11) | (*(sptr + 1) >> 21)) &
2496  ((*(sptr) << 12) | (*(sptr + 1) >> 20)) &
2497  ((*(sptr) << 13) | (*(sptr + 1) >> 19)) &
2498  ((*(sptr) << 14) | (*(sptr + 1) >> 18)) &
2499  ((*(sptr) << 15) | (*(sptr + 1) >> 17)) &
2500  ((*(sptr) << 16) | (*(sptr + 1) >> 16)) &
2501  ((*(sptr) << 17) | (*(sptr + 1) >> 15)) &
2502  ((*(sptr) << 18) | (*(sptr + 1) >> 14)) &
2503  ((*(sptr) << 19) | (*(sptr + 1) >> 13)) &
2504  ((*(sptr) << 20) | (*(sptr + 1) >> 12)) &
2505  ((*(sptr) << 21) | (*(sptr + 1) >> 11)) &
2506  ((*(sptr) << 22) | (*(sptr + 1) >> 10)) &
2507  ((*(sptr) << 23) | (*(sptr + 1) >> 9)) &
2508  ((*(sptr) << 24) | (*(sptr + 1) >> 8));
2509  }
2510  }
2511 }
2512 
2513 static void
2514 fdilate_1_24(l_uint32 *datad,
2515  l_int32 w,
2516  l_int32 h,
2517  l_int32 wpld,
2518  l_uint32 *datas,
2519  l_int32 wpls)
2520 {
2521 l_int32 i;
2522 l_int32 j, pwpls;
2523 l_uint32 *sptr, *dptr;
2524 
2525  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
2526 
2527  for (i = 0; i < h; i++) {
2528  sptr = datas + i * wpls;
2529  dptr = datad + i * wpld;
2530  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2531  *dptr = ((*(sptr) << 25) | (*(sptr + 1) >> 7)) |
2532  ((*(sptr) << 24) | (*(sptr + 1) >> 8)) |
2533  ((*(sptr) << 23) | (*(sptr + 1) >> 9)) |
2534  ((*(sptr) << 22) | (*(sptr + 1) >> 10)) |
2535  ((*(sptr) << 21) | (*(sptr + 1) >> 11)) |
2536  ((*(sptr) << 20) | (*(sptr + 1) >> 12)) |
2537  ((*(sptr) << 19) | (*(sptr + 1) >> 13)) |
2538  ((*(sptr) << 18) | (*(sptr + 1) >> 14)) |
2539  ((*(sptr) << 17) | (*(sptr + 1) >> 15)) |
2540  ((*(sptr) << 16) | (*(sptr + 1) >> 16)) |
2541  ((*(sptr) << 15) | (*(sptr + 1) >> 17)) |
2542  ((*(sptr) << 14) | (*(sptr + 1) >> 18)) |
2543  ((*(sptr) << 13) | (*(sptr + 1) >> 19)) |
2544  ((*(sptr) << 12) | (*(sptr + 1) >> 20)) |
2545  ((*(sptr) << 11) | (*(sptr + 1) >> 21)) |
2546  ((*(sptr) << 10) | (*(sptr + 1) >> 22)) |
2547  ((*(sptr) << 9) | (*(sptr + 1) >> 23)) |
2548  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) |
2549  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) |
2550  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) |
2551  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) |
2552  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) |
2553  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) |
2554  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
2555  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
2556  (*sptr) |
2557  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
2558  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
2559  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) |
2560  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) |
2561  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) |
2562  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) |
2563  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) |
2564  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) |
2565  ((*(sptr) >> 9) | (*(sptr - 1) << 23)) |
2566  ((*(sptr) >> 10) | (*(sptr - 1) << 22)) |
2567  ((*(sptr) >> 11) | (*(sptr - 1) << 21)) |
2568  ((*(sptr) >> 12) | (*(sptr - 1) << 20)) |
2569  ((*(sptr) >> 13) | (*(sptr - 1) << 19)) |
2570  ((*(sptr) >> 14) | (*(sptr - 1) << 18)) |
2571  ((*(sptr) >> 15) | (*(sptr - 1) << 17)) |
2572  ((*(sptr) >> 16) | (*(sptr - 1) << 16)) |
2573  ((*(sptr) >> 17) | (*(sptr - 1) << 15)) |
2574  ((*(sptr) >> 18) | (*(sptr - 1) << 14)) |
2575  ((*(sptr) >> 19) | (*(sptr - 1) << 13)) |
2576  ((*(sptr) >> 20) | (*(sptr - 1) << 12)) |
2577  ((*(sptr) >> 21) | (*(sptr - 1) << 11)) |
2578  ((*(sptr) >> 22) | (*(sptr - 1) << 10)) |
2579  ((*(sptr) >> 23) | (*(sptr - 1) << 9)) |
2580  ((*(sptr) >> 24) | (*(sptr - 1) << 8)) |
2581  ((*(sptr) >> 25) | (*(sptr - 1) << 7));
2582  }
2583  }
2584 }
2585 
2586 static void
2587 ferode_1_24(l_uint32 *datad,
2588  l_int32 w,
2589  l_int32 h,
2590  l_int32 wpld,
2591  l_uint32 *datas,
2592  l_int32 wpls)
2593 {
2594 l_int32 i;
2595 l_int32 j, pwpls;
2596 l_uint32 *sptr, *dptr;
2597 
2598  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
2599 
2600  for (i = 0; i < h; i++) {
2601  sptr = datas + i * wpls;
2602  dptr = datad + i * wpld;
2603  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2604  *dptr = ((*(sptr) >> 25) | (*(sptr - 1) << 7)) &
2605  ((*(sptr) >> 24) | (*(sptr - 1) << 8)) &
2606  ((*(sptr) >> 23) | (*(sptr - 1) << 9)) &
2607  ((*(sptr) >> 22) | (*(sptr - 1) << 10)) &
2608  ((*(sptr) >> 21) | (*(sptr - 1) << 11)) &
2609  ((*(sptr) >> 20) | (*(sptr - 1) << 12)) &
2610  ((*(sptr) >> 19) | (*(sptr - 1) << 13)) &
2611  ((*(sptr) >> 18) | (*(sptr - 1) << 14)) &
2612  ((*(sptr) >> 17) | (*(sptr - 1) << 15)) &
2613  ((*(sptr) >> 16) | (*(sptr - 1) << 16)) &
2614  ((*(sptr) >> 15) | (*(sptr - 1) << 17)) &
2615  ((*(sptr) >> 14) | (*(sptr - 1) << 18)) &
2616  ((*(sptr) >> 13) | (*(sptr - 1) << 19)) &
2617  ((*(sptr) >> 12) | (*(sptr - 1) << 20)) &
2618  ((*(sptr) >> 11) | (*(sptr - 1) << 21)) &
2619  ((*(sptr) >> 10) | (*(sptr - 1) << 22)) &
2620  ((*(sptr) >> 9) | (*(sptr - 1) << 23)) &
2621  ((*(sptr) >> 8) | (*(sptr - 1) << 24)) &
2622  ((*(sptr) >> 7) | (*(sptr - 1) << 25)) &
2623  ((*(sptr) >> 6) | (*(sptr - 1) << 26)) &
2624  ((*(sptr) >> 5) | (*(sptr - 1) << 27)) &
2625  ((*(sptr) >> 4) | (*(sptr - 1) << 28)) &
2626  ((*(sptr) >> 3) | (*(sptr - 1) << 29)) &
2627  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
2628  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
2629  (*sptr) &
2630  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
2631  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
2632  ((*(sptr) << 3) | (*(sptr + 1) >> 29)) &
2633  ((*(sptr) << 4) | (*(sptr + 1) >> 28)) &
2634  ((*(sptr) << 5) | (*(sptr + 1) >> 27)) &
2635  ((*(sptr) << 6) | (*(sptr + 1) >> 26)) &
2636  ((*(sptr) << 7) | (*(sptr + 1) >> 25)) &
2637  ((*(sptr) << 8) | (*(sptr + 1) >> 24)) &
2638  ((*(sptr) << 9) | (*(sptr + 1) >> 23)) &
2639  ((*(sptr) << 10) | (*(sptr + 1) >> 22)) &
2640  ((*(sptr) << 11) | (*(sptr + 1) >> 21)) &
2641  ((*(sptr) << 12) | (*(sptr + 1) >> 20)) &
2642  ((*(sptr) << 13) | (*(sptr + 1) >> 19)) &
2643  ((*(sptr) << 14) | (*(sptr + 1) >> 18)) &
2644  ((*(sptr) << 15) | (*(sptr + 1) >> 17)) &
2645  ((*(sptr) << 16) | (*(sptr + 1) >> 16)) &
2646  ((*(sptr) << 17) | (*(sptr + 1) >> 15)) &
2647  ((*(sptr) << 18) | (*(sptr + 1) >> 14)) &
2648  ((*(sptr) << 19) | (*(sptr + 1) >> 13)) &
2649  ((*(sptr) << 20) | (*(sptr + 1) >> 12)) &
2650  ((*(sptr) << 21) | (*(sptr + 1) >> 11)) &
2651  ((*(sptr) << 22) | (*(sptr + 1) >> 10)) &
2652  ((*(sptr) << 23) | (*(sptr + 1) >> 9)) &
2653  ((*(sptr) << 24) | (*(sptr + 1) >> 8)) &
2654  ((*(sptr) << 25) | (*(sptr + 1) >> 7));
2655  }
2656  }
2657 }
2658 
2659 static void
2660 fdilate_1_25(l_uint32 *datad,
2661  l_int32 w,
2662  l_int32 h,
2663  l_int32 wpld,
2664  l_uint32 *datas,
2665  l_int32 wpls)
2666 {
2667 l_int32 i;
2668 l_int32 j, pwpls;
2669 l_uint32 *sptr, *dptr;
2670 
2671  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
2672 
2673  for (i = 0; i < h; i++) {
2674  sptr = datas + i * wpls;
2675  dptr = datad + i * wpld;
2676  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2677  *dptr = (*(sptr + wpls)) |
2678  (*sptr);
2679  }
2680  }
2681 }
2682 
2683 static void
2684 ferode_1_25(l_uint32 *datad,
2685  l_int32 w,
2686  l_int32 h,
2687  l_int32 wpld,
2688  l_uint32 *datas,
2689  l_int32 wpls)
2690 {
2691 l_int32 i;
2692 l_int32 j, pwpls;
2693 l_uint32 *sptr, *dptr;
2694 
2695  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
2696 
2697  for (i = 0; i < h; i++) {
2698  sptr = datas + i * wpls;
2699  dptr = datad + i * wpld;
2700  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2701  *dptr = (*(sptr - wpls)) &
2702  (*sptr);
2703  }
2704  }
2705 }
2706 
2707 static void
2708 fdilate_1_26(l_uint32 *datad,
2709  l_int32 w,
2710  l_int32 h,
2711  l_int32 wpld,
2712  l_uint32 *datas,
2713  l_int32 wpls)
2714 {
2715 l_int32 i;
2716 l_int32 j, pwpls;
2717 l_uint32 *sptr, *dptr;
2718 
2719  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
2720 
2721  for (i = 0; i < h; i++) {
2722  sptr = datas + i * wpls;
2723  dptr = datad + i * wpld;
2724  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2725  *dptr = (*(sptr + wpls)) |
2726  (*sptr) |
2727  (*(sptr - wpls));
2728  }
2729  }
2730 }
2731 
2732 static void
2733 ferode_1_26(l_uint32 *datad,
2734  l_int32 w,
2735  l_int32 h,
2736  l_int32 wpld,
2737  l_uint32 *datas,
2738  l_int32 wpls)
2739 {
2740 l_int32 i;
2741 l_int32 j, pwpls;
2742 l_uint32 *sptr, *dptr;
2743 
2744  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
2745 
2746  for (i = 0; i < h; i++) {
2747  sptr = datas + i * wpls;
2748  dptr = datad + i * wpld;
2749  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2750  *dptr = (*(sptr - wpls)) &
2751  (*sptr) &
2752  (*(sptr + wpls));
2753  }
2754  }
2755 }
2756 
2757 static void
2758 fdilate_1_27(l_uint32 *datad,
2759  l_int32 w,
2760  l_int32 h,
2761  l_int32 wpld,
2762  l_uint32 *datas,
2763  l_int32 wpls)
2764 {
2765 l_int32 i;
2766 l_int32 j, pwpls;
2767 l_uint32 *sptr, *dptr;
2768 l_int32 wpls2;
2769 
2770  wpls2 = 2 * wpls;
2771  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
2772 
2773  for (i = 0; i < h; i++) {
2774  sptr = datas + i * wpls;
2775  dptr = datad + i * wpld;
2776  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2777  *dptr = (*(sptr + wpls2)) |
2778  (*(sptr + wpls)) |
2779  (*sptr) |
2780  (*(sptr - wpls));
2781  }
2782  }
2783 }
2784 
2785 static void
2786 ferode_1_27(l_uint32 *datad,
2787  l_int32 w,
2788  l_int32 h,
2789  l_int32 wpld,
2790  l_uint32 *datas,
2791  l_int32 wpls)
2792 {
2793 l_int32 i;
2794 l_int32 j, pwpls;
2795 l_uint32 *sptr, *dptr;
2796 l_int32 wpls2;
2797 
2798  wpls2 = 2 * wpls;
2799  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
2800 
2801  for (i = 0; i < h; i++) {
2802  sptr = datas + i * wpls;
2803  dptr = datad + i * wpld;
2804  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2805  *dptr = (*(sptr - wpls2)) &
2806  (*(sptr - wpls)) &
2807  (*sptr) &
2808  (*(sptr + wpls));
2809  }
2810  }
2811 }
2812 
2813 static void
2814 fdilate_1_28(l_uint32 *datad,
2815  l_int32 w,
2816  l_int32 h,
2817  l_int32 wpld,
2818  l_uint32 *datas,
2819  l_int32 wpls)
2820 {
2821 l_int32 i;
2822 l_int32 j, pwpls;
2823 l_uint32 *sptr, *dptr;
2824 l_int32 wpls2;
2825 
2826  wpls2 = 2 * wpls;
2827  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
2828 
2829  for (i = 0; i < h; i++) {
2830  sptr = datas + i * wpls;
2831  dptr = datad + i * wpld;
2832  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2833  *dptr = (*(sptr + wpls2)) |
2834  (*(sptr + wpls)) |
2835  (*sptr) |
2836  (*(sptr - wpls)) |
2837  (*(sptr - wpls2));
2838  }
2839  }
2840 }
2841 
2842 static void
2843 ferode_1_28(l_uint32 *datad,
2844  l_int32 w,
2845  l_int32 h,
2846  l_int32 wpld,
2847  l_uint32 *datas,
2848  l_int32 wpls)
2849 {
2850 l_int32 i;
2851 l_int32 j, pwpls;
2852 l_uint32 *sptr, *dptr;
2853 l_int32 wpls2;
2854 
2855  wpls2 = 2 * wpls;
2856  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
2857 
2858  for (i = 0; i < h; i++) {
2859  sptr = datas + i * wpls;
2860  dptr = datad + i * wpld;
2861  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2862  *dptr = (*(sptr - wpls2)) &
2863  (*(sptr - wpls)) &
2864  (*sptr) &
2865  (*(sptr + wpls)) &
2866  (*(sptr + wpls2));
2867  }
2868  }
2869 }
2870 
2871 static void
2872 fdilate_1_29(l_uint32 *datad,
2873  l_int32 w,
2874  l_int32 h,
2875  l_int32 wpld,
2876  l_uint32 *datas,
2877  l_int32 wpls)
2878 {
2879 l_int32 i;
2880 l_int32 j, pwpls;
2881 l_uint32 *sptr, *dptr;
2882 l_int32 wpls2, wpls3;
2883 
2884  wpls2 = 2 * wpls;
2885  wpls3 = 3 * wpls;
2886  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
2887 
2888  for (i = 0; i < h; i++) {
2889  sptr = datas + i * wpls;
2890  dptr = datad + i * wpld;
2891  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2892  *dptr = (*(sptr + wpls3)) |
2893  (*(sptr + wpls2)) |
2894  (*(sptr + wpls)) |
2895  (*sptr) |
2896  (*(sptr - wpls)) |
2897  (*(sptr - wpls2));
2898  }
2899  }
2900 }
2901 
2902 static void
2903 ferode_1_29(l_uint32 *datad,
2904  l_int32 w,
2905  l_int32 h,
2906  l_int32 wpld,
2907  l_uint32 *datas,
2908  l_int32 wpls)
2909 {
2910 l_int32 i;
2911 l_int32 j, pwpls;
2912 l_uint32 *sptr, *dptr;
2913 l_int32 wpls2, wpls3;
2914 
2915  wpls2 = 2 * wpls;
2916  wpls3 = 3 * wpls;
2917  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
2918 
2919  for (i = 0; i < h; i++) {
2920  sptr = datas + i * wpls;
2921  dptr = datad + i * wpld;
2922  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2923  *dptr = (*(sptr - wpls3)) &
2924  (*(sptr - wpls2)) &
2925  (*(sptr - wpls)) &
2926  (*sptr) &
2927  (*(sptr + wpls)) &
2928  (*(sptr + wpls2));
2929  }
2930  }
2931 }
2932 
2933 static void
2934 fdilate_1_30(l_uint32 *datad,
2935  l_int32 w,
2936  l_int32 h,
2937  l_int32 wpld,
2938  l_uint32 *datas,
2939  l_int32 wpls)
2940 {
2941 l_int32 i;
2942 l_int32 j, pwpls;
2943 l_uint32 *sptr, *dptr;
2944 l_int32 wpls2, wpls3;
2945 
2946  wpls2 = 2 * wpls;
2947  wpls3 = 3 * wpls;
2948  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
2949 
2950  for (i = 0; i < h; i++) {
2951  sptr = datas + i * wpls;
2952  dptr = datad + i * wpld;
2953  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2954  *dptr = (*(sptr + wpls3)) |
2955  (*(sptr + wpls2)) |
2956  (*(sptr + wpls)) |
2957  (*sptr) |
2958  (*(sptr - wpls)) |
2959  (*(sptr - wpls2)) |
2960  (*(sptr - wpls3));
2961  }
2962  }
2963 }
2964 
2965 static void
2966 ferode_1_30(l_uint32 *datad,
2967  l_int32 w,
2968  l_int32 h,
2969  l_int32 wpld,
2970  l_uint32 *datas,
2971  l_int32 wpls)
2972 {
2973 l_int32 i;
2974 l_int32 j, pwpls;
2975 l_uint32 *sptr, *dptr;
2976 l_int32 wpls2, wpls3;
2977 
2978  wpls2 = 2 * wpls;
2979  wpls3 = 3 * wpls;
2980  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
2981 
2982  for (i = 0; i < h; i++) {
2983  sptr = datas + i * wpls;
2984  dptr = datad + i * wpld;
2985  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
2986  *dptr = (*(sptr - wpls3)) &
2987  (*(sptr - wpls2)) &
2988  (*(sptr - wpls)) &
2989  (*sptr) &
2990  (*(sptr + wpls)) &
2991  (*(sptr + wpls2)) &
2992  (*(sptr + wpls3));
2993  }
2994  }
2995 }
2996 
2997 static void
2998 fdilate_1_31(l_uint32 *datad,
2999  l_int32 w,
3000  l_int32 h,
3001  l_int32 wpld,
3002  l_uint32 *datas,
3003  l_int32 wpls)
3004 {
3005 l_int32 i;
3006 l_int32 j, pwpls;
3007 l_uint32 *sptr, *dptr;
3008 l_int32 wpls2, wpls3, wpls4;
3009 
3010  wpls2 = 2 * wpls;
3011  wpls3 = 3 * wpls;
3012  wpls4 = 4 * wpls;
3013  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3014 
3015  for (i = 0; i < h; i++) {
3016  sptr = datas + i * wpls;
3017  dptr = datad + i * wpld;
3018  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3019  *dptr = (*(sptr + wpls4)) |
3020  (*(sptr + wpls3)) |
3021  (*(sptr + wpls2)) |
3022  (*(sptr + wpls)) |
3023  (*sptr) |
3024  (*(sptr - wpls)) |
3025  (*(sptr - wpls2)) |
3026  (*(sptr - wpls3));
3027  }
3028  }
3029 }
3030 
3031 static void
3032 ferode_1_31(l_uint32 *datad,
3033  l_int32 w,
3034  l_int32 h,
3035  l_int32 wpld,
3036  l_uint32 *datas,
3037  l_int32 wpls)
3038 {
3039 l_int32 i;
3040 l_int32 j, pwpls;
3041 l_uint32 *sptr, *dptr;
3042 l_int32 wpls2, wpls3, wpls4;
3043 
3044  wpls2 = 2 * wpls;
3045  wpls3 = 3 * wpls;
3046  wpls4 = 4 * wpls;
3047  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3048 
3049  for (i = 0; i < h; i++) {
3050  sptr = datas + i * wpls;
3051  dptr = datad + i * wpld;
3052  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3053  *dptr = (*(sptr - wpls4)) &
3054  (*(sptr - wpls3)) &
3055  (*(sptr - wpls2)) &
3056  (*(sptr - wpls)) &
3057  (*sptr) &
3058  (*(sptr + wpls)) &
3059  (*(sptr + wpls2)) &
3060  (*(sptr + wpls3));
3061  }
3062  }
3063 }
3064 
3065 static void
3066 fdilate_1_32(l_uint32 *datad,
3067  l_int32 w,
3068  l_int32 h,
3069  l_int32 wpld,
3070  l_uint32 *datas,
3071  l_int32 wpls)
3072 {
3073 l_int32 i;
3074 l_int32 j, pwpls;
3075 l_uint32 *sptr, *dptr;
3076 l_int32 wpls2, wpls3, wpls4;
3077 
3078  wpls2 = 2 * wpls;
3079  wpls3 = 3 * wpls;
3080  wpls4 = 4 * wpls;
3081  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3082 
3083  for (i = 0; i < h; i++) {
3084  sptr = datas + i * wpls;
3085  dptr = datad + i * wpld;
3086  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3087  *dptr = (*(sptr + wpls4)) |
3088  (*(sptr + wpls3)) |
3089  (*(sptr + wpls2)) |
3090  (*(sptr + wpls)) |
3091  (*sptr) |
3092  (*(sptr - wpls)) |
3093  (*(sptr - wpls2)) |
3094  (*(sptr - wpls3)) |
3095  (*(sptr - wpls4));
3096  }
3097  }
3098 }
3099 
3100 static void
3101 ferode_1_32(l_uint32 *datad,
3102  l_int32 w,
3103  l_int32 h,
3104  l_int32 wpld,
3105  l_uint32 *datas,
3106  l_int32 wpls)
3107 {
3108 l_int32 i;
3109 l_int32 j, pwpls;
3110 l_uint32 *sptr, *dptr;
3111 l_int32 wpls2, wpls3, wpls4;
3112 
3113  wpls2 = 2 * wpls;
3114  wpls3 = 3 * wpls;
3115  wpls4 = 4 * wpls;
3116  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3117 
3118  for (i = 0; i < h; i++) {
3119  sptr = datas + i * wpls;
3120  dptr = datad + i * wpld;
3121  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3122  *dptr = (*(sptr - wpls4)) &
3123  (*(sptr - wpls3)) &
3124  (*(sptr - wpls2)) &
3125  (*(sptr - wpls)) &
3126  (*sptr) &
3127  (*(sptr + wpls)) &
3128  (*(sptr + wpls2)) &
3129  (*(sptr + wpls3)) &
3130  (*(sptr + wpls4));
3131  }
3132  }
3133 }
3134 
3135 static void
3136 fdilate_1_33(l_uint32 *datad,
3137  l_int32 w,
3138  l_int32 h,
3139  l_int32 wpld,
3140  l_uint32 *datas,
3141  l_int32 wpls)
3142 {
3143 l_int32 i;
3144 l_int32 j, pwpls;
3145 l_uint32 *sptr, *dptr;
3146 l_int32 wpls2, wpls3, wpls4;
3147 l_int32 wpls5;
3148 
3149  wpls2 = 2 * wpls;
3150  wpls3 = 3 * wpls;
3151  wpls4 = 4 * wpls;
3152  wpls5 = 5 * wpls;
3153  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3154 
3155  for (i = 0; i < h; i++) {
3156  sptr = datas + i * wpls;
3157  dptr = datad + i * wpld;
3158  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3159  *dptr = (*(sptr + wpls5)) |
3160  (*(sptr + wpls4)) |
3161  (*(sptr + wpls3)) |
3162  (*(sptr + wpls2)) |
3163  (*(sptr + wpls)) |
3164  (*sptr) |
3165  (*(sptr - wpls)) |
3166  (*(sptr - wpls2)) |
3167  (*(sptr - wpls3)) |
3168  (*(sptr - wpls4));
3169  }
3170  }
3171 }
3172 
3173 static void
3174 ferode_1_33(l_uint32 *datad,
3175  l_int32 w,
3176  l_int32 h,
3177  l_int32 wpld,
3178  l_uint32 *datas,
3179  l_int32 wpls)
3180 {
3181 l_int32 i;
3182 l_int32 j, pwpls;
3183 l_uint32 *sptr, *dptr;
3184 l_int32 wpls2, wpls3, wpls4;
3185 l_int32 wpls5;
3186 
3187  wpls2 = 2 * wpls;
3188  wpls3 = 3 * wpls;
3189  wpls4 = 4 * wpls;
3190  wpls5 = 5 * wpls;
3191  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3192 
3193  for (i = 0; i < h; i++) {
3194  sptr = datas + i * wpls;
3195  dptr = datad + i * wpld;
3196  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3197  *dptr = (*(sptr - wpls5)) &
3198  (*(sptr - wpls4)) &
3199  (*(sptr - wpls3)) &
3200  (*(sptr - wpls2)) &
3201  (*(sptr - wpls)) &
3202  (*sptr) &
3203  (*(sptr + wpls)) &
3204  (*(sptr + wpls2)) &
3205  (*(sptr + wpls3)) &
3206  (*(sptr + wpls4));
3207  }
3208  }
3209 }
3210 
3211 static void
3212 fdilate_1_34(l_uint32 *datad,
3213  l_int32 w,
3214  l_int32 h,
3215  l_int32 wpld,
3216  l_uint32 *datas,
3217  l_int32 wpls)
3218 {
3219 l_int32 i;
3220 l_int32 j, pwpls;
3221 l_uint32 *sptr, *dptr;
3222 l_int32 wpls2, wpls3, wpls4;
3223 l_int32 wpls5;
3224 
3225  wpls2 = 2 * wpls;
3226  wpls3 = 3 * wpls;
3227  wpls4 = 4 * wpls;
3228  wpls5 = 5 * wpls;
3229  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3230 
3231  for (i = 0; i < h; i++) {
3232  sptr = datas + i * wpls;
3233  dptr = datad + i * wpld;
3234  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3235  *dptr = (*(sptr + wpls5)) |
3236  (*(sptr + wpls4)) |
3237  (*(sptr + wpls3)) |
3238  (*(sptr + wpls2)) |
3239  (*(sptr + wpls)) |
3240  (*sptr) |
3241  (*(sptr - wpls)) |
3242  (*(sptr - wpls2)) |
3243  (*(sptr - wpls3)) |
3244  (*(sptr - wpls4)) |
3245  (*(sptr - wpls5));
3246  }
3247  }
3248 }
3249 
3250 static void
3251 ferode_1_34(l_uint32 *datad,
3252  l_int32 w,
3253  l_int32 h,
3254  l_int32 wpld,
3255  l_uint32 *datas,
3256  l_int32 wpls)
3257 {
3258 l_int32 i;
3259 l_int32 j, pwpls;
3260 l_uint32 *sptr, *dptr;
3261 l_int32 wpls2, wpls3, wpls4;
3262 l_int32 wpls5;
3263 
3264  wpls2 = 2 * wpls;
3265  wpls3 = 3 * wpls;
3266  wpls4 = 4 * wpls;
3267  wpls5 = 5 * wpls;
3268  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3269 
3270  for (i = 0; i < h; i++) {
3271  sptr = datas + i * wpls;
3272  dptr = datad + i * wpld;
3273  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3274  *dptr = (*(sptr - wpls5)) &
3275  (*(sptr - wpls4)) &
3276  (*(sptr - wpls3)) &
3277  (*(sptr - wpls2)) &
3278  (*(sptr - wpls)) &
3279  (*sptr) &
3280  (*(sptr + wpls)) &
3281  (*(sptr + wpls2)) &
3282  (*(sptr + wpls3)) &
3283  (*(sptr + wpls4)) &
3284  (*(sptr + wpls5));
3285  }
3286  }
3287 }
3288 
3289 static void
3290 fdilate_1_35(l_uint32 *datad,
3291  l_int32 w,
3292  l_int32 h,
3293  l_int32 wpld,
3294  l_uint32 *datas,
3295  l_int32 wpls)
3296 {
3297 l_int32 i;
3298 l_int32 j, pwpls;
3299 l_uint32 *sptr, *dptr;
3300 l_int32 wpls2, wpls3, wpls4;
3301 l_int32 wpls5, wpls6;
3302 
3303  wpls2 = 2 * wpls;
3304  wpls3 = 3 * wpls;
3305  wpls4 = 4 * wpls;
3306  wpls5 = 5 * wpls;
3307  wpls6 = 6 * wpls;
3308  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3309 
3310  for (i = 0; i < h; i++) {
3311  sptr = datas + i * wpls;
3312  dptr = datad + i * wpld;
3313  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3314  *dptr = (*(sptr + wpls6)) |
3315  (*(sptr + wpls5)) |
3316  (*(sptr + wpls4)) |
3317  (*(sptr + wpls3)) |
3318  (*(sptr + wpls2)) |
3319  (*(sptr + wpls)) |
3320  (*sptr) |
3321  (*(sptr - wpls)) |
3322  (*(sptr - wpls2)) |
3323  (*(sptr - wpls3)) |
3324  (*(sptr - wpls4)) |
3325  (*(sptr - wpls5));
3326  }
3327  }
3328 }
3329 
3330 static void
3331 ferode_1_35(l_uint32 *datad,
3332  l_int32 w,
3333  l_int32 h,
3334  l_int32 wpld,
3335  l_uint32 *datas,
3336  l_int32 wpls)
3337 {
3338 l_int32 i;
3339 l_int32 j, pwpls;
3340 l_uint32 *sptr, *dptr;
3341 l_int32 wpls2, wpls3, wpls4;
3342 l_int32 wpls5, wpls6;
3343 
3344  wpls2 = 2 * wpls;
3345  wpls3 = 3 * wpls;
3346  wpls4 = 4 * wpls;
3347  wpls5 = 5 * wpls;
3348  wpls6 = 6 * wpls;
3349  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3350 
3351  for (i = 0; i < h; i++) {
3352  sptr = datas + i * wpls;
3353  dptr = datad + i * wpld;
3354  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3355  *dptr = (*(sptr - wpls6)) &
3356  (*(sptr - wpls5)) &
3357  (*(sptr - wpls4)) &
3358  (*(sptr - wpls3)) &
3359  (*(sptr - wpls2)) &
3360  (*(sptr - wpls)) &
3361  (*sptr) &
3362  (*(sptr + wpls)) &
3363  (*(sptr + wpls2)) &
3364  (*(sptr + wpls3)) &
3365  (*(sptr + wpls4)) &
3366  (*(sptr + wpls5));
3367  }
3368  }
3369 }
3370 
3371 static void
3372 fdilate_1_36(l_uint32 *datad,
3373  l_int32 w,
3374  l_int32 h,
3375  l_int32 wpld,
3376  l_uint32 *datas,
3377  l_int32 wpls)
3378 {
3379 l_int32 i;
3380 l_int32 j, pwpls;
3381 l_uint32 *sptr, *dptr;
3382 l_int32 wpls2, wpls3, wpls4;
3383 l_int32 wpls5, wpls6;
3384 
3385  wpls2 = 2 * wpls;
3386  wpls3 = 3 * wpls;
3387  wpls4 = 4 * wpls;
3388  wpls5 = 5 * wpls;
3389  wpls6 = 6 * wpls;
3390  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3391 
3392  for (i = 0; i < h; i++) {
3393  sptr = datas + i * wpls;
3394  dptr = datad + i * wpld;
3395  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3396  *dptr = (*(sptr + wpls6)) |
3397  (*(sptr + wpls5)) |
3398  (*(sptr + wpls4)) |
3399  (*(sptr + wpls3)) |
3400  (*(sptr + wpls2)) |
3401  (*(sptr + wpls)) |
3402  (*sptr) |
3403  (*(sptr - wpls)) |
3404  (*(sptr - wpls2)) |
3405  (*(sptr - wpls3)) |
3406  (*(sptr - wpls4)) |
3407  (*(sptr - wpls5)) |
3408  (*(sptr - wpls6));
3409  }
3410  }
3411 }
3412 
3413 static void
3414 ferode_1_36(l_uint32 *datad,
3415  l_int32 w,
3416  l_int32 h,
3417  l_int32 wpld,
3418  l_uint32 *datas,
3419  l_int32 wpls)
3420 {
3421 l_int32 i;
3422 l_int32 j, pwpls;
3423 l_uint32 *sptr, *dptr;
3424 l_int32 wpls2, wpls3, wpls4;
3425 l_int32 wpls5, wpls6;
3426 
3427  wpls2 = 2 * wpls;
3428  wpls3 = 3 * wpls;
3429  wpls4 = 4 * wpls;
3430  wpls5 = 5 * wpls;
3431  wpls6 = 6 * wpls;
3432  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3433 
3434  for (i = 0; i < h; i++) {
3435  sptr = datas + i * wpls;
3436  dptr = datad + i * wpld;
3437  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3438  *dptr = (*(sptr - wpls6)) &
3439  (*(sptr - wpls5)) &
3440  (*(sptr - wpls4)) &
3441  (*(sptr - wpls3)) &
3442  (*(sptr - wpls2)) &
3443  (*(sptr - wpls)) &
3444  (*sptr) &
3445  (*(sptr + wpls)) &
3446  (*(sptr + wpls2)) &
3447  (*(sptr + wpls3)) &
3448  (*(sptr + wpls4)) &
3449  (*(sptr + wpls5)) &
3450  (*(sptr + wpls6));
3451  }
3452  }
3453 }
3454 
3455 static void
3456 fdilate_1_37(l_uint32 *datad,
3457  l_int32 w,
3458  l_int32 h,
3459  l_int32 wpld,
3460  l_uint32 *datas,
3461  l_int32 wpls)
3462 {
3463 l_int32 i;
3464 l_int32 j, pwpls;
3465 l_uint32 *sptr, *dptr;
3466 l_int32 wpls2, wpls3, wpls4;
3467 l_int32 wpls5, wpls6, wpls7;
3468 
3469  wpls2 = 2 * wpls;
3470  wpls3 = 3 * wpls;
3471  wpls4 = 4 * wpls;
3472  wpls5 = 5 * wpls;
3473  wpls6 = 6 * wpls;
3474  wpls7 = 7 * wpls;
3475  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3476 
3477  for (i = 0; i < h; i++) {
3478  sptr = datas + i * wpls;
3479  dptr = datad + i * wpld;
3480  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3481  *dptr = (*(sptr + wpls7)) |
3482  (*(sptr + wpls6)) |
3483  (*(sptr + wpls5)) |
3484  (*(sptr + wpls4)) |
3485  (*(sptr + wpls3)) |
3486  (*(sptr + wpls2)) |
3487  (*(sptr + wpls)) |
3488  (*sptr) |
3489  (*(sptr - wpls)) |
3490  (*(sptr - wpls2)) |
3491  (*(sptr - wpls3)) |
3492  (*(sptr - wpls4)) |
3493  (*(sptr - wpls5)) |
3494  (*(sptr - wpls6));
3495  }
3496  }
3497 }
3498 
3499 static void
3500 ferode_1_37(l_uint32 *datad,
3501  l_int32 w,
3502  l_int32 h,
3503  l_int32 wpld,
3504  l_uint32 *datas,
3505  l_int32 wpls)
3506 {
3507 l_int32 i;
3508 l_int32 j, pwpls;
3509 l_uint32 *sptr, *dptr;
3510 l_int32 wpls2, wpls3, wpls4;
3511 l_int32 wpls5, wpls6, wpls7;
3512 
3513  wpls2 = 2 * wpls;
3514  wpls3 = 3 * wpls;
3515  wpls4 = 4 * wpls;
3516  wpls5 = 5 * wpls;
3517  wpls6 = 6 * wpls;
3518  wpls7 = 7 * wpls;
3519  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3520 
3521  for (i = 0; i < h; i++) {
3522  sptr = datas + i * wpls;
3523  dptr = datad + i * wpld;
3524  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3525  *dptr = (*(sptr - wpls7)) &
3526  (*(sptr - wpls6)) &
3527  (*(sptr - wpls5)) &
3528  (*(sptr - wpls4)) &
3529  (*(sptr - wpls3)) &
3530  (*(sptr - wpls2)) &
3531  (*(sptr - wpls)) &
3532  (*sptr) &
3533  (*(sptr + wpls)) &
3534  (*(sptr + wpls2)) &
3535  (*(sptr + wpls3)) &
3536  (*(sptr + wpls4)) &
3537  (*(sptr + wpls5)) &
3538  (*(sptr + wpls6));
3539  }
3540  }
3541 }
3542 
3543 static void
3544 fdilate_1_38(l_uint32 *datad,
3545  l_int32 w,
3546  l_int32 h,
3547  l_int32 wpld,
3548  l_uint32 *datas,
3549  l_int32 wpls)
3550 {
3551 l_int32 i;
3552 l_int32 j, pwpls;
3553 l_uint32 *sptr, *dptr;
3554 l_int32 wpls2, wpls3, wpls4;
3555 l_int32 wpls5, wpls6, wpls7;
3556 
3557  wpls2 = 2 * wpls;
3558  wpls3 = 3 * wpls;
3559  wpls4 = 4 * wpls;
3560  wpls5 = 5 * wpls;
3561  wpls6 = 6 * wpls;
3562  wpls7 = 7 * wpls;
3563  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3564 
3565  for (i = 0; i < h; i++) {
3566  sptr = datas + i * wpls;
3567  dptr = datad + i * wpld;
3568  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3569  *dptr = (*(sptr + wpls7)) |
3570  (*(sptr + wpls6)) |
3571  (*(sptr + wpls5)) |
3572  (*(sptr + wpls4)) |
3573  (*(sptr + wpls3)) |
3574  (*(sptr + wpls2)) |
3575  (*(sptr + wpls)) |
3576  (*sptr) |
3577  (*(sptr - wpls)) |
3578  (*(sptr - wpls2)) |
3579  (*(sptr - wpls3)) |
3580  (*(sptr - wpls4)) |
3581  (*(sptr - wpls5)) |
3582  (*(sptr - wpls6)) |
3583  (*(sptr - wpls7));
3584  }
3585  }
3586 }
3587 
3588 static void
3589 ferode_1_38(l_uint32 *datad,
3590  l_int32 w,
3591  l_int32 h,
3592  l_int32 wpld,
3593  l_uint32 *datas,
3594  l_int32 wpls)
3595 {
3596 l_int32 i;
3597 l_int32 j, pwpls;
3598 l_uint32 *sptr, *dptr;
3599 l_int32 wpls2, wpls3, wpls4;
3600 l_int32 wpls5, wpls6, wpls7;
3601 
3602  wpls2 = 2 * wpls;
3603  wpls3 = 3 * wpls;
3604  wpls4 = 4 * wpls;
3605  wpls5 = 5 * wpls;
3606  wpls6 = 6 * wpls;
3607  wpls7 = 7 * wpls;
3608  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3609 
3610  for (i = 0; i < h; i++) {
3611  sptr = datas + i * wpls;
3612  dptr = datad + i * wpld;
3613  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3614  *dptr = (*(sptr - wpls7)) &
3615  (*(sptr - wpls6)) &
3616  (*(sptr - wpls5)) &
3617  (*(sptr - wpls4)) &
3618  (*(sptr - wpls3)) &
3619  (*(sptr - wpls2)) &
3620  (*(sptr - wpls)) &
3621  (*sptr) &
3622  (*(sptr + wpls)) &
3623  (*(sptr + wpls2)) &
3624  (*(sptr + wpls3)) &
3625  (*(sptr + wpls4)) &
3626  (*(sptr + wpls5)) &
3627  (*(sptr + wpls6)) &
3628  (*(sptr + wpls7));
3629  }
3630  }
3631 }
3632 
3633 static void
3634 fdilate_1_39(l_uint32 *datad,
3635  l_int32 w,
3636  l_int32 h,
3637  l_int32 wpld,
3638  l_uint32 *datas,
3639  l_int32 wpls)
3640 {
3641 l_int32 i;
3642 l_int32 j, pwpls;
3643 l_uint32 *sptr, *dptr;
3644 l_int32 wpls2, wpls3, wpls4;
3645 l_int32 wpls5, wpls6, wpls7, wpls8;
3646 l_int32 wpls9, wpls10;
3647 
3648  wpls2 = 2 * wpls;
3649  wpls3 = 3 * wpls;
3650  wpls4 = 4 * wpls;
3651  wpls5 = 5 * wpls;
3652  wpls6 = 6 * wpls;
3653  wpls7 = 7 * wpls;
3654  wpls8 = 8 * wpls;
3655  wpls9 = 9 * wpls;
3656  wpls10 = 10 * wpls;
3657  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3658 
3659  for (i = 0; i < h; i++) {
3660  sptr = datas + i * wpls;
3661  dptr = datad + i * wpld;
3662  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3663  *dptr = (*(sptr + wpls10)) |
3664  (*(sptr + wpls9)) |
3665  (*(sptr + wpls8)) |
3666  (*(sptr + wpls7)) |
3667  (*(sptr + wpls6)) |
3668  (*(sptr + wpls5)) |
3669  (*(sptr + wpls4)) |
3670  (*(sptr + wpls3)) |
3671  (*(sptr + wpls2)) |
3672  (*(sptr + wpls)) |
3673  (*sptr) |
3674  (*(sptr - wpls)) |
3675  (*(sptr - wpls2)) |
3676  (*(sptr - wpls3)) |
3677  (*(sptr - wpls4)) |
3678  (*(sptr - wpls5)) |
3679  (*(sptr - wpls6)) |
3680  (*(sptr - wpls7)) |
3681  (*(sptr - wpls8)) |
3682  (*(sptr - wpls9));
3683  }
3684  }
3685 }
3686 
3687 static void
3688 ferode_1_39(l_uint32 *datad,
3689  l_int32 w,
3690  l_int32 h,
3691  l_int32 wpld,
3692  l_uint32 *datas,
3693  l_int32 wpls)
3694 {
3695 l_int32 i;
3696 l_int32 j, pwpls;
3697 l_uint32 *sptr, *dptr;
3698 l_int32 wpls2, wpls3, wpls4;
3699 l_int32 wpls5, wpls6, wpls7, wpls8;
3700 l_int32 wpls9, wpls10;
3701 
3702  wpls2 = 2 * wpls;
3703  wpls3 = 3 * wpls;
3704  wpls4 = 4 * wpls;
3705  wpls5 = 5 * wpls;
3706  wpls6 = 6 * wpls;
3707  wpls7 = 7 * wpls;
3708  wpls8 = 8 * wpls;
3709  wpls9 = 9 * wpls;
3710  wpls10 = 10 * wpls;
3711  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3712 
3713  for (i = 0; i < h; i++) {
3714  sptr = datas + i * wpls;
3715  dptr = datad + i * wpld;
3716  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3717  *dptr = (*(sptr - wpls10)) &
3718  (*(sptr - wpls9)) &
3719  (*(sptr - wpls8)) &
3720  (*(sptr - wpls7)) &
3721  (*(sptr - wpls6)) &
3722  (*(sptr - wpls5)) &
3723  (*(sptr - wpls4)) &
3724  (*(sptr - wpls3)) &
3725  (*(sptr - wpls2)) &
3726  (*(sptr - wpls)) &
3727  (*sptr) &
3728  (*(sptr + wpls)) &
3729  (*(sptr + wpls2)) &
3730  (*(sptr + wpls3)) &
3731  (*(sptr + wpls4)) &
3732  (*(sptr + wpls5)) &
3733  (*(sptr + wpls6)) &
3734  (*(sptr + wpls7)) &
3735  (*(sptr + wpls8)) &
3736  (*(sptr + wpls9));
3737  }
3738  }
3739 }
3740 
3741 static void
3742 fdilate_1_40(l_uint32 *datad,
3743  l_int32 w,
3744  l_int32 h,
3745  l_int32 wpld,
3746  l_uint32 *datas,
3747  l_int32 wpls)
3748 {
3749 l_int32 i;
3750 l_int32 j, pwpls;
3751 l_uint32 *sptr, *dptr;
3752 l_int32 wpls2, wpls3, wpls4;
3753 l_int32 wpls5, wpls6, wpls7, wpls8;
3754 l_int32 wpls9, wpls10;
3755 
3756  wpls2 = 2 * wpls;
3757  wpls3 = 3 * wpls;
3758  wpls4 = 4 * wpls;
3759  wpls5 = 5 * wpls;
3760  wpls6 = 6 * wpls;
3761  wpls7 = 7 * wpls;
3762  wpls8 = 8 * wpls;
3763  wpls9 = 9 * wpls;
3764  wpls10 = 10 * wpls;
3765  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3766 
3767  for (i = 0; i < h; i++) {
3768  sptr = datas + i * wpls;
3769  dptr = datad + i * wpld;
3770  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3771  *dptr = (*(sptr + wpls10)) |
3772  (*(sptr + wpls9)) |
3773  (*(sptr + wpls8)) |
3774  (*(sptr + wpls7)) |
3775  (*(sptr + wpls6)) |
3776  (*(sptr + wpls5)) |
3777  (*(sptr + wpls4)) |
3778  (*(sptr + wpls3)) |
3779  (*(sptr + wpls2)) |
3780  (*(sptr + wpls)) |
3781  (*sptr) |
3782  (*(sptr - wpls)) |
3783  (*(sptr - wpls2)) |
3784  (*(sptr - wpls3)) |
3785  (*(sptr - wpls4)) |
3786  (*(sptr - wpls5)) |
3787  (*(sptr - wpls6)) |
3788  (*(sptr - wpls7)) |
3789  (*(sptr - wpls8)) |
3790  (*(sptr - wpls9)) |
3791  (*(sptr - wpls10));
3792  }
3793  }
3794 }
3795 
3796 static void
3797 ferode_1_40(l_uint32 *datad,
3798  l_int32 w,
3799  l_int32 h,
3800  l_int32 wpld,
3801  l_uint32 *datas,
3802  l_int32 wpls)
3803 {
3804 l_int32 i;
3805 l_int32 j, pwpls;
3806 l_uint32 *sptr, *dptr;
3807 l_int32 wpls2, wpls3, wpls4;
3808 l_int32 wpls5, wpls6, wpls7, wpls8;
3809 l_int32 wpls9, wpls10;
3810 
3811  wpls2 = 2 * wpls;
3812  wpls3 = 3 * wpls;
3813  wpls4 = 4 * wpls;
3814  wpls5 = 5 * wpls;
3815  wpls6 = 6 * wpls;
3816  wpls7 = 7 * wpls;
3817  wpls8 = 8 * wpls;
3818  wpls9 = 9 * wpls;
3819  wpls10 = 10 * wpls;
3820  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3821 
3822  for (i = 0; i < h; i++) {
3823  sptr = datas + i * wpls;
3824  dptr = datad + i * wpld;
3825  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3826  *dptr = (*(sptr - wpls10)) &
3827  (*(sptr - wpls9)) &
3828  (*(sptr - wpls8)) &
3829  (*(sptr - wpls7)) &
3830  (*(sptr - wpls6)) &
3831  (*(sptr - wpls5)) &
3832  (*(sptr - wpls4)) &
3833  (*(sptr - wpls3)) &
3834  (*(sptr - wpls2)) &
3835  (*(sptr - wpls)) &
3836  (*sptr) &
3837  (*(sptr + wpls)) &
3838  (*(sptr + wpls2)) &
3839  (*(sptr + wpls3)) &
3840  (*(sptr + wpls4)) &
3841  (*(sptr + wpls5)) &
3842  (*(sptr + wpls6)) &
3843  (*(sptr + wpls7)) &
3844  (*(sptr + wpls8)) &
3845  (*(sptr + wpls9)) &
3846  (*(sptr + wpls10));
3847  }
3848  }
3849 }
3850 
3851 static void
3852 fdilate_1_41(l_uint32 *datad,
3853  l_int32 w,
3854  l_int32 h,
3855  l_int32 wpld,
3856  l_uint32 *datas,
3857  l_int32 wpls)
3858 {
3859 l_int32 i;
3860 l_int32 j, pwpls;
3861 l_uint32 *sptr, *dptr;
3862 l_int32 wpls2, wpls3, wpls4;
3863 l_int32 wpls5, wpls6, wpls7, wpls8;
3864 l_int32 wpls9, wpls10, wpls11, wpls12;
3865 
3866  wpls2 = 2 * wpls;
3867  wpls3 = 3 * wpls;
3868  wpls4 = 4 * wpls;
3869  wpls5 = 5 * wpls;
3870  wpls6 = 6 * wpls;
3871  wpls7 = 7 * wpls;
3872  wpls8 = 8 * wpls;
3873  wpls9 = 9 * wpls;
3874  wpls10 = 10 * wpls;
3875  wpls11 = 11 * wpls;
3876  wpls12 = 12 * wpls;
3877  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3878 
3879  for (i = 0; i < h; i++) {
3880  sptr = datas + i * wpls;
3881  dptr = datad + i * wpld;
3882  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3883  *dptr = (*(sptr + wpls12)) |
3884  (*(sptr + wpls11)) |
3885  (*(sptr + wpls10)) |
3886  (*(sptr + wpls9)) |
3887  (*(sptr + wpls8)) |
3888  (*(sptr + wpls7)) |
3889  (*(sptr + wpls6)) |
3890  (*(sptr + wpls5)) |
3891  (*(sptr + wpls4)) |
3892  (*(sptr + wpls3)) |
3893  (*(sptr + wpls2)) |
3894  (*(sptr + wpls)) |
3895  (*sptr) |
3896  (*(sptr - wpls)) |
3897  (*(sptr - wpls2)) |
3898  (*(sptr - wpls3)) |
3899  (*(sptr - wpls4)) |
3900  (*(sptr - wpls5)) |
3901  (*(sptr - wpls6)) |
3902  (*(sptr - wpls7)) |
3903  (*(sptr - wpls8)) |
3904  (*(sptr - wpls9)) |
3905  (*(sptr - wpls10)) |
3906  (*(sptr - wpls11)) |
3907  (*(sptr - wpls12));
3908  }
3909  }
3910 }
3911 
3912 static void
3913 ferode_1_41(l_uint32 *datad,
3914  l_int32 w,
3915  l_int32 h,
3916  l_int32 wpld,
3917  l_uint32 *datas,
3918  l_int32 wpls)
3919 {
3920 l_int32 i;
3921 l_int32 j, pwpls;
3922 l_uint32 *sptr, *dptr;
3923 l_int32 wpls2, wpls3, wpls4;
3924 l_int32 wpls5, wpls6, wpls7, wpls8;
3925 l_int32 wpls9, wpls10, wpls11, wpls12;
3926 
3927  wpls2 = 2 * wpls;
3928  wpls3 = 3 * wpls;
3929  wpls4 = 4 * wpls;
3930  wpls5 = 5 * wpls;
3931  wpls6 = 6 * wpls;
3932  wpls7 = 7 * wpls;
3933  wpls8 = 8 * wpls;
3934  wpls9 = 9 * wpls;
3935  wpls10 = 10 * wpls;
3936  wpls11 = 11 * wpls;
3937  wpls12 = 12 * wpls;
3938  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
3939 
3940  for (i = 0; i < h; i++) {
3941  sptr = datas + i * wpls;
3942  dptr = datad + i * wpld;
3943  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
3944  *dptr = (*(sptr - wpls12)) &
3945  (*(sptr - wpls11)) &
3946  (*(sptr - wpls10)) &
3947  (*(sptr - wpls9)) &
3948  (*(sptr - wpls8)) &
3949  (*(sptr - wpls7)) &
3950  (*(sptr - wpls6)) &
3951  (*(sptr - wpls5)) &
3952  (*(sptr - wpls4)) &
3953  (*(sptr - wpls3)) &
3954  (*(sptr - wpls2)) &
3955  (*(sptr - wpls)) &
3956  (*sptr) &
3957  (*(sptr + wpls)) &
3958  (*(sptr + wpls2)) &
3959  (*(sptr + wpls3)) &
3960  (*(sptr + wpls4)) &
3961  (*(sptr + wpls5)) &
3962  (*(sptr + wpls6)) &
3963  (*(sptr + wpls7)) &
3964  (*(sptr + wpls8)) &
3965  (*(sptr + wpls9)) &
3966  (*(sptr + wpls10)) &
3967  (*(sptr + wpls11)) &
3968  (*(sptr + wpls12));
3969  }
3970  }
3971 }
3972 
3973 static void
3974 fdilate_1_42(l_uint32 *datad,
3975  l_int32 w,
3976  l_int32 h,
3977  l_int32 wpld,
3978  l_uint32 *datas,
3979  l_int32 wpls)
3980 {
3981 l_int32 i;
3982 l_int32 j, pwpls;
3983 l_uint32 *sptr, *dptr;
3984 l_int32 wpls2, wpls3, wpls4;
3985 l_int32 wpls5, wpls6, wpls7, wpls8;
3986 l_int32 wpls9, wpls10, wpls11, wpls12;
3987 l_int32 wpls13, wpls14, wpls15;
3988 
3989  wpls2 = 2 * wpls;
3990  wpls3 = 3 * wpls;
3991  wpls4 = 4 * wpls;
3992  wpls5 = 5 * wpls;
3993  wpls6 = 6 * wpls;
3994  wpls7 = 7 * wpls;
3995  wpls8 = 8 * wpls;
3996  wpls9 = 9 * wpls;
3997  wpls10 = 10 * wpls;
3998  wpls11 = 11 * wpls;
3999  wpls12 = 12 * wpls;
4000  wpls13 = 13 * wpls;
4001  wpls14 = 14 * wpls;
4002  wpls15 = 15 * wpls;
4003  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
4004 
4005  for (i = 0; i < h; i++) {
4006  sptr = datas + i * wpls;
4007  dptr = datad + i * wpld;
4008  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
4009  *dptr = (*(sptr + wpls15)) |
4010  (*(sptr + wpls14)) |
4011  (*(sptr + wpls13)) |
4012  (*(sptr + wpls12)) |
4013  (*(sptr + wpls11)) |
4014  (*(sptr + wpls10)) |
4015  (*(sptr + wpls9)) |
4016  (*(sptr + wpls8)) |
4017  (*(sptr + wpls7)) |
4018  (*(sptr + wpls6)) |
4019  (*(sptr + wpls5)) |
4020  (*(sptr + wpls4)) |
4021  (*(sptr + wpls3)) |
4022  (*(sptr + wpls2)) |
4023  (*(sptr + wpls)) |
4024  (*sptr) |
4025  (*(sptr - wpls)) |
4026  (*(sptr - wpls2)) |
4027  (*(sptr - wpls3)) |
4028  (*(sptr - wpls4)) |
4029  (*(sptr - wpls5)) |
4030  (*(sptr - wpls6)) |
4031  (*(sptr - wpls7)) |
4032  (*(sptr - wpls8)) |
4033  (*(sptr - wpls9)) |
4034  (*(sptr - wpls10)) |
4035  (*(sptr - wpls11)) |
4036  (*(sptr - wpls12)) |
4037  (*(sptr - wpls13)) |
4038  (*(sptr - wpls14));
4039  }
4040  }
4041 }
4042 
4043 static void
4044 ferode_1_42(l_uint32 *datad,
4045  l_int32 w,
4046  l_int32 h,
4047  l_int32 wpld,
4048  l_uint32 *datas,
4049  l_int32 wpls)
4050 {
4051 l_int32 i;
4052 l_int32 j, pwpls;
4053 l_uint32 *sptr, *dptr;
4054 l_int32 wpls2, wpls3, wpls4;
4055 l_int32 wpls5, wpls6, wpls7, wpls8;
4056 l_int32 wpls9, wpls10, wpls11, wpls12;
4057 l_int32 wpls13, wpls14, wpls15;
4058 
4059  wpls2 = 2 * wpls;
4060  wpls3 = 3 * wpls;
4061  wpls4 = 4 * wpls;
4062  wpls5 = 5 * wpls;
4063  wpls6 = 6 * wpls;
4064  wpls7 = 7 * wpls;
4065  wpls8 = 8 * wpls;
4066  wpls9 = 9 * wpls;
4067  wpls10 = 10 * wpls;
4068  wpls11 = 11 * wpls;
4069  wpls12 = 12 * wpls;
4070  wpls13 = 13 * wpls;
4071  wpls14 = 14 * wpls;
4072  wpls15 = 15 * wpls;
4073  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
4074 
4075  for (i = 0; i < h; i++) {
4076  sptr = datas + i * wpls;
4077  dptr = datad + i * wpld;
4078  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
4079  *dptr = (*(sptr - wpls15)) &
4080  (*(sptr - wpls14)) &
4081  (*(sptr - wpls13)) &
4082  (*(sptr - wpls12)) &
4083  (*(sptr - wpls11)) &
4084  (*(sptr - wpls10)) &
4085  (*(sptr - wpls9)) &
4086  (*(sptr - wpls8)) &
4087  (*(sptr - wpls7)) &
4088  (*(sptr - wpls6)) &
4089  (*(sptr - wpls5)) &
4090  (*(sptr - wpls4)) &
4091  (*(sptr - wpls3)) &
4092  (*(sptr - wpls2)) &
4093  (*(sptr - wpls)) &
4094  (*sptr) &
4095  (*(sptr + wpls)) &
4096  (*(sptr + wpls2)) &
4097  (*(sptr + wpls3)) &
4098  (*(sptr + wpls4)) &
4099  (*(sptr + wpls5)) &
4100  (*(sptr + wpls6)) &
4101  (*(sptr + wpls7)) &
4102  (*(sptr + wpls8)) &
4103  (*(sptr + wpls9)) &
4104  (*(sptr + wpls10)) &
4105  (*(sptr + wpls11)) &
4106  (*(sptr + wpls12)) &
4107  (*(sptr + wpls13)) &
4108  (*(sptr + wpls14));
4109  }
4110  }
4111 }
4112 
4113 static void
4114 fdilate_1_43(l_uint32 *datad,
4115  l_int32 w,
4116  l_int32 h,
4117  l_int32 wpld,
4118  l_uint32 *datas,
4119  l_int32 wpls)
4120 {
4121 l_int32 i;
4122 l_int32 j, pwpls;
4123 l_uint32 *sptr, *dptr;
4124 l_int32 wpls2, wpls3, wpls4;
4125 l_int32 wpls5, wpls6, wpls7, wpls8;
4126 l_int32 wpls9, wpls10, wpls11, wpls12;
4127 l_int32 wpls13, wpls14, wpls15;
4128 
4129  wpls2 = 2 * wpls;
4130  wpls3 = 3 * wpls;
4131  wpls4 = 4 * wpls;
4132  wpls5 = 5 * wpls;
4133  wpls6 = 6 * wpls;
4134  wpls7 = 7 * wpls;
4135  wpls8 = 8 * wpls;
4136  wpls9 = 9 * wpls;
4137  wpls10 = 10 * wpls;
4138  wpls11 = 11 * wpls;
4139  wpls12 = 12 * wpls;
4140  wpls13 = 13 * wpls;
4141  wpls14 = 14 * wpls;
4142  wpls15 = 15 * wpls;
4143  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
4144 
4145  for (i = 0; i < h; i++) {
4146  sptr = datas + i * wpls;
4147  dptr = datad + i * wpld;
4148  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
4149  *dptr = (*(sptr + wpls15)) |
4150  (*(sptr + wpls14)) |
4151  (*(sptr + wpls13)) |
4152  (*(sptr + wpls12)) |
4153  (*(sptr + wpls11)) |
4154  (*(sptr + wpls10)) |
4155  (*(sptr + wpls9)) |
4156  (*(sptr + wpls8)) |
4157  (*(sptr + wpls7)) |
4158  (*(sptr + wpls6)) |
4159  (*(sptr + wpls5)) |
4160  (*(sptr + wpls4)) |
4161  (*(sptr + wpls3)) |
4162  (*(sptr + wpls2)) |
4163  (*(sptr + wpls)) |
4164  (*sptr) |
4165  (*(sptr - wpls)) |
4166  (*(sptr - wpls2)) |
4167  (*(sptr - wpls3)) |
4168  (*(sptr - wpls4)) |
4169  (*(sptr - wpls5)) |
4170  (*(sptr - wpls6)) |
4171  (*(sptr - wpls7)) |
4172  (*(sptr - wpls8)) |
4173  (*(sptr - wpls9)) |
4174  (*(sptr - wpls10)) |
4175  (*(sptr - wpls11)) |
4176  (*(sptr - wpls12)) |
4177  (*(sptr - wpls13)) |
4178  (*(sptr - wpls14)) |
4179  (*(sptr - wpls15));
4180  }
4181  }
4182 }
4183 
4184 static void
4185 ferode_1_43(l_uint32 *datad,
4186  l_int32 w,
4187  l_int32 h,
4188  l_int32 wpld,
4189  l_uint32 *datas,
4190  l_int32 wpls)
4191 {
4192 l_int32 i;
4193 l_int32 j, pwpls;
4194 l_uint32 *sptr, *dptr;
4195 l_int32 wpls2, wpls3, wpls4;
4196 l_int32 wpls5, wpls6, wpls7, wpls8;
4197 l_int32 wpls9, wpls10, wpls11, wpls12;
4198 l_int32 wpls13, wpls14, wpls15;
4199 
4200  wpls2 = 2 * wpls;
4201  wpls3 = 3 * wpls;
4202  wpls4 = 4 * wpls;
4203  wpls5 = 5 * wpls;
4204  wpls6 = 6 * wpls;
4205  wpls7 = 7 * wpls;
4206  wpls8 = 8 * wpls;
4207  wpls9 = 9 * wpls;
4208  wpls10 = 10 * wpls;
4209  wpls11 = 11 * wpls;
4210  wpls12 = 12 * wpls;
4211  wpls13 = 13 * wpls;
4212  wpls14 = 14 * wpls;
4213  wpls15 = 15 * wpls;
4214  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
4215 
4216  for (i = 0; i < h; i++) {
4217  sptr = datas + i * wpls;
4218  dptr = datad + i * wpld;
4219  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
4220  *dptr = (*(sptr - wpls15)) &
4221  (*(sptr - wpls14)) &
4222  (*(sptr - wpls13)) &
4223  (*(sptr - wpls12)) &
4224  (*(sptr - wpls11)) &
4225  (*(sptr - wpls10)) &
4226  (*(sptr - wpls9)) &
4227  (*(sptr - wpls8)) &
4228  (*(sptr - wpls7)) &
4229  (*(sptr - wpls6)) &
4230  (*(sptr - wpls5)) &
4231  (*(sptr - wpls4)) &
4232  (*(sptr - wpls3)) &
4233  (*(sptr - wpls2)) &
4234  (*(sptr - wpls)) &
4235  (*sptr) &
4236  (*(sptr + wpls)) &
4237  (*(sptr + wpls2)) &
4238  (*(sptr + wpls3)) &
4239  (*(sptr + wpls4)) &
4240  (*(sptr + wpls5)) &
4241  (*(sptr + wpls6)) &
4242  (*(sptr + wpls7)) &
4243  (*(sptr + wpls8)) &
4244  (*(sptr + wpls9)) &
4245  (*(sptr + wpls10)) &
4246  (*(sptr + wpls11)) &
4247  (*(sptr + wpls12)) &
4248  (*(sptr + wpls13)) &
4249  (*(sptr + wpls14)) &
4250  (*(sptr + wpls15));
4251  }
4252  }
4253 }
4254 
4255 static void
4256 fdilate_1_44(l_uint32 *datad,
4257  l_int32 w,
4258  l_int32 h,
4259  l_int32 wpld,
4260  l_uint32 *datas,
4261  l_int32 wpls)
4262 {
4263 l_int32 i;
4264 l_int32 j, pwpls;
4265 l_uint32 *sptr, *dptr;
4266 l_int32 wpls2, wpls3, wpls4;
4267 l_int32 wpls5, wpls6, wpls7, wpls8;
4268 l_int32 wpls9, wpls10, wpls11, wpls12;
4269 l_int32 wpls13, wpls14, wpls15, wpls16;
4270 l_int32 wpls17;
4271 
4272  wpls2 = 2 * wpls;
4273  wpls3 = 3 * wpls;
4274  wpls4 = 4 * wpls;
4275  wpls5 = 5 * wpls;
4276  wpls6 = 6 * wpls;
4277  wpls7 = 7 * wpls;
4278  wpls8 = 8 * wpls;
4279  wpls9 = 9 * wpls;
4280  wpls10 = 10 * wpls;
4281  wpls11 = 11 * wpls;
4282  wpls12 = 12 * wpls;
4283  wpls13 = 13 * wpls;
4284  wpls14 = 14 * wpls;
4285  wpls15 = 15 * wpls;
4286  wpls16 = 16 * wpls;
4287  wpls17 = 17 * wpls;
4288  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
4289 
4290  for (i = 0; i < h; i++) {
4291  sptr = datas + i * wpls;
4292  dptr = datad + i * wpld;
4293  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
4294  *dptr = (*(sptr + wpls17)) |
4295  (*(sptr + wpls16)) |
4296  (*(sptr + wpls15)) |
4297  (*(sptr + wpls14)) |
4298  (*(sptr + wpls13)) |
4299  (*(sptr + wpls12)) |
4300  (*(sptr + wpls11)) |
4301  (*(sptr + wpls10)) |
4302  (*(sptr + wpls9)) |
4303  (*(sptr + wpls8)) |
4304  (*(sptr + wpls7)) |
4305  (*(sptr + wpls6)) |
4306  (*(sptr + wpls5)) |
4307  (*(sptr + wpls4)) |
4308  (*(sptr + wpls3)) |
4309  (*(sptr + wpls2)) |
4310  (*(sptr + wpls)) |
4311  (*sptr) |
4312  (*(sptr - wpls)) |
4313  (*(sptr - wpls2)) |
4314  (*(sptr - wpls3)) |
4315  (*(sptr - wpls4)) |
4316  (*(sptr - wpls5)) |
4317  (*(sptr - wpls6)) |
4318  (*(sptr - wpls7)) |
4319  (*(sptr - wpls8)) |
4320  (*(sptr - wpls9)) |
4321  (*(sptr - wpls10)) |
4322  (*(sptr - wpls11)) |
4323  (*(sptr - wpls12)) |
4324  (*(sptr - wpls13)) |
4325  (*(sptr - wpls14)) |
4326  (*(sptr - wpls15)) |
4327  (*(sptr - wpls16)) |
4328  (*(sptr - wpls17));
4329  }
4330  }
4331 }
4332 
4333 static void
4334 ferode_1_44(l_uint32 *datad,
4335  l_int32 w,
4336  l_int32 h,
4337  l_int32 wpld,
4338  l_uint32 *datas,
4339  l_int32 wpls)
4340 {
4341 l_int32 i;
4342 l_int32 j, pwpls;
4343 l_uint32 *sptr, *dptr;
4344 l_int32 wpls2, wpls3, wpls4;
4345 l_int32 wpls5, wpls6, wpls7, wpls8;
4346 l_int32 wpls9, wpls10, wpls11, wpls12;
4347 l_int32 wpls13, wpls14, wpls15, wpls16;
4348 l_int32 wpls17;
4349 
4350  wpls2 = 2 * wpls;
4351  wpls3 = 3 * wpls;
4352  wpls4 = 4 * wpls;
4353  wpls5 = 5 * wpls;
4354  wpls6 = 6 * wpls;
4355  wpls7 = 7 * wpls;
4356  wpls8 = 8 * wpls;
4357  wpls9 = 9 * wpls;
4358  wpls10 = 10 * wpls;
4359  wpls11 = 11 * wpls;
4360  wpls12 = 12 * wpls;
4361  wpls13 = 13 * wpls;
4362  wpls14 = 14 * wpls;
4363  wpls15 = 15 * wpls;
4364  wpls16 = 16 * wpls;
4365  wpls17 = 17 * wpls;
4366  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
4367 
4368  for (i = 0; i < h; i++) {
4369  sptr = datas + i * wpls;
4370  dptr = datad + i * wpld;
4371  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
4372  *dptr = (*(sptr - wpls17)) &
4373  (*(sptr - wpls16)) &
4374  (*(sptr - wpls15)) &
4375  (*(sptr - wpls14)) &
4376  (*(sptr - wpls13)) &
4377  (*(sptr - wpls12)) &
4378  (*(sptr - wpls11)) &
4379  (*(sptr - wpls10)) &
4380  (*(sptr - wpls9)) &
4381  (*(sptr - wpls8)) &
4382  (*(sptr - wpls7)) &
4383  (*(sptr - wpls6)) &
4384  (*(sptr - wpls5)) &
4385  (*(sptr - wpls4)) &
4386  (*(sptr - wpls3)) &
4387  (*(sptr - wpls2)) &
4388  (*(sptr - wpls)) &
4389  (*sptr) &
4390  (*(sptr + wpls)) &
4391  (*(sptr + wpls2)) &
4392  (*(sptr + wpls3)) &
4393  (*(sptr + wpls4)) &
4394  (*(sptr + wpls5)) &
4395  (*(sptr + wpls6)) &
4396  (*(sptr + wpls7)) &
4397  (*(sptr + wpls8)) &
4398  (*(sptr + wpls9)) &
4399  (*(sptr + wpls10)) &
4400  (*(sptr + wpls11)) &
4401  (*(sptr + wpls12)) &
4402  (*(sptr + wpls13)) &
4403  (*(sptr + wpls14)) &
4404  (*(sptr + wpls15)) &
4405  (*(sptr + wpls16)) &
4406  (*(sptr + wpls17));
4407  }
4408  }
4409 }
4410 
4411 static void
4412 fdilate_1_45(l_uint32 *datad,
4413  l_int32 w,
4414  l_int32 h,
4415  l_int32 wpld,
4416  l_uint32 *datas,
4417  l_int32 wpls)
4418 {
4419 l_int32 i;
4420 l_int32 j, pwpls;
4421 l_uint32 *sptr, *dptr;
4422 l_int32 wpls2, wpls3, wpls4;
4423 l_int32 wpls5, wpls6, wpls7, wpls8;
4424 l_int32 wpls9, wpls10, wpls11, wpls12;
4425 l_int32 wpls13, wpls14, wpls15, wpls16;
4426 l_int32 wpls17, wpls18, wpls19, wpls20;
4427 
4428  wpls2 = 2 * wpls;
4429  wpls3 = 3 * wpls;
4430  wpls4 = 4 * wpls;
4431  wpls5 = 5 * wpls;
4432  wpls6 = 6 * wpls;
4433  wpls7 = 7 * wpls;
4434  wpls8 = 8 * wpls;
4435  wpls9 = 9 * wpls;
4436  wpls10 = 10 * wpls;
4437  wpls11 = 11 * wpls;
4438  wpls12 = 12 * wpls;
4439  wpls13 = 13 * wpls;
4440  wpls14 = 14 * wpls;
4441  wpls15 = 15 * wpls;
4442  wpls16 = 16 * wpls;
4443  wpls17 = 17 * wpls;
4444  wpls18 = 18 * wpls;
4445  wpls19 = 19 * wpls;
4446  wpls20 = 20 * wpls;
4447  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
4448 
4449  for (i = 0; i < h; i++) {
4450  sptr = datas + i * wpls;
4451  dptr = datad + i * wpld;
4452  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
4453  *dptr = (*(sptr + wpls20)) |
4454  (*(sptr + wpls19)) |
4455  (*(sptr + wpls18)) |
4456  (*(sptr + wpls17)) |
4457  (*(sptr + wpls16)) |
4458  (*(sptr + wpls15)) |
4459  (*(sptr + wpls14)) |
4460  (*(sptr + wpls13)) |
4461  (*(sptr + wpls12)) |
4462  (*(sptr + wpls11)) |
4463  (*(sptr + wpls10)) |
4464  (*(sptr + wpls9)) |
4465  (*(sptr + wpls8)) |
4466  (*(sptr + wpls7)) |
4467  (*(sptr + wpls6)) |
4468  (*(sptr + wpls5)) |
4469  (*(sptr + wpls4)) |
4470  (*(sptr + wpls3)) |
4471  (*(sptr + wpls2)) |
4472  (*(sptr + wpls)) |
4473  (*sptr) |
4474  (*(sptr - wpls)) |
4475  (*(sptr - wpls2)) |
4476  (*(sptr - wpls3)) |
4477  (*(sptr - wpls4)) |
4478  (*(sptr - wpls5)) |
4479  (*(sptr - wpls6)) |
4480  (*(sptr - wpls7)) |
4481  (*(sptr - wpls8)) |
4482  (*(sptr - wpls9)) |
4483  (*(sptr - wpls10)) |
4484  (*(sptr - wpls11)) |
4485  (*(sptr - wpls12)) |
4486  (*(sptr - wpls13)) |
4487  (*(sptr - wpls14)) |
4488  (*(sptr - wpls15)) |
4489  (*(sptr - wpls16)) |
4490  (*(sptr - wpls17)) |
4491  (*(sptr - wpls18)) |
4492  (*(sptr - wpls19));
4493  }
4494  }
4495 }
4496 
4497 static void
4498 ferode_1_45(l_uint32 *datad,
4499  l_int32 w,
4500  l_int32 h,
4501  l_int32 wpld,
4502  l_uint32 *datas,
4503  l_int32 wpls)
4504 {
4505 l_int32 i;
4506 l_int32 j, pwpls;
4507 l_uint32 *sptr, *dptr;
4508 l_int32 wpls2, wpls3, wpls4;
4509 l_int32 wpls5, wpls6, wpls7, wpls8;
4510 l_int32 wpls9, wpls10, wpls11, wpls12;
4511 l_int32 wpls13, wpls14, wpls15, wpls16;
4512 l_int32 wpls17, wpls18, wpls19, wpls20;
4513 
4514  wpls2 = 2 * wpls;
4515  wpls3 = 3 * wpls;
4516  wpls4 = 4 * wpls;
4517  wpls5 = 5 * wpls;
4518  wpls6 = 6 * wpls;
4519  wpls7 = 7 * wpls;
4520  wpls8 = 8 * wpls;
4521  wpls9 = 9 * wpls;
4522  wpls10 = 10 * wpls;
4523  wpls11 = 11 * wpls;
4524  wpls12 = 12 * wpls;
4525  wpls13 = 13 * wpls;
4526  wpls14 = 14 * wpls;
4527  wpls15 = 15 * wpls;
4528  wpls16 = 16 * wpls;
4529  wpls17 = 17 * wpls;
4530  wpls18 = 18 * wpls;
4531  wpls19 = 19 * wpls;
4532  wpls20 = 20 * wpls;
4533  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
4534 
4535  for (i = 0; i < h; i++) {
4536  sptr = datas + i * wpls;
4537  dptr = datad + i * wpld;
4538  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
4539  *dptr = (*(sptr - wpls20)) &
4540  (*(sptr - wpls19)) &
4541  (*(sptr - wpls18)) &
4542  (*(sptr - wpls17)) &
4543  (*(sptr - wpls16)) &
4544  (*(sptr - wpls15)) &
4545  (*(sptr - wpls14)) &
4546  (*(sptr - wpls13)) &
4547  (*(sptr - wpls12)) &
4548  (*(sptr - wpls11)) &
4549  (*(sptr - wpls10)) &
4550  (*(sptr - wpls9)) &
4551  (*(sptr - wpls8)) &
4552  (*(sptr - wpls7)) &
4553  (*(sptr - wpls6)) &
4554  (*(sptr - wpls5)) &
4555  (*(sptr - wpls4)) &
4556  (*(sptr - wpls3)) &
4557  (*(sptr - wpls2)) &
4558  (*(sptr - wpls)) &
4559  (*sptr) &
4560  (*(sptr + wpls)) &
4561  (*(sptr + wpls2)) &
4562  (*(sptr + wpls3)) &
4563  (*(sptr + wpls4)) &
4564  (*(sptr + wpls5)) &
4565  (*(sptr + wpls6)) &
4566  (*(sptr + wpls7)) &
4567  (*(sptr + wpls8)) &
4568  (*(sptr + wpls9)) &
4569  (*(sptr + wpls10)) &
4570  (*(sptr + wpls11)) &
4571  (*(sptr + wpls12)) &
4572  (*(sptr + wpls13)) &
4573  (*(sptr + wpls14)) &
4574  (*(sptr + wpls15)) &
4575  (*(sptr + wpls16)) &
4576  (*(sptr + wpls17)) &
4577  (*(sptr + wpls18)) &
4578  (*(sptr + wpls19));
4579  }
4580  }
4581 }
4582 
4583 static void
4584 fdilate_1_46(l_uint32 *datad,
4585  l_int32 w,
4586  l_int32 h,
4587  l_int32 wpld,
4588  l_uint32 *datas,
4589  l_int32 wpls)
4590 {
4591 l_int32 i;
4592 l_int32 j, pwpls;
4593 l_uint32 *sptr, *dptr;
4594 l_int32 wpls2, wpls3, wpls4;
4595 l_int32 wpls5, wpls6, wpls7, wpls8;
4596 l_int32 wpls9, wpls10, wpls11, wpls12;
4597 l_int32 wpls13, wpls14, wpls15, wpls16;
4598 l_int32 wpls17, wpls18, wpls19, wpls20;
4599 
4600  wpls2 = 2 * wpls;
4601  wpls3 = 3 * wpls;
4602  wpls4 = 4 * wpls;
4603  wpls5 = 5 * wpls;
4604  wpls6 = 6 * wpls;
4605  wpls7 = 7 * wpls;
4606  wpls8 = 8 * wpls;
4607  wpls9 = 9 * wpls;
4608  wpls10 = 10 * wpls;
4609  wpls11 = 11 * wpls;
4610  wpls12 = 12 * wpls;
4611  wpls13 = 13 * wpls;
4612  wpls14 = 14 * wpls;
4613  wpls15 = 15 * wpls;
4614  wpls16 = 16 * wpls;
4615  wpls17 = 17 * wpls;
4616  wpls18 = 18 * wpls;
4617  wpls19 = 19 * wpls;
4618  wpls20 = 20 * wpls;
4619  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
4620 
4621  for (i = 0; i < h; i++) {
4622  sptr = datas + i * wpls;
4623  dptr = datad + i * wpld;
4624  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
4625  *dptr = (*(sptr + wpls20)) |
4626  (*(sptr + wpls19)) |
4627  (*(sptr + wpls18)) |
4628  (*(sptr + wpls17)) |
4629  (*(sptr + wpls16)) |
4630  (*(sptr + wpls15)) |
4631  (*(sptr + wpls14)) |
4632  (*(sptr + wpls13)) |
4633  (*(sptr + wpls12)) |
4634  (*(sptr + wpls11)) |
4635  (*(sptr + wpls10)) |
4636  (*(sptr + wpls9)) |
4637  (*(sptr + wpls8)) |
4638  (*(sptr + wpls7)) |
4639  (*(sptr + wpls6)) |
4640  (*(sptr + wpls5)) |
4641  (*(sptr + wpls4)) |
4642  (*(sptr + wpls3)) |
4643  (*(sptr + wpls2)) |
4644  (*(sptr + wpls)) |
4645  (*sptr) |
4646  (*(sptr - wpls)) |
4647  (*(sptr - wpls2)) |
4648  (*(sptr - wpls3)) |
4649  (*(sptr - wpls4)) |
4650  (*(sptr - wpls5)) |
4651  (*(sptr - wpls6)) |
4652  (*(sptr - wpls7)) |
4653  (*(sptr - wpls8)) |
4654  (*(sptr - wpls9)) |
4655  (*(sptr - wpls10)) |
4656  (*(sptr - wpls11)) |
4657  (*(sptr - wpls12)) |
4658  (*(sptr - wpls13)) |
4659  (*(sptr - wpls14)) |
4660  (*(sptr - wpls15)) |
4661  (*(sptr - wpls16)) |
4662  (*(sptr - wpls17)) |
4663  (*(sptr - wpls18)) |
4664  (*(sptr - wpls19)) |
4665  (*(sptr - wpls20));
4666  }
4667  }
4668 }
4669 
4670 static void
4671 ferode_1_46(l_uint32 *datad,
4672  l_int32 w,
4673  l_int32 h,
4674  l_int32 wpld,
4675  l_uint32 *datas,
4676  l_int32 wpls)
4677 {
4678 l_int32 i;
4679 l_int32 j, pwpls;
4680 l_uint32 *sptr, *dptr;
4681 l_int32 wpls2, wpls3, wpls4;
4682 l_int32 wpls5, wpls6, wpls7, wpls8;
4683 l_int32 wpls9, wpls10, wpls11, wpls12;
4684 l_int32 wpls13, wpls14, wpls15, wpls16;
4685 l_int32 wpls17, wpls18, wpls19, wpls20;
4686 
4687  wpls2 = 2 * wpls;
4688  wpls3 = 3 * wpls;
4689  wpls4 = 4 * wpls;
4690  wpls5 = 5 * wpls;
4691  wpls6 = 6 * wpls;
4692  wpls7 = 7 * wpls;
4693  wpls8 = 8 * wpls;
4694  wpls9 = 9 * wpls;
4695  wpls10 = 10 * wpls;
4696  wpls11 = 11 * wpls;
4697  wpls12 = 12 * wpls;
4698  wpls13 = 13 * wpls;
4699  wpls14 = 14 * wpls;
4700  wpls15 = 15 * wpls;
4701  wpls16 = 16 * wpls;
4702  wpls17 = 17 * wpls;
4703  wpls18 = 18 * wpls;
4704  wpls19 = 19 * wpls;
4705  wpls20 = 20 * wpls;
4706  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
4707 
4708  for (i = 0; i < h; i++) {
4709  sptr = datas + i * wpls;
4710  dptr = datad + i * wpld;
4711  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
4712  *dptr = (*(sptr - wpls20)) &
4713  (*(sptr - wpls19)) &
4714  (*(sptr - wpls18)) &
4715  (*(sptr - wpls17)) &
4716  (*(sptr - wpls16)) &
4717  (*(sptr - wpls15)) &
4718  (*(sptr - wpls14)) &
4719  (*(sptr - wpls13)) &
4720  (*(sptr - wpls12)) &
4721  (*(sptr - wpls11)) &
4722  (*(sptr - wpls10)) &
4723  (*(sptr - wpls9)) &
4724  (*(sptr - wpls8)) &
4725  (*(sptr - wpls7)) &
4726  (*(sptr - wpls6)) &
4727  (*(sptr - wpls5)) &
4728  (*(sptr - wpls4)) &
4729  (*(sptr - wpls3)) &
4730  (*(sptr - wpls2)) &
4731  (*(sptr - wpls)) &
4732  (*sptr) &
4733  (*(sptr + wpls)) &
4734  (*(sptr + wpls2)) &
4735  (*(sptr + wpls3)) &
4736  (*(sptr + wpls4)) &
4737  (*(sptr + wpls5)) &
4738  (*(sptr + wpls6)) &
4739  (*(sptr + wpls7)) &
4740  (*(sptr + wpls8)) &
4741  (*(sptr + wpls9)) &
4742  (*(sptr + wpls10)) &
4743  (*(sptr + wpls11)) &
4744  (*(sptr + wpls12)) &
4745  (*(sptr + wpls13)) &
4746  (*(sptr + wpls14)) &
4747  (*(sptr + wpls15)) &
4748  (*(sptr + wpls16)) &
4749  (*(sptr + wpls17)) &
4750  (*(sptr + wpls18)) &
4751  (*(sptr + wpls19)) &
4752  (*(sptr + wpls20));
4753  }
4754  }
4755 }
4756 
4757 static void
4758 fdilate_1_47(l_uint32 *datad,
4759  l_int32 w,
4760  l_int32 h,
4761  l_int32 wpld,
4762  l_uint32 *datas,
4763  l_int32 wpls)
4764 {
4765 l_int32 i;
4766 l_int32 j, pwpls;
4767 l_uint32 *sptr, *dptr;
4768 l_int32 wpls2, wpls3, wpls4;
4769 l_int32 wpls5, wpls6, wpls7, wpls8;
4770 l_int32 wpls9, wpls10, wpls11, wpls12;
4771 l_int32 wpls13, wpls14, wpls15, wpls16;
4772 l_int32 wpls17, wpls18, wpls19, wpls20;
4773 l_int32 wpls21, wpls22;
4774 
4775  wpls2 = 2 * wpls;
4776  wpls3 = 3 * wpls;
4777  wpls4 = 4 * wpls;
4778  wpls5 = 5 * wpls;
4779  wpls6 = 6 * wpls;
4780  wpls7 = 7 * wpls;
4781  wpls8 = 8 * wpls;
4782  wpls9 = 9 * wpls;
4783  wpls10 = 10 * wpls;
4784  wpls11 = 11 * wpls;
4785  wpls12 = 12 * wpls;
4786  wpls13 = 13 * wpls;
4787  wpls14 = 14 * wpls;
4788  wpls15 = 15 * wpls;
4789  wpls16 = 16 * wpls;
4790  wpls17 = 17 * wpls;
4791  wpls18 = 18 * wpls;
4792  wpls19 = 19 * wpls;
4793  wpls20 = 20 * wpls;
4794  wpls21 = 21 * wpls;
4795  wpls22 = 22 * wpls;
4796  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
4797 
4798  for (i = 0; i < h; i++) {
4799  sptr = datas + i * wpls;
4800  dptr = datad + i * wpld;
4801  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
4802  *dptr = (*(sptr + wpls22)) |
4803  (*(sptr + wpls21)) |
4804  (*(sptr + wpls20)) |
4805  (*(sptr + wpls19)) |
4806  (*(sptr + wpls18)) |
4807  (*(sptr + wpls17)) |
4808  (*(sptr + wpls16)) |
4809  (*(sptr + wpls15)) |
4810  (*(sptr + wpls14)) |
4811  (*(sptr + wpls13)) |
4812  (*(sptr + wpls12)) |
4813  (*(sptr + wpls11)) |
4814  (*(sptr + wpls10)) |
4815  (*(sptr + wpls9)) |
4816  (*(sptr + wpls8)) |
4817  (*(sptr + wpls7)) |
4818  (*(sptr + wpls6)) |
4819  (*(sptr + wpls5)) |
4820  (*(sptr + wpls4)) |
4821  (*(sptr + wpls3)) |
4822  (*(sptr + wpls2)) |
4823  (*(sptr + wpls)) |
4824  (*sptr) |
4825  (*(sptr - wpls)) |
4826  (*(sptr - wpls2)) |
4827  (*(sptr - wpls3)) |
4828  (*(sptr - wpls4)) |
4829  (*(sptr - wpls5)) |
4830  (*(sptr - wpls6)) |
4831  (*(sptr - wpls7)) |
4832  (*(sptr - wpls8)) |
4833  (*(sptr - wpls9)) |
4834  (*(sptr - wpls10)) |
4835  (*(sptr - wpls11)) |
4836  (*(sptr - wpls12)) |
4837  (*(sptr - wpls13)) |
4838  (*(sptr - wpls14)) |
4839  (*(sptr - wpls15)) |
4840  (*(sptr - wpls16)) |
4841  (*(sptr - wpls17)) |
4842  (*(sptr - wpls18)) |
4843  (*(sptr - wpls19)) |
4844  (*(sptr - wpls20)) |
4845  (*(sptr - wpls21)) |
4846  (*(sptr - wpls22));
4847  }
4848  }
4849 }
4850 
4851 static void
4852 ferode_1_47(l_uint32 *datad,
4853  l_int32 w,
4854  l_int32 h,
4855  l_int32 wpld,
4856  l_uint32 *datas,
4857  l_int32 wpls)
4858 {
4859 l_int32 i;
4860 l_int32 j, pwpls;
4861 l_uint32 *sptr, *dptr;
4862 l_int32 wpls2, wpls3, wpls4;
4863 l_int32 wpls5, wpls6, wpls7, wpls8;
4864 l_int32 wpls9, wpls10, wpls11, wpls12;
4865 l_int32 wpls13, wpls14, wpls15, wpls16;
4866 l_int32 wpls17, wpls18, wpls19, wpls20;
4867 l_int32 wpls21, wpls22;
4868 
4869  wpls2 = 2 * wpls;
4870  wpls3 = 3 * wpls;
4871  wpls4 = 4 * wpls;
4872  wpls5 = 5 * wpls;
4873  wpls6 = 6 * wpls;
4874  wpls7 = 7 * wpls;
4875  wpls8 = 8 * wpls;
4876  wpls9 = 9 * wpls;
4877  wpls10 = 10 * wpls;
4878  wpls11 = 11 * wpls;
4879  wpls12 = 12 * wpls;
4880  wpls13 = 13 * wpls;
4881  wpls14 = 14 * wpls;
4882  wpls15 = 15 * wpls;
4883  wpls16 = 16 * wpls;
4884  wpls17 = 17 * wpls;
4885  wpls18 = 18 * wpls;
4886  wpls19 = 19 * wpls;
4887  wpls20 = 20 * wpls;
4888  wpls21 = 21 * wpls;
4889  wpls22 = 22 * wpls;
4890  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
4891 
4892  for (i = 0; i < h; i++) {
4893  sptr = datas + i * wpls;
4894  dptr = datad + i * wpld;
4895  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
4896  *dptr = (*(sptr - wpls22)) &
4897  (*(sptr - wpls21)) &
4898  (*(sptr - wpls20)) &
4899  (*(sptr - wpls19)) &
4900  (*(sptr - wpls18)) &
4901  (*(sptr - wpls17)) &
4902  (*(sptr - wpls16)) &
4903  (*(sptr - wpls15)) &
4904  (*(sptr - wpls14)) &
4905  (*(sptr - wpls13)) &
4906  (*(sptr - wpls12)) &
4907  (*(sptr - wpls11)) &
4908  (*(sptr - wpls10)) &
4909  (*(sptr - wpls9)) &
4910  (*(sptr - wpls8)) &
4911  (*(sptr - wpls7)) &
4912  (*(sptr - wpls6)) &
4913  (*(sptr - wpls5)) &
4914  (*(sptr - wpls4)) &
4915  (*(sptr - wpls3)) &
4916  (*(sptr - wpls2)) &
4917  (*(sptr - wpls)) &
4918  (*sptr) &
4919  (*(sptr + wpls)) &
4920  (*(sptr + wpls2)) &
4921  (*(sptr + wpls3)) &
4922  (*(sptr + wpls4)) &
4923  (*(sptr + wpls5)) &
4924  (*(sptr + wpls6)) &
4925  (*(sptr + wpls7)) &
4926  (*(sptr + wpls8)) &
4927  (*(sptr + wpls9)) &
4928  (*(sptr + wpls10)) &
4929  (*(sptr + wpls11)) &
4930  (*(sptr + wpls12)) &
4931  (*(sptr + wpls13)) &
4932  (*(sptr + wpls14)) &
4933  (*(sptr + wpls15)) &
4934  (*(sptr + wpls16)) &
4935  (*(sptr + wpls17)) &
4936  (*(sptr + wpls18)) &
4937  (*(sptr + wpls19)) &
4938  (*(sptr + wpls20)) &
4939  (*(sptr + wpls21)) &
4940  (*(sptr + wpls22));
4941  }
4942  }
4943 }
4944 
4945 static void
4946 fdilate_1_48(l_uint32 *datad,
4947  l_int32 w,
4948  l_int32 h,
4949  l_int32 wpld,
4950  l_uint32 *datas,
4951  l_int32 wpls)
4952 {
4953 l_int32 i;
4954 l_int32 j, pwpls;
4955 l_uint32 *sptr, *dptr;
4956 l_int32 wpls2, wpls3, wpls4;
4957 l_int32 wpls5, wpls6, wpls7, wpls8;
4958 l_int32 wpls9, wpls10, wpls11, wpls12;
4959 l_int32 wpls13, wpls14, wpls15, wpls16;
4960 l_int32 wpls17, wpls18, wpls19, wpls20;
4961 l_int32 wpls21, wpls22, wpls23, wpls24;
4962 l_int32 wpls25;
4963 
4964  wpls2 = 2 * wpls;
4965  wpls3 = 3 * wpls;
4966  wpls4 = 4 * wpls;
4967  wpls5 = 5 * wpls;
4968  wpls6 = 6 * wpls;
4969  wpls7 = 7 * wpls;
4970  wpls8 = 8 * wpls;
4971  wpls9 = 9 * wpls;
4972  wpls10 = 10 * wpls;
4973  wpls11 = 11 * wpls;
4974  wpls12 = 12 * wpls;
4975  wpls13 = 13 * wpls;
4976  wpls14 = 14 * wpls;
4977  wpls15 = 15 * wpls;
4978  wpls16 = 16 * wpls;
4979  wpls17 = 17 * wpls;
4980  wpls18 = 18 * wpls;
4981  wpls19 = 19 * wpls;
4982  wpls20 = 20 * wpls;
4983  wpls21 = 21 * wpls;
4984  wpls22 = 22 * wpls;
4985  wpls23 = 23 * wpls;
4986  wpls24 = 24 * wpls;
4987  wpls25 = 25 * wpls;
4988  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
4989 
4990  for (i = 0; i < h; i++) {
4991  sptr = datas + i * wpls;
4992  dptr = datad + i * wpld;
4993  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
4994  *dptr = (*(sptr + wpls25)) |
4995  (*(sptr + wpls24)) |
4996  (*(sptr + wpls23)) |
4997  (*(sptr + wpls22)) |
4998  (*(sptr + wpls21)) |
4999  (*(sptr + wpls20)) |
5000  (*(sptr + wpls19)) |
5001  (*(sptr + wpls18)) |
5002  (*(sptr + wpls17)) |
5003  (*(sptr + wpls16)) |
5004  (*(sptr + wpls15)) |
5005  (*(sptr + wpls14)) |
5006  (*(sptr + wpls13)) |
5007  (*(sptr + wpls12)) |
5008  (*(sptr + wpls11)) |
5009  (*(sptr + wpls10)) |
5010  (*(sptr + wpls9)) |
5011  (*(sptr + wpls8)) |
5012  (*(sptr + wpls7)) |
5013  (*(sptr + wpls6)) |
5014  (*(sptr + wpls5)) |
5015  (*(sptr + wpls4)) |
5016  (*(sptr + wpls3)) |
5017  (*(sptr + wpls2)) |
5018  (*(sptr + wpls)) |
5019  (*sptr) |
5020  (*(sptr - wpls)) |
5021  (*(sptr - wpls2)) |
5022  (*(sptr - wpls3)) |
5023  (*(sptr - wpls4)) |
5024  (*(sptr - wpls5)) |
5025  (*(sptr - wpls6)) |
5026  (*(sptr - wpls7)) |
5027  (*(sptr - wpls8)) |
5028  (*(sptr - wpls9)) |
5029  (*(sptr - wpls10)) |
5030  (*(sptr - wpls11)) |
5031  (*(sptr - wpls12)) |
5032  (*(sptr - wpls13)) |
5033  (*(sptr - wpls14)) |
5034  (*(sptr - wpls15)) |
5035  (*(sptr - wpls16)) |
5036  (*(sptr - wpls17)) |
5037  (*(sptr - wpls18)) |
5038  (*(sptr - wpls19)) |
5039  (*(sptr - wpls20)) |
5040  (*(sptr - wpls21)) |
5041  (*(sptr - wpls22)) |
5042  (*(sptr - wpls23)) |
5043  (*(sptr - wpls24));
5044  }
5045  }
5046 }
5047 
5048 static void
5049 ferode_1_48(l_uint32 *datad,
5050  l_int32 w,
5051  l_int32 h,
5052  l_int32 wpld,
5053  l_uint32 *datas,
5054  l_int32 wpls)
5055 {
5056 l_int32 i;
5057 l_int32 j, pwpls;
5058 l_uint32 *sptr, *dptr;
5059 l_int32 wpls2, wpls3, wpls4;
5060 l_int32 wpls5, wpls6, wpls7, wpls8;
5061 l_int32 wpls9, wpls10, wpls11, wpls12;
5062 l_int32 wpls13, wpls14, wpls15, wpls16;
5063 l_int32 wpls17, wpls18, wpls19, wpls20;
5064 l_int32 wpls21, wpls22, wpls23, wpls24;
5065 l_int32 wpls25;
5066 
5067  wpls2 = 2 * wpls;
5068  wpls3 = 3 * wpls;
5069  wpls4 = 4 * wpls;
5070  wpls5 = 5 * wpls;
5071  wpls6 = 6 * wpls;
5072  wpls7 = 7 * wpls;
5073  wpls8 = 8 * wpls;
5074  wpls9 = 9 * wpls;
5075  wpls10 = 10 * wpls;
5076  wpls11 = 11 * wpls;
5077  wpls12 = 12 * wpls;
5078  wpls13 = 13 * wpls;
5079  wpls14 = 14 * wpls;
5080  wpls15 = 15 * wpls;
5081  wpls16 = 16 * wpls;
5082  wpls17 = 17 * wpls;
5083  wpls18 = 18 * wpls;
5084  wpls19 = 19 * wpls;
5085  wpls20 = 20 * wpls;
5086  wpls21 = 21 * wpls;
5087  wpls22 = 22 * wpls;
5088  wpls23 = 23 * wpls;
5089  wpls24 = 24 * wpls;
5090  wpls25 = 25 * wpls;
5091  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
5092 
5093  for (i = 0; i < h; i++) {
5094  sptr = datas + i * wpls;
5095  dptr = datad + i * wpld;
5096  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
5097  *dptr = (*(sptr - wpls25)) &
5098  (*(sptr - wpls24)) &
5099  (*(sptr - wpls23)) &
5100  (*(sptr - wpls22)) &
5101  (*(sptr - wpls21)) &
5102  (*(sptr - wpls20)) &
5103  (*(sptr - wpls19)) &
5104  (*(sptr - wpls18)) &
5105  (*(sptr - wpls17)) &
5106  (*(sptr - wpls16)) &
5107  (*(sptr - wpls15)) &
5108  (*(sptr - wpls14)) &
5109  (*(sptr - wpls13)) &
5110  (*(sptr - wpls12)) &
5111  (*(sptr - wpls11)) &
5112  (*(sptr - wpls10)) &
5113  (*(sptr - wpls9)) &
5114  (*(sptr - wpls8)) &
5115  (*(sptr - wpls7)) &
5116  (*(sptr - wpls6)) &
5117  (*(sptr - wpls5)) &
5118  (*(sptr - wpls4)) &
5119  (*(sptr - wpls3)) &
5120  (*(sptr - wpls2)) &
5121  (*(sptr - wpls)) &
5122  (*sptr) &
5123  (*(sptr + wpls)) &
5124  (*(sptr + wpls2)) &
5125  (*(sptr + wpls3)) &
5126  (*(sptr + wpls4)) &
5127  (*(sptr + wpls5)) &
5128  (*(sptr + wpls6)) &
5129  (*(sptr + wpls7)) &
5130  (*(sptr + wpls8)) &
5131  (*(sptr + wpls9)) &
5132  (*(sptr + wpls10)) &
5133  (*(sptr + wpls11)) &
5134  (*(sptr + wpls12)) &
5135  (*(sptr + wpls13)) &
5136  (*(sptr + wpls14)) &
5137  (*(sptr + wpls15)) &
5138  (*(sptr + wpls16)) &
5139  (*(sptr + wpls17)) &
5140  (*(sptr + wpls18)) &
5141  (*(sptr + wpls19)) &
5142  (*(sptr + wpls20)) &
5143  (*(sptr + wpls21)) &
5144  (*(sptr + wpls22)) &
5145  (*(sptr + wpls23)) &
5146  (*(sptr + wpls24));
5147  }
5148  }
5149 }
5150 
5151 static void
5152 fdilate_1_49(l_uint32 *datad,
5153  l_int32 w,
5154  l_int32 h,
5155  l_int32 wpld,
5156  l_uint32 *datas,
5157  l_int32 wpls)
5158 {
5159 l_int32 i;
5160 l_int32 j, pwpls;
5161 l_uint32 *sptr, *dptr;
5162 l_int32 wpls2, wpls3, wpls4;
5163 l_int32 wpls5, wpls6, wpls7, wpls8;
5164 l_int32 wpls9, wpls10, wpls11, wpls12;
5165 l_int32 wpls13, wpls14, wpls15, wpls16;
5166 l_int32 wpls17, wpls18, wpls19, wpls20;
5167 l_int32 wpls21, wpls22, wpls23, wpls24;
5168 l_int32 wpls25;
5169 
5170  wpls2 = 2 * wpls;
5171  wpls3 = 3 * wpls;
5172  wpls4 = 4 * wpls;
5173  wpls5 = 5 * wpls;
5174  wpls6 = 6 * wpls;
5175  wpls7 = 7 * wpls;
5176  wpls8 = 8 * wpls;
5177  wpls9 = 9 * wpls;
5178  wpls10 = 10 * wpls;
5179  wpls11 = 11 * wpls;
5180  wpls12 = 12 * wpls;
5181  wpls13 = 13 * wpls;
5182  wpls14 = 14 * wpls;
5183  wpls15 = 15 * wpls;
5184  wpls16 = 16 * wpls;
5185  wpls17 = 17 * wpls;
5186  wpls18 = 18 * wpls;
5187  wpls19 = 19 * wpls;
5188  wpls20 = 20 * wpls;
5189  wpls21 = 21 * wpls;
5190  wpls22 = 22 * wpls;
5191  wpls23 = 23 * wpls;
5192  wpls24 = 24 * wpls;
5193  wpls25 = 25 * wpls;
5194  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
5195 
5196  for (i = 0; i < h; i++) {
5197  sptr = datas + i * wpls;
5198  dptr = datad + i * wpld;
5199  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
5200  *dptr = (*(sptr + wpls25)) |
5201  (*(sptr + wpls24)) |
5202  (*(sptr + wpls23)) |
5203  (*(sptr + wpls22)) |
5204  (*(sptr + wpls21)) |
5205  (*(sptr + wpls20)) |
5206  (*(sptr + wpls19)) |
5207  (*(sptr + wpls18)) |
5208  (*(sptr + wpls17)) |
5209  (*(sptr + wpls16)) |
5210  (*(sptr + wpls15)) |
5211  (*(sptr + wpls14)) |
5212  (*(sptr + wpls13)) |
5213  (*(sptr + wpls12)) |
5214  (*(sptr + wpls11)) |
5215  (*(sptr + wpls10)) |
5216  (*(sptr + wpls9)) |
5217  (*(sptr + wpls8)) |
5218  (*(sptr + wpls7)) |
5219  (*(sptr + wpls6)) |
5220  (*(sptr + wpls5)) |
5221  (*(sptr + wpls4)) |
5222  (*(sptr + wpls3)) |
5223  (*(sptr + wpls2)) |
5224  (*(sptr + wpls)) |
5225  (*sptr) |
5226  (*(sptr - wpls)) |
5227  (*(sptr - wpls2)) |
5228  (*(sptr - wpls3)) |
5229  (*(sptr - wpls4)) |
5230  (*(sptr - wpls5)) |
5231  (*(sptr - wpls6)) |
5232  (*(sptr - wpls7)) |
5233  (*(sptr - wpls8)) |
5234  (*(sptr - wpls9)) |
5235  (*(sptr - wpls10)) |
5236  (*(sptr - wpls11)) |
5237  (*(sptr - wpls12)) |
5238  (*(sptr - wpls13)) |
5239  (*(sptr - wpls14)) |
5240  (*(sptr - wpls15)) |
5241  (*(sptr - wpls16)) |
5242  (*(sptr - wpls17)) |
5243  (*(sptr - wpls18)) |
5244  (*(sptr - wpls19)) |
5245  (*(sptr - wpls20)) |
5246  (*(sptr - wpls21)) |
5247  (*(sptr - wpls22)) |
5248  (*(sptr - wpls23)) |
5249  (*(sptr - wpls24)) |
5250  (*(sptr - wpls25));
5251  }
5252  }
5253 }
5254 
5255 static void
5256 ferode_1_49(l_uint32 *datad,
5257  l_int32 w,
5258  l_int32 h,
5259  l_int32 wpld,
5260  l_uint32 *datas,
5261  l_int32 wpls)
5262 {
5263 l_int32 i;
5264 l_int32 j, pwpls;
5265 l_uint32 *sptr, *dptr;
5266 l_int32 wpls2, wpls3, wpls4;
5267 l_int32 wpls5, wpls6, wpls7, wpls8;
5268 l_int32 wpls9, wpls10, wpls11, wpls12;
5269 l_int32 wpls13, wpls14, wpls15, wpls16;
5270 l_int32 wpls17, wpls18, wpls19, wpls20;
5271 l_int32 wpls21, wpls22, wpls23, wpls24;
5272 l_int32 wpls25;
5273 
5274  wpls2 = 2 * wpls;
5275  wpls3 = 3 * wpls;
5276  wpls4 = 4 * wpls;
5277  wpls5 = 5 * wpls;
5278  wpls6 = 6 * wpls;
5279  wpls7 = 7 * wpls;
5280  wpls8 = 8 * wpls;
5281  wpls9 = 9 * wpls;
5282  wpls10 = 10 * wpls;
5283  wpls11 = 11 * wpls;
5284  wpls12 = 12 * wpls;
5285  wpls13 = 13 * wpls;
5286  wpls14 = 14 * wpls;
5287  wpls15 = 15 * wpls;
5288  wpls16 = 16 * wpls;
5289  wpls17 = 17 * wpls;
5290  wpls18 = 18 * wpls;
5291  wpls19 = 19 * wpls;
5292  wpls20 = 20 * wpls;
5293  wpls21 = 21 * wpls;
5294  wpls22 = 22 * wpls;
5295  wpls23 = 23 * wpls;
5296  wpls24 = 24 * wpls;
5297  wpls25 = 25 * wpls;
5298  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
5299 
5300  for (i = 0; i < h; i++) {
5301  sptr = datas + i * wpls;
5302  dptr = datad + i * wpld;
5303  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
5304  *dptr = (*(sptr - wpls25)) &
5305  (*(sptr - wpls24)) &
5306  (*(sptr - wpls23)) &
5307  (*(sptr - wpls22)) &
5308  (*(sptr - wpls21)) &
5309  (*(sptr - wpls20)) &
5310  (*(sptr - wpls19)) &
5311  (*(sptr - wpls18)) &
5312  (*(sptr - wpls17)) &
5313  (*(sptr - wpls16)) &
5314  (*(sptr - wpls15)) &
5315  (*(sptr - wpls14)) &
5316  (*(sptr - wpls13)) &
5317  (*(sptr - wpls12)) &
5318  (*(sptr - wpls11)) &
5319  (*(sptr - wpls10)) &
5320  (*(sptr - wpls9)) &
5321  (*(sptr - wpls8)) &
5322  (*(sptr - wpls7)) &
5323  (*(sptr - wpls6)) &
5324  (*(sptr - wpls5)) &
5325  (*(sptr - wpls4)) &
5326  (*(sptr - wpls3)) &
5327  (*(sptr - wpls2)) &
5328  (*(sptr - wpls)) &
5329  (*sptr) &
5330  (*(sptr + wpls)) &
5331  (*(sptr + wpls2)) &
5332  (*(sptr + wpls3)) &
5333  (*(sptr + wpls4)) &
5334  (*(sptr + wpls5)) &
5335  (*(sptr + wpls6)) &
5336  (*(sptr + wpls7)) &
5337  (*(sptr + wpls8)) &
5338  (*(sptr + wpls9)) &
5339  (*(sptr + wpls10)) &
5340  (*(sptr + wpls11)) &
5341  (*(sptr + wpls12)) &
5342  (*(sptr + wpls13)) &
5343  (*(sptr + wpls14)) &
5344  (*(sptr + wpls15)) &
5345  (*(sptr + wpls16)) &
5346  (*(sptr + wpls17)) &
5347  (*(sptr + wpls18)) &
5348  (*(sptr + wpls19)) &
5349  (*(sptr + wpls20)) &
5350  (*(sptr + wpls21)) &
5351  (*(sptr + wpls22)) &
5352  (*(sptr + wpls23)) &
5353  (*(sptr + wpls24)) &
5354  (*(sptr + wpls25));
5355  }
5356  }
5357 }
5358 
5359 static void
5360 fdilate_1_50(l_uint32 *datad,
5361  l_int32 w,
5362  l_int32 h,
5363  l_int32 wpld,
5364  l_uint32 *datas,
5365  l_int32 wpls)
5366 {
5367 l_int32 i;
5368 l_int32 j, pwpls;
5369 l_uint32 *sptr, *dptr;
5370 
5371  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
5372 
5373  for (i = 0; i < h; i++) {
5374  sptr = datas + i * wpls;
5375  dptr = datad + i * wpld;
5376  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
5377  *dptr = ((*(sptr + wpls) << 1) | (*(sptr + wpls + 1) >> 31)) |
5378  (*(sptr + wpls)) |
5379  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
5380  (*sptr);
5381  }
5382  }
5383 }
5384 
5385 static void
5386 ferode_1_50(l_uint32 *datad,
5387  l_int32 w,
5388  l_int32 h,
5389  l_int32 wpld,
5390  l_uint32 *datas,
5391  l_int32 wpls)
5392 {
5393 l_int32 i;
5394 l_int32 j, pwpls;
5395 l_uint32 *sptr, *dptr;
5396 
5397  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
5398 
5399  for (i = 0; i < h; i++) {
5400  sptr = datas + i * wpls;
5401  dptr = datad + i * wpld;
5402  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
5403  *dptr = ((*(sptr - wpls) >> 1) | (*(sptr - wpls - 1) << 31)) &
5404  (*(sptr - wpls)) &
5405  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
5406  (*sptr);
5407  }
5408  }
5409 }
5410 
5411 static void
5412 fdilate_1_51(l_uint32 *datad,
5413  l_int32 w,
5414  l_int32 h,
5415  l_int32 wpld,
5416  l_uint32 *datas,
5417  l_int32 wpls)
5418 {
5419 l_int32 i;
5420 l_int32 j, pwpls;
5421 l_uint32 *sptr, *dptr;
5422 
5423  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
5424 
5425  for (i = 0; i < h; i++) {
5426  sptr = datas + i * wpls;
5427  dptr = datad + i * wpld;
5428  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
5429  *dptr = ((*(sptr + wpls) << 1) | (*(sptr + wpls + 1) >> 31)) |
5430  (*(sptr + wpls)) |
5431  ((*(sptr + wpls) >> 1) | (*(sptr + wpls - 1) << 31)) |
5432  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
5433  (*sptr) |
5434  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
5435  ((*(sptr - wpls) << 1) | (*(sptr - wpls + 1) >> 31)) |
5436  (*(sptr - wpls)) |
5437  ((*(sptr - wpls) >> 1) | (*(sptr - wpls - 1) << 31));
5438  }
5439  }
5440 }
5441 
5442 static void
5443 ferode_1_51(l_uint32 *datad,
5444  l_int32 w,
5445  l_int32 h,
5446  l_int32 wpld,
5447  l_uint32 *datas,
5448  l_int32 wpls)
5449 {
5450 l_int32 i;
5451 l_int32 j, pwpls;
5452 l_uint32 *sptr, *dptr;
5453 
5454  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
5455 
5456  for (i = 0; i < h; i++) {
5457  sptr = datas + i * wpls;
5458  dptr = datad + i * wpld;
5459  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
5460  *dptr = ((*(sptr - wpls) >> 1) | (*(sptr - wpls - 1) << 31)) &
5461  (*(sptr - wpls)) &
5462  ((*(sptr - wpls) << 1) | (*(sptr - wpls + 1) >> 31)) &
5463  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
5464  (*sptr) &
5465  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
5466  ((*(sptr + wpls) >> 1) | (*(sptr + wpls - 1) << 31)) &
5467  (*(sptr + wpls)) &
5468  ((*(sptr + wpls) << 1) | (*(sptr + wpls + 1) >> 31));
5469  }
5470  }
5471 }
5472 
5473 static void
5474 fdilate_1_52(l_uint32 *datad,
5475  l_int32 w,
5476  l_int32 h,
5477  l_int32 wpld,
5478  l_uint32 *datas,
5479  l_int32 wpls)
5480 {
5481 l_int32 i;
5482 l_int32 j, pwpls;
5483 l_uint32 *sptr, *dptr;
5484 l_int32 wpls2;
5485 
5486  wpls2 = 2 * wpls;
5487  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
5488 
5489  for (i = 0; i < h; i++) {
5490  sptr = datas + i * wpls;
5491  dptr = datad + i * wpld;
5492  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
5493  *dptr = ((*(sptr + wpls2) << 2) | (*(sptr + wpls2 + 1) >> 30)) |
5494  ((*(sptr + wpls2) << 1) | (*(sptr + wpls2 + 1) >> 31)) |
5495  (*(sptr + wpls2)) |
5496  ((*(sptr + wpls2) >> 1) | (*(sptr + wpls2 - 1) << 31)) |
5497  ((*(sptr + wpls) << 2) | (*(sptr + wpls + 1) >> 30)) |
5498  ((*(sptr + wpls) << 1) | (*(sptr + wpls + 1) >> 31)) |
5499  (*(sptr + wpls)) |
5500  ((*(sptr + wpls) >> 1) | (*(sptr + wpls - 1) << 31)) |
5501  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
5502  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
5503  (*sptr) |
5504  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
5505  ((*(sptr - wpls) << 2) | (*(sptr - wpls + 1) >> 30)) |
5506  ((*(sptr - wpls) << 1) | (*(sptr - wpls + 1) >> 31)) |
5507  (*(sptr - wpls)) |
5508  ((*(sptr - wpls) >> 1) | (*(sptr - wpls - 1) << 31));
5509  }
5510  }
5511 }
5512 
5513 static void
5514 ferode_1_52(l_uint32 *datad,
5515  l_int32 w,
5516  l_int32 h,
5517  l_int32 wpld,
5518  l_uint32 *datas,
5519  l_int32 wpls)
5520 {
5521 l_int32 i;
5522 l_int32 j, pwpls;
5523 l_uint32 *sptr, *dptr;
5524 l_int32 wpls2;
5525 
5526  wpls2 = 2 * wpls;
5527  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
5528 
5529  for (i = 0; i < h; i++) {
5530  sptr = datas + i * wpls;
5531  dptr = datad + i * wpld;
5532  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
5533  *dptr = ((*(sptr - wpls2) >> 2) | (*(sptr - wpls2 - 1) << 30)) &
5534  ((*(sptr - wpls2) >> 1) | (*(sptr - wpls2 - 1) << 31)) &
5535  (*(sptr - wpls2)) &
5536  ((*(sptr - wpls2) << 1) | (*(sptr - wpls2 + 1) >> 31)) &
5537  ((*(sptr - wpls) >> 2) | (*(sptr - wpls - 1) << 30)) &
5538  ((*(sptr - wpls) >> 1) | (*(sptr - wpls - 1) << 31)) &
5539  (*(sptr - wpls)) &
5540  ((*(sptr - wpls) << 1) | (*(sptr - wpls + 1) >> 31)) &
5541  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
5542  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
5543  (*sptr) &
5544  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
5545  ((*(sptr + wpls) >> 2) | (*(sptr + wpls - 1) << 30)) &
5546  ((*(sptr + wpls) >> 1) | (*(sptr + wpls - 1) << 31)) &
5547  (*(sptr + wpls)) &
5548  ((*(sptr + wpls) << 1) | (*(sptr + wpls + 1) >> 31));
5549  }
5550  }
5551 }
5552 
5553 static void
5554 fdilate_1_53(l_uint32 *datad,
5555  l_int32 w,
5556  l_int32 h,
5557  l_int32 wpld,
5558  l_uint32 *datas,
5559  l_int32 wpls)
5560 {
5561 l_int32 i;
5562 l_int32 j, pwpls;
5563 l_uint32 *sptr, *dptr;
5564 l_int32 wpls2;
5565 
5566  wpls2 = 2 * wpls;
5567  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
5568 
5569  for (i = 0; i < h; i++) {
5570  sptr = datas + i * wpls;
5571  dptr = datad + i * wpld;
5572  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
5573  *dptr = ((*(sptr + wpls2) << 2) | (*(sptr + wpls2 + 1) >> 30)) |
5574  ((*(sptr + wpls2) << 1) | (*(sptr + wpls2 + 1) >> 31)) |
5575  (*(sptr + wpls2)) |
5576  ((*(sptr + wpls2) >> 1) | (*(sptr + wpls2 - 1) << 31)) |
5577  ((*(sptr + wpls2) >> 2) | (*(sptr + wpls2 - 1) << 30)) |
5578  ((*(sptr + wpls) << 2) | (*(sptr + wpls + 1) >> 30)) |
5579  ((*(sptr + wpls) << 1) | (*(sptr + wpls + 1) >> 31)) |
5580  (*(sptr + wpls)) |
5581  ((*(sptr + wpls) >> 1) | (*(sptr + wpls - 1) << 31)) |
5582  ((*(sptr + wpls) >> 2) | (*(sptr + wpls - 1) << 30)) |
5583  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) |
5584  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) |
5585  (*sptr) |
5586  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
5587  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) |
5588  ((*(sptr - wpls) << 2) | (*(sptr - wpls + 1) >> 30)) |
5589  ((*(sptr - wpls) << 1) | (*(sptr - wpls + 1) >> 31)) |
5590  (*(sptr - wpls)) |
5591  ((*(sptr - wpls) >> 1) | (*(sptr - wpls - 1) << 31)) |
5592  ((*(sptr - wpls) >> 2) | (*(sptr - wpls - 1) << 30)) |
5593  ((*(sptr - wpls2) << 2) | (*(sptr - wpls2 + 1) >> 30)) |
5594  ((*(sptr - wpls2) << 1) | (*(sptr - wpls2 + 1) >> 31)) |
5595  (*(sptr - wpls2)) |
5596  ((*(sptr - wpls2) >> 1) | (*(sptr - wpls2 - 1) << 31)) |
5597  ((*(sptr - wpls2) >> 2) | (*(sptr - wpls2 - 1) << 30));
5598  }
5599  }
5600 }
5601 
5602 static void
5603 ferode_1_53(l_uint32 *datad,
5604  l_int32 w,
5605  l_int32 h,
5606  l_int32 wpld,
5607  l_uint32 *datas,
5608  l_int32 wpls)
5609 {
5610 l_int32 i;
5611 l_int32 j, pwpls;
5612 l_uint32 *sptr, *dptr;
5613 l_int32 wpls2;
5614 
5615  wpls2 = 2 * wpls;
5616  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
5617 
5618  for (i = 0; i < h; i++) {
5619  sptr = datas + i * wpls;
5620  dptr = datad + i * wpld;
5621  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
5622  *dptr = ((*(sptr - wpls2) >> 2) | (*(sptr - wpls2 - 1) << 30)) &
5623  ((*(sptr - wpls2) >> 1) | (*(sptr - wpls2 - 1) << 31)) &
5624  (*(sptr - wpls2)) &
5625  ((*(sptr - wpls2) << 1) | (*(sptr - wpls2 + 1) >> 31)) &
5626  ((*(sptr - wpls2) << 2) | (*(sptr - wpls2 + 1) >> 30)) &
5627  ((*(sptr - wpls) >> 2) | (*(sptr - wpls - 1) << 30)) &
5628  ((*(sptr - wpls) >> 1) | (*(sptr - wpls - 1) << 31)) &
5629  (*(sptr - wpls)) &
5630  ((*(sptr - wpls) << 1) | (*(sptr - wpls + 1) >> 31)) &
5631  ((*(sptr - wpls) << 2) | (*(sptr - wpls + 1) >> 30)) &
5632  ((*(sptr) >> 2) | (*(sptr - 1) << 30)) &
5633  ((*(sptr) >> 1) | (*(sptr - 1) << 31)) &
5634  (*sptr) &
5635  ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
5636  ((*(sptr) << 2) | (*(sptr + 1) >> 30)) &
5637  ((*(sptr + wpls) >> 2) | (*(sptr + wpls - 1) << 30)) &
5638  ((*(sptr + wpls) >> 1) | (*(sptr + wpls - 1) << 31)) &
5639  (*(sptr + wpls)) &
5640  ((*(sptr + wpls) << 1) | (*(sptr + wpls + 1) >> 31)) &
5641  ((*(sptr + wpls) << 2) | (*(sptr + wpls + 1) >> 30)) &
5642  ((*(sptr + wpls2) >> 2) | (*(sptr + wpls2 - 1) << 30)) &
5643  ((*(sptr + wpls2) >> 1) | (*(sptr + wpls2 - 1) << 31)) &
5644  (*(sptr + wpls2)) &
5645  ((*(sptr + wpls2) << 1) | (*(sptr + wpls2 + 1) >> 31)) &
5646  ((*(sptr + wpls2) << 2) | (*(sptr + wpls2 + 1) >> 30));
5647  }
5648  }
5649 }
5650 
5651 static void
5652 fdilate_1_54(l_uint32 *datad,
5653  l_int32 w,
5654  l_int32 h,
5655  l_int32 wpld,
5656  l_uint32 *datas,
5657  l_int32 wpls)
5658 {
5659 l_int32 i;
5660 l_int32 j, pwpls;
5661 l_uint32 *sptr, *dptr;
5662 
5663  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
5664 
5665  for (i = 0; i < h; i++) {
5666  sptr = datas + i * wpls;
5667  dptr = datad + i * wpld;
5668  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
5669  *dptr = ((*(sptr) >> 1) | (*(sptr - 1) << 31)) |
5670  (*(sptr - wpls));
5671  }
5672  }
5673 }
5674 
5675 static void
5676 ferode_1_54(l_uint32 *datad,
5677  l_int32 w,
5678  l_int32 h,
5679  l_int32 wpld,
5680  l_uint32 *datas,
5681  l_int32 wpls)
5682 {
5683 l_int32 i;
5684 l_int32 j, pwpls;
5685 l_uint32 *sptr, *dptr;
5686 
5687  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
5688 
5689  for (i = 0; i < h; i++) {
5690  sptr = datas + i * wpls;
5691  dptr = datad + i * wpld;
5692  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
5693  *dptr = ((*(sptr) << 1) | (*(sptr + 1) >> 31)) &
5694  (*(sptr + wpls));
5695  }
5696  }
5697 }
5698 
5699 static void
5700 fdilate_1_55(l_uint32 *datad,
5701  l_int32 w,
5702  l_int32 h,
5703  l_int32 wpld,
5704  l_uint32 *datas,
5705  l_int32 wpls)
5706 {
5707 l_int32 i;
5708 l_int32 j, pwpls;
5709 l_uint32 *sptr, *dptr;
5710 
5711  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
5712 
5713  for (i = 0; i < h; i++) {
5714  sptr = datas + i * wpls;
5715  dptr = datad + i * wpld;
5716  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
5717  *dptr = (*sptr) |
5718  ((*(sptr - wpls) >> 1) | (*(sptr - wpls - 1) << 31));
5719  }
5720  }
5721 }
5722 
5723 static void
5724 ferode_1_55(l_uint32 *datad,
5725  l_int32 w,
5726  l_int32 h,
5727  l_int32 wpld,
5728  l_uint32 *datas,
5729  l_int32 wpls)
5730 {
5731 l_int32 i;
5732 l_int32 j, pwpls;
5733 l_uint32 *sptr, *dptr;
5734 
5735  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
5736 
5737  for (i = 0; i < h; i++) {
5738  sptr = datas + i * wpls;
5739  dptr = datad + i * wpld;
5740  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
5741  *dptr = (*sptr) &
5742  ((*(sptr + wpls) << 1) | (*(sptr + wpls + 1) >> 31));
5743  }
5744  }
5745 }
5746 
5747 static void
5748 fdilate_1_56(l_uint32 *datad,
5749  l_int32 w,
5750  l_int32 h,
5751  l_int32 wpld,
5752  l_uint32 *datas,
5753  l_int32 wpls)
5754 {
5755 l_int32 i;
5756 l_int32 j, pwpls;
5757 l_uint32 *sptr, *dptr;
5758 l_int32 wpls2;
5759 
5760  wpls2 = 2 * wpls;
5761  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
5762 
5763  for (i = 0; i < h; i++) {
5764  sptr = datas + i * wpls;
5765  dptr = datad + i * wpld;
5766  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
5767  *dptr = ((*(sptr + wpls2) >> 2) | (*(sptr + wpls2 - 1) << 30)) |
5768  ((*(sptr + wpls) >> 1) | (*(sptr + wpls - 1) << 31)) |
5769  (*sptr) |
5770  ((*(sptr - wpls) << 1) | (*(sptr - wpls + 1) >> 31)) |
5771  ((*(sptr - wpls2) << 2) | (*(sptr - wpls2 + 1) >> 30));
5772  }
5773  }
5774 }
5775 
5776 static void
5777 ferode_1_56(l_uint32 *datad,
5778  l_int32 w,
5779  l_int32 h,
5780  l_int32 wpld,
5781  l_uint32 *datas,
5782  l_int32 wpls)
5783 {
5784 l_int32 i;
5785 l_int32 j, pwpls;
5786 l_uint32 *sptr, *dptr;
5787 l_int32 wpls2;
5788 
5789  wpls2 = 2 * wpls;
5790  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
5791 
5792  for (i = 0; i < h; i++) {
5793  sptr = datas + i * wpls;
5794  dptr = datad + i * wpld;
5795  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
5796  *dptr = ((*(sptr - wpls2) << 2) | (*(sptr - wpls2 + 1) >> 30)) &
5797  ((*(sptr - wpls) << 1) | (*(sptr - wpls + 1) >> 31)) &
5798  (*sptr) &
5799  ((*(sptr + wpls) >> 1) | (*(sptr + wpls - 1) << 31)) &
5800  ((*(sptr + wpls2) >> 2) | (*(sptr + wpls2 - 1) << 30));
5801  }
5802  }
5803 }
5804 
5805 static void
5806 fdilate_1_57(l_uint32 *datad,
5807  l_int32 w,
5808  l_int32 h,
5809  l_int32 wpld,
5810  l_uint32 *datas,
5811  l_int32 wpls)
5812 {
5813 l_int32 i;
5814 l_int32 j, pwpls;
5815 l_uint32 *sptr, *dptr;
5816 l_int32 wpls2;
5817 
5818  wpls2 = 2 * wpls;
5819  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
5820 
5821  for (i = 0; i < h; i++) {
5822  sptr = datas + i * wpls;
5823  dptr = datad + i * wpld;
5824  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
5825  *dptr = ((*(sptr + wpls2) << 2) | (*(sptr + wpls2 + 1) >> 30)) |
5826  ((*(sptr + wpls) << 1) | (*(sptr + wpls + 1) >> 31)) |
5827  (*sptr) |
5828  ((*(sptr - wpls) >> 1) | (*(sptr - wpls - 1) << 31)) |
5829  ((*(sptr - wpls2) >> 2) | (*(sptr - wpls2 - 1) << 30));
5830  }
5831  }
5832 }
5833 
5834 static void
5835 ferode_1_57(l_uint32 *datad,
5836  l_int32 w,
5837  l_int32 h,
5838  l_int32 wpld,
5839  l_uint32 *datas,
5840  l_int32 wpls)
5841 {
5842 l_int32 i;
5843 l_int32 j, pwpls;
5844 l_uint32 *sptr, *dptr;
5845 l_int32 wpls2;
5846 
5847  wpls2 = 2 * wpls;
5848  pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */
5849 
5850  for (i = 0; i < h; i++) {
5851  sptr = datas + i * wpls;
5852  dptr = datad + i * wpld;
5853  for (j = 0; j < pwpls; j++, sptr++, dptr++) {
5854  *dptr = ((*(sptr - wpls2) >> 2) | (*(sptr - wpls2 - 1) << 30)) &
5855  ((*(sptr - wpls) >> 1) | (*(sptr - wpls - 1) << 31)) &
5856  (*sptr) &
5857  ((*(sptr + wpls) << 1) | (*(sptr + wpls + 1) >> 31)) &
5858  ((*(sptr + wpls2) << 2) | (*(sptr + wpls2 + 1) >> 30));
5859  }
5860  }
5861 }
5862