added "more" command
[unix-history] / usr / src / usr.bin / plot / plottoa.c
CommitLineData
0d4fad24 1#ifndef lint
e24c105d 2static char sccsid[] = "@(#)plottoa.c 4.2 (Berkeley) %G%";
0d4fad24
RC
3#endif
4
5/*
6 * Convert the standard plot input into a readable form for debugging.
7 */
8
9#include <stdio.h>
10
11float deltx;
12float delty;
13
14main(argc, argv)
15char **argv;
16{
17 int std=1;
18 FILE *fin;
19
20 while(argc-- > 1) {
21 if(*argv[1] == '-')
22 switch(argv[1][1]) {
23 case 'l':
24 deltx = atoi(&argv[1][2]) - 1;
25 break;
26 case 'w':
27 delty = atoi(&argv[1][2]) - 1;
28 break;
29 }
30 else {
31 std = 0;
32 if ((fin = fopen(argv[1], "r")) == NULL) {
33 fprintf(stderr, "can't open %s\n", argv[1]);
34 exit(1);
35 }
36 fplt(fin);
37 fclose(fin);
38 }
39 argv++;
40 }
41 if (std)
42 fplt( stdin );
43 exit(0);
44}
45
46
47fplt(fin)
48FILE *fin;
49{
50 int c;
51 char s[256];
52 int xi,yi,x0,y0,x1,y1,r,dx,n,i;
53 int pat[256];
54
55 openpl();
56 while((c = getc(fin)) != EOF){
57 switch(c){
58 case 'm':
59 xi = getsi(fin);
60 yi = getsi(fin);
61 move(xi,yi);
62 break;
63 case 'l':
64 x0 = getsi(fin);
65 y0 = getsi(fin);
66 x1 = getsi(fin);
67 y1 = getsi(fin);
68 line(x0,y0,x1,y1);
69 break;
70 case 't':
e24c105d 71 getstr(s,fin);
0d4fad24
RC
72 label(s);
73 break;
74 case 'e':
75 erase();
76 break;
77 case 'p':
78 xi = getsi(fin);
79 yi = getsi(fin);
80 point(xi,yi);
81 break;
82 case 'n':
83 xi = getsi(fin);
84 yi = getsi(fin);
85 cont(xi,yi);
86 break;
87 case 's':
88 x0 = getsi(fin);
89 y0 = getsi(fin);
90 x1 = getsi(fin);
91 y1 = getsi(fin);
92 space(x0,y0,x1,y1);
93 break;
94 case 'a':
95 xi = getsi(fin);
96 yi = getsi(fin);
97 x0 = getsi(fin);
98 y0 = getsi(fin);
99 x1 = getsi(fin);
100 y1 = getsi(fin);
101 arc(xi,yi,x0,y0,x1,y1);
102 break;
103 case 'c':
104 xi = getsi(fin);
105 yi = getsi(fin);
106 r = getsi(fin);
107 circle(xi,yi,r);
108 break;
109 case 'f':
e24c105d 110 getstr(s,fin);
0d4fad24
RC
111 linemod(s);
112 break;
113 case 'd':
114 xi = getsi(fin);
115 yi = getsi(fin);
116 dx = getsi(fin);
117 n = getsi(fin);
118 for(i=0; i<n; i++)pat[i] = getsi(fin);
119 dot(xi,yi,dx,n,pat);
120 break;
121 }
122 }
123 closepl();
124}
125
126/* get an integer stored in 2 ascii bytes. */
127getsi(fin)
128FILE *fin;
129{
130 short a, b;
131 if((b = getc(fin)) == EOF)
132 return(EOF);
133 if((a = getc(fin)) == EOF)
134 return(EOF);
135 a = a<<8;
136 return(a|b);
137}
138
e24c105d 139getstr(s,fin)
0d4fad24
RC
140char *s;
141FILE *fin;
142{
143 for( ; *s = getc(fin); s++)
144 if(*s == '\n')
145 break;
146 *s = '\0';
0d4fad24
RC
147}
148
149/* Print out the arguments to plot routines. */
150
151space(x0,y0,x1,y1)
152int x0,y0,x1,y1;
153{
154 printf( "s %d %d %d %d\n", x0, y0, x1, y1 );
155}
156
157openpl()
158{
159}
160
161closepl()
162{
163}
164
165erase()
166{
167 printf( "e\n" );
168}
169
170move(xi,yi)
171int xi,yi;
172{
173 printf( "m %d %d\n", xi, yi );
174}
175
176cont(xi,yi)
177int xi,yi;
178{
179 printf( "n %d %d\n", xi, yi );
180}
181
182line(x0,y0,x1,y1)
183int x0,y0,x1,y1;
184{
185 printf( "l %d %d %d %d\n", x0, y0, x1, y1 );
186}
187
188point(xi,yi)
189int xi,yi;
190{
191 printf( "p %d %d\n", xi, yi );
192}
193
194label(s)
195char *s;
196{
197 printf( "t%s\n\n", s );
198}
199
200
201arc(xcent,ycent,xbeg,ybeg,xend,yend)
202int xcent,ycent,xbeg,ybeg,xend,yend;
203{
204 printf( "a %d %d %d %d %d %d\n", xcent, ycent, xbeg, ybeg, xend, yend );
205}
206
207circle (xc,yc,r)
208int xc,yc,r;
209{
210 printf( "c %d %d %d\n", xc, yc, r );
211}
212
213linemod( line )
214char *line;
215{
216 printf( "f%s\n\n", line );
217}
218
219/* don't know what this should do */
220dot(xi,yi,dx,n,pat)
221int xi,yi,dx,n;
222char *pat;
223{
224 printf("d %d %d %d %d %s\n\n", xi, yi, dx, n, pat);
225}