20
20
#include "surface.h"
24
surface_fill_blend_add (SDL_Surface *surface, SDL_Rect *rect, Uint32 color)
30
int bpp = surface->format->BytesPerPixel;
32
SDL_PixelFormat *fmt = surface->format;
33
Uint8 sR, sG, sB, sA, cR, cG, cB, cA;
37
int ppa = (surface->flags & SDL_SRCALPHA && fmt->Amask);
39
pixels = (Uint8 *) surface->pixels + surface->offset +
40
(Uint16) rect->y * surface->pitch + (Uint16) rect->x * bpp;
41
skip = surface->pitch - width * bpp;
47
SDL_GetRGBA (color, fmt, &cR, &cG, &cB, &cA);
52
GET_PIXELVALS_1 (sR, sG, sB, sA, pixels, fmt);
53
BLEND_ADD (tmp, cR, cG, cB, cA, sR, sG, sB, sA);
54
*pixels = SDL_MapRGBA (fmt, sR, sG, sB, sA);
64
size_t offsetR, offsetG, offsetB;
65
SET_OFFSETS_24 (offsetR, offsetG, offsetB, fmt);
66
GET_PIXELVALS (cR, cG, cB, cA, color, fmt, ppa);
71
GET_PIXEL (pixel, bpp, pixels);
72
GET_PIXELVALS (sR, sG, sB, sA, pixel, fmt, ppa);
73
BLEND_ADD (tmp, cR, cG, cB, cA, sR, sG, sB, sA);
86
GET_PIXELVALS (cR, cG, cB, cA, color, fmt, ppa);
88
printf ("Color: %d, %d, %d, %d, BPP is: %d\n", cR, cG, cB, cA, bpp);
94
GET_PIXEL (pixel, bpp, pixels);
95
GET_PIXELVALS (sR, sG, sB, sA, pixel, fmt, ppa);
96
BLEND_ADD (tmp, cR, cG, cB, cA, sR, sG, sB, sA);
97
CREATE_PIXEL(pixels, sR, sG, sB, sA, bpp, fmt);
110
surface_fill_blend_sub (SDL_Surface *surface, SDL_Rect *rect, Uint32 color)
114
int height = rect->h;
116
int bpp = surface->format->BytesPerPixel;
118
SDL_PixelFormat *fmt = surface->format;
119
Uint8 sR, sG, sB, sA, cR, cG, cB, cA;
123
int ppa = (surface->flags & SDL_SRCALPHA && fmt->Amask);
125
pixels = (Uint8 *) surface->pixels + surface->offset +
126
(Uint16) rect->y * surface->pitch + (Uint16) rect->x * bpp;
127
skip = surface->pitch - width * bpp;
133
SDL_GetRGBA (color, fmt, &cR, &cG, &cB, &cA);
138
GET_PIXELVALS_1 (sR, sG, sB, sA, pixels, fmt);
139
BLEND_SUB (tmp2, cR, cG, cB, cA, sR, sG, sB, sA);
140
*pixels = SDL_MapRGBA (fmt, sR, sG, sB, sA);
150
size_t offsetR, offsetG, offsetB;
151
SET_OFFSETS_24 (offsetR, offsetG, offsetB, fmt);
152
GET_PIXELVALS (cR, cG, cB, cA, color, fmt, ppa);
157
GET_PIXEL (pixel, bpp, pixels);
158
GET_PIXELVALS (sR, sG, sB, sA, pixel, fmt, ppa);
159
BLEND_SUB (tmp2, cR, cG, cB, cA, sR, sG, sB, sA);
160
pixels[offsetR] = sR;
161
pixels[offsetG] = sG;
162
pixels[offsetB] = sB;
172
GET_PIXELVALS (cR, cG, cB, cA, color, fmt, ppa);
174
printf ("Color: %d, %d, %d, %d, BPP is: %d\n", cR, cG, cB, cA, bpp);
180
GET_PIXEL (pixel, bpp, pixels);
181
GET_PIXELVALS (sR, sG, sB, sA, pixel, fmt, ppa);
182
BLEND_SUB (tmp2, cR, cG, cB, cA, sR, sG, sB, sA);
183
CREATE_PIXEL(pixels, sR, sG, sB, sA, bpp, fmt);
196
surface_fill_blend_mult (SDL_Surface *surface, SDL_Rect *rect, Uint32 color)
200
int height = rect->h;
202
int bpp = surface->format->BytesPerPixel;
204
SDL_PixelFormat *fmt = surface->format;
205
Uint8 sR, sG, sB, sA, cR, cG, cB, cA;
208
int ppa = (surface->flags & SDL_SRCALPHA && fmt->Amask);
210
pixels = (Uint8 *) surface->pixels + surface->offset +
211
(Uint16) rect->y * surface->pitch + (Uint16) rect->x * bpp;
212
skip = surface->pitch - width * bpp;
218
SDL_GetRGBA (color, fmt, &cR, &cG, &cB, &cA);
223
GET_PIXELVALS_1 (sR, sG, sB, sA, pixels, fmt);
224
BLEND_MULT (cR, cG, cB, cA, sR, sG, sB, sA);
225
*pixels = SDL_MapRGBA (fmt, sR, sG, sB, sA);
235
size_t offsetR, offsetG, offsetB;
236
SET_OFFSETS_24 (offsetR, offsetG, offsetB, fmt);
237
GET_PIXELVALS (cR, cG, cB, cA, color, fmt, ppa);
242
GET_PIXEL (pixel, bpp, pixels);
243
GET_PIXELVALS (sR, sG, sB, sA, pixel, fmt, ppa);
244
BLEND_MULT (cR, cG, cB, cA, sR, sG, sB, sA);
245
pixels[offsetR] = sR;
246
pixels[offsetG] = sG;
247
pixels[offsetB] = sB;
257
GET_PIXELVALS (cR, cG, cB, cA, color, fmt, ppa);
259
printf ("Color: %d, %d, %d, %d, BPP is: %d\n", cR, cG, cB, cA, bpp);
265
GET_PIXEL (pixel, bpp, pixels);
266
GET_PIXELVALS (sR, sG, sB, sA, pixel, fmt, ppa);
267
BLEND_MULT (cR, cG, cB, cA, sR, sG, sB, sA);
268
CREATE_PIXEL(pixels, sR, sG, sB, sA, bpp, fmt);
281
surface_fill_blend_min (SDL_Surface *surface, SDL_Rect *rect, Uint32 color)
285
int height = rect->h;
287
int bpp = surface->format->BytesPerPixel;
289
SDL_PixelFormat *fmt = surface->format;
290
Uint8 sR, sG, sB, sA, cR, cG, cB, cA;
293
int ppa = (surface->flags & SDL_SRCALPHA && fmt->Amask);
295
pixels = (Uint8 *) surface->pixels + surface->offset +
296
(Uint16) rect->y * surface->pitch + (Uint16) rect->x * bpp;
297
skip = surface->pitch - width * bpp;
303
SDL_GetRGBA (color, fmt, &cR, &cG, &cB, &cA);
308
GET_PIXELVALS_1 (sR, sG, sB, sA, pixels, fmt);
309
BLEND_MIN (cR, cG, cB, cA, sR, sG, sB, sA);
310
*pixels = SDL_MapRGBA (fmt, sR, sG, sB, sA);
320
size_t offsetR, offsetG, offsetB;
321
SET_OFFSETS_24 (offsetR, offsetG, offsetB, fmt);
322
GET_PIXELVALS (cR, cG, cB, cA, color, fmt, ppa);
327
GET_PIXEL (pixel, bpp, pixels);
328
GET_PIXELVALS (sR, sG, sB, sA, pixel, fmt, ppa);
329
BLEND_MIN (cR, cG, cB, cA, sR, sG, sB, sA);
330
pixels[offsetR] = sR;
331
pixels[offsetG] = sG;
332
pixels[offsetB] = sB;
342
GET_PIXELVALS (cR, cG, cB, cA, color, fmt, ppa);
344
printf ("Color: %d, %d, %d, %d, BPP is: %d\n", cR, cG, cB, cA, bpp);
350
GET_PIXEL (pixel, bpp, pixels);
351
GET_PIXELVALS (sR, sG, sB, sA, pixel, fmt, ppa);
352
BLEND_MIN (cR, cG, cB, cA, sR, sG, sB, sA);
353
CREATE_PIXEL(pixels, sR, sG, sB, sA, bpp, fmt);
366
surface_fill_blend_max (SDL_Surface *surface, SDL_Rect *rect, Uint32 color)
370
int height = rect->h;
372
int bpp = surface->format->BytesPerPixel;
374
SDL_PixelFormat *fmt = surface->format;
375
Uint8 sR, sG, sB, sA, cR, cG, cB, cA;
378
int ppa = (surface->flags & SDL_SRCALPHA && fmt->Amask);
380
pixels = (Uint8 *) surface->pixels + surface->offset +
381
(Uint16) rect->y * surface->pitch + (Uint16) rect->x * bpp;
382
skip = surface->pitch - width * bpp;
388
SDL_GetRGBA (color, fmt, &cR, &cG, &cB, &cA);
393
GET_PIXELVALS_1 (sR, sG, sB, sA, pixels, fmt);
394
BLEND_MAX (cR, cG, cB, cA, sR, sG, sB, sA);
395
*pixels = SDL_MapRGBA (fmt, sR, sG, sB, sA);
405
size_t offsetR, offsetG, offsetB;
406
SET_OFFSETS_24 (offsetR, offsetG, offsetB, fmt);
407
GET_PIXELVALS (cR, cG, cB, cA, color, fmt, ppa);
412
GET_PIXEL (pixel, bpp, pixels);
413
GET_PIXELVALS (sR, sG, sB, sA, pixel, fmt, ppa);
414
BLEND_MAX (cR, cG, cB, cA, sR, sG, sB, sA);
415
pixels[offsetR] = sR;
416
pixels[offsetG] = sG;
417
pixels[offsetB] = sB;
427
GET_PIXELVALS (cR, cG, cB, cA, color, fmt, ppa);
429
printf ("Color: %d, %d, %d, %d, BPP is: %d\n", cR, cG, cB, cA, bpp);
435
GET_PIXEL (pixel, bpp, pixels);
436
GET_PIXELVALS (sR, sG, sB, sA, pixel, fmt, ppa);
437
BLEND_MAX (cR, cG, cB, cA, sR, sG, sB, sA);
438
CREATE_PIXEL(pixels, sR, sG, sB, sA, bpp, fmt);
451
/* ------------------------- */
25
454
surface_fill_blend_rgba_add (SDL_Surface *surface, SDL_Rect *rect, Uint32 color)
286
731
int width = rect->w;
287
732
int height = rect->h;
291
SDL_PixelFormat *fmt;
292
Uint8 sR, sG, sB, sA, cR, cG, cB, cA;
296
bpp = surface->format->BytesPerPixel;
297
fmt = surface->format;
298
pixels = (Uint8 *) surface->pixels + surface->offset +
299
(Uint16) rect->y * surface->pitch + (Uint16) rect->x * bpp;
300
skip = surface->pitch - width * bpp;
306
SDL_GetRGBA (color, fmt, &cR, &cG, &cB, &cA);
311
GET_PIXELVALS_1 (sR, sG, sB, sA, pixels, fmt);
312
BLEND_RGBA_MAX (cR, cG, cB, cA, sR, sG, sB, sA);
313
*pixels = SDL_MapRGBA (fmt, sR, sG, sB, sA);
323
GET_PIXELVALS (cR, cG, cB, cA, color, fmt);
325
printf ("Color: %d, %d, %d, %d, BPP is: %d\n", cR, cG, cB, cA, bpp);
331
GET_PIXEL (pixel, bpp, pixels);
332
GET_PIXELVALS (sR, sG, sB, sA, pixel, fmt);
333
BLEND_RGBA_MAX (cR, cG, cB, cA, sR, sG, sB, sA);
334
CREATE_PIXEL(pixels, sR, sG, sB, sA, bpp, fmt);
372
// -------------------------
377
surface_fill_blend_add (SDL_Surface *surface, SDL_Rect *rect, Uint32 color)
381
int height = rect->h;
385
SDL_PixelFormat *fmt;
386
Uint8 sR, sG, sB, sA, cR, cG, cB, cA;
391
bpp = surface->format->BytesPerPixel;
392
fmt = surface->format;
393
pixels = (Uint8 *) surface->pixels + surface->offset +
394
(Uint16) rect->y * surface->pitch + (Uint16) rect->x * bpp;
395
skip = surface->pitch - width * bpp;
401
SDL_GetRGBA (color, fmt, &cR, &cG, &cB, &cA);
406
GET_PIXELVALS_1 (sR, sG, sB, sA, pixels, fmt);
407
BLEND_ADD (tmp, cR, cG, cB, cA, sR, sG, sB, sA);
408
*pixels = SDL_MapRGBA (fmt, sR, sG, sB, sA);
418
GET_PIXELVALS (cR, cG, cB, cA, color, fmt);
420
printf ("Color: %d, %d, %d, %d, BPP is: %d\n", cR, cG, cB, cA, bpp);
426
GET_PIXEL (pixel, bpp, pixels);
427
GET_PIXELVALS (sR, sG, sB, sA, pixel, fmt);
428
BLEND_ADD (tmp, cR, cG, cB, cA, sR, sG, sB, sA);
429
CREATE_PIXEL(pixels, sR, sG, sB, sA, bpp, fmt);
442
surface_fill_blend_sub (SDL_Surface *surface, SDL_Rect *rect, Uint32 color)
446
int height = rect->h;
450
SDL_PixelFormat *fmt;
451
Uint8 sR, sG, sB, sA, cR, cG, cB, cA;
456
bpp = surface->format->BytesPerPixel;
457
fmt = surface->format;
458
pixels = (Uint8 *) surface->pixels + surface->offset +
459
(Uint16) rect->y * surface->pitch + (Uint16) rect->x * bpp;
460
skip = surface->pitch - width * bpp;
466
SDL_GetRGBA (color, fmt, &cR, &cG, &cB, &cA);
471
GET_PIXELVALS_1 (sR, sG, sB, sA, pixels, fmt);
472
BLEND_SUB (tmp, cR, cG, cB, cA, sR, sG, sB, sA);
473
*pixels = SDL_MapRGBA (fmt, sR, sG, sB, sA);
483
GET_PIXELVALS (cR, cG, cB, cA, color, fmt);
485
printf ("Color: %d, %d, %d, %d, BPP is: %d\n", cR, cG, cB, cA, bpp);
491
GET_PIXEL (pixel, bpp, pixels);
492
GET_PIXELVALS (sR, sG, sB, sA, pixel, fmt);
493
BLEND_SUB (tmp, cR, cG, cB, cA, sR, sG, sB, sA);
494
CREATE_PIXEL(pixels, sR, sG, sB, sA, bpp, fmt);
507
surface_fill_blend_mult (SDL_Surface *surface, SDL_Rect *rect, Uint32 color)
511
int height = rect->h;
515
SDL_PixelFormat *fmt;
516
Uint8 sR, sG, sB, sA, cR, cG, cB, cA;
520
bpp = surface->format->BytesPerPixel;
521
fmt = surface->format;
522
pixels = (Uint8 *) surface->pixels + surface->offset +
523
(Uint16) rect->y * surface->pitch + (Uint16) rect->x * bpp;
524
skip = surface->pitch - width * bpp;
530
SDL_GetRGBA (color, fmt, &cR, &cG, &cB, &cA);
535
GET_PIXELVALS_1 (sR, sG, sB, sA, pixels, fmt);
536
BLEND_MULT (cR, cG, cB, cA, sR, sG, sB, sA);
537
*pixels = SDL_MapRGBA (fmt, sR, sG, sB, sA);
547
GET_PIXELVALS (cR, cG, cB, cA, color, fmt);
549
printf ("Color: %d, %d, %d, %d, BPP is: %d\n", cR, cG, cB, cA, bpp);
555
GET_PIXEL (pixel, bpp, pixels);
556
GET_PIXELVALS (sR, sG, sB, sA, pixel, fmt);
557
BLEND_MULT (cR, cG, cB, cA, sR, sG, sB, sA);
558
CREATE_PIXEL(pixels, sR, sG, sB, sA, bpp, fmt);
571
surface_fill_blend_min (SDL_Surface *surface, SDL_Rect *rect, Uint32 color)
575
int height = rect->h;
579
SDL_PixelFormat *fmt;
580
Uint8 sR, sG, sB, sA, cR, cG, cB, cA;
584
bpp = surface->format->BytesPerPixel;
585
fmt = surface->format;
586
pixels = (Uint8 *) surface->pixels + surface->offset +
587
(Uint16) rect->y * surface->pitch + (Uint16) rect->x * bpp;
588
skip = surface->pitch - width * bpp;
594
SDL_GetRGBA (color, fmt, &cR, &cG, &cB, &cA);
599
GET_PIXELVALS_1 (sR, sG, sB, sA, pixels, fmt);
600
BLEND_MIN (cR, cG, cB, cA, sR, sG, sB, sA);
601
*pixels = SDL_MapRGBA (fmt, sR, sG, sB, sA);
611
GET_PIXELVALS (cR, cG, cB, cA, color, fmt);
613
printf ("Color: %d, %d, %d, %d, BPP is: %d\n", cR, cG, cB, cA, bpp);
619
GET_PIXEL (pixel, bpp, pixels);
620
GET_PIXELVALS (sR, sG, sB, sA, pixel, fmt);
621
BLEND_MIN (cR, cG, cB, cA, sR, sG, sB, sA);
622
CREATE_PIXEL(pixels, sR, sG, sB, sA, bpp, fmt);
635
surface_fill_blend_max (SDL_Surface *surface, SDL_Rect *rect, Uint32 color)
639
int height = rect->h;
643
SDL_PixelFormat *fmt;
644
Uint8 sR, sG, sB, sA, cR, cG, cB, cA;
648
bpp = surface->format->BytesPerPixel;
649
fmt = surface->format;
650
pixels = (Uint8 *) surface->pixels + surface->offset +
651
(Uint16) rect->y * surface->pitch + (Uint16) rect->x * bpp;
652
skip = surface->pitch - width * bpp;
658
SDL_GetRGBA (color, fmt, &cR, &cG, &cB, &cA);
663
GET_PIXELVALS_1 (sR, sG, sB, sA, pixels, fmt);
664
BLEND_MAX (cR, cG, cB, cA, sR, sG, sB, sA);
665
*pixels = SDL_MapRGBA (fmt, sR, sG, sB, sA);
675
GET_PIXELVALS (cR, cG, cB, cA, color, fmt);
677
printf ("Color: %d, %d, %d, %d, BPP is: %d\n", cR, cG, cB, cA, bpp);
683
GET_PIXEL (pixel, bpp, pixels);
684
GET_PIXELVALS (sR, sG, sB, sA, pixel, fmt);
685
BLEND_MAX (cR, cG, cB, cA, sR, sG, sB, sA);
686
CREATE_PIXEL(pixels, sR, sG, sB, sA, bpp, fmt);
734
int bpp = surface->format->BytesPerPixel;
736
SDL_PixelFormat *fmt = surface->format;
737
Uint8 sR, sG, sB, sA, cR, cG, cB, cA;
740
int ppa = (surface->flags & SDL_SRCALPHA && fmt->Amask);
744
return surface_fill_blend_max (surface, rect, color);
747
pixels = (Uint8 *) surface->pixels + surface->offset +
748
(Uint16) rect->y * surface->pitch + (Uint16) rect->x * bpp;
749
skip = surface->pitch - width * bpp;
755
SDL_GetRGBA (color, fmt, &cR, &cG, &cB, &cA);
760
GET_PIXELVALS_1 (sR, sG, sB, sA, pixels, fmt);
761
BLEND_RGBA_MAX (cR, cG, cB, cA, sR, sG, sB, sA);
762
*pixels = SDL_MapRGBA (fmt, sR, sG, sB, sA);
772
GET_PIXELVALS (cR, cG, cB, cA, color, fmt, ppa);
774
printf ("Color: %d, %d, %d, %d, BPP is: %d\n", cR, cG, cB, cA, bpp);
780
GET_PIXEL (pixel, bpp, pixels);
781
GET_PIXELVALS (sR, sG, sB, sA, pixel, fmt, ppa);
782
BLEND_RGBA_MAX (cR, cG, cB, cA, sR, sG, sB, sA);
783
CREATE_PIXEL(pixels, sR, sG, sB, sA, bpp, fmt);
699
797
surface_fill_blend (SDL_Surface *surface, SDL_Rect *rect, Uint32 color,