|
|
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.