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