plan 9 kernel history: overview | file list | diff list

1992/1013/port/devbit.c (diff list | history)

1992/1010/sys/src/9/port/devbit.c:103,1081992/1013/sys/src/9/port/devbit.c:103,109 (short | long | prev | next)
1992/0209    
void	bitstring(GBitmap*, Point, GFont*, uchar*, long, Fcode); 
void	bitloadchar(GFont*, int, GSubfont*, int); 
1990/0912    
extern	GBitmap	gscreen; 
1992/1013    
extern	islcd; 
1990/0327    
 
1991/0707    
Mouseinfo	mouse; 
Cursorinfo	cursor; 
1992/1010/sys/src/9/port/devbit.c:746,7511992/1013/sys/src/9/port/devbit.c:747,801
1990/0327    
	return n; 
1990/0324    
} 
 
1992/1013    
static Rectangle mbb = {10000, 10000, -10000, -10000}; 
 
static void 
mbbrect(Rectangle r) 
{ 
	if (r.min.x < mbb.min.x) 
		mbb.min.x = r.min.x; 
	if (r.min.y < mbb.min.y) 
		mbb.min.y = r.min.y; 
	if (r.max.x > mbb.max.x) 
		mbb.max.x = r.max.x; 
	if (r.max.y > mbb.max.y) 
		mbb.max.y = r.max.y; 
} 
 
static void 
mbbpt(Point p) 
{ 
	if (p.x < mbb.min.x) 
		mbb.min.x = p.x; 
	if (p.y < mbb.min.y) 
		mbb.min.y = p.y; 
	if (p.x >= mbb.max.x) 
		mbb.max.x = p.x+1; 
	if (p.y >= mbb.max.y) 
		mbb.max.y = p.y+1; 
} 
 
Point 
bitstrsize(GFont *f, uchar *p, int l) 
{ 
	ushort r; 
	Point s = {0,0}; 
	GCacheinfo *c; 
 
	while(l > 0){ 
		r = BGSHORT(p); 
		p += 2; 
		l -= 2; 
		if(r >= f->ncache) 
			continue; 
		c = &f->cache[r]; 
		if(c->bottom > s.y) 
			s.y = c->bottom; 
		s.x += c->width; 
	} 
	return s; 
} 
 
1990/0324    
long 
1991/0411    
bitwrite(Chan *c, void *va, long n, ulong offset) 
1990/0324    
{ 
1992/1010/sys/src/9/port/devbit.c:754,7591992/1013/sys/src/9/port/devbit.c:804,810
1992/0628    
	ulong l, nw, ws, rv, q0, q1; 
1992/0816    
	ulong *lp; 
1992/0621    
	int off, isoff, i, j, ok; 
1992/1013    
	ulong *endscreen = gaddr(&gscreen, Pt(0, gscreen.r.max.y)); 
1990/06111    
	Point pt, pt1, pt2; 
1990/0324    
	Rectangle rect; 
1990/05313    
	Cursor curs; 
1992/1010/sys/src/9/port/devbit.c:763,7681992/1013/sys/src/9/port/devbit.c:814,820
1992/0702    
	BSubfont *f, *tf, **fp; 
1992/0621    
	GFont *ff, **ffp; 
1992/0706    
	GCacheinfo *gc; 
1992/1013    
	extern void screenupdate(Rectangle); 
1990/0324    
 
1992/0807    
	if(!conf.monitor) 
		error(Egreg); 
1992/1010/sys/src/9/port/devbit.c:856,8611992/1013/sys/src/9/port/devbit.c:908,915
1990/0721    
				isoff = 1; 
			} 
1991/1225    
			gbitblt(dst, pt, src, rect, fc); 
1992/1013    
			if(islcd && dst->base < endscreen) 
				mbbrect(Rpt(pt, add(pt, sub(rect.max, rect.min)))); 
1990/0327    
			m -= 31; 
			p += 31; 
			break; 
1992/1010/sys/src/9/port/devbit.c:1089,10941992/1013/sys/src/9/port/devbit.c:1143,1152
1990/0721    
				isoff = 1; 
			} 
1991/0706    
			gsegment(dst, pt1, pt2, t, fc); 
