1 #ifndef lint 2 static char sccsid[] = "@(#)crtdriver.c 4.2 (Berkeley) 01/09/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 } 138