|
|
1.1 ! root 1: #include "frame.h" ! 2: ! 3: redraw(f, pt) ! 4: Frame *f; ! 5: Point pt; ! 6: { ! 7: register Box *b; ! 8: int nb; ! 9: for(nb=0,b=f->box; nb<f->nbox; nb++, b++){ ! 10: cklinewrap(f, &pt, b); ! 11: if(b->len>=0) ! 12: string(f->font, b->ptr, B, pt, F_XOR); ! 13: pt.x+=b->wid; ! 14: } ! 15: } ! 16: Point ! 17: draw(f, pt) ! 18: Frame *f; ! 19: Point pt; ! 20: { ! 21: register Box *b; ! 22: register nb, n; ! 23: for(b=f->box,nb=0; nb<f->nbox; nb++, b++){ ! 24: cklinewrap0(f, &pt, b); ! 25: if(pt.y==f->r.corner.y){ ! 26: f->nchars-=frstrlen(f, nb); ! 27: delbox(f, nb, f->nbox-1); ! 28: break; ! 29: } ! 30: if(b->len>0){ ! 31: n=canfit(f, pt, b); ! 32: if(n==0) ! 33: panic("draw: canfit==0"); ! 34: if(n!=b->len){ ! 35: splitbox(f, nb, n); ! 36: b= &f->box[nb]; ! 37: } ! 38: pt.x+=b->wid; ! 39: }else{ ! 40: if(b->bc=='\n') ! 41: pt.x=f->left, pt.y+=fheight(f->font); ! 42: else ! 43: pt.x+=newwid(f, pt, b); ! 44: } ! 45: } ! 46: return pt; ! 47: } ! 48: frstrlen(f, nb) ! 49: register Frame *f; ! 50: register nb; ! 51: { ! 52: register n; ! 53: for(n=0; nb<f->nbox; nb++) ! 54: n+=LEN(&f->box[nb]); ! 55: return n; ! 56: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.