Annotation of researchv9/jerq/src/lib/pot/rule.c, revision 1.1.1.1

1.1       root        1: #include       <CC/jerq.h>
                      2: #include       "pot.pri"
                      3: 
                      4: extern void bord(Bitmap *, Rectangle, int, int);
                      5: 
                      6: #define                P_H_STRING      0x8000
                      7: #define                P_H_VALUE       0x4000
                      8: 
                      9: Rulepot.Rulepot(Rectangle rect, short fl, short m, short v) : (rect, fl, v)
                     10: {
                     11:        maxval = m;
                     12: }
                     13: 
                     14: Rulepot.Rulepot(Rectangle rect, short fl, short m, Point sp, char *s, short v) : (rect, fl, v)
                     15: {
                     16:        maxval = m;
                     17:        flags |= P_H_STRING;
                     18:        stroffset = sp;
                     19:        str = s;
                     20: }
                     21: 
                     22: Rulepot.Rulepot(Rectangle rect, short fl, short m, Point vp, short v) : (rect, fl, v)
                     23: {
                     24:        maxval = m;
                     25:        flags |= P_H_VALUE;
                     26:        valoffset = vp;
                     27: }
                     28: 
                     29: Rulepot.Rulepot(Rectangle rect, short fl, short m, Point vp, Point sp, char *s, short v) : (rect, fl, v)
                     30: {
                     31:        maxval = m;
                     32:        flags |= P_H_STRING|P_H_VALUE;
                     33:        valoffset = vp;
                     34:        stroffset = sp;
                     35:        str = s;
                     36: }
                     37: 
                     38: void
                     39: Rulepot.resize(Rectangle rect)
                     40: {
                     41:        r = rect;
                     42:        draw();
                     43: }
                     44: 
                     45: void
                     46: Rulepot.draw()
                     47: {
                     48:        int len, i, s, e, horiz = (flags&P_STYLE)==P_HORIZ;
                     49:        Point p;
                     50:        Rectangle bar;
                     51: 
                     52:        bar = inset(r, -1);
                     53:        if(horiz)
                     54:                bar.o.x++;
                     55:        else
                     56:                bar.o.y++;
                     57:        bord(&display, bar, 1, F_OR);
                     58:        bar = r;
                     59:        p = r.o;
                     60:        if(horiz)
                     61:        {
                     62:                len = r.c.x - r.o.x;
                     63:                s = r.o.x;
                     64:                e = r.c.x;
                     65:                for(i = 0; i <= 10; i++)
                     66:                {
                     67:                        p.x = (s*(10-i) + e*i)/10;
                     68:                        segment(&display, p, Pt(p.x, p.y+(i%5? 5:10)), F_OR);
                     69:                }
                     70:                rx = bar.c.x = bar.o.x + muldiv(val, len, maxval);
                     71:        }
                     72:        else
                     73:        {
                     74:                p.x = r.c.x;
                     75:                len = r.c.y - r.o.y;
                     76:                s = r.c.y;
                     77:                e = r.o.y;
                     78:                for(i = 0; i <= 10; i++)
                     79:                {
                     80:                        p.y = (s*(10-i) + e*i)/10;
                     81:                        segment(&display, p, Pt(p.x-(i%5? 5:10), p.y), F_OR);
                     82:                }
                     83:                rx = bar.o.y = bar.c.y - muldiv(val, len, maxval);
                     84:        }
                     85:        rectf(&display, bar, F_XOR);
                     86:        if(flags&P_H_STRING) string(&defont, str, &display, r.o+stroffset, F_OR);
                     87:        if(flags&P_H_VALUE) prval(r.o+valoffset, val);
                     88: }
                     89: 
                     90: confine(int x, int lo, int hi)
                     91: {
                     92:        return(min(max(lo, x), hi));
                     93: }
                     94: 
                     95: void
                     96: Rulepot.mod(int but)
                     97: {
                     98:        int x, len, horiz = (flags&P_STYLE)==P_HORIZ;
                     99:        Rectangle bar = r;
                    100: 
                    101:        len = horiz? (r.c.x - r.o.x):(r.c.y - r.o.y);
                    102:        bar = r;
                    103:        while(button(but))
                    104:        {
                    105:                x = horiz? confine(mouse.xy.x, r.o.x, r.c.x):confine(mouse.xy.y, r.o.y, r.c.y);
                    106:                if(rx != x)
                    107:                {
                    108:                        if(flags&P_H_VALUE) prval(r.o+valoffset, val);
                    109:                        if(horiz)
                    110:                        {
                    111:                                bar.o.x = min(x, rx);
                    112:                                bar.c.x = max(x, rx);
                    113:                                val = muldiv(x-r.o.x, maxval, len);
                    114:                        }
                    115:                        else
                    116:                        {
                    117:                                bar.o.y = min(x, rx);
                    118:                                bar.c.y = max(x, rx);
                    119:                                val = muldiv(r.c.y-x, maxval, len);
                    120:                        }
                    121:                        rx = x;
                    122:                        rectf(&display, bar, F_XOR);
                    123:                        if(flags&P_H_VALUE) prval(r.o+valoffset, val);
                    124:                        nap(2);
                    125:                }
                    126:        }
                    127: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.