|
|
1.1 root 1: #ifndef MUX
2: #define Jcursinhibit() cursinhibit()
3: #define Jcursallow() cursallow()
4: #define lrectf(l, r, f) rectf(l, r, f)
5: #define lsegment(l, p, q, f) segment(l, p, q, f)
6: #endif
7:
8: #include <jerq.h>
9: #define DB ((Word *)0x700000)
10: #define ONSCREEN(b) (b->base>=DB && b->base<DB+XMAX/WORDSIZE*YMAX)
11: #define ONSCREEN(b) (b->base>=DB && b->base<DB+XMAX/WORDSIZE*YMAX)
12:
13: static int yaxis;
14: static int xaxis;
15: static Point lp;
16:
17: static void
18: scan(bp, p, f)
19: Bitmap *bp;
20: Point p;
21: Code f;
22: {
23: register x, y;
24:
25: if((p.y != lp.y) && (lp.y != -1))
26: {
27: x = xaxis - lp.x;
28: y = yaxis - lp.y;
29: lrectf(bp, Rect(lp.x, lp.y, x+1, lp.y+1), f);
30: lrectf(bp, Rect(lp.x, y, x+1, y+1), f);
31: }
32: lp = p;
33: }
34: eldisc(bp, p, a, b, f)
35: Bitmap *bp;
36: Point p;
37: int a, b;
38: Code f;
39: {
40: short inhibited;
41: register x0 = p.x;
42: register y0 = p.y;
43:
44: yaxis = 2*p.y;
45: xaxis = 2*p.x;
46: lp.y = -1;
47: inhibited=0;
48: if(f!=F_XOR && ONSCREEN(bp)){
49: Jcursinhibit();
50: inhibited=1;
51: }
52: if(a==0 || b==0)
53: lsegment(bp, Pt(x0-a,y0-b), Pt(x0+a,y0+b), f);
54: else
55: {
56: lrectf(bp, Rect(p.x-a, p.y, p.x+a+1, p.y+1), f);
57: ellip1(bp, p, a, b, scan, Pt(0, -b), Pt(-a, 0), f);
58: scan(bp, Pt(0, -1), f);
59: }
60: if(inhibited)
61: Jcursallow();
62: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.