Point _frdraw(Frame *f, Point pt) { Frbox *b; int nb, n; for(b=f->box,nb=0; nb<f->nbox; nb++, b++) { _frcklinewrap0(f, &pt, b); if(pt.y == f->r.max.y) { f->nchars -= _frstrlen(f, nb); _frdelbox(f, nb, f->nbox-1); break; } if(b->nrune > 0) { n = _frcanfit(f, pt, b); if(n == 0) drawerror(f->display, "_frcanfit==0"); if(n != b->nrune) { _frsplitbox(f, nb, n); b = &f->box[nb]; } pt.x += b->wid; } else { if(b->bc == '\n') { pt.x = f->r.min.x; pt.y+=f->font->height; } else pt.x += _frnewwid(f, pt, b); } } return pt; }
void _frcklinewrap0(Frame *f, Point *p, Frbox *b) { if(_frcanfit(f, *p, b) == 0){ p->x = f->r.min.x; p->y += f->font->height; } }
void _frcklinewrap0(Frame *f, Point *p, Frbox *b) { if(_frcanfit(f, *p, b) == 0){ p->x = f->left; p->y += f->fheight; } }