|
|
1.1 root 1: #include <jerq.h>
2: Texture boxcurs = {
3: 0x43FF, 0xE001, 0x7001, 0x3801, 0x1D01, 0x0F01, 0x8701, 0x8F01,
4: 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0xFFFF,
5: };
6: Rectangle
7: canon(p1, p2)
8: Point p1, p2;
9: {
10: Rectangle r;
11: r.origin.x = min(p1.x, p2.x);
12: r.origin.y = min(p1.y, p2.y);
13: r.corner.x = max(p1.x, p2.x);
14: r.corner.y = max(p1.y, p2.y);
15: return(r);
16: }
17: Rectangle
18: getrectb(n)
19: int n;
20: {
21: Rectangle r;
22: Texture *t;
23: Point p1, p2;
24: t = cursswitch(&boxcurs);
25: while(button123())nap(1);
26: while(!button123()) nap(1);
27: if(!(mouse.buttons&n)){
28: r.origin.x=r.origin.y=r.corner.x=r.corner.y=0;
29: while(button123()) nap(1);
30: goto Return;
31: }
32: p1=mouse.xy;
33: p2=p1;
34: r=canon(p1, p2);
35: outline(r);
36: for(; mouse.buttons&n; nap(2)){
37: outline(r);
38: p2=mouse.xy;
39: r=canon(p1, p2);
40: outline(r);
41: }
42: outline(r); /* undraw for the last time */
43: Return:
44: (void)cursswitch(t);
45: return r;
46: }
47: Rectangle
48: getrect(n)
49: {
50: return getrectb(8>>n);
51: }
52: outline(r)
53: Rectangle r;
54: {
55: segment(&display,r.origin,Pt(r.corner.x,r.origin.y),F_XOR);
56: segment(&display,Pt(r.corner.x,r.origin.y),r.corner,F_XOR);
57: segment(&display,r.corner,Pt(r.origin.x,r.corner.y),F_XOR);
58: segment(&display,Pt(r.origin.x,r.corner.y),r.origin,F_XOR);
59: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.