ltorear.c

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

C
70
字号
#include <u.h>#include <libc.h>#include <draw.h>#include <memdraw.h>#include <memlayer.h>void_memltorear(Memimage *i, Memimage *rear){	Memlayer *l;	Memscreen *s;	Memimage *f, *r, *rr;	Rectangle x;	int overlap;	l = i->layer;	s = l->screen;	while(l->rear != rear){		r = l->rear;		x = l->screenr;		overlap = rectclip(&x, r->layer->screenr);		if(overlap){			memlhide(i, x);			l->clear = 0;		}		/* swap l and r in screen's list */		rr = r->layer->rear;		f = l->front;		if(rr == nil)			s->rearmost = i;		else			rr->layer->front = i;		if(f == nil)			s->frontmost = r;		else			f->layer->rear = r;		l->rear = rr;		l->front = r;		r->layer->rear = i;		r->layer->front = f;		if(overlap)			memlexpose(r, x);	}}voidmemltorear(Memimage *i){	_memltorear(i, nil);	_memlsetclear(i->layer->screen);}voidmemltorearn(Memimage **ip, int n){	Memimage *i, *rear;	Memscreen *s;	if(n == 0)		return;	rear = nil;	while(--n >= 0){		i = *ip++;		_memltorear(i, rear);		rear = i;	}	s = rear->layer->screen;	_memlsetclear(s);}

⌨️ 快捷键说明

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