allocimagemix.c

来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 44 行

C
44
字号
#include <u.h>#include <libc.h>#include <draw.h>Image*allocimagemix(Display *d, ulong color1, ulong color3){	Image *t, *b;	static Image *qmask;	if(qmask == nil)		qmask = allocimage(d, Rect(0,0,1,1), GREY8, 1, 0x3F3F3FFF);			if(d->screenimage->depth <= 8){	/* create a 2×2 texture */		t = allocimage(d, Rect(0,0,1,1), d->screenimage->chan, 0, color1);		if(t == nil)			return nil;		b = allocimage(d, Rect(0,0,2,2), d->screenimage->chan, 1, color3);		if(b == nil){			freeimage(t);			return nil;		}		draw(b, Rect(0,0,1,1), t, nil, ZP);		freeimage(t);		return b;	}else{	/* use a solid color, blended using alpha */		t = allocimage(d, Rect(0,0,1,1), d->screenimage->chan, 1, color1);		if(t == nil)			return nil;		b = allocimage(d, Rect(0,0,1,1), d->screenimage->chan, 1, color3);		if(b == nil){			freeimage(t);			return nil;		}		draw(b, b->r, t, qmask, ZP);		freeimage(t);		return b;	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?