date and time created 83/06/27 14:09:12 by sam
authorSam Leffler <sam@ucbvax.Berkeley.EDU>
Tue, 28 Jun 1983 05:09:12 +0000 (21:09 -0800)
committerSam Leffler <sam@ucbvax.Berkeley.EDU>
Tue, 28 Jun 1983 05:09:12 +0000 (21:09 -0800)
SCCS-vsn: lib/libplot/t300/subr.c 4.1

usr/src/lib/libplot/t300/subr.c [new file with mode: 0644]

diff --git a/usr/src/lib/libplot/t300/subr.c b/usr/src/lib/libplot/t300/subr.c
new file mode 100644 (file)
index 0000000..58dbb97
--- /dev/null
@@ -0,0 +1,116 @@
+#ifndef lint
+static char sccsid[] = "@(#)subr.c     4.1 (Berkeley) %G%";
+#endif
+
+#include <stdio.h>
+#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 (ACK);
+}
+
+outplot()
+{
+       spew(ESC);
+       spew(ACK);
+       fflush(stdout);
+       stty(OUTF, &ITTY);
+}
+
+spew(ch)
+{
+       if(ch == UP)putc(ESC,stdout);
+       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;
+}
+movep (xg, yg)
+{
+       int i,ch;
+       if((xg == xnow) && (yg == ynow))return;
+       /* if we need to go to left margin, just CR */
+       if (xg < xnow/2)
+       {
+               spew(CR);
+               xnow = 0;
+       }
+       i = (xg-xnow)/HORZRES;
+       if(xnow < xg)ch = RIGHT;
+       else ch = LEFT;
+       xnow += i*HORZRES;
+       i = abval(i);
+       while(i--)spew(ch);
+       i = abval(xg-xnow);
+       inplot();
+       while(i--) spew(ch);
+       outplot();
+       i=(yg-ynow)/VERTRES;
+       if(ynow < yg)ch = UP;
+       else ch = DOWN;
+       ynow += i*VERTRES;
+       i = abval(i);
+       while(i--)spew(ch);
+       i=abval(yg-ynow);
+       inplot();
+       while(i--)spew(ch);
+       outplot();
+       xnow = xg; ynow = yg;
+}
+
+xsc(xi){
+       int xa;
+       xa = (xi - obotx) * scalex + botx;
+       return(xa);
+}
+ysc(yi){
+       int ya;
+       ya = (yi - oboty) *scaley +boty;
+       return(ya);
+}