1 /*-
2 * %sccs.include.proprietary.c%
3 */
4
5 #ifndef lint
6 static char sccsid[] = "@(#)driver.c 4.5 (Berkeley) 04/18/91";
7 #endif /* not lint */
8
9 #include <stdio.h>
10
11 float deltx;
12 float delty;
13 int PlotRes;
14
main(argc,argv)15 main(argc,argv)
16 int argc;
17 char *argv[];
18 {
19 int std = 1;
20 char *progname;
21 FILE *fin;
22
23 progname = argv[0];
24 for (argc--, argv++; argc > 0; argc--, argv++) {
25 if (argv[0][0] == '-') {
26 switch (argv[0][1]) {
27 case 'l':
28 deltx = atoi(&argv[0][2]) - 1;
29 break;
30 case 'w':
31 delty = atoi(&argv[0][2]) - 1;
32 break;
33 case 'r':
34 PlotRes = atoi(&argv[0][2]);
35 break;
36 }
37 continue;
38 }
39 std = 0;
40 fin = fopen(argv[0], "r");
41 if (fin == NULL) {
42 fprintf(stderr, "%s: can't open %s\n", progname,
43 argv[0]);
44 exit(1);
45 }
46 fplt(fin);
47 fclose(fin);
48 }
49 if (std)
50 fplt(stdin);
51 exit(0);
52 }
53
fplt(fin)54 fplt(fin)
55 FILE *fin;
56 {
57 register int c;
58 char s[256];
59 int xi,yi,x0,y0,x1,y1,r,dx,n,i;
60 int pat[256];
61
62 openpl();
63 while((c = getc(fin)) != EOF) {
64 switch(c) {
65 case 'm':
66 xi = getsi(fin);
67 yi = getsi(fin);
68 move(xi,yi);
69 break;
70 case 'l':
71 x0 = getsi(fin);
72 y0 = getsi(fin);
73 x1 = getsi(fin);
74 y1 = getsi(fin);
75 line(x0,y0,x1,y1);
76 break;
77 case 't':
78 getstr(s,fin);
79 label(s);
80 break;
81 case 'e':
82 erase();
83 break;
84 case 'p':
85 xi = getsi(fin);
86 yi = getsi(fin);
87 point(xi,yi);
88 break;
89 case 'n':
90 xi = getsi(fin);
91 yi = getsi(fin);
92 cont(xi,yi);
93 break;
94 case 's':
95 x0 = getsi(fin);
96 y0 = getsi(fin);
97 x1 = getsi(fin);
98 y1 = getsi(fin);
99 space(x0,y0,x1,y1);
100 break;
101 case 'a':
102 xi = getsi(fin);
103 yi = getsi(fin);
104 x0 = getsi(fin);
105 y0 = getsi(fin);
106 x1 = getsi(fin);
107 y1 = getsi(fin);
108 arc(xi,yi,x0,y0,x1,y1);
109 break;
110 case 'c':
111 xi = getsi(fin);
112 yi = getsi(fin);
113 r = getsi(fin);
114 circle(xi,yi,r);
115 break;
116 case 'f':
117 getstr(s,fin);
118 linemod(s);
119 break;
120 case 'd':
121 xi = getsi(fin);
122 yi = getsi(fin);
123 dx = getsi(fin);
124 n = getsi(fin);
125 for(i=0; i<n; i++)
126 pat[i] = getsi(fin);
127 dot(xi,yi,dx,n,pat);
128 break;
129 }
130 }
131 closepl();
132 }
133
134 /* get an integer stored in 2 ascii bytes. */
getsi(fin)135 getsi(fin)
136 register FILE *fin;
137 {
138 short a, b;
139
140 if((b = getc(fin)) == EOF)
141 return(EOF);
142 if((a = getc(fin)) == EOF)
143 return(EOF);
144 a = a<<8;
145 return(a|b);
146 }
147
getstr(s,fin)148 getstr(s, fin)
149 register char *s;
150 register FILE *fin;
151 {
152
153 for( ; *s = getc(fin); s++)
154 if(*s == '\n')
155 break;
156 *s = '\0';
157 }
158