xref: /csrg-svn/usr.bin/plot/atoplot.c (revision 48286)
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