home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / TOOL_INC.ZIP / BORDER.INC < prev    next >
Encoding:
Text File  |  1988-01-29  |  2.2 KB  |  78 lines

  1.  
  2. (*
  3.  * border.inc - draw a border around a window
  4.  *
  5.  * S.H.Smith, 14-Nov-87
  6.  *
  7.  *)
  8.  
  9. type
  10.   border_styles = (blank_border,          single_border,
  11.                    double_border,         mixed_border,
  12.                    taildouble_border,
  13.                    solid_border,          evensolid_border,
  14.                    thinsolid_border,      lohatch_border,
  15.                    medhatch_border,       hihatch_border);
  16.  
  17. const
  18.   border_table:  array[blank_border..hihatch_border] of string[8] =
  19.     ('        ',  { blank     }         '┌─┐││└─┘',  { single    }
  20.      '╔═╗║║╚═╝',  { double    }         '╒═╕││╘═╛',  { mixed     }
  21.      '╠═╗║║╚═╝',  { taildouble}
  22.      '████████',  { solid     }         '█▀████▄█',  { evensolid }
  23.      '▐▀▌▐▌▐▄▌',  { thinsolid }         '░░░░░░░░',  { lohatch   }
  24.      '▒▒▒▒▒▒▒▒',  { medhatch  }         '▓▓▓▓▓▓▓▓'); { hihatch   }
  25.  
  26. procedure display_border(topx,topy,botx,boty: integer;
  27.                          style: border_styles);
  28.    (* display a window border.  enter with desired color settingx*)
  29. var
  30.    left:        string[80];
  31.    right:       string[80];
  32.    top:         string[80];
  33.    bottom:      string[80];
  34.    width:       integer;
  35.    b:           string[8];
  36.    i,j:         integer;
  37.  
  38. const
  39.    topleft  = 1;    {border character locations in border strings}
  40.    tophor   = 2;
  41.    topright = 3;
  42.    leftver  = 4;
  43.    rightver = 5;
  44.    botleft  = 6;
  45.    bothor   = 7;
  46.    botright = 8;
  47.  
  48.    filler = ^@^H^J^@^H^J^@^H^J^@^H^J^@^H^J^@^H^J^@^H^J^@^H^J^@^H^J^@^H^J^@^H^J^@^H^J^@^H^J;
  49.  
  50. begin
  51.    b := border_table[style];
  52.    width := botx - topx - 2;
  53.  
  54. (* top and bottom of frame *)
  55.    top    :=  b[topleft] + make_string(b[tophor], width) + b[topright];
  56.    bottom :=  b[botleft] + make_string(b[bothor], width) + b[botright];
  57.  
  58. (* sides of frame *)
  59.    left := filler + filler;
  60.    right := left;
  61.    j := 1;
  62.    for i := 2 to boty - topy do
  63.    begin
  64.       left[j]:= b[leftver];
  65.       right[j]:= b[rightver];
  66.       j := j + 3;
  67.    end;
  68.    left[0]:= chr (j - 1);
  69.    right[0]:= left[0];
  70.  
  71. (* draw the frame *)
  72.    gotoxy(topx,topy);     disp(top);
  73.    gotoxy(topx,topy+1);   disp(left);
  74.    gotoxy(botx-1,topy+1); disp(right);
  75.    gotoxy(topx,boty);     disp(bottom);
  76. end;
  77.  
  78.