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