|
|
1.1 ! root 1: #include <CC/jerq.h> ! 2: #include "pot.pri" ! 3: ! 4: Pot *base = 0; ! 5: ! 6: Pot.Pot(Rectangle rect, short fl, short v) ! 7: { ! 8: r = rect; ! 9: flags = fl&P_MASK; ! 10: val = v; ! 11: help = ""; ! 12: next = base; ! 13: base = this; ! 14: } ! 15: ! 16: void ! 17: Pot.draw() ! 18: { ! 19: rectf(&display, r, F_OR); ! 20: } ! 21: ! 22: void ! 23: Pot.mod(int i) ! 24: { ! 25: rectf(&display, r, F_OR); ! 26: i++; /* shut CC up */ ! 27: } ! 28: ! 29: void ! 30: Pot.resize(Rectangle rect) ! 31: { ! 32: r = rect; ! 33: } ! 34: ! 35: hitpot(int but) ! 36: { ! 37: register Pot *pot; ! 38: Point p; ! 39: ! 40: p = mouse.xy; ! 41: for(pot = base; pot; pot = pot->next) ! 42: if(ptinrect(p, inset(pot->r, -25))) break; ! 43: if(pot == 0) return(0); ! 44: pot->mod(but); ! 45: return(1); ! 46: } ! 47: ! 48: void ! 49: helppot(int but) ! 50: { ! 51: register Pot *pot; ! 52: Point p; ! 53: ! 54: p = mouse.xy; ! 55: for(pot = base; pot; pot = pot->next) ! 56: if(ptinrect(p, inset(pot->r, -25))) break; ! 57: if(pot && pot->help && pot->help[0]) ! 58: { ! 59: int x = strwidth(&defont, pot->help); ! 60: Bitmap *b; ! 61: ! 62: if((p.x = pot->r.o.x-x-100) > 0) ! 63: p.y = (pot->r.o.y+pot->r.c.y)/2-7; ! 64: else if((p.x = pot->r.c.x+100)+x < XMAX) ! 65: p.y = (pot->r.o.y+pot->r.c.y)/2-7; ! 66: if(b = balloc(raddp(Rect(0, 0, x+6, 20), p))) ! 67: { ! 68: rectf(b, b->rect, F_OR); ! 69: rectf(b, inset(b->rect, 1), F_CLR); ! 70: string(&defont, pot->help, b, add(b->rect.o, Pt(3, 3)), F_OR); ! 71: screenswap(b, b->rect, b->rect); ! 72: while(button(but)) nap(2); ! 73: screenswap(b, b->rect, b->rect); ! 74: bfree(b); ! 75: } ! 76: } ! 77: } ! 78: ! 79: void ! 80: drawpot() ! 81: { ! 82: register Pot *pot; ! 83: ! 84: for(pot = base; pot; pot = pot->next) ! 85: pot->draw(); ! 86: } ! 87: ! 88: void ! 89: reshapepot(Rectangle oldr, Rectangle newr) ! 90: { ! 91: register Pot *pot; ! 92: Rectangle r; ! 93: Point o = oldr.c-oldr.o, n = newr.c-newr.o; ! 94: ! 95: for(pot = base; pot; pot = pot->next) ! 96: { ! 97: r.o.x = muldiv(pot->r.o.x-oldr.o.x, n.x, o.x); ! 98: r.o.y = muldiv(pot->r.o.y-oldr.o.y, n.y, o.y); ! 99: r.c.x = muldiv(pot->r.c.x-oldr.o.x, n.x, o.x); ! 100: r.c.y = muldiv(pot->r.c.y-oldr.o.y, n.y, o.y); ! 101: pot->resize(r); ! 102: } ! 103: } ! 104: ! 105: void ! 106: prval(Point p, short v) ! 107: { ! 108: char buf[20]; ! 109: ! 110: sprintf(buf, "%d", v); ! 111: string(&defont, buf, &display, p, F_XOR); ! 112: } ! 113: ! 114: Rectangle ! 115: rcenter(Rectangle r, Rectangle q) ! 116: { ! 117: Point qc = div(add(q.o, q.c), 2); ! 118: Point rc = div(add(r.o, r.c), 2); ! 119: ! 120: return(raddp(r, sub(qc, rc))); ! 121: } ! 122: ! 123: extern void ! 124: bord(Bitmap *bp, Rectangle r, int i, int c) ! 125: { ! 126: rectf(bp, Rectangle(r.o.x, r.o.y, r.c.x, r.o.y+i), c); ! 127: rectf(bp, Rect(r.o.x, r.o.y+i, r.o.x+i, r.c.y-i), c); ! 128: rectf(bp, Rect(r.c.x-i, r.o.y+i, r.c.x, r.c.y-i), c); ! 129: rectf(bp, Rect(r.o.x, r.c.y-1, r.c.x, r.c.y), c); ! 130: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.