|
|
1.1 root 1: #include <jerq.h>
2: #include "frame.h"
3: int inscomplete;
4: instext(t, s, sn)
5: register Frame *t;
6: register String *s;
7: register sn; /* char number at which to insert */
8: {
9: register char *p, *q, *r;
10: register n, y1, y2;
11: Point sp; /* point on screen */
12: sp=ptofchar(t, sn);
13: p=t->str.s+sn;
14: r=t->str.s+t->str.n;
15: for(n=0,q=p; q<r && *q!='\n'; q++)
16: n++;
17: /* n is #chars to next '\n' */
18: frameop(t, opnull, sp, s->s, s->n);
19: frameop(t, opnull, endpoint, p, n);
20: y2=endpoint.y; /* where p[n] will end up */
21: draw(t, sp, p, n); /* undraws, leaves endpoint */
22: y1=endpoint.y; /* where p[n] is now */
23: insstring(&t->str, sn, s); /* build new string */
24: if(y1 != y2){ /* bitblt up a hole */
25: y1+=newlnsz; /* BOTTOM of char */
26: y2+=newlnsz;
27: bitblt(D, Rect(t->rect.origin.x, y1,
28: t->rect.corner.x, t->rect.corner.y-(y2-y1)),
29: D, Pt(t->rect.origin.x, y2), F_STORE);
30: clear(Rect(t->rect.origin.x, y1, t->rect.corner.x, y2), 1);
31: y1=(y1-t->rect.origin.y)/newlnsz-1;
32: y2=(y2-t->rect.origin.y)/newlnsz-1;
33: scrollcpl(t, t->nlines-1-(y2-y1), y1, y2-y1);
34: }else
35: y2=(y2-t->rect.origin.y)/newlnsz;
36: draw(t, sp, t->str.s+sn, n+s->n); /* redraw this line */
37: inscomplete=complete; /* cough! */
38: sp = ptofchar(t, sn);
39: setcpl(t, (sp.y-t->rect.origin.y)/newlnsz, y2);
40: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.