|
|
1.1 ! root 1: #include <jerq.h> ! 2: #include "frame.h" ! 3: ! 4: Rectangle Null /* ={0,0,0,0} */; ! 5: Frame * ! 6: fralloc(r, m) ! 7: Rectangle r; ! 8: { ! 9: register Frame *t=(Frame *)alloc(sizeof(Frame)); ! 10: if(t){ ! 11: strzero(&t->str); ! 12: t->margin=m; ! 13: frsetrects(t, r); ! 14: } ! 15: return t; ! 16: } ! 17: frsetrects(f, r) ! 18: register Frame *f; ! 19: Rectangle r; ! 20: { ! 21: f->totalrect=r; ! 22: f->rect=inset(r, f->margin); ! 23: f->rect.corner.y-=(f->rect.corner.y-f->rect.origin.y)%newlnsz; ! 24: f->scrollrect=f->rect; ! 25: f->scrollrect.origin.x+=2; ! 26: f->scrollrect.corner.x=f->scrollrect.origin.x+SCROLLWIDTH; ! 27: f->rect.origin.x+=3*SCROLLWIDTH/2; ! 28: f->nlines=(f->rect.corner.y-f->rect.origin.y)/newlnsz; ! 29: if(f->nlines>MAXLINES) f->nlines=MAXLINES; ! 30: setcpl(f, 0, f->nlines-1); ! 31: } ! 32: frinit(t) ! 33: register Frame *t; ! 34: { ! 35: clear(t->totalrect, 1); ! 36: border(D, t->totalrect, t->margin, F_OR); ! 37: strzero(&t->str); ! 38: t->s1=t->s2=0; ! 39: setcpl(t, 0, t->nlines-1); ! 40: } ! 41: frfree(f) ! 42: register Frame *f; ! 43: { ! 44: if(f==0 || f->str.s==0) ! 45: return; ! 46: gcfree(f->str.s); ! 47: free(f); ! 48: } ! 49: drawframe(f) ! 50: register Frame *f; ! 51: { ! 52: int compl; ! 53: clear(display.rect, 1); ! 54: border(D, display.rect, f->margin, F_OR); ! 55: drawscrollbar(f); ! 56: draw(f, f->rect.origin, f->str.s, f->str.n); ! 57: compl=complete; ! 58: selectf(f, F_XOR); ! 59: complete=compl; ! 60: } ! 61: closeframe(t) ! 62: register Frame *t; ! 63: { ! 64: if(t==0 || t->str.s==0) ! 65: return; ! 66: gcfree(t->str.s); ! 67: t->str.s=0; ! 68: t->str.n=t->str.size=0; ! 69: t->totalrect=Null; ! 70: t->rect=Null; ! 71: t->scrollrect=Null; ! 72: t->str.s=0; /* Mark it available */ ! 73: } ! 74: setsel(t, n) ! 75: register Frame *t; ! 76: register n; ! 77: { ! 78: t->s1=t->s2=n; ! 79: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.