185 lines
3.3 KiB
C
Executable File
185 lines
3.3 KiB
C
Executable File
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
|
|
/* All Rights Reserved */
|
|
|
|
/* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */
|
|
/* The copyright notice above does not evidence any */
|
|
/* actual or intended publication of such source code. */
|
|
|
|
#ident "@(#)atoplot.c 1.1 90/08/19 SMI" /* SVr4.0 1.1 */
|
|
|
|
/*
|
|
* Copyright (c) 1980 Regents of the University of California.
|
|
* All rights reserved. The Berkeley software License Agreement
|
|
* specifies the terms and conditions for redistribution.
|
|
*/
|
|
|
|
/*
|
|
* Copyright (c) 1983, 1984 1985, 1986, 1987, 1988, Sun Microsystems, Inc.
|
|
* All Rights Reserved.
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
|
|
float deltx;
|
|
float delty;
|
|
|
|
char *mapLineType();
|
|
|
|
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);
|
|
fclose(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);
|
|
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':
|
|
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( mapLineType(s) );
|
|
break;
|
|
case 'd':
|
|
xi = getsi(fin);
|
|
yi = getsi(fin);
|
|
dx = getsi(fin);
|
|
n = getsi(fin);
|
|
for(i=0; i<n; i++)pat[i] = getsi(fin);
|
|
dot(xi,yi,dx,n,pat);
|
|
break;
|
|
}
|
|
/* scan to newline */
|
|
while( (c = getc( fin )) != '\n' ) {
|
|
if ( c == EOF ) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
closepl();
|
|
}
|
|
getsi(fin) FILE *fin; { /* get an integer stored in 2 ascii bytes. */
|
|
int i;
|
|
|
|
if ( fscanf(fin, " %d", & i) != 1 ) {
|
|
return(EOF);
|
|
}
|
|
return( i );
|
|
}
|
|
getstr(s,fin) char *s; FILE *fin; {
|
|
for( ; *s = getc(fin); s++)
|
|
if(*s == '\n')
|
|
break;
|
|
*s = '\0';
|
|
}
|
|
|
|
char *lineMap[] = {
|
|
"solid", /* line type 0 */
|
|
"solid", /* line type 1 */
|
|
"dotted", /* line type 2 */
|
|
"dotdashed", /* line type 3 */
|
|
"shortdashed", /* line type 4 */
|
|
"longdashed", /* line type 5 */
|
|
"dotlongdash", /* line type 6 */
|
|
"dotshortdash", /* line type 7 */
|
|
"dotdotdash", /* line type 8 */
|
|
} ;
|
|
|
|
char *
|
|
mapLineType( cp )
|
|
char *cp;
|
|
{
|
|
int i;
|
|
|
|
if ( sscanf(cp, "%d", &i) == 1 ) {
|
|
if ( i < 0 || i > sizeof(lineMap)/sizeof(char *) ) {
|
|
i = 1;
|
|
}
|
|
return( lineMap[i] );
|
|
}
|
|
else {
|
|
return( cp );
|
|
}
|
|
}
|