#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;
   }
}