summaryrefslogtreecommitdiff
path: root/usr/src/ucbcmd/plot/atoplot.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/ucbcmd/plot/atoplot.c')
-rw-r--r--usr/src/ucbcmd/plot/atoplot.c181
1 files changed, 181 insertions, 0 deletions
diff --git a/usr/src/ucbcmd/plot/atoplot.c b/usr/src/ucbcmd/plot/atoplot.c
new file mode 100644
index 0000000000..70df691e6e
--- /dev/null
+++ b/usr/src/ucbcmd/plot/atoplot.c
@@ -0,0 +1,181 @@
+/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
+/* All Rights Reserved */
+
+
+#ident "%Z%%M% %I% %E% 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 );
+ }
+}