added bitgraph, dumbplot, hp2648, hp7221
[unix-history] / usr / src / lib / libplot / t300 / subr.c
CommitLineData
e7ea26f7
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 stty(OUTF, &PTTY);
30 spew (ACK);
31}
32
33outplot()
34{
35 spew(ESC);
36 spew(ACK);
37 fflush(stdout);
38 stty(OUTF, &ITTY);
39}
40
41spew(ch)
42{
43 if(ch == UP)putc(ESC,stdout);
44 putc(ch, stdout);
45}
46
47tobotleft ()
48{
49 move(-2048,-2048);
50}
51reset()
52{
53 outplot();
54 exit();
55}
56
57float
58dist2 (x1, y1, x2, y2)
59{
60 float t,v;
61 t = x2-x1;
62 v = y1-y2;
63 return (t*t+v*v);
64}
65
66swap (pa, pb)
67int *pa, *pb;
68{
69 int t;
70 t = *pa;
71 *pa = *pb;
72 *pb = t;
73}
74movep (xg, yg)
75{
76 int i,ch;
77 if((xg == xnow) && (yg == ynow))return;
78 /* if we need to go to left margin, just CR */
79 if (xg < xnow/2)
80 {
81 spew(CR);
82 xnow = 0;
83 }
84 i = (xg-xnow)/HORZRES;
85 if(xnow < xg)ch = RIGHT;
86 else ch = LEFT;
87 xnow += i*HORZRES;
88 i = abval(i);
89 while(i--)spew(ch);
90 i = abval(xg-xnow);
91 inplot();
92 while(i--) spew(ch);
93 outplot();
94 i=(yg-ynow)/VERTRES;
95 if(ynow < yg)ch = UP;
96 else ch = DOWN;
97 ynow += i*VERTRES;
98 i = abval(i);
99 while(i--)spew(ch);
100 i=abval(yg-ynow);
101 inplot();
102 while(i--)spew(ch);
103 outplot();
104 xnow = xg; ynow = yg;
105}
106
107xsc(xi){
108 int xa;
109 xa = (xi - obotx) * scalex + botx;
110 return(xa);
111}
112ysc(yi){
113 int ya;
114 ya = (yi - oboty) *scaley +boty;
115 return(ya);
116}