From 85ae256512291bbd7163f7bd1eb9dd4e6f4a9306 Mon Sep 17 00:00:00 2001 From: Sam Leffler Date: Mon, 27 Jun 1983 21:16:36 -0800 Subject: [PATCH] date and time created 83/06/27 14:16:36 by sam SCCS-vsn: lib/libplot/t300s/subr.c 4.1 --- usr/src/lib/libplot/t300s/subr.c | 160 +++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 usr/src/lib/libplot/t300s/subr.c diff --git a/usr/src/lib/libplot/t300s/subr.c b/usr/src/lib/libplot/t300s/subr.c new file mode 100644 index 0000000000..e399a26033 --- /dev/null +++ b/usr/src/lib/libplot/t300s/subr.c @@ -0,0 +1,160 @@ +#ifndef lint +static char sccsid[] = "@(#)subr.c 4.1 (Berkeley) %G%"; +#endif + +#include +#include "con.h" +abval(q) +{ + return (q>=0 ? q : -q); +} + +xconv (xp) +{ + /* x position input is -2047 to +2047, output must be 0 to PAGSIZ*HORZRES */ + xp += 2048; + /* the computation is newx = xp*(PAGSIZ*HORZRES)/4096 */ + return (xoffset + xp /xscale); +} + +yconv (yp) +{ + /* see description of xconv */ + yp += 2048; + return (yp / yscale); +} + +inplot() +{ + stty(OUTF, &PTTY); + spew(ESC); + spew (INPLOT); +} + +outplot() +{ + spew(ESC); + spew(ACK); + spew(ESC); + spew(ACK); + fflush(stdout); + stty (OUTF, &ITTY); +} + +spew(ch) +{ + putc(ch, stdout); +} + +tobotleft () +{ + move(-2048,-2048); +} +reset() +{ + outplot(); + exit(); +} + +float +dist2 (x1, y1, x2, y2) +{ + float t,v; + t = x2-x1; + v = y1-y2; + return (t*t+v*v); +} + +swap (pa, pb) +int *pa, *pb; +{ + int t; + t = *pa; + *pa = *pb; + *pb = t; +} + +#define DOUBLE 010 +#define ADDR 0100 +#define COM 060 +#define MAXX 070 +#define MAXY 07 +extern xnow,ynow; +#define SPACES 7 +movep(ix,iy){ + int dx,dy,remx,remy,pts,i; + int xd,yd; + int addr,command; + char c; + if(xnow == ix && ynow == iy)return; + inplot(); + dx = ix-xnow; + dy = iy-ynow; + command = COM|PENUP|((dx<0)<<1)|(dy<0); + dx = abval(dx); + dy = abval(dy); + xd = dx/(SPACES*2); + yd = dy/(SPACES*2); + pts = xd0){ + c=command|DOUBLE; + addr=ADDR; + if(xd>0)addr|=MAXX; + if(yd>0)addr|=MAXY; + spew(c); + while(i--){ + spew(addr); + } + } + if(xd!=yd){ + if(xd>pts){ + i=xd-pts; + addr=ADDR|MAXX; + } + else{ + i=yd-pts; + addr=ADDR|MAXY; + } + c=command|DOUBLE; + spew(c); + while(i--){ + spew(addr); + } + } + remx=dx-xd*SPACES*2; + remy=dy-yd*SPACES*2; + addr=ADDR; + i = 0; + if(remx>7){ + i=1; + addr|=MAXX; + remx -= 7; + } + if(remy>7){ + i=1; + addr|=MAXY; + remy -= 7; + } + while(i--){ + spew(command); + spew(addr); + } + if(remx>0||remy>0){ + spew(command); + spew(ADDR|remx<<3|remy); + } + xnow=ix; + ynow=iy; + outplot(); + return; +} +xsc(xi){ + int xa; + xa = (xi - obotx) * scalex + botx; + return(xa); +} +ysc(yi){ + int ya; + ya = (yi - oboty) *scaley +boty; + return(ya); +} -- 2.20.1