1 /*- 2 * %sccs.include.proprietary.c% 3 */ 4 5 #ifndef lint 6 static char sccsid[] = "@(#)plottoa.c 4.3 (Berkeley) 04/18/91"; 7 #endif /* not lint */ 8 9 /* 10 * Convert the standard plot input into a readable form for debugging. 11 */ 12 13 #include <stdio.h> 14 15 float deltx; 16 float delty; 17 18 main(argc, argv) 19 char **argv; 20 { 21 int std=1; 22 FILE *fin; 23 24 while(argc-- > 1) { 25 if(*argv[1] == '-') 26 switch(argv[1][1]) { 27 case 'l': 28 deltx = atoi(&argv[1][2]) - 1; 29 break; 30 case 'w': 31 delty = atoi(&argv[1][2]) - 1; 32 break; 33 } 34 else { 35 std = 0; 36 if ((fin = fopen(argv[1], "r")) == NULL) { 37 fprintf(stderr, "can't open %s\n", argv[1]); 38 exit(1); 39 } 40 fplt(fin); 41 fclose(fin); 42 } 43 argv++; 44 } 45 if (std) 46 fplt( stdin ); 47 exit(0); 48 } 49 50 51 fplt(fin) 52 FILE *fin; 53 { 54 int c; 55 char s[256]; 56 int xi,yi,x0,y0,x1,y1,r,dx,n,i; 57 int pat[256]; 58 59 openpl(); 60 while((c = getc(fin)) != EOF){ 61 switch(c){ 62 case 'm': 63 xi = getsi(fin); 64 yi = getsi(fin); 65 move(xi,yi); 66 break; 67 case 'l': 68 x0 = getsi(fin); 69 y0 = getsi(fin); 70 x1 = getsi(fin); 71 y1 = getsi(fin); 72 line(x0,y0,x1,y1); 73 break; 74 case 't': 75 getstr(s,fin); 76 label(s); 77 break; 78 case 'e': 79 erase(); 80 break; 81 case 'p': 82 xi = getsi(fin); 83 yi = getsi(fin); 84 point(xi,yi); 85 break; 86 case 'n': 87 xi = getsi(fin); 88 yi = getsi(fin); 89 cont(xi,yi); 90 break; 91 case 's': 92 x0 = getsi(fin); 93 y0 = getsi(fin); 94 x1 = getsi(fin); 95 y1 = getsi(fin); 96 space(x0,y0,x1,y1); 97 break; 98 case 'a': 99 xi = getsi(fin); 100 yi = getsi(fin); 101 x0 = getsi(fin); 102 y0 = getsi(fin); 103 x1 = getsi(fin); 104 y1 = getsi(fin); 105 arc(xi,yi,x0,y0,x1,y1); 106 break; 107 case 'c': 108 xi = getsi(fin); 109 yi = getsi(fin); 110 r = getsi(fin); 111 circle(xi,yi,r); 112 break; 113 case 'f': 114 getstr(s,fin); 115 linemod(s); 116 break; 117 case 'd': 118 xi = getsi(fin); 119 yi = getsi(fin); 120 dx = getsi(fin); 121 n = getsi(fin); 122 for(i=0; i<n; i++)pat[i] = getsi(fin); 123 dot(xi,yi,dx,n,pat); 124 break; 125 } 126 } 127 closepl(); 128 } 129 130 /* get an integer stored in 2 ascii bytes. */ 131 getsi(fin) 132 FILE *fin; 133 { 134 short a, b; 135 if((b = getc(fin)) == EOF) 136 return(EOF); 137 if((a = getc(fin)) == EOF) 138 return(EOF); 139 a = a<<8; 140 return(a|b); 141 } 142 143 getstr(s,fin) 144 char *s; 145 FILE *fin; 146 { 147 for( ; *s = getc(fin); s++) 148 if(*s == '\n') 149 break; 150 *s = '\0'; 151 } 152 153 /* Print out the arguments to plot routines. */ 154 155 space(x0,y0,x1,y1) 156 int x0,y0,x1,y1; 157 { 158 printf( "s %d %d %d %d\n", x0, y0, x1, y1 ); 159 } 160 161 openpl() 162 { 163 } 164 165 closepl() 166 { 167 } 168 169 erase() 170 { 171 printf( "e\n" ); 172 } 173 174 move(xi,yi) 175 int xi,yi; 176 { 177 printf( "m %d %d\n", xi, yi ); 178 } 179 180 cont(xi,yi) 181 int xi,yi; 182 { 183 printf( "n %d %d\n", xi, yi ); 184 } 185 186 line(x0,y0,x1,y1) 187 int x0,y0,x1,y1; 188 { 189 printf( "l %d %d %d %d\n", x0, y0, x1, y1 ); 190 } 191 192 point(xi,yi) 193 int xi,yi; 194 { 195 printf( "p %d %d\n", xi, yi ); 196 } 197 198 label(s) 199 char *s; 200 { 201 printf( "t%s\n\n", s ); 202 } 203 204 205 arc(xcent,ycent,xbeg,ybeg,xend,yend) 206 int xcent,ycent,xbeg,ybeg,xend,yend; 207 { 208 printf( "a %d %d %d %d %d %d\n", xcent, ycent, xbeg, ybeg, xend, yend ); 209 } 210 211 circle (xc,yc,r) 212 int xc,yc,r; 213 { 214 printf( "c %d %d %d\n", xc, yc, r ); 215 } 216 217 linemod( line ) 218 char *line; 219 { 220 printf( "f%s\n\n", line ); 221 } 222 223 /* don't know what this should do */ 224 dot(xi,yi,dx,n,pat) 225 int xi,yi,dx,n; 226 char *pat; 227 { 228 printf("d %d %d %d %d %s\n\n", xi, yi, dx, n, pat); 229 } 230