Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Latest commit

 

History

History
554 lines (510 loc) · 12.2 KB

SDL_blit_1.c

File metadata and controls

554 lines (510 loc) · 12.2 KB
 
Apr 26, 2001
Apr 26, 2001
1
2
/*
SDL - Simple DirectMedia Layer
Feb 12, 2011
Feb 12, 2011
3
Copyright (C) 1997-2011 Sam Lantinga
Apr 26, 2001
Apr 26, 2001
4
5
This library is free software; you can redistribute it and/or
Feb 1, 2006
Feb 1, 2006
6
modify it under the terms of the GNU Lesser General Public
Apr 26, 2001
Apr 26, 2001
7
License as published by the Free Software Foundation; either
Feb 1, 2006
Feb 1, 2006
8
version 2.1 of the License, or (at your option) any later version.
Apr 26, 2001
Apr 26, 2001
9
10
11
12
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Feb 1, 2006
Feb 1, 2006
13
Lesser General Public License for more details.
Apr 26, 2001
Apr 26, 2001
14
Feb 1, 2006
Feb 1, 2006
15
16
17
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Apr 26, 2001
Apr 26, 2001
18
19
Sam Lantinga
Dec 14, 2001
Dec 14, 2001
20
slouken@libsdl.org
Apr 26, 2001
Apr 26, 2001
21
*/
Feb 21, 2006
Feb 21, 2006
22
#include "SDL_config.h"
Apr 26, 2001
Apr 26, 2001
23
24
25
26
27
28
29
30
#include "SDL_video.h"
#include "SDL_blit.h"
#include "SDL_sysvideo.h"
#include "SDL_endian.h"
/* Functions to blit from 8-bit surfaces to other surfaces */
Jul 10, 2006
Jul 10, 2006
31
32
static void
Blit1to1(SDL_BlitInfo * info)
Apr 26, 2001
Apr 26, 2001
33
34
{
#ifndef USE_DUFFS_LOOP
Jul 10, 2006
Jul 10, 2006
35
int c;
Apr 26, 2001
Apr 26, 2001
36
#endif
Jul 10, 2006
Jul 10, 2006
37
38
39
40
41
int width, height;
Uint8 *src, *map, *dst;
int srcskip, dstskip;
/* Set up some basic variables */
Aug 17, 2007
Aug 17, 2007
42
43
44
width = info->dst_w;
height = info->dst_h;
src = info->src;
Aug 18, 2007
Aug 18, 2007
45
srcskip = info->src_skip;
Aug 17, 2007
Aug 17, 2007
46
dst = info->dst;
Aug 18, 2007
Aug 18, 2007
47
dstskip = info->dst_skip;
Jul 10, 2006
Jul 10, 2006
48
49
50
map = info->table;
while (height--) {
Apr 26, 2001
Apr 26, 2001
51
#ifdef USE_DUFFS_LOOP
Jul 10, 2006
Jul 10, 2006
52
/* *INDENT-OFF* */
Apr 26, 2001
Apr 26, 2001
53
54
55
56
57
58
59
DUFFS_LOOP(
{
*dst = map[*src];
}
dst++;
src++;
, width);
Jul 10, 2006
Jul 10, 2006
60
/* *INDENT-ON* */
Apr 26, 2001
Apr 26, 2001
61
#else
Jul 10, 2006
Jul 10, 2006
62
63
64
65
66
for (c = width; c; --c) {
*dst = map[*src];
dst++;
src++;
}
Apr 26, 2001
Apr 26, 2001
67
#endif
Jul 10, 2006
Jul 10, 2006
68
69
70
src += srcskip;
dst += dstskip;
}
Apr 26, 2001
Apr 26, 2001
71
}
Jul 10, 2006
Jul 10, 2006
72
Apr 26, 2001
Apr 26, 2001
73
74
75
76
77
78
79
80
/* This is now endian dependent */
#if ( SDL_BYTEORDER == SDL_LIL_ENDIAN )
#define HI 1
#define LO 0
#else /* ( SDL_BYTEORDER == SDL_BIG_ENDIAN ) */
#define HI 0
#define LO 1
#endif
Jul 10, 2006
Jul 10, 2006
81
82
static void
Blit1to2(SDL_BlitInfo * info)
Apr 26, 2001
Apr 26, 2001
83
84
{
#ifndef USE_DUFFS_LOOP
Jul 10, 2006
Jul 10, 2006
85
int c;
Apr 26, 2001
Apr 26, 2001
86
#endif
Jul 10, 2006
Jul 10, 2006
87
88
89
90
91
92
int width, height;
Uint8 *src, *dst;
Uint16 *map;
int srcskip, dstskip;
/* Set up some basic variables */
Aug 17, 2007
Aug 17, 2007
93
94
95
width = info->dst_w;
height = info->dst_h;
src = info->src;
Aug 18, 2007
Aug 18, 2007
96
srcskip = info->src_skip;
Aug 17, 2007
Aug 17, 2007
97
dst = info->dst;
Aug 18, 2007
Aug 18, 2007
98
dstskip = info->dst_skip;
Jul 10, 2006
Jul 10, 2006
99
map = (Uint16 *) info->table;
Apr 26, 2001
Apr 26, 2001
100
101
#ifdef USE_DUFFS_LOOP
Jul 10, 2006
Jul 10, 2006
102
103
while (height--) {
/* *INDENT-OFF* */
Apr 26, 2001
Apr 26, 2001
104
105
106
107
108
109
DUFFS_LOOP(
{
*(Uint16 *)dst = map[*src++];
dst += 2;
},
width);
Jul 10, 2006
Jul 10, 2006
110
111
112
113
/* *INDENT-ON* */
src += srcskip;
dst += dstskip;
}
Apr 26, 2001
Apr 26, 2001
114
#else
Jul 10, 2006
Jul 10, 2006
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
/* Memory align at 4-byte boundary, if necessary */
if ((long) dst & 0x03) {
/* Don't do anything if width is 0 */
if (width == 0) {
return;
}
--width;
while (height--) {
/* Perform copy alignment */
*(Uint16 *) dst = map[*src++];
dst += 2;
/* Copy in 4 pixel chunks */
for (c = width / 4; c; --c) {
*(Uint32 *) dst = (map[src[HI]] << 16) | (map[src[LO]]);
src += 2;
dst += 4;
*(Uint32 *) dst = (map[src[HI]] << 16) | (map[src[LO]]);
src += 2;
dst += 4;
}
/* Get any leftovers */
switch (width & 3) {
case 3:
*(Uint16 *) dst = map[*src++];
dst += 2;
case 2:
*(Uint32 *) dst = (map[src[HI]] << 16) | (map[src[LO]]);
src += 2;
dst += 4;
break;
case 1:
*(Uint16 *) dst = map[*src++];
dst += 2;
break;
}
src += srcskip;
dst += dstskip;
}
} else {
while (height--) {
/* Copy in 4 pixel chunks */
for (c = width / 4; c; --c) {
*(Uint32 *) dst = (map[src[HI]] << 16) | (map[src[LO]]);
src += 2;
dst += 4;
*(Uint32 *) dst = (map[src[HI]] << 16) | (map[src[LO]]);
src += 2;
dst += 4;
}
/* Get any leftovers */
switch (width & 3) {
case 3:
*(Uint16 *) dst = map[*src++];
dst += 2;
case 2:
*(Uint32 *) dst = (map[src[HI]] << 16) | (map[src[LO]]);
src += 2;
dst += 4;
break;
case 1:
*(Uint16 *) dst = map[*src++];
dst += 2;
break;
}
src += srcskip;
dst += dstskip;
}
}
Apr 26, 2001
Apr 26, 2001
185
186
#endif /* USE_DUFFS_LOOP */
}
Aug 27, 2008
Aug 27, 2008
187
Jul 10, 2006
Jul 10, 2006
188
189
static void
Blit1to3(SDL_BlitInfo * info)
Apr 26, 2001
Apr 26, 2001
190
191
{
#ifndef USE_DUFFS_LOOP
Jul 10, 2006
Jul 10, 2006
192
int c;
Apr 26, 2001
Apr 26, 2001
193
#endif
Jul 10, 2006
Jul 10, 2006
194
195
196
197
198
199
int o;
int width, height;
Uint8 *src, *map, *dst;
int srcskip, dstskip;
/* Set up some basic variables */
Aug 17, 2007
Aug 17, 2007
200
201
202
width = info->dst_w;
height = info->dst_h;
src = info->src;
Aug 18, 2007
Aug 18, 2007
203
srcskip = info->src_skip;
Aug 17, 2007
Aug 17, 2007
204
dst = info->dst;
Aug 18, 2007
Aug 18, 2007
205
dstskip = info->dst_skip;
Jul 10, 2006
Jul 10, 2006
206
207
208
map = info->table;
while (height--) {
Apr 26, 2001
Apr 26, 2001
209
#ifdef USE_DUFFS_LOOP
Jul 10, 2006
Jul 10, 2006
210
/* *INDENT-OFF* */
Apr 26, 2001
Apr 26, 2001
211
212
213
214
215
216
217
218
219
220
DUFFS_LOOP(
{
o = *src * 4;
dst[0] = map[o++];
dst[1] = map[o++];
dst[2] = map[o++];
}
src++;
dst += 3;
, width);
Jul 10, 2006
Jul 10, 2006
221
/* *INDENT-ON* */
Apr 26, 2001
Apr 26, 2001
222
#else
Jul 10, 2006
Jul 10, 2006
223
224
225
226
227
228
229
230
for (c = width; c; --c) {
o = *src * 4;
dst[0] = map[o++];
dst[1] = map[o++];
dst[2] = map[o++];
src++;
dst += 3;
}
Apr 26, 2001
Apr 26, 2001
231
#endif /* USE_DUFFS_LOOP */
Jul 10, 2006
Jul 10, 2006
232
233
234
src += srcskip;
dst += dstskip;
}
Apr 26, 2001
Apr 26, 2001
235
}
Aug 27, 2008
Aug 27, 2008
236
Jul 10, 2006
Jul 10, 2006
237
238
static void
Blit1to4(SDL_BlitInfo * info)
Apr 26, 2001
Apr 26, 2001
239
240
{
#ifndef USE_DUFFS_LOOP
Jul 10, 2006
Jul 10, 2006
241
int c;
Apr 26, 2001
Apr 26, 2001
242
#endif
Jul 10, 2006
Jul 10, 2006
243
244
245
246
247
248
int width, height;
Uint8 *src;
Uint32 *map, *dst;
int srcskip, dstskip;
/* Set up some basic variables */
Aug 17, 2007
Aug 17, 2007
249
250
251
width = info->dst_w;
height = info->dst_h;
src = info->src;
Aug 18, 2007
Aug 18, 2007
252
srcskip = info->src_skip;
Aug 17, 2007
Aug 17, 2007
253
dst = (Uint32 *) info->dst;
Aug 18, 2007
Aug 18, 2007
254
dstskip = info->dst_skip / 4;
Jul 10, 2006
Jul 10, 2006
255
256
257
map = (Uint32 *) info->table;
while (height--) {
Apr 26, 2001
Apr 26, 2001
258
#ifdef USE_DUFFS_LOOP
Jul 10, 2006
Jul 10, 2006
259
/* *INDENT-OFF* */
Apr 26, 2001
Apr 26, 2001
260
261
262
DUFFS_LOOP(
*dst++ = map[*src++];
, width);
Jul 10, 2006
Jul 10, 2006
263
/* *INDENT-ON* */
Apr 26, 2001
Apr 26, 2001
264
#else
Jul 10, 2006
Jul 10, 2006
265
266
267
268
269
270
271
272
273
274
275
276
277
278
for (c = width / 4; c; --c) {
*dst++ = map[*src++];
*dst++ = map[*src++];
*dst++ = map[*src++];
*dst++ = map[*src++];
}
switch (width & 3) {
case 3:
*dst++ = map[*src++];
case 2:
*dst++ = map[*src++];
case 1:
*dst++ = map[*src++];
}
Apr 26, 2001
Apr 26, 2001
279
#endif /* USE_DUFFS_LOOP */
Jul 10, 2006
Jul 10, 2006
280
281
282
src += srcskip;
dst += dstskip;
}
Apr 26, 2001
Apr 26, 2001
283
284
}
Jul 10, 2006
Jul 10, 2006
285
286
static void
Blit1to1Key(SDL_BlitInfo * info)
Apr 26, 2001
Apr 26, 2001
287
{
Aug 17, 2007
Aug 17, 2007
288
289
290
int width = info->dst_w;
int height = info->dst_h;
Uint8 *src = info->src;
Aug 18, 2007
Aug 18, 2007
291
int srcskip = info->src_skip;
Aug 17, 2007
Aug 17, 2007
292
Uint8 *dst = info->dst;
Aug 18, 2007
Aug 18, 2007
293
int dstskip = info->dst_skip;
Jul 10, 2006
Jul 10, 2006
294
Uint8 *palmap = info->table;
Aug 18, 2007
Aug 18, 2007
295
Uint32 ckey = info->colorkey;
Jul 10, 2006
Jul 10, 2006
296
297
298
299
if (palmap) {
while (height--) {
/* *INDENT-OFF* */
Apr 26, 2001
Apr 26, 2001
300
301
302
303
304
305
306
307
308
DUFFS_LOOP(
{
if ( *src != ckey ) {
*dst = palmap[*src];
}
dst++;
src++;
},
width);
Jul 10, 2006
Jul 10, 2006
309
310
311
312
313
314
315
/* *INDENT-ON* */
src += srcskip;
dst += dstskip;
}
} else {
while (height--) {
/* *INDENT-OFF* */
Apr 26, 2001
Apr 26, 2001
316
317
318
319
320
321
322
323
324
DUFFS_LOOP(
{
if ( *src != ckey ) {
*dst = *src;
}
dst++;
src++;
},
width);
Jul 10, 2006
Jul 10, 2006
325
326
327
328
329
/* *INDENT-ON* */
src += srcskip;
dst += dstskip;
}
}
Apr 26, 2001
Apr 26, 2001
330
331
}
Jul 10, 2006
Jul 10, 2006
332
333
static void
Blit1to2Key(SDL_BlitInfo * info)
Apr 26, 2001
Apr 26, 2001
334
{
Aug 17, 2007
Aug 17, 2007
335
336
337
int width = info->dst_w;
int height = info->dst_h;
Uint8 *src = info->src;
Aug 18, 2007
Aug 18, 2007
338
int srcskip = info->src_skip;
Aug 17, 2007
Aug 17, 2007
339
Uint16 *dstp = (Uint16 *) info->dst;
Aug 18, 2007
Aug 18, 2007
340
int dstskip = info->dst_skip;
Jul 10, 2006
Jul 10, 2006
341
Uint16 *palmap = (Uint16 *) info->table;
Aug 18, 2007
Aug 18, 2007
342
Uint32 ckey = info->colorkey;
Jul 10, 2006
Jul 10, 2006
343
344
345
346
347
348
/* Set up some basic variables */
dstskip /= 2;
while (height--) {
/* *INDENT-OFF* */
Apr 26, 2001
Apr 26, 2001
349
350
351
352
353
354
355
356
357
DUFFS_LOOP(
{
if ( *src != ckey ) {
*dstp=palmap[*src];
}
src++;
dstp++;
},
width);
Jul 10, 2006
Jul 10, 2006
358
359
360
361
/* *INDENT-ON* */
src += srcskip;
dstp += dstskip;
}
Apr 26, 2001
Apr 26, 2001
362
363
}
Jul 10, 2006
Jul 10, 2006
364
365
static void
Blit1to3Key(SDL_BlitInfo * info)
Apr 26, 2001
Apr 26, 2001
366
{
Aug 17, 2007
Aug 17, 2007
367
368
369
int width = info->dst_w;
int height = info->dst_h;
Uint8 *src = info->src;
Aug 18, 2007
Aug 18, 2007
370
int srcskip = info->src_skip;
Aug 17, 2007
Aug 17, 2007
371
Uint8 *dst = info->dst;
Aug 18, 2007
Aug 18, 2007
372
int dstskip = info->dst_skip;
Jul 10, 2006
Jul 10, 2006
373
Uint8 *palmap = info->table;
Aug 18, 2007
Aug 18, 2007
374
Uint32 ckey = info->colorkey;
Jul 10, 2006
Jul 10, 2006
375
376
377
378
int o;
while (height--) {
/* *INDENT-OFF* */
Apr 26, 2001
Apr 26, 2001
379
380
381
382
383
384
385
386
387
388
389
390
DUFFS_LOOP(
{
if ( *src != ckey ) {
o = *src * 4;
dst[0] = palmap[o++];
dst[1] = palmap[o++];
dst[2] = palmap[o++];
}
src++;
dst += 3;
},
width);
Jul 10, 2006
Jul 10, 2006
391
392
393
394
/* *INDENT-ON* */
src += srcskip;
dst += dstskip;
}
Apr 26, 2001
Apr 26, 2001
395
396
}
Jul 10, 2006
Jul 10, 2006
397
398
static void
Blit1to4Key(SDL_BlitInfo * info)
Apr 26, 2001
Apr 26, 2001
399
{
Aug 17, 2007
Aug 17, 2007
400
401
402
int width = info->dst_w;
int height = info->dst_h;
Uint8 *src = info->src;
Aug 18, 2007
Aug 18, 2007
403
int srcskip = info->src_skip;
Aug 17, 2007
Aug 17, 2007
404
Uint32 *dstp = (Uint32 *) info->dst;
Aug 18, 2007
Aug 18, 2007
405
int dstskip = info->dst_skip;
Jul 10, 2006
Jul 10, 2006
406
Uint32 *palmap = (Uint32 *) info->table;
Aug 18, 2007
Aug 18, 2007
407
Uint32 ckey = info->colorkey;
Jul 10, 2006
Jul 10, 2006
408
409
410
411
412
413
/* Set up some basic variables */
dstskip /= 4;
while (height--) {
/* *INDENT-OFF* */
Apr 26, 2001
Apr 26, 2001
414
415
416
417
418
419
420
421
422
DUFFS_LOOP(
{
if ( *src != ckey ) {
*dstp = palmap[*src];
}
src++;
dstp++;
},
width);
Jul 10, 2006
Jul 10, 2006
423
424
425
426
/* *INDENT-ON* */
src += srcskip;
dstp += dstskip;
}
Apr 26, 2001
Apr 26, 2001
427
428
}
Jul 10, 2006
Jul 10, 2006
429
430
static void
Blit1toNAlpha(SDL_BlitInfo * info)
Apr 26, 2001
Apr 26, 2001
431
{
Aug 17, 2007
Aug 17, 2007
432
433
434
int width = info->dst_w;
int height = info->dst_h;
Uint8 *src = info->src;
Aug 18, 2007
Aug 18, 2007
435
int srcskip = info->src_skip;
Aug 17, 2007
Aug 17, 2007
436
Uint8 *dst = info->dst;
Aug 18, 2007
Aug 18, 2007
437
438
439
int dstskip = info->dst_skip;
SDL_PixelFormat *dstfmt = info->dst_fmt;
const SDL_Color *srcpal = info->src_fmt->palette->colors;
Jul 10, 2006
Jul 10, 2006
440
int dstbpp;
Aug 18, 2007
Aug 18, 2007
441
const int A = info->a;
Jul 10, 2006
Jul 10, 2006
442
443
444
445
446
447
448
449
/* Set up some basic variables */
dstbpp = dstfmt->BytesPerPixel;
while (height--) {
int sR, sG, sB;
int dR, dG, dB;
/* *INDENT-OFF* */
Apr 26, 2001
Apr 26, 2001
450
451
452
453
454
455
456
457
458
459
460
461
462
463
DUFFS_LOOP4(
{
Uint32 pixel;
sR = srcpal[*src].r;
sG = srcpal[*src].g;
sB = srcpal[*src].b;
DISEMBLE_RGB(dst, dstbpp, dstfmt,
pixel, dR, dG, dB);
ALPHA_BLEND(sR, sG, sB, A, dR, dG, dB);
ASSEMBLE_RGB(dst, dstbpp, dstfmt, dR, dG, dB);
src++;
dst += dstbpp;
},
width);
Jul 10, 2006
Jul 10, 2006
464
465
466
467
/* *INDENT-ON* */
src += srcskip;
dst += dstskip;
}
Apr 26, 2001
Apr 26, 2001
468
469
}
Jul 10, 2006
Jul 10, 2006
470
471
static void
Blit1toNAlphaKey(SDL_BlitInfo * info)
Apr 26, 2001
Apr 26, 2001
472
{
Aug 17, 2007
Aug 17, 2007
473
474
475
int width = info->dst_w;
int height = info->dst_h;
Uint8 *src = info->src;
Aug 18, 2007
Aug 18, 2007
476
int srcskip = info->src_skip;
Aug 17, 2007
Aug 17, 2007
477
Uint8 *dst = info->dst;
Aug 18, 2007
Aug 18, 2007
478
479
480
481
482
int dstskip = info->dst_skip;
SDL_PixelFormat *srcfmt = info->src_fmt;
SDL_PixelFormat *dstfmt = info->dst_fmt;
const SDL_Color *srcpal = info->src_fmt->palette->colors;
Uint32 ckey = info->colorkey;
Jul 10, 2006
Jul 10, 2006
483
int dstbpp;
Aug 18, 2007
Aug 18, 2007
484
const int A = info->a;
Jul 10, 2006
Jul 10, 2006
485
486
487
488
489
490
491
492
/* Set up some basic variables */
dstbpp = dstfmt->BytesPerPixel;
while (height--) {
int sR, sG, sB;
int dR, dG, dB;
/* *INDENT-OFF* */
Apr 26, 2001
Apr 26, 2001
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
DUFFS_LOOP(
{
if ( *src != ckey ) {
Uint32 pixel;
sR = srcpal[*src].r;
sG = srcpal[*src].g;
sB = srcpal[*src].b;
DISEMBLE_RGB(dst, dstbpp, dstfmt,
pixel, dR, dG, dB);
ALPHA_BLEND(sR, sG, sB, A, dR, dG, dB);
ASSEMBLE_RGB(dst, dstbpp, dstfmt, dR, dG, dB);
}
src++;
dst += dstbpp;
},
width);
Jul 10, 2006
Jul 10, 2006
509
510
511
512
/* *INDENT-ON* */
src += srcskip;
dst += dstskip;
}
Apr 26, 2001
Apr 26, 2001
513
514
}
Jun 3, 2009
Jun 3, 2009
515
static const SDL_BlitFunc one_blit[] = {
Jul 10, 2006
Jul 10, 2006
516
NULL, Blit1to1, Blit1to2, Blit1to3, Blit1to4
Apr 26, 2001
Apr 26, 2001
517
518
};
Jun 3, 2009
Jun 3, 2009
519
static const SDL_BlitFunc one_blitkey[] = {
Jul 10, 2006
Jul 10, 2006
520
NULL, Blit1to1Key, Blit1to2Key, Blit1to3Key, Blit1to4Key
Apr 26, 2001
Apr 26, 2001
521
522
};
Aug 18, 2007
Aug 18, 2007
523
524
SDL_BlitFunc
SDL_CalculateBlit1(SDL_Surface * surface)
Apr 26, 2001
Apr 26, 2001
525
{
Jul 10, 2006
Jul 10, 2006
526
527
528
529
530
531
532
533
534
int which;
SDL_PixelFormat *dstfmt;
dstfmt = surface->map->dst->format;
if (dstfmt->BitsPerPixel < 8) {
which = 0;
} else {
which = dstfmt->BytesPerPixel;
}
Dec 7, 2008
Dec 7, 2008
535
switch (surface->map->info.flags & ~SDL_COPY_RLE_MASK) {
Aug 18, 2007
Aug 18, 2007
536
case 0:
Jul 10, 2006
Jul 10, 2006
537
538
return one_blit[which];
Aug 18, 2007
Aug 18, 2007
539
case SDL_COPY_COLORKEY:
Jul 10, 2006
Jul 10, 2006
540
541
return one_blitkey[which];
Aug 18, 2007
Aug 18, 2007
542
case SDL_COPY_MODULATE_ALPHA | SDL_COPY_BLEND:
Jul 10, 2006
Jul 10, 2006
543
544
545
546
547
/* Supporting 8bpp->8bpp alpha is doable but requires lots of
tables which consume space and takes time to precompute,
so is better left to the user */
return which >= 2 ? Blit1toNAlpha : NULL;
Aug 18, 2007
Aug 18, 2007
548
case SDL_COPY_COLORKEY | SDL_COPY_MODULATE_ALPHA | SDL_COPY_BLEND:
Jul 10, 2006
Jul 10, 2006
549
550
551
return which >= 2 ? Blit1toNAlphaKey : NULL;
}
return NULL;
Apr 26, 2001
Apr 26, 2001
552
}
Jul 10, 2006
Jul 10, 2006
553
554
/* vi: set ts=4 sw=4 expandtab: */