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