Annotation of 42BSD/usr.lib/libplot/t300s/subr.c, revision 1.1

1.1     ! root        1: #ifndef lint
        !             2: static char sccsid[] = "@(#)subr.c     4.1 (Berkeley) 6/27/83";
        !             3: #endif
        !             4: 
        !             5: #include <stdio.h>
        !             6: #include "con.h"
        !             7: abval(q)
        !             8: {
        !             9:        return (q>=0 ? q : -q);
        !            10: }
        !            11: 
        !            12: xconv (xp)
        !            13: {
        !            14:        /* x position input is -2047 to +2047, output must be 0 to PAGSIZ*HORZRES */
        !            15:        xp += 2048;
        !            16:        /* the computation is newx = xp*(PAGSIZ*HORZRES)/4096 */
        !            17:        return (xoffset + xp /xscale);
        !            18: }
        !            19: 
        !            20: yconv (yp)
        !            21: {
        !            22:        /* see description of xconv */
        !            23:        yp += 2048;
        !            24:        return (yp / yscale);
        !            25: }
        !            26: 
        !            27: inplot()
        !            28: {
        !            29:        stty(OUTF, &PTTY);
        !            30:        spew(ESC);
        !            31:        spew (INPLOT);
        !            32: }
        !            33: 
        !            34: outplot()
        !            35: {
        !            36:        spew(ESC);
        !            37:        spew(ACK);
        !            38:        spew(ESC);
        !            39:        spew(ACK);
        !            40:        fflush(stdout);
        !            41:        stty (OUTF, &ITTY);
        !            42: }
        !            43: 
        !            44: spew(ch)
        !            45: {
        !            46:        putc(ch, stdout);
        !            47: }
        !            48: 
        !            49: tobotleft ()
        !            50: {
        !            51:        move(-2048,-2048);
        !            52: }
        !            53: reset()
        !            54: {
        !            55:        outplot();
        !            56:        exit();
        !            57: }
        !            58: 
        !            59: float
        !            60: dist2 (x1, y1, x2, y2)
        !            61: {
        !            62:        float t,v;
        !            63:        t = x2-x1;
        !            64:        v = y1-y2;
        !            65:        return (t*t+v*v);
        !            66: }
        !            67: 
        !            68: swap (pa, pb)
        !            69: int *pa, *pb;
        !            70: {
        !            71:        int t;
        !            72:        t = *pa;
        !            73:        *pa = *pb;
        !            74:        *pb = t;
        !            75: }
        !            76: 
        !            77: #define DOUBLE 010
        !            78: #define ADDR 0100
        !            79: #define COM 060
        !            80: #define MAXX 070
        !            81: #define MAXY 07
        !            82: extern xnow,ynow;
        !            83: #define SPACES 7
        !            84: movep(ix,iy){
        !            85:        int dx,dy,remx,remy,pts,i;
        !            86:        int xd,yd;
        !            87:        int addr,command;
        !            88:        char c;
        !            89:        if(xnow == ix && ynow == iy)return;
        !            90:        inplot();
        !            91:        dx = ix-xnow;
        !            92:        dy = iy-ynow;
        !            93:        command = COM|PENUP|((dx<0)<<1)|(dy<0);
        !            94:        dx = abval(dx);
        !            95:        dy = abval(dy);
        !            96:        xd = dx/(SPACES*2);
        !            97:        yd = dy/(SPACES*2);
        !            98:        pts = xd<yd?xd:yd;
        !            99:        if((i=pts)>0){
        !           100:                c=command|DOUBLE;
        !           101:                addr=ADDR;
        !           102:                if(xd>0)addr|=MAXX;
        !           103:                if(yd>0)addr|=MAXY;
        !           104:                spew(c);
        !           105:                while(i--){
        !           106:                        spew(addr);
        !           107:                }
        !           108:        }
        !           109:        if(xd!=yd){
        !           110:                if(xd>pts){
        !           111:                        i=xd-pts;
        !           112:                        addr=ADDR|MAXX;
        !           113:                }
        !           114:                else{
        !           115:                        i=yd-pts;
        !           116:                        addr=ADDR|MAXY;
        !           117:                }
        !           118:                c=command|DOUBLE;
        !           119:                spew(c);
        !           120:                while(i--){
        !           121:                        spew(addr);
        !           122:                }
        !           123:        }
        !           124:        remx=dx-xd*SPACES*2;
        !           125:        remy=dy-yd*SPACES*2;
        !           126:        addr=ADDR;
        !           127:        i = 0;
        !           128:        if(remx>7){
        !           129:                i=1;
        !           130:                addr|=MAXX;
        !           131:                remx -= 7;
        !           132:        }
        !           133:        if(remy>7){
        !           134:                i=1;
        !           135:                addr|=MAXY;
        !           136:                remy -= 7;
        !           137:        }
        !           138:        while(i--){
        !           139:                spew(command);
        !           140:                spew(addr);
        !           141:        }
        !           142:        if(remx>0||remy>0){
        !           143:                spew(command);
        !           144:                spew(ADDR|remx<<3|remy);
        !           145:        }
        !           146:        xnow=ix;
        !           147:        ynow=iy;
        !           148:        outplot();
        !           149:        return;
        !           150: }
        !           151: xsc(xi){
        !           152:        int xa;
        !           153:        xa = (xi - obotx) * scalex + botx;
        !           154:        return(xa);
        !           155: }
        !           156: ysc(yi){
        !           157:        int ya;
        !           158:        ya = (yi - oboty) *scaley +boty;
        !           159:        return(ya);
        !           160: }

unix.superglobalmegacorp.com

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