Init
This commit is contained in:
116
usr.lib/libplot/t300/subr.c
Normal file
116
usr.lib/libplot/t300/subr.c
Normal file
@@ -0,0 +1,116 @@
|
||||
#ifndef lint
|
||||
static char sccsid[] = "@(#)subr.c 1.1 94/10/31 SMI"; /* from UCB 4.1 6/27/83 */
|
||||
#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(0);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
Reference in New Issue
Block a user