|
|
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.