added "more" command
[unix-history] / usr / src / usr.bin / plot / crtdriver.c
CommitLineData
5a8f8fe1 1#ifndef lint
e24c105d 2static char sccsid[] = "@(#)crtdriver.c 4.2 (Berkeley) %G%";
5a8f8fe1
RC
3#endif
4
5/*
6This driver is used with crtplot.c.
7It is essentially the same driver as the one in /usr/src/cmd/plot.
8Unfortunately, the curses library has some of the same names as does
9as the functions that the driver calls. These have been changed.
10
11Also, one of the commands has been removed since they don't make sense
12for crt's.
13*/
14
15
16#include <stdio.h>
17
18float deltx;
19float delty;
20
21main(argc,argv) char **argv; {
22 int std=1;
23 FILE *fin;
24
25 while(argc-- > 1) {
26 if(*argv[1] == '-')
27 switch(argv[1][1]) {
28 case 'l':
29 deltx = atoi(&argv[1][2]) - 1;
30 break;
31 case 'w':
32 delty = atoi(&argv[1][2]) - 1;
33 break;
34 }
35
36 else {
37 std = 0;
38 if ((fin = fopen(argv[1], "r")) == NULL) {
39 fprintf(stderr, "can't open %s\n", argv[1]);
40 exit(1);
41 }
42 fplt(fin);
43 }
44 argv++;
45 }
46 if (std)
47 fplt( stdin );
48 exit(0);
49 }
50
51
52fplt(fin) FILE *fin; {
53 int c;
54 char s[256];
55 int xi,yi,x0,y0,x1,y1,r/*,dx,n,i*/;
56 /*int pat[256];*/
57
58 openpl();
59 while((c=getc(fin)) != EOF){
60 switch(c){
61 case 'm':
62 xi = getsi(fin);
63 yi = getsi(fin);
64 plot_move(xi,yi);
65 break;
66 case 'l':
67 x0 = getsi(fin);
68 y0 = getsi(fin);
69 x1 = getsi(fin);
70 y1 = getsi(fin);
71 line(x0,y0,x1,y1);
72 break;
73 case 't':
e24c105d 74 getstr(s,fin);
5a8f8fe1
RC
75 label(s);
76 break;
77 case 'e':
78 plot_erase();
79 break;
80 case 'p':
81 xi = getsi(fin);
82 yi = getsi(fin);
83 point(xi,yi);
84 break;
85 case 'n':
86 xi = getsi(fin);
87 yi = getsi(fin);
88 cont(xi,yi);
89 break;
90 case 's':
91 x0 = getsi(fin);
92 y0 = getsi(fin);
93 x1 = getsi(fin);
94 y1 = getsi(fin);
95 space(x0,y0,x1,y1);
96 break;
97 case 'a':
98 xi = getsi(fin);
99 yi = getsi(fin);
100 x0 = getsi(fin);
101 y0 = getsi(fin);
102 x1 = getsi(fin);
103 y1 = getsi(fin);
104 arc(xi,yi,x0,y0,x1,y1);
105 break;
106 case 'c':
107 xi = getsi(fin);
108 yi = getsi(fin);
109 r = getsi(fin);
110 circle(xi,yi,r);
111 break;
112 case 'f':
e24c105d 113 getstr(s,fin);
5a8f8fe1
RC
114 linemod(s);
115 break;
116 default:
117 fprintf(stderr, "Unknown command %c (%o)\n", c, c);
118 break;
119 }
120 }
121 closepl();
122 }
123getsi(fin) FILE *fin; { /* get an integer stored in 2 ascii bytes. */
124 short a, b;
125 if((b = getc(fin)) == EOF)
126 return(EOF);
127 if((a = getc(fin)) == EOF)
128 return(EOF);
129 a = a<<8;
130 return(a|b);
131}
e24c105d 132getstr(s,fin) char *s; FILE *fin; {
5a8f8fe1
RC
133 for( ; *s = getc(fin); s++)
134 if(*s == '\n')
135 break;
136 *s = '\0';
5a8f8fe1 137}