1*48286Sbostic /*-
2*48286Sbostic * %sccs.include.proprietary.c%
3*48286Sbostic */
4*48286Sbostic
515503Sralph #ifndef lint
6*48286Sbostic static char sccsid[] = "@(#)atoplot.c 4.3 (Berkeley) 04/18/91";
7*48286Sbostic #endif /* not lint */
815503Sralph
915503Sralph #include <stdio.h>
1015503Sralph
1115503Sralph float deltx;
1215503Sralph float delty;
1315503Sralph
1415503Sralph char *mapLineType();
1515503Sralph
main(argc,argv)1615503Sralph main(argc,argv) char **argv; {
1715503Sralph int std=1;
1815503Sralph FILE *fin;
1915503Sralph
2015503Sralph while(argc-- > 1) {
2115503Sralph if(*argv[1] == '-')
2215503Sralph switch(argv[1][1]) {
2315503Sralph case 'l':
2415503Sralph deltx = atoi(&argv[1][2]) - 1;
2515503Sralph break;
2615503Sralph case 'w':
2715503Sralph delty = atoi(&argv[1][2]) - 1;
2815503Sralph break;
2915503Sralph }
3015503Sralph
3115503Sralph else {
3215503Sralph std = 0;
3315503Sralph if ((fin = fopen(argv[1], "r")) == NULL) {
3415503Sralph fprintf(stderr, "can't open %s\n", argv[1]);
3515503Sralph exit(1);
3615503Sralph }
3715503Sralph fplt(fin);
3815503Sralph fclose(fin);
3915503Sralph }
4015503Sralph argv++;
4115503Sralph }
4215503Sralph if (std)
4315503Sralph fplt( stdin );
4415503Sralph exit(0);
4515503Sralph }
4615503Sralph
4715503Sralph
fplt(fin)4815503Sralph fplt(fin) FILE *fin; {
4915503Sralph int c;
5015503Sralph char s[256];
5115503Sralph int xi,yi,x0,y0,x1,y1,r,dx,n,i;
5215503Sralph int pat[256];
5315503Sralph
5415503Sralph openpl();
5515503Sralph while((c=getc(fin)) != EOF){
5615503Sralph switch(c){
5715503Sralph case 'm':
5815503Sralph xi = getsi(fin);
5915503Sralph yi = getsi(fin);
6015503Sralph move(xi,yi);
6115503Sralph break;
6215503Sralph case 'l':
6315503Sralph x0 = getsi(fin);
6415503Sralph y0 = getsi(fin);
6515503Sralph x1 = getsi(fin);
6615503Sralph y1 = getsi(fin);
6715503Sralph line(x0,y0,x1,y1);
6815503Sralph break;
6915503Sralph case 't':
7017674Sralph getstr(s,fin);
7115503Sralph label(s);
7215503Sralph break;
7315503Sralph case 'e':
7415503Sralph erase();
7515503Sralph break;
7615503Sralph case 'p':
7715503Sralph xi = getsi(fin);
7815503Sralph yi = getsi(fin);
7915503Sralph point(xi,yi);
8015503Sralph break;
8115503Sralph case 'n':
8215503Sralph xi = getsi(fin);
8315503Sralph yi = getsi(fin);
8415503Sralph cont(xi,yi);
8515503Sralph break;
8615503Sralph case 's':
8715503Sralph x0 = getsi(fin);
8815503Sralph y0 = getsi(fin);
8915503Sralph x1 = getsi(fin);
9015503Sralph y1 = getsi(fin);
9115503Sralph space(x0,y0,x1,y1);
9215503Sralph break;
9315503Sralph case 'a':
9415503Sralph xi = getsi(fin);
9515503Sralph yi = getsi(fin);
9615503Sralph x0 = getsi(fin);
9715503Sralph y0 = getsi(fin);
9815503Sralph x1 = getsi(fin);
9915503Sralph y1 = getsi(fin);
10015503Sralph arc(xi,yi,x0,y0,x1,y1);
10115503Sralph break;
10215503Sralph case 'c':
10315503Sralph xi = getsi(fin);
10415503Sralph yi = getsi(fin);
10515503Sralph r = getsi(fin);
10615503Sralph circle(xi,yi,r);
10715503Sralph break;
10815503Sralph case 'f':
10917674Sralph getstr(s,fin);
11015503Sralph linemod( mapLineType(s) );
11115503Sralph break;
11215503Sralph case 'd':
11315503Sralph xi = getsi(fin);
11415503Sralph yi = getsi(fin);
11515503Sralph dx = getsi(fin);
11615503Sralph n = getsi(fin);
11715503Sralph for(i=0; i<n; i++)pat[i] = getsi(fin);
11815503Sralph dot(xi,yi,dx,n,pat);
11915503Sralph break;
12015503Sralph }
12115503Sralph /* scan to newline */
12215503Sralph while( (c = getc( fin )) != '\n' ) {
12315503Sralph if ( c == EOF ) {
12415503Sralph break;
12515503Sralph }
12615503Sralph }
12715503Sralph }
12815503Sralph closepl();
12915503Sralph }
getsi(fin)13015503Sralph getsi(fin) FILE *fin; { /* get an integer stored in 2 ascii bytes. */
13115503Sralph int i;
13215503Sralph
13315503Sralph if ( fscanf(fin, " %d", & i) != 1 ) {
13415503Sralph return(EOF);
13515503Sralph }
13615503Sralph return( i );
13715503Sralph }
getstr(s,fin)13817674Sralph getstr(s,fin) char *s; FILE *fin; {
13915503Sralph for( ; *s = getc(fin); s++)
14015503Sralph if(*s == '\n')
14115503Sralph break;
14215503Sralph *s = '\0';
14315503Sralph }
14415503Sralph
14515503Sralph char *lineMap[] = {
14615503Sralph "solid", /* line type 0 */
14715503Sralph "solid", /* line type 1 */
14815503Sralph "dotted", /* line type 2 */
14915503Sralph "dotdashed", /* line type 3 */
15015503Sralph "shortdashed", /* line type 4 */
15115503Sralph "longdashed", /* line type 5 */
15215503Sralph "dotlongdash", /* line type 6 */
15315503Sralph "dotshortdash", /* line type 7 */
15415503Sralph "dotdotdash", /* line type 8 */
15515503Sralph } ;
15615503Sralph
15715503Sralph char *
mapLineType(cp)15815503Sralph mapLineType( cp )
15915503Sralph char *cp;
16015503Sralph {
16115503Sralph int i;
16215503Sralph
16315503Sralph if ( sscanf(cp, "%d", &i) == 1 ) {
16415503Sralph if ( i < 0 || i > sizeof(lineMap)/sizeof(char *) ) {
16515503Sralph i = 1;
16615503Sralph }
16715503Sralph return( lineMap[i] );
16815503Sralph }
16915503Sralph else {
17015503Sralph return( cp );
17115503Sralph }
17215503Sralph }
173