#include "defn.h"

dxycom(op)
char    op;
{
    int intval;

    switch (op)
    {
    case 'H':			/* HOME */
    case 'h':
	break;

    case 'D':			/* DRAW */
    case 'd':
	plotps(DRAW);
	break;

    case 'M':			/* MOVE */
    case 'm':
	plotps(MOVE);
	break;

    case 'I':			/* RELATIVE DRAW */
    case 'i':
	plotps(RDRAW);
	break;

    case 'R':			/* RELATIVE MOVE */
    case 'r':
	plotps(RMOVE);
	break;

    case 'L':			/* LINE TYPE */
    case 'l':
	linetype(LINETYPE);
	break;

    case 'B':			/* LINE SCALE */
    case 'b':
	linetype(LINESCALE);
	break;

    case 'X':			/* AXIS */
    case 'x':
	{
	    int     p, q, r;

	    p = rint(getval());
	    q = rint(getval());
	    r = rint(getval());
	    fprintf(stderr, "Warning %c not implemented yet\n", op);
	}
	break;

    case 'P':			/* PRINT */
    case 'p':
	textps(TEXT);
	break;

    case 'S':			/* ALPHA SCALE */
    case 's':
	{
	    int n;

	    if (SIGNED_NUMERIC)
	        n = rint(getval());
	    else
		n = 3;
	    char_height = (n + 1) * 0.8 * SCALE;
	    char_width = (n + 1) * 0.4 * SCALE;
	    char_space = (n + 1) * 0.2 * SCALE;
	}
	printf("/%s %g %g %g DefFont\n",
	    font, char_width, char_height, char_slant);
	break;

    case 'Q':			/* ALPHA ROTATE */
    case 'q':
	intval = rint(getval());
	switch (intval)
	{
	case 0:
	    char_angle = 0.0;
	    break;

	case 1:
	    char_angle = 90.0;
	    break;

	case 2:
	    char_angle = 180.0;
	    break;

	case 3:
	    char_angle = 270.0;
	    break;
	}
	break;

    case 'N':			/* MARK */
    case 'n':
	textps(MARK);
	break;

    case 'J':			/* PEN CHANGE */
    case 'j':
	linesize();
	break;

    case 'C':			/* CIRCLE */
    case 'c':
	circle(CIRCLE);
	break;

    case 'E':			/* RELATIVE CIRCLE */
    case 'e':
	circle(RCIRCLE);
	break;

    case 'A':			/* CIRCLE CENTER */
    case 'a':
	circle(CCIRCLE);
	break;

    case 'G':			/* ARC + CIRCLE */
    case 'g':
	circle(ACIRCLE);
	break;

    case 'K':			/* SEGMENT AND INDICATION LINES FOR CIRCLES */
    case 'k':
	circle(SCIRCLE);
	break;

    case 'T':			/* HATCHING */
    case 't':
	rectangle();
	break;

    case '^':			/* CALL HP-GL / RD-GL COMMANDS */
	end_draw();
	if ((ch = getc(stream)) != EOF)
	    hpglcom(ch);
	break;

    default:
	fprintf(stderr, "Warning: %c Unknown DXY command\n", op);
	break;
    }
}
