34cf4058 |
1 | #include "Types.h" |
2 | //#include "GBI.h" |
3 | |
4 | static inline s16 GetResult1( u32 A, u32 B, u32 C, u32 D, u32 E ) |
5 | { |
6 | s16 x = 0; |
7 | s16 y = 0; |
8 | s16 r = 0; |
9 | |
10 | if (A == C) x += 1; else if (B == C) y += 1; |
11 | if (A == D) x += 1; else if (B == D) y += 1; |
12 | if (x <= 1) r += 1; |
13 | if (y <= 1) r -= 1; |
14 | |
15 | return r; |
16 | } |
17 | |
18 | static inline s16 GetResult2( u32 A, u32 B, u32 C, u32 D, u32 E) |
19 | { |
20 | s16 x = 0; |
21 | s16 y = 0; |
22 | s16 r = 0; |
23 | |
24 | if (A == C) x += 1; else if (B == C) y += 1; |
25 | if (A == D) x += 1; else if (B == D) y += 1; |
26 | if (x <= 1) r -= 1; |
27 | if (y <= 1) r += 1; |
28 | |
29 | return r; |
30 | } |
31 | |
32 | |
33 | static inline s16 GetResult( u32 A, u32 B, u32 C, u32 D ) |
34 | { |
35 | s16 x = 0; |
36 | s16 y = 0; |
37 | s16 r = 0; |
38 | |
39 | if (A == C) x += 1; else if (B == C) y += 1; |
40 | if (A == D) x += 1; else if (B == D) y += 1; |
41 | if (x <= 1) r += 1; |
42 | if (y <= 1) r -= 1; |
43 | |
44 | return r; |
45 | } |
46 | |
47 | static inline u16 INTERPOLATE4444( u16 A, u16 B) |
48 | { |
49 | if (A != B) |
50 | return ((A & 0xEEEE) >> 1) + |
51 | (((B & 0xEEEE) >> 1) | |
52 | (A & B & 0x1111)); |
53 | else |
54 | return A; |
55 | } |
56 | |
57 | static inline u16 INTERPOLATE5551( u16 A, u16 B) |
58 | { |
59 | if (A != B) |
60 | return ((A & 0xF7BC) >> 1) + |
61 | (((B & 0xF7BC) >> 1) | |
62 | (A & B & 0x0843)); |
63 | else |
64 | return A; |
65 | } |
66 | |
67 | static inline u32 INTERPOLATE8888( u32 A, u32 B) |
68 | { |
69 | if (A != B) |
70 | return ((A & 0xFEFEFEFE) >> 1) + |
71 | (((B & 0xFEFEFEFE) >> 1) | |
72 | (A & B & 0x01010101)); |
73 | else |
74 | return A; |
75 | } |
76 | |
77 | static inline u16 Q_INTERPOLATE4444( u16 A, u16 B, u16 C, u16 D) |
78 | { |
79 | u16 x = ((A & 0xCCCC) >> 2) + |
80 | ((B & 0xCCCC) >> 2) + |
81 | ((C & 0xCCCC) >> 2) + |
82 | ((D & 0xCCCC) >> 2); |
83 | u16 y = (((A & 0x3333) + |
84 | (B & 0x3333) + |
85 | (C & 0x3333) + |
86 | (D & 0x3333)) >> 2) & 0x3333; |
87 | return x | y; |
88 | } |
89 | |
90 | static inline u16 Q_INTERPOLATE5551( u16 A, u16 B, u16 C, u16 D) |
91 | { |
92 | u16 x = ((A & 0xE738) >> 2) + |
93 | ((B & 0xE738) >> 2) + |
94 | ((C & 0xE738) >> 2) + |
95 | ((D & 0xE738) >> 2); |
96 | u16 y = (((A & 0x18C6) + |
97 | (B & 0x18C6) + |
98 | (C & 0x18C6) + |
99 | (D & 0x18C6)) >> 2) & 0x18C6; |
100 | u16 z = ((A & 0x0001) + |
101 | (B & 0x0001) + |
102 | (C & 0x0001) + |
103 | (D & 0x0001)) > 2 ? 1 : 0; |
104 | return x | y | z; |
105 | } |
106 | |
107 | static inline u32 Q_INTERPOLATE8888( u32 A, u32 B, u32 C, u32 D) |
108 | { |
109 | u32 x = ((A & 0xFCFCFCFC) >> 2) + |
110 | ((B & 0xFCFCFCFC) >> 2) + |
111 | ((C & 0xFCFCFCFC) >> 2) + |
112 | ((D & 0xFCFCFCFC) >> 2); |
113 | u32 y = (((A & 0x03030303) + |
114 | (B & 0x03030303) + |
115 | (C & 0x03030303) + |
116 | (D & 0x03030303)) >> 2) & 0x03030303; |
117 | return x | y; |
118 | } |
119 | |
120 | void _2xSaI4444( u16 *srcPtr, u16 *destPtr, u16 width, u16 height, s32 clampS, s32 clampT ) |
121 | { |
122 | u16 destWidth = width << 1; |
123 | //u16 destHeight = height << 1; |
124 | |
125 | u32 colorA, colorB, colorC, colorD, |
126 | colorE, colorF, colorG, colorH, |
127 | colorI, colorJ, colorK, colorL, |
128 | colorM, colorN, colorO, colorP; |
129 | u32 product, product1, product2; |
130 | |
131 | s16 row0, row1, row2, row3; |
132 | s16 col0, col1, col2, col3; |
133 | |
134 | for (u16 y = 0; y < height; y++) |
135 | { |
136 | if (y > 0) |
137 | row0 = -width; |
138 | else |
139 | row0 = clampT ? 0 : (height - 1) * width; |
140 | |
141 | row1 = 0; |
142 | |
143 | if (y < height - 1) |
144 | { |
145 | row2 = width; |
146 | |
147 | if (y < height - 2) |
148 | row3 = width << 1; |
149 | else |
150 | row3 = clampT ? width : -y * width; |
151 | } |
152 | else |
153 | { |
154 | row2 = clampT ? 0 : -y * width; |
155 | row3 = clampT ? 0 : (1 - y) * width; |
156 | } |
157 | |
158 | for (u16 x = 0; x < width; x++) |
159 | { |
160 | if (x > 0) |
161 | col0 = -1; |
162 | else |
163 | col0 = clampS ? 0 : width - 1; |
164 | |
165 | col1 = 0; |
166 | |
167 | if (x < width - 1) |
168 | { |
169 | col2 = 1; |
170 | |
171 | if (x < width - 2) |
172 | col3 = 2; |
173 | else |
174 | col3 = clampS ? 1 : -x; |
175 | } |
176 | else |
177 | { |
178 | col2 = clampS ? 0 : -x; |
179 | col3 = clampS ? 0 : 1 - x; |
180 | } |
181 | |
182 | //--------------------------------------- |
183 | // Map of the pixels: I|E F|J |
184 | // G|A B|K |
185 | // H|C D|L |
186 | // M|N O|P |
187 | colorI = *(srcPtr + col0 + row0); |
188 | colorE = *(srcPtr + col1 + row0); |
189 | colorF = *(srcPtr + col2 + row0); |
190 | colorJ = *(srcPtr + col3 + row0); |
191 | |
192 | colorG = *(srcPtr + col0 + row1); |
193 | colorA = *(srcPtr + col1 + row1); |
194 | colorB = *(srcPtr + col2 + row1); |
195 | colorK = *(srcPtr + col3 + row1); |
196 | |
197 | colorH = *(srcPtr + col0 + row2); |
198 | colorC = *(srcPtr + col1 + row2); |
199 | colorD = *(srcPtr + col2 + row2); |
200 | colorL = *(srcPtr + col3 + row2); |
201 | |
202 | colorM = *(srcPtr + col0 + row3); |
203 | colorN = *(srcPtr + col1 + row3); |
204 | colorO = *(srcPtr + col2 + row3); |
205 | colorP = *(srcPtr + col3 + row3); |
206 | |
207 | if ((colorA == colorD) && (colorB != colorC)) |
208 | { |
209 | if ( ((colorA == colorE) && (colorB == colorL)) || |
210 | ((colorA == colorC) && (colorA == colorF) && (colorB != colorE) && (colorB == colorJ)) ) |
211 | product = colorA; |
212 | else |
213 | product = INTERPOLATE4444(colorA, colorB); |
214 | |
215 | if (((colorA == colorG) && (colorC == colorO)) || |
216 | ((colorA == colorB) && (colorA == colorH) && (colorG != colorC) && (colorC == colorM)) ) |
217 | product1 = colorA; |
218 | else |
219 | product1 = INTERPOLATE4444(colorA, colorC); |
220 | |
221 | product2 = colorA; |
222 | } |
223 | else if ((colorB == colorC) && (colorA != colorD)) |
224 | { |
225 | if (((colorB == colorF) && (colorA == colorH)) || |
226 | ((colorB == colorE) && (colorB == colorD) && (colorA != colorF) && (colorA == colorI)) ) |
227 | product = colorB; |
228 | else |
229 | product = INTERPOLATE4444(colorA, colorB); |
230 | |
231 | if (((colorC == colorH) && (colorA == colorF)) || |
232 | ((colorC == colorG) && (colorC == colorD) && (colorA != colorH) && (colorA == colorI)) ) |
233 | product1 = colorC; |
234 | else |
235 | product1 = INTERPOLATE4444(colorA, colorC); |
236 | product2 = colorB; |
237 | } |
238 | else if ((colorA == colorD) && (colorB == colorC)) |
239 | { |
240 | if (colorA == colorB) |
241 | { |
242 | product = colorA; |
243 | product1 = colorA; |
244 | product2 = colorA; |
245 | } |
246 | else |
247 | { |
248 | s16 r = 0; |
249 | product1 = INTERPOLATE4444(colorA, colorC); |
250 | product = INTERPOLATE4444(colorA, colorB); |
251 | |
252 | r += GetResult1 (colorA, colorB, colorG, colorE, colorI); |
253 | r += GetResult2 (colorB, colorA, colorK, colorF, colorJ); |
254 | r += GetResult2 (colorB, colorA, colorH, colorN, colorM); |
255 | r += GetResult1 (colorA, colorB, colorL, colorO, colorP); |
256 | |
257 | if (r > 0) |
258 | product2 = colorA; |
259 | else if (r < 0) |
260 | product2 = colorB; |
261 | else |
262 | product2 = Q_INTERPOLATE4444(colorA, colorB, colorC, colorD); |
263 | } |
264 | } |
265 | else |
266 | { |
267 | product2 = Q_INTERPOLATE4444(colorA, colorB, colorC, colorD); |
268 | |
269 | if ((colorA == colorC) && (colorA == colorF) && (colorB != colorE) && (colorB == colorJ)) |
270 | product = colorA; |
271 | else if ((colorB == colorE) && (colorB == colorD) && (colorA != colorF) && (colorA == colorI)) |
272 | product = colorB; |
273 | else |
274 | product = INTERPOLATE4444(colorA, colorB); |
275 | |
276 | if ((colorA == colorB) && (colorA == colorH) && (colorG != colorC) && (colorC == colorM)) |
277 | product1 = colorA; |
278 | else if ((colorC == colorG) && (colorC == colorD) && (colorA != colorH) && (colorA == colorI)) |
279 | product1 = colorC; |
280 | else |
281 | product1 = INTERPOLATE4444(colorA, colorC); |
282 | } |
283 | |
284 | destPtr[0] = colorA; |
285 | destPtr[1] = product; |
286 | destPtr[destWidth] = product1; |
287 | destPtr[destWidth + 1] = product2; |
288 | |
289 | srcPtr++; |
290 | destPtr += 2; |
291 | } |
292 | destPtr += destWidth; |
293 | } |
294 | } |
295 | |
296 | void _2xSaI5551( u16 *srcPtr, u16 *destPtr, u16 width, u16 height, s32 clampS, s32 clampT ) |
297 | { |
298 | u16 destWidth = width << 1; |
299 | //u16 destHeight = height << 1; |
300 | |
301 | u32 colorA, colorB, colorC, colorD, |
302 | colorE, colorF, colorG, colorH, |
303 | colorI, colorJ, colorK, colorL, |
304 | colorM, colorN, colorO, colorP; |
305 | u32 product, product1, product2; |
306 | |
307 | s16 row0, row1, row2, row3; |
308 | s16 col0, col1, col2, col3; |
309 | |
310 | for (u16 y = 0; y < height; y++) |
311 | { |
312 | if (y > 0) |
313 | row0 = -width; |
314 | else |
315 | row0 = clampT ? 0 : (height - 1) * width; |
316 | |
317 | row1 = 0; |
318 | |
319 | if (y < height - 1) |
320 | { |
321 | row2 = width; |
322 | |
323 | if (y < height - 2) |
324 | row3 = width << 1; |
325 | else |
326 | row3 = clampT ? width : -y * width; |
327 | } |
328 | else |
329 | { |
330 | row2 = clampT ? 0 : -y * width; |
331 | row3 = clampT ? 0 : (1 - y) * width; |
332 | } |
333 | |
334 | for (u16 x = 0; x < width; x++) |
335 | { |
336 | if (x > 0) |
337 | col0 = -1; |
338 | else |
339 | col0 = clampS ? 0 : width - 1; |
340 | |
341 | col1 = 0; |
342 | |
343 | if (x < width - 1) |
344 | { |
345 | col2 = 1; |
346 | |
347 | if (x < width - 2) |
348 | col3 = 2; |
349 | else |
350 | col3 = clampS ? 1 : -x; |
351 | } |
352 | else |
353 | { |
354 | col2 = clampS ? 0 : -x; |
355 | col3 = clampS ? 0 : 1 - x; |
356 | } |
357 | |
358 | //--------------------------------------- |
359 | // Map of the pixels: I|E F|J |
360 | // G|A B|K |
361 | // H|C D|L |
362 | // M|N O|P |
363 | colorI = *(srcPtr + col0 + row0); |
364 | colorE = *(srcPtr + col1 + row0); |
365 | colorF = *(srcPtr + col2 + row0); |
366 | colorJ = *(srcPtr + col3 + row0); |
367 | |
368 | colorG = *(srcPtr + col0 + row1); |
369 | colorA = *(srcPtr + col1 + row1); |
370 | colorB = *(srcPtr + col2 + row1); |
371 | colorK = *(srcPtr + col3 + row1); |
372 | |
373 | colorH = *(srcPtr + col0 + row2); |
374 | colorC = *(srcPtr + col1 + row2); |
375 | colorD = *(srcPtr + col2 + row2); |
376 | colorL = *(srcPtr + col3 + row2); |
377 | |
378 | colorM = *(srcPtr + col0 + row3); |
379 | colorN = *(srcPtr + col1 + row3); |
380 | colorO = *(srcPtr + col2 + row3); |
381 | colorP = *(srcPtr + col3 + row3); |
382 | |
383 | if ((colorA == colorD) && (colorB != colorC)) |
384 | { |
385 | if ( ((colorA == colorE) && (colorB == colorL)) || |
386 | ((colorA == colorC) && (colorA == colorF) && (colorB != colorE) && (colorB == colorJ)) ) |
387 | product = colorA; |
388 | else |
389 | product = INTERPOLATE5551(colorA, colorB); |
390 | |
391 | if (((colorA == colorG) && (colorC == colorO)) || |
392 | ((colorA == colorB) && (colorA == colorH) && (colorG != colorC) && (colorC == colorM)) ) |
393 | product1 = colorA; |
394 | else |
395 | product1 = INTERPOLATE5551(colorA, colorC); |
396 | |
397 | product2 = colorA; |
398 | } |
399 | else if ((colorB == colorC) && (colorA != colorD)) |
400 | { |
401 | if (((colorB == colorF) && (colorA == colorH)) || |
402 | ((colorB == colorE) && (colorB == colorD) && (colorA != colorF) && (colorA == colorI)) ) |
403 | product = colorB; |
404 | else |
405 | product = INTERPOLATE5551(colorA, colorB); |
406 | |
407 | if (((colorC == colorH) && (colorA == colorF)) || |
408 | ((colorC == colorG) && (colorC == colorD) && (colorA != colorH) && (colorA == colorI)) ) |
409 | product1 = colorC; |
410 | else |
411 | product1 = INTERPOLATE5551(colorA, colorC); |
412 | product2 = colorB; |
413 | } |
414 | else if ((colorA == colorD) && (colorB == colorC)) |
415 | { |
416 | if (colorA == colorB) |
417 | { |
418 | product = colorA; |
419 | product1 = colorA; |
420 | product2 = colorA; |
421 | } |
422 | else |
423 | { |
424 | s16 r = 0; |
425 | product1 = INTERPOLATE5551(colorA, colorC); |
426 | product = INTERPOLATE5551(colorA, colorB); |
427 | |
428 | r += GetResult1 (colorA, colorB, colorG, colorE, colorI); |
429 | r += GetResult2 (colorB, colorA, colorK, colorF, colorJ); |
430 | r += GetResult2 (colorB, colorA, colorH, colorN, colorM); |
431 | r += GetResult1 (colorA, colorB, colorL, colorO, colorP); |
432 | |
433 | if (r > 0) |
434 | product2 = colorA; |
435 | else if (r < 0) |
436 | product2 = colorB; |
437 | else |
438 | product2 = Q_INTERPOLATE5551(colorA, colorB, colorC, colorD); |
439 | } |
440 | } |
441 | else |
442 | { |
443 | product2 = Q_INTERPOLATE5551(colorA, colorB, colorC, colorD); |
444 | |
445 | if ((colorA == colorC) && (colorA == colorF) && (colorB != colorE) && (colorB == colorJ)) |
446 | product = colorA; |
447 | else if ((colorB == colorE) && (colorB == colorD) && (colorA != colorF) && (colorA == colorI)) |
448 | product = colorB; |
449 | else |
450 | product = INTERPOLATE5551(colorA, colorB); |
451 | |
452 | if ((colorA == colorB) && (colorA == colorH) && (colorG != colorC) && (colorC == colorM)) |
453 | product1 = colorA; |
454 | else if ((colorC == colorG) && (colorC == colorD) && (colorA != colorH) && (colorA == colorI)) |
455 | product1 = colorC; |
456 | else |
457 | product1 = INTERPOLATE5551(colorA, colorC); |
458 | } |
459 | |
460 | destPtr[0] = colorA; |
461 | destPtr[1] = product; |
462 | destPtr[destWidth] = product1; |
463 | destPtr[destWidth + 1] = product2; |
464 | |
465 | srcPtr++; |
466 | destPtr += 2; |
467 | } |
468 | destPtr += destWidth; |
469 | } |
470 | } |
471 | |
472 | void _2xSaI8888( u32 *srcPtr, u32 *destPtr, u16 width, u16 height, s32 clampS, s32 clampT ) |
473 | { |
474 | u16 destWidth = width << 1; |
475 | //u16 destHeight = height << 1; |
476 | |
477 | u32 colorA, colorB, colorC, colorD, |
478 | colorE, colorF, colorG, colorH, |
479 | colorI, colorJ, colorK, colorL, |
480 | colorM, colorN, colorO, colorP; |
481 | u32 product, product1, product2; |
482 | |
483 | s16 row0, row1, row2, row3; |
484 | s16 col0, col1, col2, col3; |
485 | |
486 | for (u16 y = 0; y < height; y++) |
487 | { |
488 | if (y > 0) |
489 | row0 = -width; |
490 | else |
491 | row0 = clampT ? 0 : (height - 1) * width; |
492 | |
493 | row1 = 0; |
494 | |
495 | if (y < height - 1) |
496 | { |
497 | row2 = width; |
498 | |
499 | if (y < height - 2) |
500 | row3 = width << 1; |
501 | else |
502 | row3 = clampT ? width : -y * width; |
503 | } |
504 | else |
505 | { |
506 | row2 = clampT ? 0 : -y * width; |
507 | row3 = clampT ? 0 : (1 - y) * width; |
508 | } |
509 | |
510 | for (u16 x = 0; x < width; x++) |
511 | { |
512 | if (x > 0) |
513 | col0 = -1; |
514 | else |
515 | col0 = clampS ? 0 : width - 1; |
516 | |
517 | col1 = 0; |
518 | |
519 | if (x < width - 1) |
520 | { |
521 | col2 = 1; |
522 | |
523 | if (x < width - 2) |
524 | col3 = 2; |
525 | else |
526 | col3 = clampS ? 1 : -x; |
527 | } |
528 | else |
529 | { |
530 | col2 = clampS ? 0 : -x; |
531 | col3 = clampS ? 0 : 1 - x; |
532 | } |
533 | |
534 | //--------------------------------------- |
535 | // Map of the pixels: I|E F|J |
536 | // G|A B|K |
537 | // H|C D|L |
538 | // M|N O|P |
539 | colorI = *(srcPtr + col0 + row0); |
540 | colorE = *(srcPtr + col1 + row0); |
541 | colorF = *(srcPtr + col2 + row0); |
542 | colorJ = *(srcPtr + col3 + row0); |
543 | |
544 | colorG = *(srcPtr + col0 + row1); |
545 | colorA = *(srcPtr + col1 + row1); |
546 | colorB = *(srcPtr + col2 + row1); |
547 | colorK = *(srcPtr + col3 + row1); |
548 | |
549 | colorH = *(srcPtr + col0 + row2); |
550 | colorC = *(srcPtr + col1 + row2); |
551 | colorD = *(srcPtr + col2 + row2); |
552 | colorL = *(srcPtr + col3 + row2); |
553 | |
554 | colorM = *(srcPtr + col0 + row3); |
555 | colorN = *(srcPtr + col1 + row3); |
556 | colorO = *(srcPtr + col2 + row3); |
557 | colorP = *(srcPtr + col3 + row3); |
558 | |
559 | if ((colorA == colorD) && (colorB != colorC)) |
560 | { |
561 | if ( ((colorA == colorE) && (colorB == colorL)) || |
562 | ((colorA == colorC) && (colorA == colorF) && (colorB != colorE) && (colorB == colorJ)) ) |
563 | product = colorA; |
564 | else |
565 | product = INTERPOLATE8888(colorA, colorB); |
566 | |
567 | if (((colorA == colorG) && (colorC == colorO)) || |
568 | ((colorA == colorB) && (colorA == colorH) && (colorG != colorC) && (colorC == colorM)) ) |
569 | product1 = colorA; |
570 | else |
571 | product1 = INTERPOLATE8888(colorA, colorC); |
572 | |
573 | product2 = colorA; |
574 | } |
575 | else if ((colorB == colorC) && (colorA != colorD)) |
576 | { |
577 | if (((colorB == colorF) && (colorA == colorH)) || |
578 | ((colorB == colorE) && (colorB == colorD) && (colorA != colorF) && (colorA == colorI)) ) |
579 | product = colorB; |
580 | else |
581 | product = INTERPOLATE8888(colorA, colorB); |
582 | |
583 | if (((colorC == colorH) && (colorA == colorF)) || |
584 | ((colorC == colorG) && (colorC == colorD) && (colorA != colorH) && (colorA == colorI)) ) |
585 | product1 = colorC; |
586 | else |
587 | product1 = INTERPOLATE8888(colorA, colorC); |
588 | product2 = colorB; |
589 | } |
590 | else if ((colorA == colorD) && (colorB == colorC)) |
591 | { |
592 | if (colorA == colorB) |
593 | { |
594 | product = colorA; |
595 | product1 = colorA; |
596 | product2 = colorA; |
597 | } |
598 | else |
599 | { |
600 | s16 r = 0; |
601 | product1 = INTERPOLATE8888(colorA, colorC); |
602 | product = INTERPOLATE8888(colorA, colorB); |
603 | |
604 | r += GetResult1 (colorA, colorB, colorG, colorE, colorI); |
605 | r += GetResult2 (colorB, colorA, colorK, colorF, colorJ); |
606 | r += GetResult2 (colorB, colorA, colorH, colorN, colorM); |
607 | r += GetResult1 (colorA, colorB, colorL, colorO, colorP); |
608 | |
609 | if (r > 0) |
610 | product2 = colorA; |
611 | else if (r < 0) |
612 | product2 = colorB; |
613 | else |
614 | product2 = Q_INTERPOLATE8888(colorA, colorB, colorC, colorD); |
615 | } |
616 | } |
617 | else |
618 | { |
619 | product2 = Q_INTERPOLATE8888(colorA, colorB, colorC, colorD); |
620 | |
621 | if ((colorA == colorC) && (colorA == colorF) && (colorB != colorE) && (colorB == colorJ)) |
622 | product = colorA; |
623 | else if ((colorB == colorE) && (colorB == colorD) && (colorA != colorF) && (colorA == colorI)) |
624 | product = colorB; |
625 | else |
626 | product = INTERPOLATE8888(colorA, colorB); |
627 | |
628 | if ((colorA == colorB) && (colorA == colorH) && (colorG != colorC) && (colorC == colorM)) |
629 | product1 = colorA; |
630 | else if ((colorC == colorG) && (colorC == colorD) && (colorA != colorH) && (colorA == colorI)) |
631 | product1 = colorC; |
632 | else |
633 | product1 = INTERPOLATE8888(colorA, colorC); |
634 | } |
635 | |
636 | destPtr[0] = colorA; |
637 | destPtr[1] = product; |
638 | destPtr[destWidth] = product1; |
639 | destPtr[destWidth + 1] = product2; |
640 | |
641 | srcPtr++; |
642 | destPtr += 2; |
643 | } |
644 | destPtr += destWidth; |
645 | } |
646 | } |
647 | |