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