date and time created 85/01/02 20:10:45 by jak
[unix-history] / usr / src / lib / libplot / t450 / subr.c
CommitLineData
d6776df5
SL
1#ifndef lint
2static char sccsid[] = "@(#)subr.c 4.1 (Berkeley) %G%";
3#endif
4
5#include <stdio.h>
6#include "con.h"
7abval(q)
8{
9 return (q>=0 ? q : -q);
10}
11
12xconv (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
20yconv (yp)
21{
22 /* see description of xconv */
23 yp += 2048;
24 return (yp / yscale);
25}
26
27inplot()
28{
29 spew (ESC);
30 spew(PLOTIN);
31}
32
33outplot()
34{
35 spew(ESC);
36 spew(PLOTOUT);
37 fflush(stdout);
38}
39
40spew(ch)
41{
42 if(ch == UP){
43 putc(ESC,stdout);
44 ch = DOWN;
45 }
46 putc(ch, stdout);
47}
48
49tobotleft ()
50{
51 move(-2048,-2048);
52}
53reset()
54{
55 signal(2,1);
56 outplot();
57 stty(OUTF,&ITTY);
58 exit();
59}
60
61float
62dist2 (x1, y1, x2, y2)
63{
64 float t,v;
65 t = x2-x1;
66 v = y1-y2;
67 return (t*t+v*v);
68}
69
70swap (pa, pb)
71int *pa, *pb;
72{
73 int t;
74 t = *pa;
75 *pa = *pb;
76 *pb = t;
77}
78movep (xg,yg)
79{
80 int i,ch;
81 if((xg == xnow) && (yg == ynow))return;
82 /* if we need to go to left margin, just CR */
83 if (xg < xnow/2)
84 {
85 spew(CR);
86 xnow = 0;
87 }
88 i = (xg-xnow)/HORZRES;
89 if(xnow < xg)ch = RIGHT;
90 else ch = LEFT;
91 xnow += i*HORZRES;
92 i = abval(i);
93 while(i--)spew(ch);
94 i = abval(xg-xnow);
95 inplot();
96 while(i--) spew(ch);
97 outplot();
98 i=(yg-ynow)/VERTRES;
99 if(ynow < yg)ch = UP;
100 else ch = DOWN;
101 ynow += i*VERTRES;
102 i = abval(i);
103 while(i--)spew(ch);
104 i=abval(yg-ynow);
105 inplot();
106 while(i--)spew(ch);
107 outplot();
108 xnow = xg; ynow = yg;
109}
110
111xsc(xi){
112 int xa;
113 xa = (xi - obotx) * scalex + botx;
114 return(xa);
115}
116ysc(yi){
117 int ya;
118 ya = (yi - oboty) *scaley +boty;
119 return(ya);
120}