crtdriver.c
来自「<B>Digital的Unix操作系统VAX 4.2源码</B>」· C语言 代码 · 共 150 行
C
150 行
#ifndef lintstatic char SccsId[] = " @(#)crtdriver.c 4.1 (ULTRIX) 7/17/90";#endif not(lint)/* * Modification History * * April-11-1989, Pradeep Chetal * Added changes from 4.3Tahoe BSD for lots of new drivers */#ifndef lintstatic char sccsid[] = "@(#)crtdriver.c 4.2 (Berkeley) 1/9/85";#endif/*This driver is used with crtplot.c.It is essentially the same driver as the one in /usr/src/cmd/plot.Unfortunately, the curses library has some of the same names as doesas the functions that the driver calls. These have been changed.Also, one of the commands has been removed since they don't make sensefor crt's.*/#include <stdio.h>float deltx;float delty;main(argc,argv) char **argv; { int std=1; FILE *fin; while(argc-- > 1) { if(*argv[1] == '-') switch(argv[1][1]) { case 'l': deltx = atoi(&argv[1][2]) - 1; break; case 'w': delty = atoi(&argv[1][2]) - 1; break; } else { std = 0; if ((fin = fopen(argv[1], "r")) == NULL) { fprintf(stderr, "can't open %s\n", argv[1]); exit(1); } fplt(fin); } argv++; } if (std) fplt( stdin ); exit(0); }fplt(fin) FILE *fin; { int c; char s[256]; int xi,yi,x0,y0,x1,y1,r/*,dx,n,i*/; /*int pat[256];*/ openpl(); while((c=getc(fin)) != EOF){ switch(c){ case 'm': xi = getsi(fin); yi = getsi(fin); plot_move(xi,yi); break; case 'l': x0 = getsi(fin); y0 = getsi(fin); x1 = getsi(fin); y1 = getsi(fin); line(x0,y0,x1,y1); break; case 't': getstr(s,fin); label(s); break; case 'e': plot_erase(); break; case 'p': xi = getsi(fin); yi = getsi(fin); point(xi,yi); break; case 'n': xi = getsi(fin); yi = getsi(fin); cont(xi,yi); break; case 's': x0 = getsi(fin); y0 = getsi(fin); x1 = getsi(fin); y1 = getsi(fin); space(x0,y0,x1,y1); break; case 'a': xi = getsi(fin); yi = getsi(fin); x0 = getsi(fin); y0 = getsi(fin); x1 = getsi(fin); y1 = getsi(fin); arc(xi,yi,x0,y0,x1,y1); break; case 'c': xi = getsi(fin); yi = getsi(fin); r = getsi(fin); circle(xi,yi,r); break; case 'f': getstr(s,fin); linemod(s); break; default: fprintf(stderr, "Unknown command %c (%o)\n", c, c); break; } } closepl(); }getsi(fin) FILE *fin; { /* get an integer stored in 2 ascii bytes. */ short a, b; if((b = getc(fin)) == EOF) return(EOF); if((a = getc(fin)) == EOF) return(EOF); a = a<<8; return(a|b);}getstr(s,fin) char *s; FILE *fin; { for( ; *s = getc(fin); s++) if(*s == '\n') break; *s = '\0';}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?