home *** CD-ROM | disk | FTP | other *** search
- /*
- plotprint.c : Print Unix Plot files in english
-
- By Joel Swank April, 1988
-
- */
- #include <stdio.h>
- #include <ctype.h>
-
- /*************************************************
- Parameter output routine definitions
- *************************************************/
-
- #define put_xy(x,y) printf(" %ld,%ld",x,y);
- #define put_int(x) printf(" %ld",x);
- #define put_txt(x) printf(" %s\n",x);
-
- FILE *input;
- short longflag;
-
- main(argc,argv)
- int argc;
- char *argv[];
- {
-
- struct IntuiMessage *msg;
- int cmd, i;
- long x,y, r;
- long x1,y1,x2,y2;
- char textbuf[100], *p;
- longflag = 1;
-
- /*************************************************
- Interrogate command line
- *************************************************/
-
-
- if (argc == 1)
- {
- fprintf(stderr,"Usage:plotprint [-l] plotfile\n");
- exit(2);
- }
-
- while (*argv[1] == '-')
- {
- p = (char *) &*argv[1];
- p++; /* point to the option chars */
- switch (*p)
- {
- case 'l': /* x size value */
- longflag =0;
- break;
-
- default:
- fprintf(stderr,"plotprint:Invalid option %s\n",argv[1]);
- exit(27);
- }
- argc--;
- argv++;
- }
-
- if (argc == 1 || argc >2)
- {
- fprintf(stderr,"plotprint:Exactly One filename required\n");
- exit(2);
- }
-
-
- if ((input = fopen(argv[1],"r")) == NULL)
- {
- fprintf(stderr,"plotprint: %s: open failed\n",argv[1]);
- exit(3);
- }
-
-
-
-
- /*************************************************
- MAIN printing loop
- *************************************************/
-
- while ((cmd = getc(input)) != EOF)
- {
- switch (cmd)
- {
- case 'm': /* move x,y */
- (longflag) ? putchar('m') : fputs("move",stdout);
- get_xy(&x,&y);
- put_xy(x,y);
- putchar('\n');
- break;
- case 'n': /* draw x,y */
- (longflag) ? putchar('n') : fputs("cont",stdout);
- get_xy(&x,&y);
- put_xy(x,y);
- putchar('\n');
- break;
- case 'p': /* point x,y */
- (longflag) ? putchar('p') : fputs("point",stdout);
- get_xy(&x,&y);
- put_xy(x,y);
- putchar('\n');
- break;
- case 'l': /* line xs,ys, xe,ye */
- (longflag) ? putchar('l') : fputs("line",stdout);
- get_xy(&x,&y);
- put_xy(x,y);
- putchar(',');
- get_xy(&x,&y);
- put_xy(x,y);
- putchar('\n');
- break;
- case 'a': /* arc xc,yc, xs,ys, xe,ye */
- (longflag) ? putchar('a') : fputs("arc",stdout);
- get_xy(&x,&y); /* get center */
- put_xy(x,y);
- putchar(',');
- get_xy(&x,&y); /* get start point */
- put_xy(x,y);
- putchar(',');
- get_xy(&x,&y); /* get end point */
- put_xy(x,y);
- putchar('\n');
- break;
- case 't': /* Text string\n */
- (longflag) ? putchar('t') : fputs("label",stdout);
- get_txt(textbuf);
- put_txt(textbuf);
- break;
- case 'c': /* circle xc,yc, r */
- (longflag) ? putchar('c') : fputs("circle",stdout);
- get_xy(&x,&y);
- put_xy(x,y);
- putchar(',');
- get_int(&r);
- put_int(r);
- putchar('\n');
- break;
- case 'f': /* linemode string\n */
- (longflag) ? putchar('f') : fputs("linemod",stdout);
- get_txt(textbuf);
- put_txt(textbuf);
- break;
- case 's': /* space xlo,ylo, xhi,yhi */
- (longflag) ? putchar('s') : fputs("space",stdout);
- get_xy(&x,&y);
- put_xy(x,y);
- putchar(',');
- get_xy(&x,&y);
- put_xy(x,y);
- putchar('\n');
- break;
- case 'e': /* erase */
- (longflag) ? putchar('e') : fputs("erase",stdout);
- putchar('\n');
- break;
- default:
- printf("Invalid Command character:%c\n",cmd);
- }
- }
- }
-
-
- /*************************************************
- Parameter input routines
- *************************************************/
-
-
- /*
- * input a pair of 16 bit ints, scale and clip to screen,
- * and return them as longs
- *
- */
-
- get_xy(x,y)
- register long *x, *y;
- {
- get_int(x);
- get_int(y);
- }
-
- /*
- * input a 16 bit int and return as a long
- */
-
- get_int(num)
- long *num;
- {
- register short hi, lo;
- lo = getc(input);
- hi = (getc(input)) << 8;
- *num = (long) lo + hi;
- }
-
- /*
- * input a text string delinited by newline,
- * return to buffer delimited by a null.
- */
-
- get_txt(str)
- char *str;
- {
- register int cmd;
- while ((cmd = getc(input)) != '\n')
- *str++ = cmd;
- *str = '\0';
- }
-
-