|
|
1.1 ! root 1: #include <stdio.h> ! 2: ! 3: float deltx; ! 4: float delty; ! 5: char obuf[BUFSIZ]; ! 6: ! 7: main(argc,argv) char **argv; { ! 8: int std=1; ! 9: FILE *fin; ! 10: ! 11: setbuf(stdout, obuf); ! 12: while(argc-- > 1) { ! 13: if(*argv[1] == '-') ! 14: switch(argv[1][1]) { ! 15: case 'l': ! 16: deltx = atoi(&argv[1][2]) - 1; ! 17: break; ! 18: case 'w': ! 19: delty = atoi(&argv[1][2]) - 1; ! 20: break; ! 21: } ! 22: ! 23: else { ! 24: std = 0; ! 25: if ((fin = fopen(argv[1], "r")) == NULL) { ! 26: fprintf(stderr, "can't open %s\n", argv[1]); ! 27: exit(1); ! 28: } ! 29: fplt(fin); ! 30: } ! 31: argv++; ! 32: } ! 33: if (std) ! 34: fplt( stdin ); ! 35: exit(0); ! 36: } ! 37: ! 38: ! 39: fplt(fin) FILE *fin; { ! 40: int c; ! 41: char s[256]; ! 42: int xi,yi,x0,y0,x1,y1,r,dx,n,i; ! 43: int pat[256]; ! 44: ! 45: openpl(); ! 46: while((c=getc(fin)) != EOF){ ! 47: switch(c){ ! 48: case 'm': ! 49: xi = getsi(fin); ! 50: yi = getsi(fin); ! 51: move(xi,yi); ! 52: break; ! 53: case 'l': ! 54: x0 = getsi(fin); ! 55: y0 = getsi(fin); ! 56: x1 = getsi(fin); ! 57: y1 = getsi(fin); ! 58: line(x0,y0,x1,y1); ! 59: break; ! 60: case 't': ! 61: gets(s,fin); ! 62: label(s); ! 63: break; ! 64: case 'e': ! 65: erase(); ! 66: break; ! 67: case 'p': ! 68: xi = getsi(fin); ! 69: yi = getsi(fin); ! 70: point(xi,yi); ! 71: break; ! 72: case 'n': ! 73: xi = getsi(fin); ! 74: yi = getsi(fin); ! 75: cont(xi,yi); ! 76: break; ! 77: case 's': ! 78: x0 = getsi(fin); ! 79: y0 = getsi(fin); ! 80: x1 = getsi(fin); ! 81: y1 = getsi(fin); ! 82: space(x0,y0,x1,y1); ! 83: break; ! 84: case 'a': ! 85: xi = getsi(fin); ! 86: yi = getsi(fin); ! 87: x0 = getsi(fin); ! 88: y0 = getsi(fin); ! 89: x1 = getsi(fin); ! 90: y1 = getsi(fin); ! 91: arc(xi,yi,x0,y0,x1,y1); ! 92: break; ! 93: case 'c': ! 94: xi = getsi(fin); ! 95: yi = getsi(fin); ! 96: r = getsi(fin); ! 97: circle(xi,yi,r); ! 98: break; ! 99: case 'f': ! 100: gets(s,fin); ! 101: linemod(s); ! 102: break; ! 103: case 'd': ! 104: xi = getsi(fin); ! 105: yi = getsi(fin); ! 106: dx = getsi(fin); ! 107: n = getsi(fin); ! 108: for(i=0; i<n; i++)pat[i] = getsi(fin); ! 109: dot(xi,yi,dx,n,pat); ! 110: break; ! 111: } ! 112: } ! 113: closepl(); ! 114: } ! 115: getsi(fin) FILE *fin; { /* get an integer stored in 2 ascii bytes. */ ! 116: short a, b; ! 117: if((b = getc(fin)) == EOF) ! 118: return(EOF); ! 119: if((a = getc(fin)) == EOF) ! 120: return(EOF); ! 121: a = a<<8; ! 122: return(a|b); ! 123: } ! 124: gets(s,fin) char *s; FILE *fin; { ! 125: for( ; *s = getc(fin); s++) ! 126: if(*s == '\n') ! 127: break; ! 128: *s = '\0'; ! 129: return; ! 130: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.