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: }