move around - flatter.
[profile/ivi/evas.git] / src / lib / engines / common / evas_convert_rgb_16.c
1 /*
2  * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
3  */
4
5 #include "evas_common.h"
6 #include "evas_convert_rgb_16.h"
7
8 #ifndef BUILD_NO_DITHER_MASK
9 #ifdef USE_DITHER_44
10 extern const DATA8 _evas_dither_44[4][4];
11 #endif
12 #ifdef USE_DITHER_128128
13 extern const DATA8 _evas_dither_128128[128][128];
14 #endif
15 #endif
16
17 #ifdef BUILD_CONVERT_16_RGB_565
18 #ifdef BUILD_CONVERT_16_RGB_ROT0
19 void
20 evas_common_convert_rgba2_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
21 {
22    DATA32 *src_ptr;
23    DATA16 *dst_ptr;
24    int x, y;
25    DATA8 r1, g1, b1;
26    DATA8 r2, g2, b2;
27 #ifndef BUILD_NO_DITHER_MASK
28    DATA8 dith, dith2;
29 #endif
30
31    dst_ptr = (DATA16 *)dst;
32
33    CONVERT_LOOP2_START_ROT_0();
34
35    r1 = (R_VAL(src_ptr)) >> 3;
36    g1 = (G_VAL(src_ptr)) >> 2;
37    b1 = (B_VAL(src_ptr)) >> 3;
38 #ifndef BUILD_NO_DITHER_MASK
39    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
40    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
41    if (((R_VAL(src_ptr) - (r1 << 3)) >= dith ) && (r1 < 0x1f)) r1++;
42    if (((G_VAL(src_ptr) - (g1 << 2)) >= dith2) && (g1 < 0x3f)) g1++;
43    if (((B_VAL(src_ptr) - (b1 << 3)) >= dith ) && (b1 < 0x1f)) b1++;
44 #endif
45    CONVERT_LOOP2_INC_ROT_0();
46
47    r2 = (R_VAL(src_ptr)) >> 3;
48    g2 = (G_VAL(src_ptr)) >> 2;
49    b2 = (B_VAL(src_ptr)) >> 3;
50 #ifndef BUILD_NO_DITHER_MASK
51    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
52    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
53    if (((R_VAL(src_ptr) - (r2 << 3)) >= dith ) && (r2 < 0x1f)) r2++;
54    if (((G_VAL(src_ptr) - (g2 << 2)) >= dith2) && (g2 < 0x3f)) g2++;
55    if (((B_VAL(src_ptr) - (b2 << 3)) >= dith ) && (b2 < 0x1f)) b2++;
56 #endif
57
58 #ifndef WORDS_BIGENDIAN
59    *((DATA32 *)dst_ptr) =
60      (r2 << 27) | (g2 << 21) | (b2 << 16) |
61      (r1 << 11) | (g1 << 5 ) | (b1      );
62 #else
63    *((DATA32 *)dst_ptr) =
64      (r1 << 27) | (g1 << 21) | (b1 << 16) |
65      (r2 << 11) | (g2 << 5 ) | (b2      );
66 #endif
67
68    CONVERT_LOOP2_END_ROT_0();
69    return;
70    pal = 0;
71 }
72 #endif
73 #endif
74
75 #ifdef BUILD_CONVERT_16_RGB_565
76 #ifdef BUILD_CONVERT_16_RGB_ROT0
77 void
78 evas_common_convert_rgba_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
79 {
80    DATA32 *src_ptr;
81    DATA16 *dst_ptr;
82    int x, y;
83    DATA8 r, g, b;
84 #ifndef BUILD_NO_DITHER_MASK
85    DATA8 dith, dith2;
86 #endif
87
88    dst_ptr = (DATA16 *)dst;
89
90    CONVERT_LOOP_START_ROT_0();
91
92    r = (R_VAL(src_ptr)) >> 3;
93    g = (G_VAL(src_ptr)) >> 2;
94    b = (B_VAL(src_ptr)) >> 3;
95
96 #ifndef BUILD_NO_DITHER_MASK
97    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
98    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
99    if (((R_VAL(src_ptr) - (r << 3)) >= dith ) && (r < 0x1f)) r++;
100    if (((G_VAL(src_ptr) - (g << 2)) >= dith2) && (g < 0x3f)) g++;
101    if (((B_VAL(src_ptr) - (b << 3)) >= dith ) && (b < 0x1f)) b++;
102 #endif
103
104    *dst_ptr = (r << 11) | (g << 5) | (b);
105
106    CONVERT_LOOP_END_ROT_0();
107    return;
108    pal = 0;
109 }
110 #endif
111 #endif
112
113 #ifdef BUILD_CONVERT_16_RGB_565
114 #ifdef BUILD_CONVERT_16_RGB_ROT180
115 void
116 evas_common_convert_rgba2_to_16bpp_rgb_565_dith_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
117 {
118    DATA32 *src_ptr;
119    DATA16 *dst_ptr;
120    int x, y;
121    DATA8 r1, g1, b1;
122    DATA8 r2, g2, b2;
123 #ifndef BUILD_NO_DITHER_MASK
124    DATA8 dith, dith2;
125 #endif
126
127    dst_ptr = (DATA16 *)dst;
128
129    CONVERT_LOOP2_START_ROT_180();
130
131    r1 = (R_VAL(src_ptr)) >> 3;
132    g1 = (G_VAL(src_ptr)) >> 2;
133    b1 = (B_VAL(src_ptr)) >> 3;
134
135 #ifndef BUILD_NO_DITHER_MASK
136    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
137    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
138    if (((R_VAL(src_ptr) - (r1 << 3)) >= dith ) && (r1 < 0x1f)) r1++;
139    if (((G_VAL(src_ptr) - (g1 << 2)) >= dith2) && (g1 < 0x3f)) g1++;
140    if (((B_VAL(src_ptr) - (b1 << 3)) >= dith ) && (b1 < 0x1f)) b1++;
141 #endif
142
143    CONVERT_LOOP2_INC_ROT_180();
144
145    r2 = (R_VAL(src_ptr)) >> 3;
146    g2 = (G_VAL(src_ptr)) >> 2;
147    b2 = (B_VAL(src_ptr)) >> 3;
148
149 #ifndef BUILD_NO_DITHER_MASK
150    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
151    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
152    if (((R_VAL(src_ptr) - (r2 << 3)) >= dith ) && (r2 < 0x1f)) r2++;
153    if (((G_VAL(src_ptr) - (g2 << 2)) >= dith2) && (g2 < 0x3f)) g2++;
154    if (((B_VAL(src_ptr) - (b2 << 3)) >= dith ) && (b2 < 0x1f)) b2++;
155 #endif
156
157 #ifndef WORDS_BIGENDIAN
158    *((DATA32 *)dst_ptr) =
159      (r2 << 27) | (g2 << 21) | (b2 << 16) |
160      (r1 << 11) | (g1 << 5 ) | (b1      );
161 #else
162    *((DATA32 *)dst_ptr) =
163      (r1 << 27) | (g1 << 21) | (b1 << 16) |
164      (r2 << 11) | (g2 << 5 ) | (b2      );
165 #endif
166
167    CONVERT_LOOP2_END_ROT_180();
168    return;
169    pal = 0;
170 }
171 #endif
172 #endif
173
174 #ifdef BUILD_CONVERT_16_RGB_565
175 #ifdef BUILD_CONVERT_16_RGB_ROT180
176 void
177 evas_common_convert_rgba_to_16bpp_rgb_565_dith_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
178 {
179    DATA32 *src_ptr;
180    DATA16 *dst_ptr;
181    int x, y;
182    DATA8 r, g, b;
183 #ifndef BUILD_NO_DITHER_MASK
184    DATA8 dith, dith2;
185 #endif
186
187    dst_ptr = (DATA16 *)dst;
188
189    CONVERT_LOOP_START_ROT_180();
190
191    r = (R_VAL(src_ptr)) >> 3;
192    g = (G_VAL(src_ptr)) >> 2;
193    b = (B_VAL(src_ptr)) >> 3;
194
195 #ifndef BUILD_NO_DITHER_MASK
196    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
197    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
198    if (((R_VAL(src_ptr) - (r << 3)) >= dith ) && (r < 0x1f)) r++;
199    if (((G_VAL(src_ptr) - (g << 2)) >= dith2) && (g < 0x3f)) g++;
200    if (((B_VAL(src_ptr) - (b << 3)) >= dith ) && (b < 0x1f)) b++;
201 #endif
202
203    *dst_ptr = (r << 11) | (g << 5) | (b);
204
205    CONVERT_LOOP_END_ROT_180();
206    return;
207    pal = 0;
208 }
209 #endif
210 #endif
211
212 #ifdef BUILD_CONVERT_16_RGB_565
213 #ifdef BUILD_CONVERT_16_RGB_ROT270
214 void
215 evas_common_convert_rgba2_to_16bpp_rgb_565_dith_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
216 {
217    DATA32 *src_ptr;
218    DATA16 *dst_ptr;
219    int x, y;
220    DATA8 r1, g1, b1;
221    DATA8 r2, g2, b2;
222 #ifndef BUILD_NO_DITHER_MASK
223    DATA8 dith, dith2;
224 #endif
225
226    dst_ptr = (DATA16 *)dst;
227
228    CONVERT_LOOP2_START_ROT_270();
229
230    r1 = (R_VAL(src_ptr)) >> 3;
231    g1 = (G_VAL(src_ptr)) >> 2;
232    b1 = (B_VAL(src_ptr)) >> 3;
233
234 #ifndef BUILD_NO_DITHER_MASK
235    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
236    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
237    if (((R_VAL(src_ptr) - (r1 << 3)) >= dith ) && (r1 < 0x1f)) r1++;
238    if (((G_VAL(src_ptr) - (g1 << 2)) >= dith2) && (g1 < 0x3f)) g1++;
239    if (((B_VAL(src_ptr) - (b1 << 3)) >= dith ) && (b1 < 0x1f)) b1++;
240 #endif
241
242    CONVERT_LOOP2_INC_ROT_270();
243
244    r2 = (R_VAL(src_ptr)) >> 3;
245    g2 = (G_VAL(src_ptr)) >> 2;
246    b2 = (B_VAL(src_ptr)) >> 3;
247
248 #ifndef BUILD_NO_DITHER_MASK
249    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
250    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
251    if (((R_VAL(src_ptr) - (r2 << 3)) >= dith ) && (r2 < 0x1f)) r2++;
252    if (((G_VAL(src_ptr) - (g2 << 2)) >= dith2) && (g2 < 0x3f)) g2++;
253    if (((B_VAL(src_ptr) - (b2 << 3)) >= dith ) && (b2 < 0x1f)) b2++;
254 #endif
255
256 #ifndef WORDS_BIGENDIAN
257    *((DATA32 *)dst_ptr) =
258      (r2 << 27) | (g2 << 21) | (b2 << 16) |
259      (r1 << 11) | (g1 << 5 ) | (b1      );
260 #else
261    *((DATA32 *)dst_ptr) =
262      (r1 << 27) | (g1 << 21) | (b1 << 16) |
263      (r2 << 11) | (g2 << 5 ) | (b2      );
264 #endif
265
266    CONVERT_LOOP2_END_ROT_270();
267    return;
268    pal = 0;
269 }
270 #endif
271 #endif
272
273 #ifdef BUILD_CONVERT_16_RGB_565
274 #ifdef BUILD_CONVERT_16_RGB_ROT270
275 void
276 evas_common_convert_rgba_to_16bpp_rgb_565_dith_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
277 {
278    DATA32 *src_ptr;
279    DATA16 *dst_ptr;
280    int x, y;
281    DATA8 r, g, b;
282 #ifndef BUILD_NO_DITHER_MASK
283    DATA8 dith, dith2;
284 #endif
285
286    dst_ptr = (DATA16 *)dst;
287
288    CONVERT_LOOP_START_ROT_270();
289
290    r = (R_VAL(src_ptr)) >> 3;
291    g = (G_VAL(src_ptr)) >> 2;
292    b = (B_VAL(src_ptr)) >> 3;
293
294 #ifndef BUILD_NO_DITHER_MASK
295    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
296    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
297    if (((R_VAL(src_ptr) - (r << 3)) >= dith ) && (r < 0x1f)) r++;
298    if (((G_VAL(src_ptr) - (g << 2)) >= dith2) && (g < 0x3f)) g++;
299    if (((B_VAL(src_ptr) - (b << 3)) >= dith ) && (b < 0x1f)) b++;
300 #endif
301
302    *dst_ptr = (r << 11) | (g << 5) | (b);
303
304    CONVERT_LOOP_END_ROT_270();
305    return;
306    pal = 0;
307 }
308 #endif
309 #endif
310
311 #ifdef BUILD_CONVERT_16_RGB_565
312 #ifdef BUILD_CONVERT_16_RGB_ROT90
313 void
314 evas_common_convert_rgba2_to_16bpp_rgb_565_dith_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
315 {
316    DATA32 *src_ptr;
317    DATA16 *dst_ptr;
318    int x, y;
319    DATA8 r1, g1, b1;
320    DATA8 r2, g2, b2;
321 #ifndef BUILD_NO_DITHER_MASK
322    DATA8 dith, dith2;
323 #endif
324
325    dst_ptr = (DATA16 *)dst;
326
327    CONVERT_LOOP2_START_ROT_90();
328
329    r1 = (R_VAL(src_ptr)) >> 3;
330    g1 = (G_VAL(src_ptr)) >> 2;
331    b1 = (B_VAL(src_ptr)) >> 3;
332
333 #ifndef BUILD_NO_DITHER_MASK
334    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
335    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
336    if (((R_VAL(src_ptr) - (r1 << 3)) >= dith ) && (r1 < 0x1f)) r1++;
337    if (((G_VAL(src_ptr) - (g1 << 2)) >= dith2) && (g1 < 0x3f)) g1++;
338    if (((B_VAL(src_ptr) - (b1 << 3)) >= dith ) && (b1 < 0x1f)) b1++;
339 #endif
340
341    CONVERT_LOOP2_INC_ROT_90();
342
343    r2 = (R_VAL(src_ptr)) >> 3;
344    g2 = (G_VAL(src_ptr)) >> 2;
345    b2 = (B_VAL(src_ptr)) >> 3;
346
347 #ifndef BUILD_NO_DITHER_MASK
348    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
349    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
350    if (((R_VAL(src_ptr) - (r2 << 3)) >= dith ) && (r2 < 0x1f)) r2++;
351    if (((G_VAL(src_ptr) - (g2 << 2)) >= dith2) && (g2 < 0x3f)) g2++;
352    if (((B_VAL(src_ptr) - (b2 << 3)) >= dith ) && (b2 < 0x1f)) b2++;
353 #endif
354
355 #ifndef WORDS_BIGENDIAN
356    *((DATA32 *)dst_ptr) =
357      (r2 << 27) | (g2 << 21) | (b2 << 16) |
358      (r1 << 11) | (g1 << 5 ) | (b1      );
359 #else
360    *((DATA32 *)dst_ptr) =
361      (r1 << 27) | (g1 << 21) | (b1 << 16) |
362      (r2 << 11) | (g2 << 5 ) | (b2      );
363 #endif
364
365    CONVERT_LOOP2_END_ROT_90();
366    return;
367    pal = 0;
368 }
369 #endif
370 #endif
371
372 #ifdef BUILD_CONVERT_16_RGB_565
373 #ifdef BUILD_CONVERT_16_RGB_ROT90
374 void
375 evas_common_convert_rgba_to_16bpp_rgb_565_dith_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
376 {
377    DATA32 *src_ptr;
378    DATA16 *dst_ptr;
379    int x, y;
380    DATA8 r, g, b;
381 #ifndef BUILD_NO_DITHER_MASK
382    DATA8 dith, dith2;
383 #endif
384
385    dst_ptr = (DATA16 *)dst;
386
387    CONVERT_LOOP_START_ROT_90();
388
389    r = (R_VAL(src_ptr)) >> 3;
390    g = (G_VAL(src_ptr)) >> 2;
391    b = (B_VAL(src_ptr)) >> 3;
392
393 #ifndef BUILD_NO_DITHER_MASK
394    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
395    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
396    if (((R_VAL(src_ptr) - (r << 3)) >= dith ) && (r < 0x1f)) r++;
397    if (((G_VAL(src_ptr) - (g << 2)) >= dith2) && (g < 0x3f)) g++;
398    if (((B_VAL(src_ptr) - (b << 3)) >= dith ) && (b < 0x1f)) b++;
399 #endif
400
401    *dst_ptr = (r << 11) | (g << 5) | (b);
402
403    CONVERT_LOOP_END_ROT_90();
404    return;
405    pal = 0;
406 }
407 #endif
408 #endif
409
410 #ifdef BUILD_CONVERT_16_BGR_565
411 #ifdef BUILD_CONVERT_16_RGB_ROT0
412 void
413 evas_common_convert_rgba2_to_16bpp_bgr_565_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
414 {
415    DATA32 *src_ptr;
416    DATA16 *dst_ptr;
417    int x, y;
418    DATA8 r1, g1, b1;
419    DATA8 r2, g2, b2;
420 #ifndef BUILD_NO_DITHER_MASK
421    DATA8 dith, dith2;
422 #endif
423
424    dst_ptr = (DATA16 *)dst;
425
426    CONVERT_LOOP2_START_ROT_0();
427
428    r1 = (R_VAL(src_ptr)) >> 3;
429    g1 = (G_VAL(src_ptr)) >> 2;
430    b1 = (B_VAL(src_ptr)) >> 3;
431
432 #ifndef BUILD_NO_DITHER_MASK
433    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
434    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
435    if (((R_VAL(src_ptr) - (r1 << 3)) >= dith ) && (r1 < 0x1f)) r1++;
436    if (((G_VAL(src_ptr) - (g1 << 2)) >= dith2) && (g1 < 0x3f)) g1++;
437    if (((B_VAL(src_ptr) - (b1 << 3)) >= dith ) && (b1 < 0x1f)) b1++;
438 #endif
439
440    CONVERT_LOOP2_INC_ROT_0();
441
442    r2 = (R_VAL(src_ptr)) >> 3;
443    g2 = (G_VAL(src_ptr)) >> 2;
444    b2 = (B_VAL(src_ptr)) >> 3;
445
446 #ifndef BUILD_NO_DITHER_MASK
447    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
448    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
449    if (((R_VAL(src_ptr) - (r2 << 3)) >= dith ) && (r2 < 0x1f)) r2++;
450    if (((G_VAL(src_ptr) - (g2 << 2)) >= dith2) && (g2 < 0x3f)) g2++;
451    if (((B_VAL(src_ptr) - (b2 << 3)) >= dith ) && (b2 < 0x1f)) b2++;
452 #endif
453
454 #ifndef WORDS_BIGENDIAN
455    *((DATA32 *)dst_ptr) =
456      (b2 << 27) | (g2 << 21) | (r2 << 16) |
457      (b1 << 11) | (g1 << 5 ) | (r1      );
458 #else
459    *((DATA32 *)dst_ptr) =
460      (b1 << 27) | (g1 << 21) | (r1 << 16) |
461      (b2 << 11) | (g2 << 5 ) | (r2      );
462 #endif
463
464    CONVERT_LOOP2_END_ROT_0();
465    return;
466    pal = 0;
467 }
468 #endif
469 #endif
470
471 #ifdef BUILD_CONVERT_16_BGR_565
472 #ifdef BUILD_CONVERT_16_RGB_ROT0
473 void
474 evas_common_convert_rgba_to_16bpp_bgr_565_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
475 {
476    DATA32 *src_ptr;
477    DATA16 *dst_ptr;
478    int x, y;
479    DATA8 r, g, b;
480 #ifndef BUILD_NO_DITHER_MASK
481    DATA8 dith, dith2;
482 #endif
483
484    dst_ptr = (DATA16 *)dst;
485
486    CONVERT_LOOP_START_ROT_0();
487
488    r = (R_VAL(src_ptr)) >> 3;
489    g = (G_VAL(src_ptr)) >> 2;
490    b = (B_VAL(src_ptr)) >> 3;
491
492 #ifndef BUILD_NO_DITHER_MASK
493    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
494    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
495    if (((R_VAL(src_ptr) - (r << 3)) >= dith ) && (r < 0x1f)) r++;
496    if (((G_VAL(src_ptr) - (g << 2)) >= dith2) && (g < 0x3f)) g++;
497    if (((B_VAL(src_ptr) - (b << 3)) >= dith ) && (b < 0x1f)) b++;
498 #endif
499
500    *dst_ptr = (b << 11) | (g << 5) | (r);
501
502    CONVERT_LOOP_END_ROT_0();
503    return;
504    pal = 0;
505 }
506 #endif
507 #endif
508
509 #ifdef BUILD_CONVERT_16_BGR_565
510 #ifdef BUILD_CONVERT_16_RGB_ROT180
511 void
512 evas_common_convert_rgba2_to_16bpp_bgr_565_dith_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
513 {
514    DATA32 *src_ptr;
515    DATA16 *dst_ptr;
516    int x, y;
517    DATA8 r1, g1, b1;
518    DATA8 r2, g2, b2;
519 #ifndef BUILD_NO_DITHER_MASK
520    DATA8 dith, dith2;
521 #endif
522
523    dst_ptr = (DATA16 *)dst;
524
525    CONVERT_LOOP2_START_ROT_180();
526
527    r1 = (R_VAL(src_ptr)) >> 3;
528    g1 = (G_VAL(src_ptr)) >> 2;
529    b1 = (B_VAL(src_ptr)) >> 3;
530
531 #ifndef BUILD_NO_DITHER_MASK
532    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
533    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
534    if (((R_VAL(src_ptr) - (r1 << 3)) >= dith ) && (r1 < 0x1f)) r1++;
535    if (((G_VAL(src_ptr) - (g1 << 2)) >= dith2) && (g1 < 0x3f)) g1++;
536    if (((B_VAL(src_ptr) - (b1 << 3)) >= dith ) && (b1 < 0x1f)) b1++;
537 #endif
538
539    CONVERT_LOOP2_INC_ROT_180();
540
541    r2 = (R_VAL(src_ptr)) >> 3;
542    g2 = (G_VAL(src_ptr)) >> 2;
543    b2 = (B_VAL(src_ptr)) >> 3;
544
545 #ifndef BUILD_NO_DITHER_MASK
546    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
547    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
548    if (((R_VAL(src_ptr) - (r2 << 3)) >= dith ) && (r2 < 0x1f)) r2++;
549    if (((G_VAL(src_ptr) - (g2 << 2)) >= dith2) && (g2 < 0x3f)) g2++;
550    if (((B_VAL(src_ptr) - (b2 << 3)) >= dith ) && (b2 < 0x1f)) b2++;
551 #endif
552
553 #ifndef WORDS_BIGENDIAN
554    *((DATA32 *)dst_ptr) =
555      (b2 << 27) | (g2 << 21) | (r2 << 16) |
556      (b1 << 11) | (g1 << 5 ) | (r1      );
557 #else
558    *((DATA32 *)dst_ptr) =
559      (b1 << 27) | (g1 << 21) | (r1 << 16) |
560      (b2 << 11) | (g2 << 5 ) | (r2      );
561 #endif
562
563    CONVERT_LOOP2_END_ROT_180();
564    return;
565    pal = 0;
566 }
567 #endif
568 #endif
569
570 #ifdef BUILD_CONVERT_16_BGR_565
571 #ifdef BUILD_CONVERT_16_RGB_ROT180
572 void
573 evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
574 {
575    DATA32 *src_ptr;
576    DATA16 *dst_ptr;
577    int x, y;
578    DATA8 r, g, b;
579 #ifndef BUILD_NO_DITHER_MASK
580    DATA8 dith, dith2;
581 #endif
582
583    dst_ptr = (DATA16 *)dst;
584
585    fprintf(stderr, "evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_180\n");
586
587    CONVERT_LOOP_START_ROT_180();
588
589    r = (R_VAL(src_ptr)) >> 3;
590    g = (G_VAL(src_ptr)) >> 2;
591    b = (B_VAL(src_ptr)) >> 3;
592
593 #ifndef BUILD_NO_DITHER_MASK
594    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
595    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
596    if (((R_VAL(src_ptr) - (r << 3)) >= dith ) && (r < 0x1f)) r++;
597    if (((G_VAL(src_ptr) - (g << 2)) >= dith2) && (g < 0x3f)) g++;
598    if (((B_VAL(src_ptr) - (b << 3)) >= dith ) && (b < 0x1f)) b++;
599 #endif
600
601    *dst_ptr = (b << 11) | (g << 5) | (r);
602
603    CONVERT_LOOP_END_ROT_180();
604    return;
605    pal = 0;
606 }
607 #endif
608 #endif
609
610 #ifdef BUILD_CONVERT_16_BGR_565
611 #ifdef BUILD_CONVERT_16_RGB_ROT270
612 void
613 evas_common_convert_rgba2_to_16bpp_bgr_565_dith_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
614 {
615    DATA32 *src_ptr;
616    DATA16 *dst_ptr;
617    int x, y;
618    DATA8 r1, g1, b1;
619    DATA8 r2, g2, b2;
620 #ifndef BUILD_NO_DITHER_MASK
621    DATA8 dith, dith2;
622 #endif
623
624    dst_ptr = (DATA16 *)dst;
625
626    CONVERT_LOOP2_START_ROT_270();
627
628    r1 = (R_VAL(src_ptr)) >> 3;
629    g1 = (G_VAL(src_ptr)) >> 2;
630    b1 = (B_VAL(src_ptr)) >> 3;
631
632 #ifndef BUILD_NO_DITHER_MASK
633    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
634    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
635    if (((R_VAL(src_ptr) - (r1 << 3)) >= dith ) && (r1 < 0x1f)) r1++;
636    if (((G_VAL(src_ptr) - (g1 << 2)) >= dith2) && (g1 < 0x3f)) g1++;
637    if (((B_VAL(src_ptr) - (b1 << 3)) >= dith ) && (b1 < 0x1f)) b1++;
638 #endif
639
640    CONVERT_LOOP2_INC_ROT_270();
641
642    r2 = (R_VAL(src_ptr)) >> 3;
643    g2 = (G_VAL(src_ptr)) >> 2;
644    b2 = (B_VAL(src_ptr)) >> 3;
645
646 #ifndef BUILD_NO_DITHER_MASK
647    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
648    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
649    if (((R_VAL(src_ptr) - (r2 << 3)) >= dith ) && (r2 < 0x1f)) r2++;
650    if (((G_VAL(src_ptr) - (g2 << 2)) >= dith2) && (g2 < 0x3f)) g2++;
651    if (((B_VAL(src_ptr) - (b2 << 3)) >= dith ) && (b2 < 0x1f)) b2++;
652 #endif
653
654 #ifndef WORDS_BIGENDIAN
655    *((DATA32 *)dst_ptr) =
656      (b2 << 27) | (g2 << 21) | (r2 << 16) |
657      (b1 << 11) | (g1 << 5 ) | (r1      );
658 #else
659    *((DATA32 *)dst_ptr) =
660      (b1 << 27) | (g1 << 21) | (r1 << 16) |
661      (b2 << 11) | (g2 << 5 ) | (r2      );
662 #endif
663
664    CONVERT_LOOP2_END_ROT_270();
665    return;
666    pal = 0;
667 }
668 #endif
669 #endif
670
671 #ifdef BUILD_CONVERT_16_BGR_565
672 #ifdef BUILD_CONVERT_16_RGB_ROT270
673 void
674 evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
675 {
676    DATA32 *src_ptr;
677    DATA16 *dst_ptr;
678    int x, y;
679    DATA8 r, g, b;
680 #ifndef BUILD_NO_DITHER_MASK
681    DATA8 dith, dith2;
682 #endif
683
684    dst_ptr = (DATA16 *)dst;
685
686    CONVERT_LOOP_START_ROT_270();
687
688    r = (R_VAL(src_ptr)) >> 3;
689    g = (G_VAL(src_ptr)) >> 2;
690    b = (B_VAL(src_ptr)) >> 3;
691
692 #ifndef BUILD_NO_DITHER_MASK
693    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
694    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
695    if (((R_VAL(src_ptr) - (r << 3)) >= dith ) && (r < 0x1f)) r++;
696    if (((G_VAL(src_ptr) - (g << 2)) >= dith2) && (g < 0x3f)) g++;
697    if (((B_VAL(src_ptr) - (b << 3)) >= dith ) && (b < 0x1f)) b++;
698 #endif
699
700    *dst_ptr = (b << 11) | (g << 5) | (r);
701
702    CONVERT_LOOP_END_ROT_270();
703    return;
704    pal = 0;
705 }
706 #endif
707 #endif
708
709 #ifdef BUILD_CONVERT_16_BGR_565
710 #ifdef BUILD_CONVERT_16_RGB_ROT90
711 void
712 evas_common_convert_rgba2_to_16bpp_bgr_565_dith_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
713 {
714    DATA32 *src_ptr;
715    DATA16 *dst_ptr;
716    int x, y;
717    DATA8 r1, g1, b1;
718    DATA8 r2, g2, b2;
719 #ifndef BUILD_NO_DITHER_MASK
720    DATA8 dith, dith2;
721 #endif
722
723    dst_ptr = (DATA16 *)dst;
724
725    CONVERT_LOOP2_START_ROT_90();
726
727    r1 = (R_VAL(src_ptr)) >> 3;
728    g1 = (G_VAL(src_ptr)) >> 2;
729    b1 = (B_VAL(src_ptr)) >> 3;
730
731 #ifndef BUILD_NO_DITHER_MASK
732    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
733    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
734    if (((R_VAL(src_ptr) - (r1 << 3)) >= dith ) && (r1 < 0x1f)) r1++;
735    if (((G_VAL(src_ptr) - (g1 << 2)) >= dith2) && (g1 < 0x3f)) g1++;
736    if (((B_VAL(src_ptr) - (b1 << 3)) >= dith ) && (b1 < 0x1f)) b1++;
737 #endif
738
739    CONVERT_LOOP2_INC_ROT_90();
740
741    r2 = (R_VAL(src_ptr)) >> 3;
742    g2 = (G_VAL(src_ptr)) >> 2;
743    b2 = (B_VAL(src_ptr)) >> 3;
744
745 #ifndef BUILD_NO_DITHER_MASK
746    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
747    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
748    if (((R_VAL(src_ptr) - (r2 << 3)) >= dith ) && (r2 < 0x1f)) r2++;
749    if (((G_VAL(src_ptr) - (g2 << 2)) >= dith2) && (g2 < 0x3f)) g2++;
750    if (((B_VAL(src_ptr) - (b2 << 3)) >= dith ) && (b2 < 0x1f)) b2++;
751 #endif
752
753 #ifndef WORDS_BIGENDIAN
754    *((DATA32 *)dst_ptr) =
755      (b2 << 27) | (g2 << 21) | (r2 << 16) |
756      (b1 << 11) | (g1 << 5 ) | (r1      );
757 #else
758    *((DATA32 *)dst_ptr) =
759      (b1 << 27) | (g1 << 21) | (r1 << 16) |
760      (b2 << 11) | (g2 << 5 ) | (r2      );
761 #endif
762
763    CONVERT_LOOP2_END_ROT_90();
764    return;
765    pal = 0;
766 }
767 #endif
768 #endif
769
770 #ifdef BUILD_CONVERT_16_BGR_565
771 #ifdef BUILD_CONVERT_16_RGB_ROT90
772 void
773 evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
774 {
775    DATA32 *src_ptr;
776    DATA16 *dst_ptr;
777    int x, y;
778    DATA8 r, g, b;
779 #ifndef BUILD_NO_DITHER_MASK
780    DATA8 dith, dith2;
781 #endif
782
783    dst_ptr = (DATA16 *)dst;
784
785    CONVERT_LOOP_START_ROT_90();
786
787    r = (R_VAL(src_ptr)) >> 3;
788    g = (G_VAL(src_ptr)) >> 2;
789    b = (B_VAL(src_ptr)) >> 3;
790
791 #ifndef BUILD_NO_DITHER_MASK
792    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
793    dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
794    if (((R_VAL(src_ptr) - (r << 3)) >= dith ) && (r < 0x1f)) r++;
795    if (((G_VAL(src_ptr) - (g << 2)) >= dith2) && (g < 0x3f)) g++;
796    if (((B_VAL(src_ptr) - (b << 3)) >= dith ) && (b < 0x1f)) b++;
797 #endif
798
799    *dst_ptr = (b << 11) | (g << 5) | (r);
800
801    CONVERT_LOOP_END_ROT_90();
802    return;
803    pal = 0;
804 }
805 #endif
806 #endif
807
808 #ifdef BUILD_CONVERT_16_RGB_444
809 #ifdef BUILD_CONVERT_16_RGB_ROT0
810 void
811 evas_common_convert_rgba2_to_16bpp_rgb_444_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
812 {
813    DATA32 *src_ptr;
814    DATA16 *dst_ptr;
815    int x, y;
816    DATA8 r1, g1, b1;
817    DATA8 r2, g2, b2;
818 #ifndef BUILD_NO_DITHER_MASK
819    DATA8 dith;
820 #endif
821
822    dst_ptr = (DATA16 *)dst;
823
824    CONVERT_LOOP2_START_ROT_0();
825
826    r1 = (R_VAL(src_ptr)) >> 4;
827    g1 = (G_VAL(src_ptr)) >> 4;
828    b1 = (B_VAL(src_ptr)) >> 4;
829
830 #ifndef BUILD_NO_DITHER_MASK
831    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
832    if (((R_VAL(src_ptr) - (r1 << 4)) >= dith ) && (r1 < 0x0f)) r1++;
833    if (((G_VAL(src_ptr) - (g1 << 4)) >= dith ) && (g1 < 0x0f)) g1++;
834    if (((B_VAL(src_ptr) - (b1 << 4)) >= dith ) && (b1 < 0x0f)) b1++;
835 #endif
836
837    CONVERT_LOOP2_INC_ROT_0();
838
839    r2 = (R_VAL(src_ptr)) >> 4;
840    g2 = (G_VAL(src_ptr)) >> 4;
841    b2 = (B_VAL(src_ptr)) >> 4;
842
843 #ifndef BUILD_NO_DITHER_MASK
844    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
845    if (((R_VAL(src_ptr) - (r2 << 4)) >= dith ) && (r2 < 0x0f)) r2++;
846    if (((G_VAL(src_ptr) - (g2 << 4)) >= dith ) && (g2 < 0x0f)) g2++;
847    if (((B_VAL(src_ptr) - (b2 << 4)) >= dith ) && (b2 < 0x0f)) b2++;
848 #endif
849
850 #ifndef WORDS_BIGENDIAN
851    *((DATA32 *)dst_ptr) =
852      (r2 << 24) | (g2 << 20) | (b2 << 16) |
853      (r1 << 8 ) | (g1 << 4 ) | (b1      );
854 #else
855    *((DATA32 *)dst_ptr) =
856      (r1 << 24) | (g1 << 20) | (b1 << 16) |
857      (r2 << 8 ) | (g2 << 4 ) | (b2      );
858 #endif
859
860    CONVERT_LOOP2_END_ROT_0();
861    return;
862    pal = 0;
863 }
864 #endif
865 #endif
866
867 #ifdef BUILD_CONVERT_16_RGB_444
868 #ifdef BUILD_CONVERT_16_RGB_ROT0
869 void
870 evas_common_convert_rgba_to_16bpp_rgb_444_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
871 {
872    DATA32 *src_ptr;
873    DATA16 *dst_ptr;
874    int x, y;
875    DATA8 r, g, b;
876 #ifndef BUILD_NO_DITHER_MASK
877    DATA8 dith;
878 #endif
879
880    dst_ptr = (DATA16 *)dst;
881
882    CONVERT_LOOP_START_ROT_0();
883
884    r = (R_VAL(src_ptr)) >> 4;
885    g = (G_VAL(src_ptr)) >> 4;
886    b = (B_VAL(src_ptr)) >> 4;
887
888 #ifndef BUILD_NO_DITHER_MASK
889    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
890    if (((R_VAL(src_ptr) - (r << 4)) >= dith ) && (r < 0x0f)) r++;
891    if (((G_VAL(src_ptr) - (g << 4)) >= dith ) && (g < 0x0f)) g++;
892    if (((B_VAL(src_ptr) - (b << 4)) >= dith ) && (b < 0x0f)) b++;
893 #endif
894
895    *dst_ptr = (r << 8) | (g << 4) | (b);
896
897    CONVERT_LOOP_END_ROT_0();
898    return;
899    pal = 0;
900 }
901 #endif
902 #endif
903
904 #ifdef BUILD_CONVERT_16_RGB_444
905 #ifdef BUILD_CONVERT_16_RGB_ROT180
906 void
907 evas_common_convert_rgba2_to_16bpp_rgb_444_dith_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
908 {
909    DATA32 *src_ptr;
910    DATA16 *dst_ptr;
911    int x, y;
912    DATA8 r1, g1, b1;
913    DATA8 r2, g2, b2;
914 #ifndef BUILD_NO_DITHER_MASK
915    DATA8 dith;
916 #endif
917
918    dst_ptr = (DATA16 *)dst;
919
920    CONVERT_LOOP2_START_ROT_180();
921
922    r1 = (R_VAL(src_ptr)) >> 4;
923    g1 = (G_VAL(src_ptr)) >> 4;
924    b1 = (B_VAL(src_ptr)) >> 4;
925
926 #ifndef BUILD_NO_DITHER_MASK
927    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
928    if (((R_VAL(src_ptr) - (r1 << 4)) >= dith ) && (r1 < 0x0f)) r1++;
929    if (((G_VAL(src_ptr) - (g1 << 4)) >= dith ) && (g1 < 0x0f)) g1++;
930    if (((B_VAL(src_ptr) - (b1 << 4)) >= dith ) && (b1 < 0x0f)) b1++;
931 #endif
932
933    CONVERT_LOOP2_INC_ROT_180();
934
935    r2 = (R_VAL(src_ptr)) >> 4;
936    g2 = (G_VAL(src_ptr)) >> 4;
937    b2 = (B_VAL(src_ptr)) >> 4;
938
939 #ifndef BUILD_NO_DITHER_MASK
940    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
941    if (((R_VAL(src_ptr) - (r2 << 4)) >= dith ) && (r2 < 0x0f)) r2++;
942    if (((G_VAL(src_ptr) - (g2 << 4)) >= dith ) && (g2 < 0x0f)) g2++;
943    if (((B_VAL(src_ptr) - (b2 << 4)) >= dith ) && (b2 < 0x0f)) b2++;
944 #endif
945
946 #ifndef WORDS_BIGENDIAN
947    *((DATA32 *)dst_ptr) =
948      (r2 << 24) | (g2 << 20) | (b2 << 16) |
949      (r1 << 8 ) | (g1 << 4 ) | (b1      );
950 #else
951    *((DATA32 *)dst_ptr) =
952      (r1 << 24) | (g1 << 20) | (b1 << 16) |
953      (r2 << 8 ) | (g2 << 4 ) | (b2      );
954 #endif
955
956    CONVERT_LOOP2_END_ROT_180();
957    return;
958    pal = 0;
959 }
960 #endif
961 #endif
962
963 #ifdef BUILD_CONVERT_16_RGB_444
964 #ifdef BUILD_CONVERT_16_RGB_ROT180
965 void
966 evas_common_convert_rgba_to_16bpp_rgb_444_dith_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
967 {
968    DATA32 *src_ptr;
969    DATA16 *dst_ptr;
970    int x, y;
971    DATA8 r, g, b;
972 #ifndef BUILD_NO_DITHER_MASK
973    DATA8 dith;
974 #endif
975
976    dst_ptr = (DATA16 *)dst;
977
978    CONVERT_LOOP_START_ROT_180();
979
980    r = (R_VAL(src_ptr)) >> 4;
981    g = (G_VAL(src_ptr)) >> 4;
982    b = (B_VAL(src_ptr)) >> 4;
983
984 #ifndef BUILD_NO_DITHER_MASK
985    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
986    if (((R_VAL(src_ptr) - (r << 4)) >= dith ) && (r < 0x0f)) r++;
987    if (((G_VAL(src_ptr) - (g << 4)) >= dith ) && (g < 0x0f)) g++;
988    if (((B_VAL(src_ptr) - (b << 4)) >= dith ) && (b < 0x0f)) b++;
989 #endif
990
991    *dst_ptr = (r << 8) | (g << 4) | (b);
992
993    CONVERT_LOOP_END_ROT_180();
994    return;
995    pal = 0;
996 }
997 #endif
998 #endif
999
1000 #ifdef BUILD_CONVERT_16_RGB_444
1001 #ifdef BUILD_CONVERT_16_RGB_ROT270
1002 void
1003 evas_common_convert_rgba2_to_16bpp_rgb_444_dith_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
1004 {
1005    DATA32 *src_ptr;
1006    DATA16 *dst_ptr;
1007    int x, y;
1008    DATA8 r1, g1, b1;
1009    DATA8 r2, g2, b2;
1010 #ifndef BUILD_NO_DITHER_MASK
1011    DATA8 dith;
1012 #endif
1013
1014    dst_ptr = (DATA16 *)dst;
1015
1016    CONVERT_LOOP2_START_ROT_270();
1017
1018    r1 = (R_VAL(src_ptr)) >> 4;
1019    g1 = (G_VAL(src_ptr)) >> 4;
1020    b1 = (B_VAL(src_ptr)) >> 4;
1021
1022 #ifndef BUILD_NO_DITHER_MASK
1023    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
1024    if (((R_VAL(src_ptr) - (r1 << 4)) >= dith ) && (r1 < 0x0f)) r1++;
1025    if (((G_VAL(src_ptr) - (g1 << 4)) >= dith ) && (g1 < 0x0f)) g1++;
1026    if (((B_VAL(src_ptr) - (b1 << 4)) >= dith ) && (b1 < 0x0f)) b1++;
1027 #endif
1028
1029    CONVERT_LOOP2_INC_ROT_270();
1030
1031    r2 = (R_VAL(src_ptr)) >> 4;
1032    g2 = (G_VAL(src_ptr)) >> 4;
1033    b2 = (B_VAL(src_ptr)) >> 4;
1034
1035 #ifndef BUILD_NO_DITHER_MASK
1036    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
1037    if (((R_VAL(src_ptr) - (r2 << 4)) >= dith ) && (r2 < 0x0f)) r2++;
1038    if (((G_VAL(src_ptr) - (g2 << 4)) >= dith ) && (g2 < 0x0f)) g2++;
1039    if (((B_VAL(src_ptr) - (b2 << 4)) >= dith ) && (b2 < 0x0f)) b2++;
1040 #endif
1041
1042 #ifndef WORDS_BIGENDIAN
1043    *((DATA32 *)dst_ptr) =
1044      (r2 << 24) | (g2 << 20) | (b2 << 16) |
1045      (r1 << 8 ) | (g1 << 4 ) | (b1      );
1046 #else
1047    *((DATA32 *)dst_ptr) =
1048      (r1 << 24) | (g1 << 20) | (b1 << 16) |
1049      (r2 << 8 ) | (g2 << 4 ) | (b2      );
1050 #endif
1051
1052    CONVERT_LOOP2_END_ROT_270();
1053    return;
1054    pal = 0;
1055 }
1056 #endif
1057 #endif
1058
1059 #ifdef BUILD_CONVERT_16_RGB_444
1060 #ifdef BUILD_CONVERT_16_RGB_ROT270
1061 void
1062 evas_common_convert_rgba_to_16bpp_rgb_444_dith_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
1063 {
1064    DATA32 *src_ptr;
1065    DATA16 *dst_ptr;
1066    int x, y;
1067    DATA8 r, g, b;
1068 #ifndef BUILD_NO_DITHER_MASK
1069    DATA8 dith;
1070 #endif
1071
1072    dst_ptr = (DATA16 *)dst;
1073
1074    CONVERT_LOOP_START_ROT_270();
1075
1076    r = (R_VAL(src_ptr)) >> 4;
1077    g = (G_VAL(src_ptr)) >> 4;
1078    b = (B_VAL(src_ptr)) >> 4;
1079
1080 #ifndef BUILD_NO_DITHER_MASK
1081    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
1082    if (((R_VAL(src_ptr) - (r << 4)) >= dith ) && (r < 0x0f)) r++;
1083    if (((G_VAL(src_ptr) - (g << 4)) >= dith ) && (g < 0x0f)) g++;
1084    if (((B_VAL(src_ptr) - (b << 4)) >= dith ) && (b < 0x0f)) b++;
1085 #endif
1086
1087    *dst_ptr = (r << 8) | (g << 4) | (b);
1088
1089    CONVERT_LOOP_END_ROT_270();
1090    return;
1091    pal = 0;
1092 }
1093 #endif
1094 #endif
1095
1096 #ifdef BUILD_CONVERT_16_RGB_444
1097 #ifdef BUILD_CONVERT_16_RGB_ROT90
1098 void
1099 evas_common_convert_rgba2_to_16bpp_rgb_444_dith_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
1100 {
1101    DATA32 *src_ptr;
1102    DATA16 *dst_ptr;
1103    int x, y;
1104    DATA8 r1, g1, b1;
1105    DATA8 r2, g2, b2;
1106 #ifndef BUILD_NO_DITHER_MASK
1107    DATA8 dith;
1108 #endif
1109
1110    dst_ptr = (DATA16 *)dst;
1111
1112    CONVERT_LOOP2_START_ROT_90();
1113
1114    r1 = (R_VAL(src_ptr)) >> 4;
1115    g1 = (G_VAL(src_ptr)) >> 4;
1116    b1 = (B_VAL(src_ptr)) >> 4;
1117
1118 #ifndef BUILD_NO_DITHER_MASK
1119    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
1120    if (((R_VAL(src_ptr) - (r1 << 4)) >= dith ) && (r1 < 0x0f)) r1++;
1121    if (((G_VAL(src_ptr) - (g1 << 4)) >= dith ) && (g1 < 0x0f)) g1++;
1122    if (((B_VAL(src_ptr) - (b1 << 4)) >= dith ) && (b1 < 0x0f)) b1++;
1123 #endif
1124
1125    CONVERT_LOOP2_INC_ROT_90();
1126
1127    r2 = (R_VAL(src_ptr)) >> 4;
1128    g2 = (G_VAL(src_ptr)) >> 4;
1129    b2 = (B_VAL(src_ptr)) >> 4;
1130
1131 #ifndef BUILD_NO_DITHER_MASK
1132    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
1133    if (((R_VAL(src_ptr) - (r2 << 4)) >= dith ) && (r2 < 0x0f)) r2++;
1134    if (((G_VAL(src_ptr) - (g2 << 4)) >= dith ) && (g2 < 0x0f)) g2++;
1135    if (((B_VAL(src_ptr) - (b2 << 4)) >= dith ) && (b2 < 0x0f)) b2++;
1136 #endif
1137
1138 #ifndef WORDS_BIGENDIAN
1139    *((DATA32 *)dst_ptr) =
1140      (r2 << 24) | (g2 << 20) | (b2 << 16) |
1141      (r1 << 8 ) | (g1 << 4 ) | (b1      );
1142 #else
1143    *((DATA32 *)dst_ptr) =
1144      (r1 << 24) | (g1 << 20) | (b1 << 16) |
1145      (r2 << 8 ) | (g2 << 4 ) | (b2      );
1146 #endif
1147
1148    CONVERT_LOOP2_END_ROT_90();
1149    return;
1150    pal = 0;
1151 }
1152 #endif
1153 #endif
1154
1155 #ifdef BUILD_CONVERT_16_RGB_444
1156 #ifdef BUILD_CONVERT_16_RGB_ROT90
1157 void
1158 evas_common_convert_rgba_to_16bpp_rgb_444_dith_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
1159 {
1160    DATA32 *src_ptr;
1161    DATA16 *dst_ptr;
1162    int x, y;
1163    DATA8 r, g, b;
1164 #ifndef BUILD_NO_DITHER_MASK
1165    DATA8 dith;
1166 #endif
1167
1168    dst_ptr = (DATA16 *)dst;
1169
1170    CONVERT_LOOP_START_ROT_90();
1171
1172    r = (R_VAL(src_ptr)) >> 4;
1173    g = (G_VAL(src_ptr)) >> 4;
1174    b = (B_VAL(src_ptr)) >> 4;
1175
1176 #ifndef BUILD_NO_DITHER_MASK
1177    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
1178    if (((R_VAL(src_ptr) - (r << 4)) >= dith ) && (r < 0x0f)) r++;
1179    if (((G_VAL(src_ptr) - (g << 4)) >= dith ) && (g < 0x0f)) g++;
1180    if (((B_VAL(src_ptr) - (b << 4)) >= dith ) && (b < 0x0f)) b++;
1181 #endif
1182
1183    *dst_ptr = (r << 8) | (g << 4) | (b);
1184
1185    CONVERT_LOOP_END_ROT_90();
1186    return;
1187    pal = 0;
1188 }
1189 #endif
1190 #endif
1191
1192 #ifdef BUILD_CONVERT_16_RGB_454645
1193 #ifdef BUILD_CONVERT_16_RGB_ROT0
1194 void
1195 evas_common_convert_rgba2_to_16bpp_rgb_454645_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
1196 {
1197    DATA32 *src_ptr;
1198    DATA16 *dst_ptr;
1199    int x, y;
1200    DATA8 r1, g1, b1;
1201    DATA8 r2, g2, b2;
1202 #ifndef BUILD_NO_DITHER_MASK
1203    DATA8 dith;
1204 #endif
1205
1206    dst_ptr = (DATA16 *)dst;
1207
1208    CONVERT_LOOP2_START_ROT_0();
1209
1210    r1 = (R_VAL(src_ptr)) >> 4;
1211    g1 = (G_VAL(src_ptr)) >> 4;
1212    b1 = (B_VAL(src_ptr)) >> 4;
1213
1214 #ifndef BUILD_NO_DITHER_MASK
1215    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
1216    if (((R_VAL(src_ptr) - (r1 << 4)) >= dith ) && (r1 < 0x0f)) r1++;
1217    if (((G_VAL(src_ptr) - (g1 << 4)) >= dith ) && (g1 < 0x0f)) g1++;
1218    if (((B_VAL(src_ptr) - (b1 << 4)) >= dith ) && (b1 < 0x0f)) b1++;
1219 #endif
1220
1221    CONVERT_LOOP2_INC_ROT_0();
1222
1223    r2 = (R_VAL(src_ptr)) >> 4;
1224    g2 = (G_VAL(src_ptr)) >> 4;
1225    b2 = (B_VAL(src_ptr)) >> 4;
1226
1227 #ifndef BUILD_NO_DITHER_MASK
1228    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
1229    if (((R_VAL(src_ptr) - (r2 << 4)) >= dith ) && (r2 < 0x0f)) r2++;
1230    if (((G_VAL(src_ptr) - (g2 << 4)) >= dith ) && (g2 < 0x0f)) g2++;
1231    if (((B_VAL(src_ptr) - (b2 << 4)) >= dith ) && (b2 < 0x0f)) b2++;
1232 #endif
1233
1234 #ifndef WORDS_BIGENDIAN
1235    *((DATA32 *)dst_ptr) =
1236      (r2 << 28) | (g2 << 23) | (b2 << 17) |
1237      (r1 << 12) | (g1 << 7 ) | (b1 << 1 );
1238 #else
1239    *((DATA32 *)dst_ptr) =
1240      (r1 << 28) | (g1 << 23) | (b1 << 17) |
1241      (r2 << 12) | (g2 << 7 ) | (b2 << 1 );
1242 #endif
1243
1244    CONVERT_LOOP2_END_ROT_0();
1245    return;
1246    pal = 0;
1247 }
1248 #endif
1249 #endif
1250
1251 #ifdef BUILD_CONVERT_16_RGB_454645
1252 #ifdef BUILD_CONVERT_16_RGB_ROT0
1253 void
1254 evas_common_convert_rgba_to_16bpp_rgb_454645_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
1255 {
1256    DATA32 *src_ptr;
1257    DATA16 *dst_ptr;
1258    int x, y;
1259    DATA8 r, g, b;
1260 #ifndef BUILD_NO_DITHER_MASK
1261    DATA8 dith;
1262 #endif
1263
1264    dst_ptr = (DATA16 *)dst;
1265
1266    CONVERT_LOOP_START_ROT_0();
1267
1268    r = (R_VAL(src_ptr)) >> 4;
1269    g = (G_VAL(src_ptr)) >> 4;
1270    b = (B_VAL(src_ptr)) >> 4;
1271
1272 #ifndef BUILD_NO_DITHER_MASK
1273    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
1274    if (((R_VAL(src_ptr) - (r << 4)) >= dith ) && (r < 0x0f)) r++;
1275    if (((G_VAL(src_ptr) - (g << 4)) >= dith ) && (g < 0x0f)) g++;
1276    if (((B_VAL(src_ptr) - (b << 4)) >= dith ) && (b < 0x0f)) b++;
1277 #endif
1278
1279    *dst_ptr = (r << 12) | (g << 7) | (b << 1);
1280
1281    CONVERT_LOOP_END_ROT_0();
1282    return;
1283    pal = 0;
1284 }
1285 #endif
1286 #endif
1287
1288 #ifdef BUILD_CONVERT_16_RGB_454645
1289 #ifdef BUILD_CONVERT_16_RGB_ROT180
1290 void
1291 evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
1292 {
1293    DATA32 *src_ptr;
1294    DATA16 *dst_ptr;
1295    int x, y;
1296    DATA8 r1, g1, b1;
1297    DATA8 r2, g2, b2;
1298 #ifndef BUILD_NO_DITHER_MASK
1299    DATA8 dith;
1300 #endif
1301
1302    dst_ptr = (DATA16 *)dst;
1303
1304    CONVERT_LOOP2_START_ROT_180();
1305
1306    r1 = (R_VAL(src_ptr)) >> 4;
1307    g1 = (G_VAL(src_ptr)) >> 4;
1308    b1 = (B_VAL(src_ptr)) >> 4;
1309
1310 #ifndef BUILD_NO_DITHER_MASK
1311    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
1312    if (((R_VAL(src_ptr) - (r1 << 4)) >= dith ) && (r1 < 0x0f)) r1++;
1313    if (((G_VAL(src_ptr) - (g1 << 4)) >= dith ) && (g1 < 0x0f)) g1++;
1314    if (((B_VAL(src_ptr) - (b1 << 4)) >= dith ) && (b1 < 0x0f)) b1++;
1315 #endif
1316
1317    CONVERT_LOOP2_INC_ROT_180();
1318
1319    r2 = (R_VAL(src_ptr)) >> 4;
1320    g2 = (G_VAL(src_ptr)) >> 4;
1321    b2 = (B_VAL(src_ptr)) >> 4;
1322
1323 #ifndef BUILD_NO_DITHER_MASK
1324    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
1325    if (((R_VAL(src_ptr) - (r2 << 4)) >= dith ) && (r2 < 0x0f)) r2++;
1326    if (((G_VAL(src_ptr) - (g2 << 4)) >= dith ) && (g2 < 0x0f)) g2++;
1327    if (((B_VAL(src_ptr) - (b2 << 4)) >= dith ) && (b2 < 0x0f)) b2++;
1328 #endif
1329
1330 #ifndef WORDS_BIGENDIAN
1331    *((DATA32 *)dst_ptr) =
1332      (r2 << 28) | (g2 << 23) | (b2 << 17) |
1333      (r1 << 12) | (g1 << 7 ) | (b1 << 1 );
1334 #else
1335    *((DATA32 *)dst_ptr) =
1336      (r1 << 28) | (g1 << 23) | (b1 << 17) |
1337      (r2 << 12) | (g2 << 7 ) | (b2 << 1 );
1338 #endif
1339
1340    CONVERT_LOOP2_END_ROT_180();
1341    return;
1342    pal = 0;
1343 }
1344 #endif
1345 #endif
1346
1347 #ifdef BUILD_CONVERT_16_RGB_454645
1348 #ifdef BUILD_CONVERT_16_RGB_ROT180
1349 void
1350 evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
1351 {
1352    DATA32 *src_ptr;
1353    DATA16 *dst_ptr;
1354    int x, y;
1355    DATA8 r, g, b;
1356 #ifndef BUILD_NO_DITHER_MASK
1357    DATA8 dith;
1358 #endif
1359
1360    dst_ptr = (DATA16 *)dst;
1361
1362    CONVERT_LOOP_START_ROT_180();
1363
1364    r = (R_VAL(src_ptr)) >> 4;
1365    g = (G_VAL(src_ptr)) >> 4;
1366    b = (B_VAL(src_ptr)) >> 4;
1367
1368 #ifndef BUILD_NO_DITHER_MASK
1369    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
1370    if (((R_VAL(src_ptr) - (r << 4)) >= dith ) && (r < 0x0f)) r++;
1371    if (((G_VAL(src_ptr) - (g << 4)) >= dith ) && (g < 0x0f)) g++;
1372    if (((B_VAL(src_ptr) - (b << 4)) >= dith ) && (b < 0x0f)) b++;
1373 #endif
1374
1375    *dst_ptr = (r << 12) | (g << 7) | (b << 1);
1376
1377    CONVERT_LOOP_END_ROT_180();
1378    return;
1379    pal = 0;
1380 }
1381 #endif
1382 #endif
1383
1384
1385 #ifdef BUILD_CONVERT_16_RGB_454645
1386 #ifdef BUILD_CONVERT_16_RGB_ROT270
1387 void
1388 evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
1389 {
1390    DATA32 *src_ptr;
1391    DATA16 *dst_ptr;
1392    int x, y;
1393    DATA8 r1, g1, b1;
1394    DATA8 r2, g2, b2;
1395 #ifndef BUILD_NO_DITHER_MASK
1396    DATA8 dith;
1397 #endif
1398
1399    dst_ptr = (DATA16 *)dst;
1400
1401    CONVERT_LOOP2_START_ROT_270();
1402
1403    r1 = (R_VAL(src_ptr)) >> 4;
1404    g1 = (G_VAL(src_ptr)) >> 4;
1405    b1 = (B_VAL(src_ptr)) >> 4;
1406
1407 #ifndef BUILD_NO_DITHER_MASK
1408    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
1409    if (((R_VAL(src_ptr) - (r1 << 4)) >= dith ) && (r1 < 0x0f)) r1++;
1410    if (((G_VAL(src_ptr) - (g1 << 4)) >= dith ) && (g1 < 0x0f)) g1++;
1411    if (((B_VAL(src_ptr) - (b1 << 4)) >= dith ) && (b1 < 0x0f)) b1++;
1412 #endif
1413
1414    CONVERT_LOOP2_INC_ROT_270();
1415
1416    r2 = (R_VAL(src_ptr)) >> 4;
1417    g2 = (G_VAL(src_ptr)) >> 4;
1418    b2 = (B_VAL(src_ptr)) >> 4;
1419
1420 #ifndef BUILD_NO_DITHER_MASK
1421    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
1422    if (((R_VAL(src_ptr) - (r2 << 4)) >= dith ) && (r2 < 0x0f)) r2++;
1423    if (((G_VAL(src_ptr) - (g2 << 4)) >= dith ) && (g2 < 0x0f)) g2++;
1424    if (((B_VAL(src_ptr) - (b2 << 4)) >= dith ) && (b2 < 0x0f)) b2++;
1425 #endif
1426
1427 #ifndef WORDS_BIGENDIAN
1428    *((DATA32 *)dst_ptr) =
1429      (r2 << 28) | (g2 << 23) | (b2 << 17) |
1430      (r1 << 12) | (g1 << 7 ) | (b1 << 1 );
1431 #else
1432    *((DATA32 *)dst_ptr) =
1433      (r1 << 28) | (g1 << 23) | (b1 << 17) |
1434      (r2 << 12) | (g2 << 7 ) | (b2 << 1 );
1435 #endif
1436
1437    CONVERT_LOOP2_END_ROT_270();
1438    return;
1439    pal = 0;
1440 }
1441 #endif
1442 #endif
1443
1444 #ifdef BUILD_CONVERT_16_RGB_454645
1445 #ifdef BUILD_CONVERT_16_RGB_ROT270
1446 void
1447 evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
1448 {
1449    DATA32 *src_ptr;
1450    DATA16 *dst_ptr;
1451    int x, y;
1452    DATA8 r, g, b;
1453 #ifndef BUILD_NO_DITHER_MASK
1454    DATA8 dith;
1455 #endif
1456
1457    dst_ptr = (DATA16 *)dst;
1458
1459    CONVERT_LOOP_START_ROT_270();
1460
1461    r = (R_VAL(src_ptr)) >> 4;
1462    g = (G_VAL(src_ptr)) >> 4;
1463    b = (B_VAL(src_ptr)) >> 4;
1464
1465 #ifndef BUILD_NO_DITHER_MASK
1466    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
1467    if (((R_VAL(src_ptr) - (r << 4)) >= dith ) && (r < 0x0f)) r++;
1468    if (((G_VAL(src_ptr) - (g << 4)) >= dith ) && (g < 0x0f)) g++;
1469    if (((B_VAL(src_ptr) - (b << 4)) >= dith ) && (b < 0x0f)) b++;
1470 #endif
1471
1472    *dst_ptr = (r << 12) | (g << 7) | (b << 1);
1473
1474    CONVERT_LOOP_END_ROT_270();
1475    return;
1476    pal = 0;
1477 }
1478 #endif
1479 #endif
1480
1481 #ifdef BUILD_CONVERT_16_RGB_454645
1482 #ifdef BUILD_CONVERT_16_RGB_ROT90
1483 void
1484 evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
1485 {
1486    DATA32 *src_ptr;
1487    DATA16 *dst_ptr;
1488    int x, y;
1489    DATA8 r1, g1, b1;
1490    DATA8 r2, g2, b2;
1491 #ifndef BUILD_NO_DITHER_MASK
1492    DATA8 dith;
1493 #endif
1494
1495    dst_ptr = (DATA16 *)dst;
1496
1497    CONVERT_LOOP2_START_ROT_90();
1498
1499    r1 = (R_VAL(src_ptr)) >> 4;
1500    g1 = (G_VAL(src_ptr)) >> 4;
1501    b1 = (B_VAL(src_ptr)) >> 4;
1502
1503 #ifndef BUILD_NO_DITHER_MASK
1504    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
1505    if (((R_VAL(src_ptr) - (r1 << 4)) >= dith ) && (r1 < 0x0f)) r1++;
1506    if (((G_VAL(src_ptr) - (g1 << 4)) >= dith ) && (g1 < 0x0f)) g1++;
1507    if (((B_VAL(src_ptr) - (b1 << 4)) >= dith ) && (b1 < 0x0f)) b1++;
1508 #endif
1509
1510    CONVERT_LOOP2_INC_ROT_90();
1511
1512    r2 = (R_VAL(src_ptr)) >> 4;
1513    g2 = (G_VAL(src_ptr)) >> 4;
1514    b2 = (B_VAL(src_ptr)) >> 4;
1515
1516 #ifndef BUILD_NO_DITHER_MASK
1517    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
1518    if (((R_VAL(src_ptr) - (r2 << 4)) >= dith ) && (r2 < 0x0f)) r2++;
1519    if (((G_VAL(src_ptr) - (g2 << 4)) >= dith ) && (g2 < 0x0f)) g2++;
1520    if (((B_VAL(src_ptr) - (b2 << 4)) >= dith ) && (b2 < 0x0f)) b2++;
1521 #endif
1522
1523 #ifndef WORDS_BIGENDIAN
1524    *((DATA32 *)dst_ptr) =
1525      (r2 << 28) | (g2 << 23) | (b2 << 17) |
1526      (r1 << 12) | (g1 << 7 ) | (b1 << 1 );
1527 #else
1528    *((DATA32 *)dst_ptr) =
1529      (r1 << 28) | (g1 << 23) | (b1 << 17) |
1530      (r2 << 12) | (g2 << 7 ) | (b2 << 1 );
1531 #endif
1532
1533    CONVERT_LOOP2_END_ROT_90();
1534    return;
1535    pal = 0;
1536 }
1537 #endif
1538 #endif
1539
1540 #ifdef BUILD_CONVERT_16_RGB_454645
1541 #ifdef BUILD_CONVERT_16_RGB_ROT90
1542 void
1543 evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
1544 {
1545    DATA32 *src_ptr;
1546    DATA16 *dst_ptr;
1547    int x, y;
1548    DATA8 r, g, b;
1549 #ifndef BUILD_NO_DITHER_MASK
1550    DATA8 dith;
1551 #endif
1552
1553    dst_ptr = (DATA16 *)dst;
1554
1555    CONVERT_LOOP_START_ROT_90();
1556
1557    r = (R_VAL(src_ptr)) >> 4;
1558    g = (G_VAL(src_ptr)) >> 4;
1559    b = (B_VAL(src_ptr)) >> 4;
1560
1561 #ifndef BUILD_NO_DITHER_MASK
1562    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
1563    if (((R_VAL(src_ptr) - (r << 4)) >= dith ) && (r < 0x0f)) r++;
1564    if (((G_VAL(src_ptr) - (g << 4)) >= dith ) && (g < 0x0f)) g++;
1565    if (((B_VAL(src_ptr) - (b << 4)) >= dith ) && (b < 0x0f)) b++;
1566 #endif
1567
1568    *dst_ptr = (r << 12) | (g << 7) | (b << 1);
1569
1570    CONVERT_LOOP_END_ROT_90();
1571    return;
1572    pal = 0;
1573 }
1574 #endif
1575 #endif
1576
1577 #ifdef BUILD_CONVERT_16_RGB_555
1578 #ifdef BUILD_CONVERT_16_RGB_ROT0
1579 void
1580 evas_common_convert_rgba2_to_16bpp_rgb_555_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
1581 {
1582    DATA32 *src_ptr;
1583    DATA16 *dst_ptr;
1584    int x, y;
1585    DATA8 r1, g1, b1;
1586    DATA8 r2, g2, b2;
1587 #ifndef BUILD_NO_DITHER_MASK
1588    DATA8 dith;
1589 #endif
1590
1591    dst_ptr = (DATA16 *)dst;
1592
1593    CONVERT_LOOP2_START_ROT_0();
1594
1595    r1 = (R_VAL(src_ptr)) >> 3;
1596    g1 = (G_VAL(src_ptr)) >> 3;
1597    b1 = (B_VAL(src_ptr)) >> 3;
1598
1599 #ifndef BUILD_NO_DITHER_MASK
1600    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
1601    if (((R_VAL(src_ptr) - (r1 << 3)) >= dith) && (r1 < 0x1f)) r1++;
1602    if (((G_VAL(src_ptr) - (g1 << 3)) >= dith) && (g1 < 0x1f)) g1++;
1603    if (((B_VAL(src_ptr) - (b1 << 3)) >= dith) && (b1 < 0x1f)) b1++;
1604 #endif
1605
1606    CONVERT_LOOP2_INC_ROT_0();
1607
1608    r2 = (R_VAL(src_ptr)) >> 3;
1609    g2 = (G_VAL(src_ptr)) >> 3;
1610    b2 = (B_VAL(src_ptr)) >> 3;
1611
1612 #ifndef BUILD_NO_DITHER_MASK
1613    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
1614    if (((R_VAL(src_ptr) - (r2 << 3)) >= dith) && (r2 < 0x1f)) r2++;
1615    if (((G_VAL(src_ptr) - (g2 << 3)) >= dith) && (g2 < 0x1f)) g2++;
1616    if (((B_VAL(src_ptr) - (b2 << 3)) >= dith) && (b2 < 0x1f)) b2++;
1617 #endif
1618
1619 #ifndef WORDS_BIGENDIAN
1620    *((DATA32 *)dst_ptr) =
1621      (r2 << 26) | (g2 << 21) | (b2 << 16) |
1622      (r1 << 10) | (g1 << 5 ) | (b1      );
1623 #else
1624    *((DATA32 *)dst_ptr) =
1625      (r1 << 26) | (g1 << 21) | (b1 << 16) |
1626      (r2 << 10) | (g2 << 5 ) | (b2      );
1627 #endif
1628
1629    CONVERT_LOOP2_END_ROT_0();
1630    return;
1631    pal = 0;
1632 }
1633 #endif
1634 #endif
1635
1636 #ifdef BUILD_CONVERT_16_RGB_555
1637 #ifdef BUILD_CONVERT_16_RGB_ROT0
1638 void
1639 evas_common_convert_rgba_to_16bpp_rgb_555_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
1640 {
1641    DATA32 *src_ptr;
1642    DATA16 *dst_ptr;
1643    int x, y;
1644    DATA8 r, g, b;
1645 #ifndef BUILD_NO_DITHER_MASK
1646    DATA8 dith;
1647 #endif
1648
1649    dst_ptr = (DATA16 *)dst;
1650
1651    CONVERT_LOOP_START_ROT_0();
1652
1653    r = (R_VAL(src_ptr)) >> 3;
1654    g = (G_VAL(src_ptr)) >> 3;
1655    b = (B_VAL(src_ptr)) >> 3;
1656
1657 #ifndef BUILD_NO_DITHER_MASK
1658    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
1659    if (((R_VAL(src_ptr) - (r << 3)) >= dith) && (r < 0x1f)) r++;
1660    if (((G_VAL(src_ptr) - (g << 3)) >= dith) && (g < 0x1f)) g++;
1661    if (((B_VAL(src_ptr) - (b << 3)) >= dith) && (b < 0x1f)) b++;
1662 #endif
1663
1664    *dst_ptr = (r << 10) | (g << 5) | (b);
1665
1666    CONVERT_LOOP_END_ROT_0();
1667    return;
1668    pal = 0;
1669 }
1670 #endif
1671 #endif
1672
1673 #ifdef BUILD_CONVERT_16_RGB_555
1674 #ifdef BUILD_CONVERT_16_RGB_ROT180
1675 void
1676 evas_common_convert_rgba2_to_16bpp_rgb_555_dith_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
1677 {
1678    DATA32 *src_ptr;
1679    DATA16 *dst_ptr;
1680    int x, y;
1681    DATA8 r1, g1, b1;
1682    DATA8 r2, g2, b2;
1683 #ifndef BUILD_NO_DITHER_MASK
1684    DATA8 dith;
1685 #endif
1686
1687    dst_ptr = (DATA16 *)dst;
1688
1689    CONVERT_LOOP2_START_ROT_180();
1690
1691    r1 = (R_VAL(src_ptr)) >> 3;
1692    g1 = (G_VAL(src_ptr)) >> 3;
1693    b1 = (B_VAL(src_ptr)) >> 3;
1694
1695 #ifndef BUILD_NO_DITHER_MASK
1696    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
1697    if (((R_VAL(src_ptr) - (r1 << 3)) >= dith) && (r1 < 0x1f)) r1++;
1698    if (((G_VAL(src_ptr) - (g1 << 3)) >= dith) && (g1 < 0x1f)) g1++;
1699    if (((B_VAL(src_ptr) - (b1 << 3)) >= dith) && (b1 < 0x1f)) b1++;
1700 #endif
1701
1702    CONVERT_LOOP2_INC_ROT_180();
1703
1704    r2 = (R_VAL(src_ptr)) >> 3;
1705    g2 = (G_VAL(src_ptr)) >> 3;
1706    b2 = (B_VAL(src_ptr)) >> 3;
1707
1708 #ifndef BUILD_NO_DITHER_MASK
1709    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
1710    if (((R_VAL(src_ptr) - (r2 << 3)) >= dith) && (r2 < 0x1f)) r2++;
1711    if (((G_VAL(src_ptr) - (g2 << 3)) >= dith) && (g2 < 0x1f)) g2++;
1712    if (((B_VAL(src_ptr) - (b2 << 3)) >= dith) && (b2 < 0x1f)) b2++;
1713 #endif
1714
1715 #ifndef WORDS_BIGENDIAN
1716    *((DATA32 *)dst_ptr) =
1717      (r2 << 26) | (g2 << 21) | (b2 << 16) |
1718      (r1 << 10) | (g1 << 5 ) | (b1      );
1719 #else
1720    *((DATA32 *)dst_ptr) =
1721      (r1 << 26) | (g1 << 21) | (b1 << 16) |
1722      (r2 << 10) | (g2 << 5 ) | (b2      );
1723 #endif
1724
1725    CONVERT_LOOP2_END_ROT_180();
1726    return;
1727    pal = 0;
1728 }
1729 #endif
1730 #endif
1731
1732 #ifdef BUILD_CONVERT_16_RGB_555
1733 #ifdef BUILD_CONVERT_16_RGB_ROT180
1734 void
1735 evas_common_convert_rgba_to_16bpp_rgb_555_dith_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
1736 {
1737    DATA32 *src_ptr;
1738    DATA16 *dst_ptr;
1739    int x, y;
1740    DATA8 r, g, b;
1741 #ifndef BUILD_NO_DITHER_MASK
1742    DATA8 dith;
1743 #endif
1744
1745    dst_ptr = (DATA16 *)dst;
1746
1747    CONVERT_LOOP_START_ROT_180();
1748
1749    r = (R_VAL(src_ptr)) >> 3;
1750    g = (G_VAL(src_ptr)) >> 3;
1751    b = (B_VAL(src_ptr)) >> 3;
1752
1753 #ifndef BUILD_NO_DITHER_MASK
1754    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
1755    if (((R_VAL(src_ptr) - (r << 3)) >= dith) && (r < 0x1f)) r++;
1756    if (((G_VAL(src_ptr) - (g << 3)) >= dith) && (g < 0x1f)) g++;
1757    if (((B_VAL(src_ptr) - (b << 3)) >= dith) && (b < 0x1f)) b++;
1758 #endif
1759
1760    *dst_ptr = (r << 10) | (g << 5) | (b);
1761
1762    CONVERT_LOOP_END_ROT_180();
1763    return;
1764    pal = 0;
1765 }
1766 #endif
1767 #endif
1768
1769 #ifdef BUILD_CONVERT_16_RGB_555
1770 #ifdef BUILD_CONVERT_16_RGB_ROT270
1771 void
1772 evas_common_convert_rgba2_to_16bpp_rgb_555_dith_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
1773 {
1774    DATA32 *src_ptr;
1775    DATA16 *dst_ptr;
1776    int x, y;
1777    DATA8 r1, g1, b1;
1778    DATA8 r2, g2, b2;
1779 #ifndef BUILD_NO_DITHER_MASK
1780    DATA8 dith;
1781 #endif
1782
1783    dst_ptr = (DATA16 *)dst;
1784
1785    CONVERT_LOOP2_START_ROT_270();
1786
1787    r1 = (R_VAL(src_ptr)) >> 3;
1788    g1 = (G_VAL(src_ptr)) >> 3;
1789    b1 = (B_VAL(src_ptr)) >> 3;
1790
1791 #ifndef BUILD_NO_DITHER_MASK
1792    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
1793    if (((R_VAL(src_ptr) - (r1 << 3)) >= dith) && (r1 < 0x1f)) r1++;
1794    if (((G_VAL(src_ptr) - (g1 << 3)) >= dith) && (g1 < 0x1f)) g1++;
1795    if (((B_VAL(src_ptr) - (b1 << 3)) >= dith) && (b1 < 0x1f)) b1++;
1796 #endif
1797
1798    CONVERT_LOOP2_INC_ROT_270();
1799
1800    r2 = (R_VAL(src_ptr)) >> 3;
1801    g2 = (G_VAL(src_ptr)) >> 3;
1802    b2 = (B_VAL(src_ptr)) >> 3;
1803
1804 #ifndef BUILD_NO_DITHER_MASK
1805    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
1806    if (((R_VAL(src_ptr) - (r2 << 3)) >= dith) && (r2 < 0x1f)) r2++;
1807    if (((G_VAL(src_ptr) - (g2 << 3)) >= dith) && (g2 < 0x1f)) g2++;
1808    if (((B_VAL(src_ptr) - (b2 << 3)) >= dith) && (b2 < 0x1f)) b2++;
1809 #endif
1810
1811 #ifndef WORDS_BIGENDIAN
1812    *((DATA32 *)dst_ptr) =
1813      (r2 << 26) | (g2 << 21) | (b2 << 16) |
1814      (r1 << 10) | (g1 << 5 ) | (b1      );
1815 #else
1816    *((DATA32 *)dst_ptr) =
1817      (r1 << 26) | (g1 << 21) | (b1 << 16) |
1818      (r2 << 10) | (g2 << 5 ) | (b2      );
1819 #endif
1820
1821    CONVERT_LOOP2_END_ROT_270();
1822    return;
1823    pal = 0;
1824 }
1825 #endif
1826 #endif
1827
1828 #ifdef BUILD_CONVERT_16_RGB_555
1829 #ifdef BUILD_CONVERT_16_RGB_ROT270
1830 void
1831 evas_common_convert_rgba_to_16bpp_rgb_555_dith_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
1832 {
1833    DATA32 *src_ptr;
1834    DATA16 *dst_ptr;
1835    int x, y;
1836    DATA8 r, g, b;
1837 #ifndef BUILD_NO_DITHER_MASK
1838    DATA8 dith;
1839 #endif
1840
1841    dst_ptr = (DATA16 *)dst;
1842
1843    CONVERT_LOOP_START_ROT_270();
1844
1845    r = (R_VAL(src_ptr)) >> 3;
1846    g = (G_VAL(src_ptr)) >> 3;
1847    b = (B_VAL(src_ptr)) >> 3;
1848
1849 #ifndef BUILD_NO_DITHER_MASK
1850    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
1851    if (((R_VAL(src_ptr) - (r << 3)) >= dith) && (r < 0x1f)) r++;
1852    if (((G_VAL(src_ptr) - (g << 3)) >= dith) && (g < 0x1f)) g++;
1853    if (((B_VAL(src_ptr) - (b << 3)) >= dith) && (b < 0x1f)) b++;
1854 #endif
1855
1856    *dst_ptr = (r << 10) | (g << 5) | (b);
1857
1858    CONVERT_LOOP_END_ROT_270();
1859    return;
1860    pal = 0;
1861 }
1862 #endif
1863 #endif
1864
1865 #ifdef BUILD_CONVERT_16_RGB_555
1866 #ifdef BUILD_CONVERT_16_RGB_ROT90
1867 void
1868 evas_common_convert_rgba2_to_16bpp_rgb_555_dith_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
1869 {
1870    DATA32 *src_ptr;
1871    DATA16 *dst_ptr;
1872    int x, y;
1873    DATA8 r1, g1, b1;
1874    DATA8 r2, g2, b2;
1875 #ifndef BUILD_NO_DITHER_MASK
1876    DATA8 dith;
1877 #endif
1878
1879    dst_ptr = (DATA16 *)dst;
1880
1881    CONVERT_LOOP2_START_ROT_90();
1882
1883    r1 = (R_VAL(src_ptr)) >> 3;
1884    g1 = (G_VAL(src_ptr)) >> 3;
1885    b1 = (B_VAL(src_ptr)) >> 3;
1886
1887 #ifndef BUILD_NO_DITHER_MASK
1888    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
1889    if (((R_VAL(src_ptr) - (r1 << 3)) >= dith) && (r1 < 0x1f)) r1++;
1890    if (((G_VAL(src_ptr) - (g1 << 3)) >= dith) && (g1 < 0x1f)) g1++;
1891    if (((B_VAL(src_ptr) - (b1 << 3)) >= dith) && (b1 < 0x1f)) b1++;
1892 #endif
1893
1894    CONVERT_LOOP2_INC_ROT_90();
1895
1896    r2 = (R_VAL(src_ptr)) >> 3;
1897    g2 = (G_VAL(src_ptr)) >> 3;
1898    b2 = (B_VAL(src_ptr)) >> 3;
1899
1900 #ifndef BUILD_NO_DITHER_MASK
1901    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
1902    if (((R_VAL(src_ptr) - (r2 << 3)) >= dith) && (r2 < 0x1f)) r2++;
1903    if (((G_VAL(src_ptr) - (g2 << 3)) >= dith) && (g2 < 0x1f)) g2++;
1904    if (((B_VAL(src_ptr) - (b2 << 3)) >= dith) && (b2 < 0x1f)) b2++;
1905 #endif
1906
1907 #ifndef WORDS_BIGENDIAN
1908    *((DATA32 *)dst_ptr) =
1909      (r2 << 26) | (g2 << 21) | (b2 << 16) |
1910      (r1 << 10) | (g1 << 5 ) | (b1      );
1911 #else
1912    *((DATA32 *)dst_ptr) =
1913      (r1 << 26) | (g1 << 21) | (b1 << 16) |
1914      (r2 << 10) | (g2 << 5 ) | (b2      );
1915 #endif
1916
1917    CONVERT_LOOP2_END_ROT_90();
1918    return;
1919    pal = 0;
1920 }
1921 #endif
1922 #endif
1923
1924 #ifdef BUILD_CONVERT_16_RGB_555
1925 #ifdef BUILD_CONVERT_16_RGB_ROT90
1926 void
1927 evas_common_convert_rgba_to_16bpp_rgb_555_dith_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
1928 {
1929    DATA32 *src_ptr;
1930    DATA16 *dst_ptr;
1931    int x, y;
1932    DATA8 r, g, b;
1933 #ifndef BUILD_NO_DITHER_MASK
1934    DATA8 dith;
1935 #endif
1936
1937    dst_ptr = (DATA16 *)dst;
1938
1939    CONVERT_LOOP_START_ROT_90();
1940
1941    r = (R_VAL(src_ptr)) >> 3;
1942    g = (G_VAL(src_ptr)) >> 3;
1943    b = (B_VAL(src_ptr)) >> 3;
1944
1945 #ifndef BUILD_NO_DITHER_MASK
1946    dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
1947    if (((R_VAL(src_ptr) - (r << 3)) >= dith) && (r < 0x1f)) r++;
1948    if (((G_VAL(src_ptr) - (g << 3)) >= dith) && (g < 0x1f)) g++;
1949    if (((B_VAL(src_ptr) - (b << 3)) >= dith) && (b < 0x1f)) b++;
1950 #endif
1951
1952    *dst_ptr = (r << 10) | (g << 5) | (b);
1953
1954    CONVERT_LOOP_END_ROT_90();
1955    return;
1956    pal = 0;
1957 }
1958 #endif
1959 #endif