Blame


1 ed7c8e8d 2003-09-30 devnull #include <u.h>
2 ed7c8e8d 2003-09-30 devnull #include <libc.h>
3 ed7c8e8d 2003-09-30 devnull #include <draw.h>
4 ed7c8e8d 2003-09-30 devnull
5 ed7c8e8d 2003-09-30 devnull Image*
6 ed7c8e8d 2003-09-30 devnull allocimagemix(Display *d, u32int color1, u32int color3)
7 ed7c8e8d 2003-09-30 devnull {
8 ed7c8e8d 2003-09-30 devnull Image *t, *b;
9 ed7c8e8d 2003-09-30 devnull static Image *qmask;
10 ed7c8e8d 2003-09-30 devnull
11 ed7c8e8d 2003-09-30 devnull if(qmask == nil)
12 ed7c8e8d 2003-09-30 devnull qmask = allocimage(d, Rect(0,0,1,1), GREY8, 1, 0x3F3F3FFF);
13 fa325e9b 2020-01-10 cross
14 ed7c8e8d 2003-09-30 devnull if(d->screenimage->depth <= 8){ /* create a 2×2 texture */
15 ed7c8e8d 2003-09-30 devnull t = allocimage(d, Rect(0,0,1,1), d->screenimage->chan, 0, color1);
16 ed7c8e8d 2003-09-30 devnull if(t == nil)
17 ed7c8e8d 2003-09-30 devnull return nil;
18 ed7c8e8d 2003-09-30 devnull
19 ed7c8e8d 2003-09-30 devnull b = allocimage(d, Rect(0,0,2,2), d->screenimage->chan, 1, color3);
20 ed7c8e8d 2003-09-30 devnull if(b == nil){
21 ed7c8e8d 2003-09-30 devnull freeimage(t);
22 ed7c8e8d 2003-09-30 devnull return nil;
23 ed7c8e8d 2003-09-30 devnull }
24 ed7c8e8d 2003-09-30 devnull
25 ed7c8e8d 2003-09-30 devnull draw(b, Rect(0,0,1,1), t, nil, ZP);
26 ed7c8e8d 2003-09-30 devnull freeimage(t);
27 ed7c8e8d 2003-09-30 devnull return b;
28 ed7c8e8d 2003-09-30 devnull }else{ /* use a solid color, blended using alpha */
29 ed7c8e8d 2003-09-30 devnull t = allocimage(d, Rect(0,0,1,1), d->screenimage->chan, 1, color1);
30 ed7c8e8d 2003-09-30 devnull if(t == nil)
31 ed7c8e8d 2003-09-30 devnull return nil;
32 ed7c8e8d 2003-09-30 devnull
33 ed7c8e8d 2003-09-30 devnull b = allocimage(d, Rect(0,0,1,1), d->screenimage->chan, 1, color3);
34 ed7c8e8d 2003-09-30 devnull if(b == nil){
35 ed7c8e8d 2003-09-30 devnull freeimage(t);
36 ed7c8e8d 2003-09-30 devnull return nil;
37 ed7c8e8d 2003-09-30 devnull }
38 ed7c8e8d 2003-09-30 devnull
39 ed7c8e8d 2003-09-30 devnull draw(b, b->r, t, qmask, ZP);
40 ed7c8e8d 2003-09-30 devnull freeimage(t);
41 ed7c8e8d 2003-09-30 devnull return b;
42 ed7c8e8d 2003-09-30 devnull }
43 ed7c8e8d 2003-09-30 devnull }