|
|
1.1 root 1: #ifndef lint
2: static char sccsid[] = "@(#)plottoa.c 4.2 (Berkeley) 1/9/85";
3: #endif
4:
5: /*
6: * Convert the standard plot input into a readable form for debugging.
7: */
8:
9: #include <stdio.h>
10:
11: float deltx;
12: float delty;
13:
14: main(argc, argv)
15: char **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:
47: fplt(fin)
48: FILE *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':
71: getstr(s,fin);
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':
110: getstr(s,fin);
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. */
127: getsi(fin)
128: FILE *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:
139: getstr(s,fin)
140: char *s;
141: FILE *fin;
142: {
143: for( ; *s = getc(fin); s++)
144: if(*s == '\n')
145: break;
146: *s = '\0';
147: }
148:
149: /* Print out the arguments to plot routines. */
150:
151: space(x0,y0,x1,y1)
152: int x0,y0,x1,y1;
153: {
154: printf( "s %d %d %d %d\n", x0, y0, x1, y1 );
155: }
156:
157: openpl()
158: {
159: }
160:
161: closepl()
162: {
163: }
164:
165: erase()
166: {
167: printf( "e\n" );
168: }
169:
170: move(xi,yi)
171: int xi,yi;
172: {
173: printf( "m %d %d\n", xi, yi );
174: }
175:
176: cont(xi,yi)
177: int xi,yi;
178: {
179: printf( "n %d %d\n", xi, yi );
180: }
181:
182: line(x0,y0,x1,y1)
183: int x0,y0,x1,y1;
184: {
185: printf( "l %d %d %d %d\n", x0, y0, x1, y1 );
186: }
187:
188: point(xi,yi)
189: int xi,yi;
190: {
191: printf( "p %d %d\n", xi, yi );
192: }
193:
194: label(s)
195: char *s;
196: {
197: printf( "t%s\n\n", s );
198: }
199:
200:
201: arc(xcent,ycent,xbeg,ybeg,xend,yend)
202: int 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:
207: circle (xc,yc,r)
208: int xc,yc,r;
209: {
210: printf( "c %d %d %d\n", xc, yc, r );
211: }
212:
213: linemod( line )
214: char *line;
215: {
216: printf( "f%s\n\n", line );
217: }
218:
219: /* don't know what this should do */
220: dot(xi,yi,dx,n,pat)
221: int xi,yi,dx,n;
222: char *pat;
223: {
224: printf("d %d %d %d %d %s\n\n", xi, yi, dx, n, pat);
225: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.