1992/1013    
			if(islcd && dst->base < endscreen) { 
				mbbpt(pt1); 
				mbbpt(pt2); 
			} 
1990/06111    
			m -= 22; 
			p += 22; 
1990/0613    
			break; 
1992/1010/sys/src/9/port/devbit.c:1188,11931992/1013/sys/src/9/port/devbit.c:1246,1253
1990/0722    
				isoff = 1; 
			} 
1991/0706    
			gpoint(dst, pt1, t, fc); 
1992/1013    
			if(islcd && dst->base < endscreen) 
				mbbpt(pt1); 
1990/0722    
			m -= 14; 
			p += 14; 
			break; 
1992/1010/sys/src/9/port/devbit.c:1278,12831992/1013/sys/src/9/port/devbit.c:1338,1345
1992/0209    
				isoff = 1; 
			} 
			bitstring(dst, pt, ff, p, l, fc); 
1992/1013    
			if(islcd && dst->base < endscreen) 
				mbbrect(Rpt(pt, add(pt, bitstrsize(ff, p, l)))); 
1992/0209    
			m -= l; 
			p += l; 
			break; 
1992/1010/sys/src/9/port/devbit.c:1315,13201992/1013/sys/src/9/port/devbit.c:1377,1384
1992/0627    
				isoff = 1; 
			} 
			gtexture(dst, rect, src, fc); 
1992/1013    
			if(islcd && dst->base < endscreen) 
				mbbrect(rect); 
1992/0627    
			m -= 23; 
			p += 23; 
			break; 
1992/1010/sys/src/9/port/devbit.c:1393,13981992/1013/sys/src/9/port/devbit.c:1457,1464
1990/0329    
				t = (t/ws)*ws; 
				l = (t+dst->r.max.x+ws-1)/ws; 
			} 
1992/1013    
			if(islcd && dst->base < endscreen) 
				mbbrect(Rect(dst->r.min.x, miny, dst->r.max.x, maxy)); 
1990/0329    
			p += 11; 
			m -= 11; 
			if(m < l*(maxy-miny)) 
1992/1010/sys/src/9/port/devbit.c:1504,15091992/1013/sys/src/9/port/devbit.c:1570,1579
1991/0614    
	poperror(); 
1990/0721    
	if(isoff) 
		cursoron(1); 
1992/1013    
	if(islcd) { 
		screenupdate(mbb); 
		mbb = Rect(10000, 10000, -10000, -10000); 
	} 
1992/0622    
	qunlock(&bit); 
1990/0324    
	return n; 
} 
1992/1010/sys/src/9/port/devbit.c:1851,18601992/1013/sys/src/9/port/devbit.c:1921,1932
1990/0504    
		cursor.r.max = add(mouse.xy, Pt(16, 16)); 
		cursor.r = raddp(cursor.r, cursor.offset); 
1991/1225    
		gbitblt(&cursorback, Pt(0, 0), &gscreen, cursor.r, S); 
		gbitblt(&gscreen, add(mouse.xy, cursor.offset), 
1992/1013    
		gbitblt(&gscreen, cursor.r.min, 
1991/0706    
			&clr, Rect(0, 0, 16, 16), flipping? flipD[D&~S] : D&~S); 
1991/1225    
		gbitblt(&gscreen, add(mouse.xy, cursor.offset), 
1992/1013    
		gbitblt(&gscreen, cursor.r.min, 
1991/0706    
			&set, Rect(0, 0, 16, 16), flipping? flipD[S|D] : S|D); 
1992/1013    
		if(islcd) 
			mbbrect(cursor.r); 
1990/0504    
	} 
	if(dolock) 
		unlock(&cursor); 
1992/1010/sys/src/9/port/devbit.c:1865,18721992/1013/sys/src/9/port/devbit.c:1937,1947
1990/0504    
{ 
	if(dolock) 
		lock(&cursor); 
	if(--cursor.visible == 0) 
1992/1013    
	if(--cursor.visible == 0) { 
1991/1225    
		gbitblt(&gscreen, cursor.r.min, &cursorback, Rect(0, 0, 16, 16), S); 
1992/1013    
		if(islcd) 
			mbbrect(cursor.r); 
	} 
1990/0504    
	if(dolock) 
		unlock(&cursor); 
} 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)