1*48286Sbostic /*-
2*48286Sbostic * %sccs.include.proprietary.c%
3*48286Sbostic */
4*48286Sbostic
514501Ssam #ifndef lint
6*48286Sbostic static char sccsid[] = "@(#)driver.c 4.5 (Berkeley) 04/18/91";
7*48286Sbostic #endif /* not lint */
814501Ssam
914501Ssam #include <stdio.h>
1014501Ssam
1114501Ssam float deltx;
1214501Ssam float delty;
1325017Ssam int PlotRes;
1414501Ssam
main(argc,argv)1525017Ssam main(argc,argv)
1625017Ssam int argc;
1725017Ssam char *argv[];
1825017Ssam {
1925017Ssam int std = 1;
2025017Ssam char *progname;
2114501Ssam FILE *fin;
2214501Ssam
2325017Ssam progname = argv[0];
2425017Ssam for (argc--, argv++; argc > 0; argc--, argv++) {
2525017Ssam if (argv[0][0] == '-') {
2625017Ssam switch (argv[0][1]) {
2725017Ssam case 'l':
2825017Ssam deltx = atoi(&argv[0][2]) - 1;
2925017Ssam break;
3025017Ssam case 'w':
3125017Ssam delty = atoi(&argv[0][2]) - 1;
3225017Ssam break;
3325017Ssam case 'r':
3425017Ssam PlotRes = atoi(&argv[0][2]);
3525017Ssam break;
3614501Ssam }
3725017Ssam continue;
3814501Ssam }
3925017Ssam std = 0;
4025017Ssam fin = fopen(argv[0], "r");
4125017Ssam if (fin == NULL) {
4225017Ssam fprintf(stderr, "%s: can't open %s\n", progname,
4325017Ssam argv[0]);
4425017Ssam exit(1);
4525017Ssam }
4625017Ssam fplt(fin);
4725017Ssam fclose(fin);
4825017Ssam }
4914501Ssam if (std)
5025017Ssam fplt(stdin);
5114501Ssam exit(0);
5225017Ssam }
5314501Ssam
fplt(fin)5425017Ssam fplt(fin)
5525017Ssam FILE *fin;
5625017Ssam {
5725017Ssam register int c;
5814501Ssam char s[256];
5914501Ssam int xi,yi,x0,y0,x1,y1,r,dx,n,i;
6014501Ssam int pat[256];
6114501Ssam
6214501Ssam openpl();
6325017Ssam while((c = getc(fin)) != EOF) {
6425017Ssam switch(c) {
6514501Ssam case 'm':
6614501Ssam xi = getsi(fin);
6714501Ssam yi = getsi(fin);
6814501Ssam move(xi,yi);
6914501Ssam break;
7014501Ssam case 'l':
7114501Ssam x0 = getsi(fin);
7214501Ssam y0 = getsi(fin);
7314501Ssam x1 = getsi(fin);
7414501Ssam y1 = getsi(fin);
7514501Ssam line(x0,y0,x1,y1);
7614501Ssam break;
7714501Ssam case 't':
7817674Sralph getstr(s,fin);
7914501Ssam label(s);
8014501Ssam break;
8114501Ssam case 'e':
8214501Ssam erase();
8314501Ssam break;
8414501Ssam case 'p':
8514501Ssam xi = getsi(fin);
8614501Ssam yi = getsi(fin);
8714501Ssam point(xi,yi);
8814501Ssam break;
8914501Ssam case 'n':
9014501Ssam xi = getsi(fin);
9114501Ssam yi = getsi(fin);
9214501Ssam cont(xi,yi);
9314501Ssam break;
9414501Ssam case 's':
9514501Ssam x0 = getsi(fin);
9614501Ssam y0 = getsi(fin);
9714501Ssam x1 = getsi(fin);
9814501Ssam y1 = getsi(fin);
9914501Ssam space(x0,y0,x1,y1);
10014501Ssam break;
10114501Ssam case 'a':
10214501Ssam xi = getsi(fin);
10314501Ssam yi = getsi(fin);
10414501Ssam x0 = getsi(fin);
10514501Ssam y0 = getsi(fin);
10614501Ssam x1 = getsi(fin);
10714501Ssam y1 = getsi(fin);
10814501Ssam arc(xi,yi,x0,y0,x1,y1);
10914501Ssam break;
11014501Ssam case 'c':
11114501Ssam xi = getsi(fin);
11214501Ssam yi = getsi(fin);
11314501Ssam r = getsi(fin);
11414501Ssam circle(xi,yi,r);
11514501Ssam break;
11614501Ssam case 'f':
11717674Sralph getstr(s,fin);
11814501Ssam linemod(s);
11914501Ssam break;
12014501Ssam case 'd':
12114501Ssam xi = getsi(fin);
12214501Ssam yi = getsi(fin);
12314501Ssam dx = getsi(fin);
12414501Ssam n = getsi(fin);
12525017Ssam for(i=0; i<n; i++)
12625017Ssam pat[i] = getsi(fin);
12714501Ssam dot(xi,yi,dx,n,pat);
12814501Ssam break;
12914501Ssam }
13025017Ssam }
13114501Ssam closepl();
13225017Ssam }
13325017Ssam
13425017Ssam /* get an integer stored in 2 ascii bytes. */
getsi(fin)13525017Ssam getsi(fin)
13625017Ssam register FILE *fin;
13725017Ssam {
13814501Ssam short a, b;
13925017Ssam
14014501Ssam if((b = getc(fin)) == EOF)
14114501Ssam return(EOF);
14214501Ssam if((a = getc(fin)) == EOF)
14314501Ssam return(EOF);
14414501Ssam a = a<<8;
14514501Ssam return(a|b);
14614501Ssam }
14725017Ssam
getstr(s,fin)14825017Ssam getstr(s, fin)
14925017Ssam register char *s;
15025017Ssam register FILE *fin;
15125017Ssam {
15225017Ssam
15314501Ssam for( ; *s = getc(fin); s++)
15414501Ssam if(*s == '\n')
15514501Ssam break;
15614501Ssam *s = '\0';
15714501Ssam }
158