Annotation of researchv9/jtools/src/sunlib/add.c, revision 1.1.1.1

1.1       root        1: #include "jerq.h"
                      2: /* These routines are NOT portable, but they are fast. */
                      3: 
                      4: Point
                      5: add (a, b)
                      6: Point a, b;
                      7: {
                      8:        register short *ap= &a.x, *bp= &b.x;
                      9:        *ap++ += *bp++;
                     10:        *ap += *bp;
                     11:        return a;
                     12: }
                     13: 
                     14: Point
                     15: sub (a, b)
                     16: Point a, b;
                     17: {
                     18:        register short *ap= &a.x, *bp= &b.x;
                     19:        *ap++ -= *bp++;
                     20:        *ap -= *bp;
                     21:        return a;
                     22: }
                     23: 
                     24: Point
                     25: mul (a, b)
                     26: Point a;
                     27: register b;
                     28: {
                     29:        register short *ap= &a.x;       
                     30:        *(ap++)*=b;
                     31:        *ap*=b;
                     32:        return a;
                     33: }
                     34: 
                     35: Point
                     36: div (a, b)
                     37: Point a;
                     38: register b;
                     39: {
                     40:        register short *ap= &a.x;
                     41:        *(ap++)/=b;
                     42:        *ap/=b;
                     43:        return a;
                     44: }
                     45: 
                     46: eqpt (p, q)
                     47: Point p, q;
                     48: {
                     49:        register long *pp=(long *)&p, *qq=(long *)&q;
                     50:        return *pp==*qq;
                     51: }
                     52: 
                     53: eqrect (r, s)
                     54: Rectangle r, s;
                     55: {
                     56:        register long *rr=(long *)&r, *ss=(long *)&s;
                     57:        return *rr++==*ss++ && *rr==*ss;
                     58: }
                     59: 
                     60: Rectangle
                     61: inset (r,n)
                     62: Rectangle r;
                     63: register n;
                     64: {
                     65:        register short *rp= &r.origin.x;
                     66:        *rp++ += n;
                     67:        *rp++ += n;
                     68:        *rp++ -= n;
                     69:        *rp   -= n;
                     70:        return r;
                     71: }
                     72: 
                     73: /* muldiv is a macro in jerq.h */
                     74: 
                     75: ptinrect (p, r)
                     76: Point p;
                     77: Rectangle r;
                     78: {
                     79:        return(p.x >= r.origin.x && p.x < r.corner.x
                     80:            && p.y >= r.origin.y && p.y < r.corner.y);
                     81: }
                     82: 
                     83: Rectangle
                     84: raddp (r, p)
                     85: Rectangle r;
                     86: Point p;
                     87: {
                     88:        register short *rp= &r.origin.x, *pp= &p.x;
                     89:        *rp++ += *pp++;
                     90:        *rp++ += *pp--;
                     91:        *rp++ += *pp++;
                     92:        *rp   += *pp;
                     93:        return r;
                     94: }
                     95: 
                     96: Rectangle
                     97: rsubp (r, p)
                     98: Rectangle r;
                     99: Point p;
                    100: {
                    101:        register short *rp= &r.origin.x, *pp= &p.x;
                    102:        *rp++ -= *pp++;
                    103:        *rp++ -= *pp--;
                    104:        *rp++ -= *pp++;
                    105:        *rp   -= *pp;
                    106:        return r;
                    107: }
                    108: 
                    109: rectXrect(r, s)
                    110: Rectangle r, s;
                    111: {
                    112: #define c corner
                    113: #define o origin
                    114:        return(r.o.x<s.c.x && s.o.x<r.c.x && r.o.y<s.c.y && s.o.y<r.c.y);
                    115: }
                    116: 
                    117: rectclip (rp, b)       /* first by reference, second by value */
                    118: register Rectangle *rp;
                    119: Rectangle b;
                    120: {
                    121:        register Rectangle *bp= &b;
                    122:        /*
                    123:         * Expand rectXrect() in line for speed
                    124:         */
                    125:        if((rp->o.x<bp->c.x && bp->o.x<rp->c.x &&
                    126:            rp->o.y<bp->c.y && bp->o.y<rp->c.y)==0)
                    127:                return 0;
                    128:        /* They must overlap */
                    129:        if(rp->origin.x<bp->origin.x)
                    130:                rp->origin.x=bp->origin.x;
                    131:        if(rp->origin.y<bp->origin.y)
                    132:                rp->origin.y=bp->origin.y;
                    133:        if(rp->corner.x>bp->corner.x)
                    134:                rp->corner.x=bp->corner.x;
                    135:        if(rp->corner.y>bp->corner.y)
                    136:                rp->corner.y=bp->corner.y;
                    137:        return 1;
                    138: }

unix.superglobalmegacorp.com

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