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