| plan 9 kernel history: overview | file list | diff list |
1990/0623/port/devbit.c (diff list | history)
| 1990/0613/sys/src/9/port/devbit.c:32,38 – 1990/0623/sys/src/9/port/devbit.c:32,40 (short | long | prev | next) | ||
| 1990/0327 | ulong *words; /* storage */ ulong nwords; /* total in arena */ ulong *wfree; /* pointer to next free word */ | |
| 1990/0623 | Font *font; /* arena; looked up linearly BUG */ | |
| 1990/0327 | int lastid; /* last allocated bitmap id */ | |
| 1990/0623 | int lastfid; /* last allocated font id */ | |
| 1990/0329 | int init; /* freshly opened; init message pending */ | |
| 1990/0613 | int rid; /* read bitmap id */ int rminy; /* read miny */ | |
| 1990/0613/sys/src/9/port/devbit.c:126,131 – 1990/0623/sys/src/9/port/devbit.c:128,134 | ||
| 1990/0324 | }; #define NBIT (sizeof bitdir/sizeof(Dirtab)) | |
| 1990/0623 | #define NINFO 150 | |
| 1990/0324 | void bitreset(void) | |
| 1990/0613/sys/src/9/port/devbit.c:143,151 – 1990/0623/sys/src/9/port/devbit.c:146,159 | ||
| 1990/0327 | bit.map[0] = screen; /* bitmap 0 is screen */ bit.free = bit.map+1; bit.lastid = -1; | |
| 1990/0623 | bit.lastfid = -1; | |
| 1990/0327 | bit.words = ialloc(conf.nbitbyte, 0); bit.nwords = conf.nbitbyte/sizeof(ulong); bit.wfree = bit.words; | |
| 1990/0623 | bit.font = ialloc(conf.nfont * sizeof(Font), 0); bit.font[0] = *defont; for(i=1; i<conf.nfont; i++) bit.font[i].info = ialloc((NINFO+1)*sizeof(Fontchar), 0); | |
| 1990/05313 | Cursortocursor(&arrow); | |
| 1990/0324 | } | |
| 1990/0613/sys/src/9/port/devbit.c:199,204 – 1990/0623/sys/src/9/port/devbit.c:207,213 | ||
| 1990/0324 | error(0, Einuse); } | |
| 1990/0327 | bit.lastid = -1; | |
| 1990/0623 | bit.lastfid = -1; | |
| 1990/0613 | bit.rid = -1; | |
| 1990/0604 | bit.init = 0; | |
| 1990/05151 | bit.ref = 1; | |
| 1990/0613/sys/src/9/port/devbit.c:235,240 – 1990/0623/sys/src/9/port/devbit.c:244,250 | ||
| 1990/0324 | { | |
| 1990/0327 | int i; Bitmap *bp; | |
| 1990/0623 | Font *fp; | |
| 1990/0327 | ||
| 1990/05151 | if(c->qid!=CHDIR && (c->flag&COPEN)){ | |
| 1990/0329 | lock(&bit); | |
| 1990/0613/sys/src/9/port/devbit.c:242,247 – 1990/0623/sys/src/9/port/devbit.c:252,259 | ||
| 1990/0327 | for(i=1,bp=&bit.map[1]; i<conf.nbitmap; i++,bp++) if(bp->ldepth >= 0) bitfree(bp); | |
| 1990/0623 | for(i=1,fp=&bit.font[1]; i<conf.nfont; i++,fp++) fp->bits = 0; | |
| 1990/0327 | } | |
| 1990/0324 | unlock(&bit); } | |
| 1990/0613/sys/src/9/port/devbit.c:337,342 – 1990/0623/sys/src/9/port/devbit.c:349,368 | ||
| 1990/0505 | n = 3; break; } | |
| 1990/0623 | if(bit.lastfid > 0){ /* * allocate font: * 'K' 1 * font id 2 */ if(n < 3) error(0, Ebadblt); p[0] = 'K'; PSHORT(p+1, bit.lastfid); bit.lastfid = -1; n = 3; break; } | |
| 1990/0613 | if(bit.rid >= 0){ /* * read | |
| 1990/0613/sys/src/9/port/devbit.c:395,405 – 1990/0623/sys/src/9/port/devbit.c:421,433 | ||
| 1990/0329 | uchar *p, *q; long m, v, miny, maxy, t, x, y; | |
| 1990/0327 | ulong l, nw, ws; | |
| 1990/0504 |
| |
| 1990/0623 | int off, i; | |
| 1990/06111 | Point pt, pt1, pt2; | |
| 1990/0324 | Rectangle rect; | |
| 1990/05313 | Cursor curs; | |
| 1990/0623 | Fontchar *fcp; | |
| 1990/0327 | Bitmap *bp, *src, *dst; | |
| 1990/0623 | Font *f; | |
| 1990/0324 | if(c->qid == CHDIR) error(0, Eisdir); | |
| 1990/0613/sys/src/9/port/devbit.c:551,557 – 1990/0623/sys/src/9/port/devbit.c:579,585 | ||
| 1990/0327 | error(0, Ebadblt); v = GSHORT(p+1); dst = &bit.map[v]; | |
| 1990/0329 |
| |
| 1990/0623 | if(v<0 || v>=conf.nbitmap || dst->ldepth<0) | |
| 1990/0329 | error(0, Ebadbitmap); | |
| 1990/0327 | bitfree(dst); m -= 3; | |
| 1990/0613/sys/src/9/port/devbit.c:558,563 – 1990/0623/sys/src/9/port/devbit.c:586,608 | ||
| 1990/0327 | p += 3; | |
| 1990/0604 | break; | |
| 1990/0623 | case 'g': /* * free font (free bitmap separately) * 'g' 1 * id 2 */ if(m < 3) error(0, Ebadblt); v = GSHORT(p+1); f = &bit.font[v]; if(v<0 || v>=conf.nfont || f->bits==0) error(0, Ebadbitmap); f->bits = 0; m -= 3; p += 3; break; | |
| 1990/0604 | case 'i': /* * init | |
| 1990/0613/sys/src/9/port/devbit.c:569,574 – 1990/0623/sys/src/9/port/devbit.c:614,665 | ||
| 1990/0604 | p += 1; | |
| 1990/0327 | break; | |
| 1990/0329 | ||
| 1990/0623 | case 'k': /* * allocate font * 'k' 1 * n 2 * height 1 * ascent 1 * bitmap id 2 * fontchars 6*n * next read returns allocated font id */ if(m < 7) error(0, Ebadblt); v = GSHORT(p+1); if(v<0 || v>NINFO || m<7+6*(v+1)) /* BUG */ error(0, Ebadblt); for(i=1; i<conf.nfont; i++) if(bit.font[i].bits == 0) goto fontfound; error(0, Enofont); fontfound: f = &bit.font[i]; f->n = v; f->height = p[3]; f->ascent = p[4]; v = GSHORT(p+5); dst = &bit.map[v]; if(v<0 || v>=conf.nbitmap || dst->ldepth<0) error(0, Ebadbitmap); m -= 7; p += 7; fcp = f->info; for(i=0; i<=f->n; i++,fcp++){ fcp->x = GSHORT(p); fcp->top = p[2]; fcp->bottom = p[3]; fcp->left = p[4]; fcp->width = p[5]; fcp->top = p[2]; p += 6; m -= 6; } bit.lastfid = f - bit.font; f->bits = dst; break; | |
| 1990/06111 | case 'l': /* * line segment | |
| 1990/0613/sys/src/9/port/devbit.c:584,590 – 1990/0623/sys/src/9/port/devbit.c:675,681 | ||
| 1990/06111 | error(0, Ebadblt); v = GSHORT(p+1); dst = &bit.map[v]; | |
| 1990/0623 | if(v<0 || v>=conf.nbitmap || dst->ldepth<0) | |
| 1990/06111 | error(0, Ebadbitmap); off = 0; if(v == 0) | |
| 1990/0613/sys/src/9/port/devbit.c:616,622 – 1990/0623/sys/src/9/port/devbit.c:707,713 | ||
| 1990/0613 | error(0, Ebadblt); v = GSHORT(p+1); src = &bit.map[v]; | |
| 1990/0623 | if(v<0 || v>=conf.nbitmap || src->ldepth<0) | |
| 1990/0613 | error(0, Ebadbitmap); miny = GLONG(p+3); maxy = GLONG(p+7); | |
| 1990/0613/sys/src/9/port/devbit.c:643,649 – 1990/0623/sys/src/9/port/devbit.c:734,740 | ||
| 1990/0329 | error(0, Ebadblt); v = GSHORT(p+1); dst = &bit.map[v]; | |
| 1990/0623 | if(v<0 || v>=conf.nbitmap || dst->ldepth<0) | |
| 1990/0329 | error(0, Ebadbitmap); | |
| 1990/0504 | off = 0; if(v == 0) | |
| 1990/0613/sys/src/9/port/devbit.c:651,657 – 1990/0623/sys/src/9/port/devbit.c:742,749 | ||
| 1990/0329 | pt.x = GLONG(p+3); pt.y = GLONG(p+7); v = GSHORT(p+11); | |
| 1990/0623 | f = &bit.font[v]; if(v<0 || v>=conf.nfont || f->bits==0 || f->bits->ldepth<0) | |
| 1990/0329 | error(0, Ebadblt); v = GSHORT(p+13); p += 15; | |
| 1990/0613/sys/src/9/port/devbit.c:661,667 – 1990/0623/sys/src/9/port/devbit.c:753,759 | ||
| 1990/0329 | error(0, Ebadblt); | |
| 1990/0504 | if(off) cursoroff(1); | |
| 1990/05313 |
| |
| 1990/0623 | string(dst, pt, f, (char*)p, v); | |
| 1990/0504 | if(off) cursoron(1); | |
| 1990/0329 | q++; | |
| 1990/0613/sys/src/9/port/devbit.c:682,688 – 1990/0623/sys/src/9/port/devbit.c:774,780 | ||
| 1990/0329 | error(0, Ebadblt); v = GSHORT(p+1); dst = &bit.map[v]; | |
| 1990/0623 | if(v<0 || v>=conf.nbitmap || dst->ldepth<0) | |
| 1990/0329 | error(0, Ebadbitmap); | |
| 1990/0504 | off = 0; if(v == 0) | |
| 1990/0613/sys/src/9/port/devbit.c:693,699 – 1990/0623/sys/src/9/port/devbit.c:785,791 | ||
| 1990/0329 | rect.max.y = GLONG(p+15); v = GSHORT(p+19); src = &bit.map[v]; | |
| 1990/0623 | if(v<0 || v>=conf.nbitmap || src->ldepth<0) | |
| 1990/0329 | error(0, Ebadbitmap); if(src->r.min.x!=0 || src->r.min.y!=0 || src->r.max.x!=16 || src->r.max.y!=16) error(0, Ebadblt); | |
| 1990/0613/sys/src/9/port/devbit.c:727,733 – 1990/0623/sys/src/9/port/devbit.c:819,825 | ||
| 1990/0329 | error(0, Ebadblt); v = GSHORT(p+1); dst = &bit.map[v]; | |
| 1990/0623 | if(v<0 || v>=conf.nbitmap || dst->ldepth<0) | |
| 1990/0329 | error(0, Ebadbitmap); | |
| 1990/0504 | off = 0; if(v == 0) | |