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