Annotation of researchv10no/cmd/view2d/hide.c, revision 1.1

1.1     ! root        1: #include       <jerq.h>
        !             2: 
        !             3: #define                ONE             512
        !             4: 
        !             5: Point buf1[128], buf2[128], *old = buf2, *new = buf1;
        !             6: 
        !             7: jdraw(b)
        !             8:        Bitmap *b;
        !             9: {
        !            10: }
        !            11: #ifdef AGH
        !            12: /*
        !            13:        for(j = nx+ny-3; j > 0; j--)
        !            14:        {
        !            15:                y = min(ny-1, j);
        !            16:                lasty = x = j-y;
        !            17:                while(y != lasty)
        !            18:                {
        !            19:                        POLY(x, y, x, y-1, x+1, y-1, x+1, y);
        !            20:                        x++;
        !            21:                        y--;
        !            22:                }
        !            23:                wait(CPU);
        !            24:        }
        !            25: */
        !            26:        Point left, right, p, *np, *op;
        !            27:        int wleft;
        !            28: 
        !            29:        old[0].y = -1;
        !            30:        np = new;
        !            31:        op = old;
        !            32:        nextpt(np++);
        !            33:        nextpt(np++);
        !            34:        left = np[-1];
        !            35:        segment(b, new[0], new[1], F_OR);
        !            36: 
        !            37:        while(nextpt(&right))
        !            38:        {
        !            39:                if(left.x > right.x)
        !            40:                {
        !            41:                        left = right;
        !            42:                        np->y = -1;
        !            43:                        np = old; old = new; new = np; op = old;
        !            44:                        continue;
        !            45:                }
        !            46:                if(left.x < op->x)
        !            47:                {
        !            48:                        *np++ = left;
        !            49:                        *np++ = right;
        !            50:                        segment(b, left, right, F_OR);
        !            51:                }
        !            52:                else if(left.x > op->x)
        !            53:                        *np++ = *op++;
        !            54:                else
        !            55:                {
        !            56:                        
        !            57:                }
        !            58:                left = right;
        !            59:        }
        !            60: }
        !            61: 
        !            62: addseg(b, l, ls, r, rs)
        !            63:        Bitmap *b;
        !            64:        Point l, r;
        !            65:        register Segment *ls, *rs;
        !            66: {
        !            67:        register Segment *s;
        !            68: 
        !            69:        if(l.x != ls->l.x)
        !            70:        {
        !            71:                s = newseg(l, ls->r);
        !            72:                ls->r = l;
        !            73:                s->next = ls->next;
        !            74:                ls->next = s;
        !            75:                if(ls == rs) rs = s;
        !            76:        }
        !            77:        else
        !            78:                ls->l.y = l.y;
        !            79:        recalc(ls);
        !            80:        if(r.x != rs->r.x)
        !            81:        {
        !            82:                s = newseg(r, rs->r);
        !            83:                rs->r = r;
        !            84:                s->next = rs->next;
        !            85:                rs->next = s;
        !            86:        }
        !            87:        else
        !            88:                rs->r.y = r.y;
        !            89:        recalc(rs);
        !            90:        segment(b, l, r, F_OR);
        !            91: }
        !            92: 
        !            93: static Segment *
        !            94: newseg(l, r)
        !            95:        Point l, r;
        !            96: {
        !            97:        register Segment *s;
        !            98: 
        !            99:        s = (Segment *)alloc(sizeof *s);
        !           100:        s->next = 0;
        !           101:        s->l = l;
        !           102:        s->r = r;
        !           103:        recalc(s);
        !           104:        return(s);
        !           105: }
        !           106: 
        !           107: recalc(s)
        !           108:        register Segment *s;
        !           109: {
        !           110:        s->m = muldiv(s->r.y-s->l.y, ONE, s->r.x-s->l.x);
        !           111:        s->b = s->l.y - muldiv(s->m, s->l.x, ONE);
        !           112: }
        !           113: 
        !           114: crosses(s, l, r, p)
        !           115:        Segment *s;
        !           116:        Point l, r, *p;
        !           117: {
        !           118:        register m, b;
        !           119: 
        !           120:        m = muldiv(r.y-l.y, ONE, r.x-l.x);
        !           121:        if(m == s->m) return(0);
        !           122:        b = l.y - s->m*l.x;
        !           123:        p->x = muldiv(s->b-b, ONE, m-s->m);
        !           124:        p->y = m*p->x + b;
        !           125:        return((p->x >= s->l.x) && (p->x <= s->r.x) && (p->x >= l.x) && (p->x <= r.x));
        !           126: }
        !           127: 
        !           128: ptrels(p, s)
        !           129:        Point p;
        !           130:        Segment *s;
        !           131: {
        !           132:        register Segment *s;
        !           133: 
        !           134:        if((s->l.y < 0) || (s->r.y < 0)) return(1);
        !           135:        return((muldiv(s->m, p.x, ONE)+s->b) - p.y);
        !           136: }
        !           137: #endif

unix.superglobalmegacorp.com

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