Subversion Repositories AndroidProjects

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
244 chris 1
if (mLockedSurfaceDesc.ddpfPixelFormat.dwRGBBitCount == 16)
2
{
3
	ushort* aDestPixelsRow = ((ushort*) mLockedSurfaceDesc.lpSurface) + (theY * mLockedSurfaceDesc.lPitch/2) + theX;
4
	uchar* aRLAlphaDataRow = aSrcRLAlphaData + (theSrcRect.mY * theImage->mWidth) + theSrcRect.mX;
5
 
6
	ulong aRMask = mLockedSurfaceDesc.ddpfPixelFormat.dwRBitMask;
7
	ulong aGMask = mLockedSurfaceDesc.ddpfPixelFormat.dwGBitMask;
8
	ulong aBMask = mLockedSurfaceDesc.ddpfPixelFormat.dwBBitMask;
9
 
10
	ulong aRRoundAdd = aRMask >> 1;
11
	ulong aGRoundAdd = aGMask >> 1;
12
	ulong aBRoundAdd = aBMask >> 1;
13
 
14
	if (theColor == Color::White)
15
	{
16
#ifdef OPTIMIZE_SOFTWARE_DRAWING
17
		if (aGMask == 0x7E0) // 5-6-5 optimizations
18
		{
19
			for (int y = 0; y < theSrcRect.mHeight; y++)
20
			{
21
				ushort* aDestPixels = aDestPixelsRow;
22
				uchar* aRLAlphaData = aRLAlphaDataRow;
23
 
24
				aSrcPixels = aSrcPixelsRow;
25
 
26
				for (int aSpanLeft = theSrcRect.mWidth; aSpanLeft > 0; )
27
				{
28
					ulong src = PEEK_SRC_COLOR;
29
					uchar rl = *aRLAlphaData;
30
 
31
					if (rl > aSpanLeft)
32
						rl = aSpanLeft;
33
 
34
					int oma = 256 - (src >> 24);
35
 
36
					if (oma == 1) // Fully opaque
37
					{
38
						for (int i = 0; i < rl; i++)
39
							*aDestPixels _PLUSPLUS = NEXT_SRC_COLOR;
40
					}
41
					else
42
					if (oma == 256) // Fully transparent
43
					{
44
						aDestPixels _PLUSEQUALS rl;
45
						aSrcPixels += rl;
46
					}
47
					else // Partially transparent
48
					{
49
						oma >>= 3;
50
						aSrcPixels++;
51
						ulong dest = (((*aDestPixels | (*aDestPixels << 16)) & 0x7E0F81F) * oma >> 5) & 0x7E0F81F;
52
						*(aDestPixels _PLUSPLUS) = src + (dest | (dest >> 16));
53
 
54
						for (int i = 1; i < rl; i++)
55
						{
56
							ulong src = NEXT_SRC_COLOR;
57
							int oma = (256 - (src >> 24)) >> 3;
58
							ulong dest = (((*aDestPixels | (*aDestPixels << 16)) & 0x7E0F81F) * oma >> 5) & 0x7E0F81F;
59
							*(aDestPixels _PLUSPLUS) = src + (dest | (dest >> 16));
60
						}
61
					}
62
 
63
					aRLAlphaData += rl;
64
					aSpanLeft -= rl;
65
				}
66
 
67
				aDestPixelsRow += mLockedSurfaceDesc.lPitch/2;
68
				aSrcPixelsRow += theImage->mWidth;
69
				aRLAlphaDataRow += theImage->mWidth;
70
			}
71
		}
72
		else if (aGMask == 0x3E0) // 5-5-5 optimizations
73
		{
74
			for (int y = 0; y < theSrcRect.mHeight; y++)
75
			{
76
				ushort* aDestPixels = aDestPixelsRow;
77
				uchar* aRLAlphaData = aRLAlphaDataRow;
78
 
79
				aSrcPixels = aSrcPixelsRow;
80
 
81
				for (int aSpanLeft = theSrcRect.mWidth; aSpanLeft > 0; )
82
				{
83
					ulong src = PEEK_SRC_COLOR;
84
					uchar rl = *aRLAlphaData;
85
 
86
					if (rl > aSpanLeft)
87
						rl = aSpanLeft;
88
 
89
					int oma = 256 - (src >> 24);
90
 
91
					if (oma == 1) // Fully opaque
92
					{
93
						for (int i = 0; i < rl; i++)
94
							*aDestPixels _PLUSPLUS = NEXT_SRC_COLOR;
95
					}
96
					else
97
					if (oma == 256) // Fully transparent
98
					{
99
						aDestPixels _PLUSEQUALS rl;
100
						aSrcPixels += rl;
101
					}
102
					else // Partially transparent
103
					{
104
						oma >>= 3;
105
						aSrcPixels++;
106
						ulong dest = (((*aDestPixels | (*aDestPixels << 16)) & 0x3E07C1F) * oma >> 5) & 0x3E07C1F;
107
						*(aDestPixels _PLUSPLUS) = src + (dest | (dest >> 16));
108
 
109
						for (int i = 1; i < rl; i++)
110
						{
111
							ulong src = NEXT_SRC_COLOR;
112
							int oma = (256 - (src >> 24)) >> 3;
113
							ulong dest = (((*aDestPixels | (*aDestPixels << 16)) & 0x3E07C1F) * oma >> 5) & 0x3E07C1F;
114
							*(aDestPixels _PLUSPLUS) = src + (dest | (dest >> 16));
115
						}
116
					}
117
 
118
					aRLAlphaData += rl;
119
					aSpanLeft -= rl;
120
				}
121
 
122
				aDestPixelsRow += mLockedSurfaceDesc.lPitch/2;
123
				aSrcPixelsRow += theImage->mWidth;
124
				aRLAlphaDataRow += theImage->mWidth;
125
			}
126
		}
127
		else
128
#endif
129
		{
130
			for (int y = 0; y < theSrcRect.mHeight; y++)
131
			{
132
				ushort* aDestPixels = aDestPixelsRow;
133
				uchar* aRLAlphaData = aRLAlphaDataRow;
134
 
135
				aSrcPixels = aSrcPixelsRow;
136
 
137
				for (int aSpanLeft = theSrcRect.mWidth; aSpanLeft > 0; )
138
				{
139
					ulong src = PEEK_SRC_COLOR;
140
					uchar rl = *aRLAlphaData;
141
 
142
					if (rl > aSpanLeft)
143
						rl = aSpanLeft;
144
 
145
					int oma = 256 - (src >> 24);
146
 
147
					if (oma == 1) // Fully opaque
148
					{
149
						for (int i = 0; i < rl; i++)
150
							*aDestPixels _PLUSPLUS = NEXT_SRC_COLOR;
151
					}
152
					else if (oma == 256) // Fully transparent
153
					{
154
						aDestPixels _PLUSEQUALS rl;
155
						aSrcPixels += rl;
156
					}
157
					else // Partially transparent
158
					{
159
						aSrcPixels++;
160
						ulong dest = *aDestPixels;
161
						*(aDestPixels _PLUSPLUS) = src +
162
							(((((dest & aRMask) * oma) ) >> 8) & aRMask) +
163
							(((((dest & aGMask) * oma) ) >> 8) & aGMask) +
164
							(((((dest & aBMask) * oma) ) >> 8) & aBMask);
165
 
166
						for (int i = 1; i < rl; i++)
167
						{
168
							ulong src = NEXT_SRC_COLOR;
169
							int oma = 256 - (src >> 24);
170
 
171
							ulong dest = *aDestPixels;
172
							*(aDestPixels _PLUSPLUS) = src +
173
								(((((dest & aRMask) * oma) ) >> 8) & aRMask) +
174
								(((((dest & aGMask) * oma) ) >> 8) & aGMask) +
175
								(((((dest & aBMask) * oma) ) >> 8) & aBMask);
176
						}
177
					}
178
 
179
					aRLAlphaData += rl;
180
					aSpanLeft -= rl;
181
				}
182
 
183
				aDestPixelsRow += mLockedSurfaceDesc.lPitch/2;
184
				aSrcPixelsRow += theImage->mWidth;
185
				aRLAlphaDataRow += theImage->mWidth;
186
			}
187
		}
188
	}
189
	else
190
	{
191
		int ca = theColor.mAlpha;
192
		int cr = (theColor.mRed * ca) / 255;
193
		int cg = (theColor.mGreen * ca) / 255;
194
		int cb = (theColor.mBlue * ca) / 255;
195
 
196
#ifdef OPTIMIZE_SOFTWARE_DRAWING
197
		bool performNormalBlit = true;
198
		if (cr == cg && cg == cb)
199
		{
200
			if (aGMask == 0x7E0)
201
			{
202
				performNormalBlit = false;
203
				cr >>= 3;
204
 
205
				for (int y = 0; y < theSrcRect.mHeight; y++)
206
				{
207
					ushort* aDestPixels = aDestPixelsRow;
208
					uchar* aRLAlphaData = aRLAlphaDataRow;
209
 
210
					aSrcPixels = aSrcPixelsRow;
211
 
212
					for (int aSpanLeft = theSrcRect.mWidth; aSpanLeft > 0; )
213
					{
214
						ulong src = PEEK_SRC_COLOR;
215
						uchar rl = *aRLAlphaData;
216
 
217
						if (rl > aSpanLeft)
218
							rl = aSpanLeft;
219
 
220
						int a = src >> 24;
221
 
222
						if ((a == 255) && (ca == 255)) // Fully opaque
223
						{
224
							for (int i = 0; i < rl; i++)
225
							{
226
								ulong src = NEXT_SRC_COLOR;
227
								ulong dest = (((( (src & 0xFFFF) | (src << 16)) & 0x7E0F81F) * cr) >> 5) & 0x7E0F81F;
228
								*(aDestPixels _PLUSPLUS) = dest | (dest >> 16);
229
							}
230
						}
231
						else if (a == 0) // Fully transparent
232
						{
233
							aDestPixels _PLUSEQUALS rl;
234
							aSrcPixels += rl;
235
						}
236
						else // Partially transparent
237
						{
238
							for (int i = 0; i < rl; i++)
239
							{
240
								ulong src = NEXT_SRC_COLOR;
241
 
242
								a = ((src >> 24) * ca) / 255;
243
								int oma = (256 - a) >> 3;
244
 
245
								ulong dest = (*aDestPixels | (*aDestPixels << 16)) & 0x7E0F81F;
246
								src &= 0xFFFF;
247
								src = ( (src & 0xFFFF) | (src << 16)) & 0x7E0F81F;
248
								dest = ((dest * oma + src * cr) >> 5) & 0x7E0F81F;
249
								*(aDestPixels _PLUSPLUS) = dest | (dest >> 16);
250
							}
251
						}
252
 
253
						aRLAlphaData += rl;
254
						aSpanLeft -= rl;
255
					}
256
 
257
					aDestPixelsRow += mLockedSurfaceDesc.lPitch/2;
258
					aSrcPixelsRow += theImage->mWidth;
259
					aRLAlphaDataRow += theImage->mWidth;
260
				}
261
			}
262
			else if (aGMask == 0x3E0)
263
			{
264
				performNormalBlit = false;
265
				cr >>= 3;
266
 
267
				for (int y = 0; y < theSrcRect.mHeight; y++)
268
				{
269
					ushort* aDestPixels = aDestPixelsRow;
270
					uchar* aRLAlphaData = aRLAlphaDataRow;
271
 
272
					aSrcPixels = aSrcPixelsRow;
273
 
274
					for (int aSpanLeft = theSrcRect.mWidth; aSpanLeft > 0; )
275
					{
276
						ulong src = PEEK_SRC_COLOR;
277
						uchar rl = *aRLAlphaData;
278
 
279
						if (rl > aSpanLeft)
280
							rl = aSpanLeft;
281
 
282
						int a = src >> 24;
283
 
284
						if ((a == 255) && (ca == 255)) // Fully opaque
285
						{
286
							for (int i = 0; i < rl; i++)
287
							{
288
								ulong src = NEXT_SRC_COLOR;
289
								ulong dest = (((( (src & 0xFFFF) | (src << 16)) & 0x3E07C1F) * cr) >> 5) & 0x3E07C1F;
290
								*(aDestPixels _PLUSPLUS) = dest | (dest >> 16);
291
							}
292
						}
293
						else if (a == 0) // Fully transparent
294
						{
295
							aDestPixels _PLUSEQUALS rl;
296
							aSrcPixels += rl;
297
						}
298
						else // Partially transparent
299
						{
300
							for (int i = 0; i < rl; i++)
301
							{
302
								ulong src = NEXT_SRC_COLOR;
303
 
304
								a = ((src >> 24) * ca) / 255;
305
								int oma = (256 - a) >> 3;
306
 
307
								ulong dest = (*aDestPixels | (*aDestPixels << 16)) & 0x3E07C1F;
308
								src &= 0xFFFF;
309
								src = ( (src & 0xFFFF) | (src << 16)) & 0x3E07C1F;
310
								dest = ((dest * oma + src * cr) >> 5) & 0x3E07C1F;
311
								*(aDestPixels _PLUSPLUS) = (dest | (dest >> 16));
312
							}
313
						}
314
 
315
						aRLAlphaData += rl;
316
						aSpanLeft -= rl;
317
					}
318
 
319
					aDestPixelsRow += mLockedSurfaceDesc.lPitch/2;
320
					aSrcPixelsRow += theImage->mWidth;
321
					aRLAlphaDataRow += theImage->mWidth;
322
				}
323
			}
324
		}
325
		if (performNormalBlit)
326
#endif
327
		{
328
			for (int y = 0; y < theSrcRect.mHeight; y++)
329
			{
330
				ushort* aDestPixels = aDestPixelsRow;
331
				uchar* aRLAlphaData = aRLAlphaDataRow;
332
 
333
				aSrcPixels = aSrcPixelsRow;
334
 
335
				for (int aSpanLeft = theSrcRect.mWidth; aSpanLeft > 0; )
336
				{
337
					ulong src = PEEK_SRC_COLOR;
338
					uchar rl = *aRLAlphaData;
339
 
340
					if (rl > aSpanLeft)
341
						rl = aSpanLeft;
342
 
343
					int a = src >> 24;
344
 
345
					if ((a == 255) && (ca == 255)) // Fully opaque
346
					{
347
						for (int i = 0; i < rl; i++)
348
						{
349
							ulong src = NEXT_SRC_COLOR;
350
							*(aDestPixels _PLUSPLUS) =
351
								(((((src & aRMask) * cr) ) >> 8) & aRMask) +
352
								(((((src & aGMask) * cg) ) >> 8) & aGMask) +
353
								(((((src & aBMask) * cb) ) >> 8) & aBMask);
354
						}
355
					}
356
					else if (a == 0) // Fully transparent
357
					{
358
						aDestPixels _PLUSEQUALS rl;
359
						aSrcPixels += rl;
360
					}
361
					else // Partially transparent
362
					{
363
						for (int i = 0; i < rl; i++)
364
						{
365
							ulong src = NEXT_SRC_COLOR;
366
 
367
							a = ((src >> 24) * ca) / 255;
368
							int oma = 256 - a;
369
 
370
							ulong dest = *aDestPixels;
371
							*(aDestPixels _PLUSPLUS) =
372
								(((((dest & aRMask) * oma) + ((src & aRMask) * cr) ) >> 8) & aRMask) +
373
								(((((dest & aGMask) * oma) + ((src & aGMask) * cg) ) >> 8) & aGMask) +
374
								(((((dest & aBMask) * oma) + ((src & aBMask) * cb) ) >> 8) & aBMask);
375
						}
376
					}
377
 
378
					aRLAlphaData += rl;
379
					aSpanLeft -= rl;
380
				}
381
 
382
				aDestPixelsRow += mLockedSurfaceDesc.lPitch/2;
383
				aSrcPixelsRow += theImage->mWidth;
384
				aRLAlphaDataRow += theImage->mWidth;
385
			}
386
		}
387
	}
388
}
389
else if (mLockedSurfaceDesc.ddpfPixelFormat.dwRGBBitCount == 32)
390
{
391
	ulong* aDestPixelsRow = ((ulong*) mLockedSurfaceDesc.lpSurface) + (theY * mLockedSurfaceDesc.lPitch/4) + theX;
392
	uchar* aRLAlphaDataRow = aSrcRLAlphaData + (theSrcRect.mY * theImage->mWidth) + theSrcRect.mX;
393
 
394
	ulong aRMask = mLockedSurfaceDesc.ddpfPixelFormat.dwRBitMask;
395
	ulong aGMask = mLockedSurfaceDesc.ddpfPixelFormat.dwGBitMask;
396
	ulong aBMask = mLockedSurfaceDesc.ddpfPixelFormat.dwBBitMask;
397
 
398
	ulong aRRoundAdd = aRMask >> 1;
399
	ulong aGRoundAdd = aGMask >> 1;
400
	ulong aBRoundAdd = aBMask >> 1;
401
 
402
	if (theColor == Color::White)
403
	{
404
		for (int y = 0; y < theSrcRect.mHeight; y++)
405
		{
406
			ulong* aDestPixels = aDestPixelsRow;
407
			uchar* aRLAlphaData = aRLAlphaDataRow;
408
 
409
			aSrcPixels = aSrcPixelsRow;
410
 
411
			for (int aSpanLeft = theSrcRect.mWidth; aSpanLeft > 0; )
412
			{
413
				ulong src = PEEK_SRC_COLOR;
414
				uchar rl = *aRLAlphaData;
415
 
416
				if (rl > aSpanLeft)
417
					rl = aSpanLeft;
418
 
419
				int oma = 256 - (src >> 24);
420
 
421
				if (oma == 1) // Fully opaque
422
				{
423
					for (int i = 0; i < rl; i++)
424
						*aDestPixels _PLUSPLUS = NEXT_SRC_COLOR;
425
				}
426
				else if (oma == 256) // Fully transparent
427
				{
428
					aDestPixels _PLUSEQUALS rl;
429
					aSrcPixels += rl;
430
				}
431
				else // Partially transparent
432
				{
433
#ifdef OPTIMIZE_SOFTWARE_DRAWING
434
					aSrcPixels++;
435
 
436
					int oma = 256 - (src >> 24);
437
					ulong dest = *aDestPixels;
438
 
439
					*(aDestPixels _PLUSPLUS) = src +
440
						((((dest & 0xFF00FF) * oma) >> 8) & 0xFF00FF) +
441
						((((dest & 0x00FF00) * oma) >> 8) & 0x00FF00);
442
 
443
					for (int i = 1; i < rl; i++)
444
					{
445
						ulong src = NEXT_SRC_COLOR;
446
						int oma = 256 - (src >> 24);
447
						ulong dest = *aDestPixels;
448
 
449
						*(aDestPixels _PLUSPLUS) = src +
450
							((((dest & 0xFF00FF) * oma) >> 8) & 0xFF00FF) +
451
							((((dest & 0x00FF00) * oma) >> 8) & 0x00FF00);
452
					}
453
#else
454
					aSrcPixels++;
455
					ulong dest = *aDestPixels;
456
					*(aDestPixels _PLUSPLUS) = src +
457
						(((((dest & aRMask) * oma)) >> 8) & aRMask) +
458
						(((((dest & aGMask) * oma)) >> 8) & aGMask) +
459
						(((((dest & aBMask) * oma)) >> 8) & aBMask);
460
 
461
					for (int i = 1; i < rl; i++)
462
					{
463
						ulong src = NEXT_SRC_COLOR;
464
						int oma = 256 - (src >> 24);
465
 
466
						ulong dest = *aDestPixels;
467
						*(aDestPixels _PLUSPLUS) = src +
468
							(((((dest & aRMask) * oma)) >> 8) & aRMask) +
469
							(((((dest & aGMask) * oma)) >> 8) & aGMask) +
470
							(((((dest & aBMask) * oma)) >> 8) & aBMask);
471
					}
472
#endif
473
				}
474
 
475
				aRLAlphaData += rl;
476
				aSpanLeft -= rl;
477
			}
478
 
479
			aDestPixelsRow += mLockedSurfaceDesc.lPitch/4;
480
			aSrcPixelsRow += theImage->mWidth;
481
			aRLAlphaDataRow += theImage->mWidth;
482
		}
483
	}
484
	else
485
	{
486
		int ca = theColor.mAlpha;
487
		int cr = (theColor.mRed * ca) / 255;
488
		int cg = (theColor.mGreen * ca) / 255;
489
		int cb = (theColor.mBlue * ca) / 255;
490
 
491
#ifdef OPTIMIZE_SOFTWARE_DRAWING
492
		bool performNormalBlit = true;
493
		if (cr == cg && cg == cb)
494
		{
495
			performNormalBlit = false;
496
			for (int y = 0; y < theSrcRect.mHeight; y++)
497
			{
498
				ulong* aDestPixels = aDestPixelsRow;
499
				uchar* aRLAlphaData = aRLAlphaDataRow;
500
 
501
				aSrcPixels = aSrcPixelsRow;
502
 
503
				for (int aSpanLeft = theSrcRect.mWidth; aSpanLeft > 0; )
504
				{
505
					ulong src = PEEK_SRC_COLOR;
506
					uchar rl = *aRLAlphaData;
507
 
508
					if (rl > aSpanLeft)
509
						rl = aSpanLeft;
510
 
511
					int a = src >> 24;
512
 
513
					if ((a == 255) && (ca == 255)) // Fully opaque
514
					{
515
						for (int i = 0; i < rl; i++)
516
						{
517
							ulong src = NEXT_SRC_COLOR;
518
							*(aDestPixels _PLUSPLUS) =
519
								((((src & 0xFF00FF) * cr) >> 8) & 0xFF00FF) +
520
								((((src & 0x00FF00) * cr) >> 8) & 0x00FF00);
521
						}
522
					}
523
					else if (a == 0) // Fully transparent
524
					{
525
						aDestPixels _PLUSEQUALS rl;
526
						aSrcPixels += rl;
527
					}
528
					else // Partially transparent
529
					{
530
						for (int i = 0; i < rl; i++)
531
						{
532
							ulong src = NEXT_SRC_COLOR;
533
 
534
							a = ((src >> 24) * ca) / 255;
535
							int oma = 256 - a;
536
 
537
							ulong dest = *aDestPixels;
538
							*(aDestPixels _PLUSPLUS) =
539
								((((dest & 0xFF00FF) * oma + (src & 0xFF00FF) * cr) >> 8) & 0xFF00FF) +
540
								((((dest & 0x00FF00) * oma + (src & 0x00FF00) * cr) >> 8) & 0x00FF00);
541
						}
542
					}
543
 
544
					aRLAlphaData += rl;
545
					aSpanLeft -= rl;
546
				}
547
 
548
				aDestPixelsRow += mLockedSurfaceDesc.lPitch/4;
549
				aSrcPixelsRow += theImage->mWidth;
550
				aRLAlphaDataRow += theImage->mWidth;
551
			}
552
		}
553
		if (performNormalBlit)
554
#endif
555
		{
556
			for (int y = 0; y < theSrcRect.mHeight; y++)
557
			{
558
				ulong* aDestPixels = aDestPixelsRow;
559
				uchar* aRLAlphaData = aRLAlphaDataRow;
560
 
561
				aSrcPixels = aSrcPixelsRow;
562
 
563
				for (int aSpanLeft = theSrcRect.mWidth; aSpanLeft > 0; )
564
				{
565
					ulong src = PEEK_SRC_COLOR;
566
					uchar rl = *aRLAlphaData;
567
 
568
					if (rl > aSpanLeft)
569
						rl = aSpanLeft;
570
 
571
					int a = src >> 24;
572
 
573
					if ((a == 255) && (ca == 255)) // Fully opaque
574
					{
575
						for (int i = 0; i < rl; i++)
576
						{
577
							ulong src = NEXT_SRC_COLOR;
578
							*(aDestPixels _PLUSPLUS) =
579
								(((((src & aRMask) * cr)) >> 8) & aRMask) +
580
								(((((src & aGMask) * cg)) >> 8) & aGMask) +
581
								(((((src & aBMask) * cb)) >> 8) & aBMask);
582
						}
583
					}
584
					else if (a == 0) // Fully transparent
585
					{
586
						aDestPixels _PLUSEQUALS rl;
587
						aSrcPixels += rl;
588
					}
589
					else // Partially transparent
590
					{
591
						for (int i = 0; i < rl; i++)
592
						{
593
							ulong src = NEXT_SRC_COLOR;
594
 
595
							a = ((src >> 24) * ca) / 255;
596
							int oma = 256 - a;
597
 
598
							ulong dest = *aDestPixels;
599
							*(aDestPixels _PLUSPLUS) =
600
								(((((dest & aRMask) * oma) + ((src & aRMask) * cr)) >> 8) & aRMask) +
601
								(((((dest & aGMask) * oma) + ((src & aGMask) * cg)) >> 8) & aGMask) +
602
								(((((dest & aBMask) * oma) + ((src & aBMask) * cb)) >> 8) & aBMask);
603
						}
604
					}
605
 
606
					aRLAlphaData += rl;
607
					aSpanLeft -= rl;
608
				}
609
 
610
				aDestPixelsRow += mLockedSurfaceDesc.lPitch/4;
611
				aSrcPixelsRow += theImage->mWidth;
612
				aRLAlphaDataRow += theImage->mWidth;
613
			}
614
		}
615
	}
616
}