|
|
1.1 ! root 1: #ifndef lint ! 2: static char sccsid[] = "@(#)crtdriver.c 4.2 (Berkeley) 1/9/85"; ! 3: #endif ! 4: ! 5: /* ! 6: This driver is used with crtplot.c. ! 7: It is essentially the same driver as the one in /usr/src/cmd/plot. ! 8: Unfortunately, the curses library has some of the same names as does ! 9: as the functions that the driver calls. These have been changed. ! 10: ! 11: Also, one of the commands has been removed since they don't make sense ! 12: for crt's. ! 13: */ ! 14: ! 15: ! 16: #include <stdio.h> ! 17: ! 18: float deltx; ! 19: float delty; ! 20: ! 21: main(argc,argv) char **argv; { ! 22: int std=1; ! 23: FILE *fin; ! 24: ! 25: while(argc-- > 1) { ! 26: if(*argv[1] == '-') ! 27: switch(argv[1][1]) { ! 28: case 'l': ! 29: deltx = atoi(&argv[1][2]) - 1; ! 30: break; ! 31: case 'w': ! 32: delty = atoi(&argv[1][2]) - 1; ! 33: break; ! 34: } ! 35: ! 36: else { ! 37: std = 0; ! 38: if ((fin = fopen(argv[1], "r")) == NULL) { ! 39: fprintf(stderr, "can't open %s\n", argv[1]); ! 40: exit(1); ! 41: } ! 42: fplt(fin); ! 43: } ! 44: argv++; ! 45: } ! 46: if (std) ! 47: fplt( stdin ); ! 48: exit(0); ! 49: } ! 50: ! 51: ! 52: fplt(fin) FILE *fin; { ! 53: int c; ! 54: char s[256]; ! 55: int xi,yi,x0,y0,x1,y1,r/*,dx,n,i*/; ! 56: /*int pat[256];*/ ! 57: ! 58: openpl(); ! 59: while((c=getc(fin)) != EOF){ ! 60: switch(c){ ! 61: case 'm': ! 62: xi = getsi(fin); ! 63: yi = getsi(fin); ! 64: plot_move(xi,yi); ! 65: break; ! 66: case 'l': ! 67: x0 = getsi(fin); ! 68: y0 = getsi(fin); ! 69: x1 = getsi(fin); ! 70: y1 = getsi(fin); ! 71: line(x0,y0,x1,y1); ! 72: break; ! 73: case 't': ! 74: getstr(s,fin); ! 75: label(s); ! 76: break; ! 77: case 'e': ! 78: plot_erase(); ! 79: break; ! 80: case 'p': ! 81: xi = getsi(fin); ! 82: yi = getsi(fin); ! 83: point(xi,yi); ! 84: break; ! 85: case 'n': ! 86: xi = getsi(fin); ! 87: yi = getsi(fin); ! 88: cont(xi,yi); ! 89: break; ! 90: case 's': ! 91: x0 = getsi(fin); ! 92: y0 = getsi(fin); ! 93: x1 = getsi(fin); ! 94: y1 = getsi(fin); ! 95: space(x0,y0,x1,y1); ! 96: break; ! 97: case 'a': ! 98: xi = getsi(fin); ! 99: yi = getsi(fin); ! 100: x0 = getsi(fin); ! 101: y0 = getsi(fin); ! 102: x1 = getsi(fin); ! 103: y1 = getsi(fin); ! 104: arc(xi,yi,x0,y0,x1,y1); ! 105: break; ! 106: case 'c': ! 107: xi = getsi(fin); ! 108: yi = getsi(fin); ! 109: r = getsi(fin); ! 110: circle(xi,yi,r); ! 111: break; ! 112: case 'f': ! 113: getstr(s,fin); ! 114: linemod(s); ! 115: break; ! 116: default: ! 117: fprintf(stderr, "Unknown command %c (%o)\n", c, c); ! 118: break; ! 119: } ! 120: } ! 121: closepl(); ! 122: } ! 123: getsi(fin) FILE *fin; { /* get an integer stored in 2 ascii bytes. */ ! 124: short a, b; ! 125: if((b = getc(fin)) == EOF) ! 126: return(EOF); ! 127: if((a = getc(fin)) == EOF) ! 128: return(EOF); ! 129: a = a<<8; ! 130: return(a|b); ! 131: } ! 132: getstr(s,fin) char *s; FILE *fin; { ! 133: for( ; *s = getc(fin); s++) ! 134: if(*s == '\n') ! 135: break; ! 136: *s = '\0'; ! 137: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.