home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / TURBOPAS / TP-UTIL.ARK / BOXSTUFF.SRC < prev    next >
Text File  |  1986-01-06  |  2KB  |  68 lines

  1. TYPE GRAFREC = RECORD
  2.                  UL_CORNER,
  3.                  UR_CORNER,
  4.                  LL_CORNER,
  5.                  LR_CORNER,
  6.                  H_BAR,
  7.                  V_BAR,
  8.                  LINE_CROSS,
  9.                  T_DOWN,
  10.                  T_UP,
  11.                  T_RIGHT,
  12.                  T_LEFT     : STRING[4]
  13.                END;
  14.  
  15.  
  16. VAR GRAFCHARS    : GRAFREC;
  17.     X,Y          : INTEGER;
  18.     WIDTH,HEIGHT : INTEGER;
  19.  
  20.  
  21. PROCEDURE DEFINE_CHARS(VAR GRAFCHARS : GRAFREC);
  22.  
  23. BEGIN
  24.   WITH GRAFCHARS DO
  25.     BEGIN
  26.       UL_CORNER := CHR(201);
  27.       UR_CORNER := CHR(187);
  28.       LL_CORNER := CHR(200);
  29.       LR_CORNER := CHR(188);
  30.       H_BAR     := CHR(205);
  31.       V_BAR     := CHR(186);
  32.       LINE_CROSS := CHR(206);
  33.       T_DOWN     := CHR(203);
  34.       T_UP       := CHR(202);
  35.       T_RIGHT    := CHR(185);
  36.       T_LEFT     := CHR(204)
  37.     END
  38. END;
  39.  
  40.  
  41. PROCEDURE MAKE_BOX(X,Y,WIDTH,HEIGHT : INTEGER;
  42.                    GRAFCHARS        : GRAFREC);
  43.  
  44. VAR I,J : INTEGER;
  45.  
  46. BEGIN
  47.   IF X < 0 THEN X := (80-WIDTH) DIV 2;    { Negative X centers box }
  48.   WITH GRAFCHARS DO
  49.     BEGIN                                 { Draw top line }
  50.       GOTOXY(X,Y); WRITE(UL_CORNER);
  51.       FOR I := 3 TO WIDTH DO WRITE(H_BAR);
  52.       WRITE(UR_CORNER);
  53.                                           { Draw bottom line }
  54.       GOTOXY(X,(Y+HEIGHT)-1); WRITE(LL_CORNER);
  55.       FOR I := 3 TO WIDTH DO WRITE(H_BAR);
  56.       WRITE(LR_CORNER);
  57.                                           { Draw sides }
  58.       FOR I := 1 TO HEIGHT-2 DO
  59.         BEGIN
  60.           GOTOXY(X,Y+I); WRITE(V_BAR);
  61.           GOTOXY((X+WIDTH)-1,Y+I); WRITE(V_BAR)
  62.         END
  63.     END
  64. END;
  65.  line }
  66.       GOTOXY(X,(Y+HEIGHT)-1); WRITE(LL_CORNER);
  67.       FOR I := 3 TO WIDTH DO WRITE(H_BAR);
  68.