'===========================================================================
' Subject: DRAW 3D-LIKE TEXT BOXES            Date: 10-26-97 (10:55)       
'  Author: The ABC Programmer                 Code: QB, QBasic, PDS        
'  Origin: voxel@freenet.edmonton.ab.ca     Packet: TEXT.ABC
'===========================================================================
' 3D-Like Text Boxes programmed by William Yu (10-26-97)
' Just like the ones used in The ABC Express Reader
' 100% Public Domain

' Usage Notes:
'   X,Y,XX,YY are self explanatory
'   C  = Bright Colour
'   C2 = Dark Colour
'   BC = Background Colour
'   Solid = fill in box?  0 = No, anything else is Yes
'   Indent = create an indent effect? 0 = No, anything else is yes

DEFINT A-Z
DECLARE SUB Draw.3DBox (X%, Y%, XX%, YY%, C%, C2%, BC%, Solid%, Indent)

CONST False = 0
CONST True = NOT False

CLS
Draw.3DBox 8, 9, 72, 21, 15, 0, 1, True, False
Draw.3DBox 10, 10, 70, 20, 15, 0, 1, False, True

SUB Draw.3DBox (X%, Y%, XX%, YY%, C%, C2%, BC%, Solid%, Indent)

Char1$ = "Ú"
CharHoz$ = "Ä"
Char2$ = "¿"
CharVert$ = "³"
Char3$ = "À"
Char4$ = "Ù"

COLOR C%, BC%
A = (XX% - X%) - 1
IF Indent THEN
  COLOR C2%
  LOCATE Y%, X%: PRINT Char1$; STRING$(A, CharHoz$);
  COLOR C%: PRINT Char2$
ELSE
  LOCATE Y%, X%: PRINT Char1$; STRING$(A, CharHoz$);
  COLOR C2%: PRINT Char2$
END IF
FOR I = Y% + 1 TO YY% - 1
  IF Indent THEN COLOR C2% ELSE COLOR C%
  LOCATE I, X%: PRINT CharVert$;
  IF Solid% THEN PRINT SPACE$(A);
  IF Indent THEN COLOR C% ELSE COLOR C2%
  LOCATE I, XX%: PRINT CharVert$;
NEXT I
LOCATE YY%, X%
IF Indent THEN COLOR C2% ELSE COLOR C%
PRINT Char3$;
IF Indent THEN COLOR C% ELSE COLOR C2%
PRINT STRING$(A, CharHoz$); Char4$;

END SUB
