'===========================================================================
' Subject: TEXT WINDOW DRAWING ROUTINES       Date: 06-28-00 (18:48)       
'  Author: Edward L. Blake                    Code: QB, QBasic, PDS        
'  Origin: blakee@cyanwerks.com             Packet: TEXT.ABC
'===========================================================================
' Copyright 1995-1996 Edward L. Blake
' Old Text Based Window Drawing Routines.
' A bunch of different types of windows can be drawn with
' this library.
' Email: blakee@cyanwerks.com
'
'
'
DECLARE SUB TXTIMA (X!, Y!, A$)
DECLARE SUB BCKGNDB ()
DECLARE SUB BCKGNDA ()
DECLARE SUB CHDIALOG (X!, Y!, A$)
DECLARE SUB CHBUTTON (X!, Y!, A$)
DECLARE SUB BCKGND (A$)
DECLARE SUB CHWIN (X1!, Y1!, X2!, Y2!)
DECLARE SUB CHWINB (X1!, Y1!, X2!, Y2!)
DECLARE SUB CHWINC (X1!, Y1!, X2!, Y2!)
DECLARE SUB CHWIND (X1!, Y1!, X2!, Y2!)
DECLARE SUB CHWINE (X1!, Y1!, X2!, Y2!)
DECLARE SUB CHWINF (X1!, Y1!, X2!, Y2!)
DECLARE SUB CHWING (X1!, Y1!, X2!, Y2!)

SUB BCKGND (A$)
FOR I = 1 TO 24
LOCATE I, 1: PRINT STRING$(80, A$);
NEXT I
LOCATE 25, 1: PRINT STRING$(80, A$);
END SUB

SUB BCKGNDA

FOR I = 1 TO 24
LOCATE I, 1: PRINT STRING$(80, 177);
NEXT I
LOCATE 25, 1: PRINT STRING$(80, 177);
END SUB

SUB BCKGNDB
LOCATE 1, 1: PRINT STRING$(80, 219);
LOCATE 2, 1: PRINT STRING$(80, 219);
LOCATE 3, 1: PRINT STRING$(80, 219);
LOCATE 4, 1: PRINT STRING$(80, 219);
LOCATE 5, 1: PRINT STRING$(80, 178);
LOCATE 6, 1: PRINT STRING$(80, 178);
LOCATE 7, 1: PRINT STRING$(80, 178);
LOCATE 8, 1: PRINT STRING$(80, 177);
LOCATE 9, 1: PRINT STRING$(80, 177);
LOCATE 10, 1: PRINT STRING$(80, 176);
LOCATE 11, 1: PRINT STRING$(80, 32);
LOCATE 12, 1: PRINT STRING$(80, 32);
LOCATE 13, 1: PRINT STRING$(80, 32);
LOCATE 14, 1: PRINT STRING$(80, 32);
LOCATE 15, 1: PRINT STRING$(80, 32);
LOCATE 16, 1: PRINT STRING$(80, 176);
LOCATE 17, 1: PRINT STRING$(80, 177);
LOCATE 18, 1: PRINT STRING$(80, 177);
LOCATE 19, 1: PRINT STRING$(80, 178);
LOCATE 20, 1: PRINT STRING$(80, 178);
LOCATE 21, 1: PRINT STRING$(80, 178);
LOCATE 22, 1: PRINT STRING$(80, 219);
LOCATE 23, 1: PRINT STRING$(80, 219);
LOCATE 24, 1: PRINT STRING$(80, 219);
LOCATE 25, 1: PRINT STRING$(80, 219);
END SUB

SUB CHBUTTON (X, Y, A$)
Y2 = Y + 2
X2 = X + LEN(A$) + 1
FOR I = Y TO Y2
LOCATE I, X: PRINT STRING$(X2 - X, 32);
NEXT I

LOCATE Y, X + 1: PRINT STRING$(X2 - X - 1, 196);
LOCATE Y2, X + 1: PRINT STRING$(X2 - X - 1, 196);

LOCATE Y + 1, X: PRINT CHR$(179);
LOCATE Y + 1, X2: PRINT CHR$(179);

LOCATE Y, X: PRINT CHR$(218);
LOCATE Y, X2: PRINT CHR$(191);
LOCATE Y2, X: PRINT CHR$(192);
LOCATE Y2, X2: PRINT CHR$(217);
LOCATE Y + 1, X + 1: PRINT A$;
END SUB

SUB CHDIALOG (X, Y, A$)
Y2 = Y + 4
X2 = X + (LEN(A$) * 2) + 1
FOR I = Y TO Y2
LOCATE I, X: PRINT STRING$(X2 - X, 32);
NEXT I
LOCATE Y, X + 1: PRINT STRING$(X2 - X - 1, 196);
LOCATE Y + 2, X + 1: PRINT STRING$(X2 - X - 1, 196);
LOCATE Y2, X + 1: PRINT STRING$(X2 - X - 1, 196);
LOCATE Y, X: PRINT CHR$(218);
LOCATE Y, X2: PRINT CHR$(191);
LOCATE Y2, X: PRINT CHR$(192);
LOCATE Y2, X2: PRINT CHR$(217);
FOR I = Y + 1 TO Y2 - 1
LOCATE I, X: PRINT CHR$(179);
LOCATE I, X2: PRINT CHR$(179);
NEXT I
LOCATE Y + 1, X + 1: PRINT SPACE$(LEN(A$) / 2) + A$ + SPACE$(LEN(A$) / 2 - 1);
LOCATE Y + 3, X + 1: PRINT SPACE$(((X2 - X - 1) / 2) - 3) + "[ENTER]";
DO UNTIL I$ = CHR$(13)
I$ = INKEY$
LOOP
FOR I = Y TO Y2
LOCATE I, X: PRINT STRING$(X2 - X + 1, 32);
NEXT I
END SUB

SUB CHWIN (X1, Y1, X2, Y2)
FOR I = Y1 TO Y2
LOCATE I, X1: PRINT STRING$(X2 - X1, 32);
NEXT I
LOCATE Y1, X1 + 1: PRINT STRING$(X2 - X1 - 1, 196);
LOCATE Y2, X1 + 1: PRINT STRING$(X2 - X1 - 1, 196);
FOR I = Y1 + 1 TO Y2 - 1
LOCATE I, X1: PRINT CHR$(179);
LOCATE I, X2: PRINT CHR$(179);
NEXT I
LOCATE Y1, X1: PRINT CHR$(218);
LOCATE Y1, X2: PRINT CHR$(191);
LOCATE Y2, X1: PRINT CHR$(192);
LOCATE Y2, X2: PRINT CHR$(217);
END SUB

SUB CHWINB (X1, Y1, X2, Y2)
FOR I = Y1 TO Y2
LOCATE I, X1: PRINT STRING$(X2 - X1, 32);
NEXT I
LOCATE Y1, X1 + 1: PRINT STRING$(X2 - X1 - 1, 205);
LOCATE Y2, X1 + 1: PRINT STRING$(X2 - X1 - 1, 205);
FOR I = Y1 + 1 TO Y2 - 1
LOCATE I, X1: PRINT CHR$(186);
LOCATE I, X2: PRINT CHR$(186);
NEXT I
LOCATE Y1, X1: PRINT CHR$(201);
LOCATE Y1, X2: PRINT CHR$(187);
LOCATE Y2, X1: PRINT CHR$(200);
LOCATE Y2, X2: PRINT CHR$(188);
END SUB

SUB CHWINC (X1, Y1, X2, Y2)
FOR I = Y1 TO Y2
LOCATE I, X1: PRINT STRING$(X2 - X1, 32);
NEXT I
LOCATE Y1, X1: PRINT STRING$(X2 - X1, 223);
LOCATE Y2, X1: PRINT STRING$(X2 - X1, 220);
FOR I = Y1 TO Y2
LOCATE I, X1: PRINT CHR$(219);
LOCATE I, X2: PRINT CHR$(219);
NEXT I
END SUB

SUB CHWIND (X1, Y1, X2, Y2)
FOR I = Y1 TO Y2
LOCATE I, X1: PRINT STRING$(X2 - X1, 32);
NEXT I
LOCATE Y1, X1 + 1: PRINT STRING$(X2 - X1 - 1, 223);
LOCATE Y2, X1 + 1: PRINT STRING$(X2 - X1 - 1, 220);
FOR I = Y1 TO Y2
LOCATE I, X1: PRINT CHR$(222);
LOCATE I, X2: PRINT CHR$(221);
NEXT I
END SUB

SUB CHWINE (X1, Y1, X2, Y2)
FOR I = Y1 TO Y2
LOCATE I, X1: PRINT STRING$(X2 - X1, 32);
NEXT I
LOCATE Y1, X1 + 1: PRINT STRING$(X2 - X1 - 1, 196);
LOCATE Y2, X1 + 1: PRINT STRING$(X2 - X1 - 1, 196);
FOR I = Y1 + 1 TO Y2 - 1
LOCATE I, X1: PRINT CHR$(186);
LOCATE I, X2: PRINT CHR$(186);
NEXT I
LOCATE Y1, X1: PRINT CHR$(214);
LOCATE Y1, X2: PRINT CHR$(183);
LOCATE Y2, X1: PRINT CHR$(211);
LOCATE Y2, X2: PRINT CHR$(189);
END SUB

SUB CHWINF (X1, Y1, X2, Y2)
FOR I = Y1 TO Y2
LOCATE I, X1: PRINT STRING$(X2 - X1, 32);
NEXT I
LOCATE Y1, X1 + 1: PRINT STRING$(X2 - X1 - 1, 205);
LOCATE Y2, X1 + 1: PRINT STRING$(X2 - X1 - 1, 205);
FOR I = Y1 + 1 TO Y2 - 1
LOCATE I, X1: PRINT CHR$(179);
LOCATE I, X2: PRINT CHR$(179);
NEXT I
LOCATE Y1, X1: PRINT CHR$(213);
LOCATE Y1, X2: PRINT CHR$(184);
LOCATE Y2, X1: PRINT CHR$(212);
LOCATE Y2, X2: PRINT CHR$(190);
END SUB

SUB CLBUTTON (X, Y, A$)
Y2 = Y + 2
X2 = X + LEN(A$) + 1
COLOR 15, 7
FOR I = Y TO Y2
LOCATE I, X: PRINT STRING$(X2 - X, 32);
NEXT I

LOCATE Y, X: PRINT CHR$(218);
LOCATE Y2, X: PRINT CHR$(192);

LOCATE Y, X + 1: PRINT STRING$(X2 - X - 1, 196);
LOCATE Y + 1, X: PRINT CHR$(179);

COLOR 0, 7
LOCATE Y2, X + 1: PRINT STRING$(X2 - X - 1, 196);

LOCATE Y + 1, X2: PRINT CHR$(179);

LOCATE Y, X2: PRINT CHR$(191);
LOCATE Y2, X2: PRINT CHR$(217);
LOCATE Y + 1, X + 1: PRINT A$;
END SUB

SUB CLBUTTONPS (X, Y, A$)
Y2 = Y + 2
X2 = X + LEN(A$) + 1
COLOR 0, 7
FOR I = Y TO Y2
LOCATE I, X: PRINT STRING$(X2 - X, 32);
NEXT I

LOCATE Y, X: PRINT CHR$(218);
LOCATE Y2, X: PRINT CHR$(192);

LOCATE Y, X + 1: PRINT STRING$(X2 - X - 1, 196);
LOCATE Y + 1, X: PRINT CHR$(179);

COLOR 15, 7
LOCATE Y2, X + 1: PRINT STRING$(X2 - X - 1, 196);

LOCATE Y + 1, X2: PRINT CHR$(179);

LOCATE Y, X2: PRINT CHR$(191);
LOCATE Y2, X2: PRINT CHR$(217);
LOCATE Y + 1, X + 1: PRINT A$;
T1 = TIMER
DO
IF TIMER > T1 + .2 THEN EXIT DO
LOOP
Y2 = Y + 2
X2 = X + LEN(A$) + 1
COLOR 15, 7
FOR I = Y TO Y2
LOCATE I, X: PRINT STRING$(X2 - X, 32);
NEXT I

LOCATE Y, X: PRINT CHR$(218);
LOCATE Y2, X: PRINT CHR$(192);

LOCATE Y, X + 1: PRINT STRING$(X2 - X - 1, 196);
LOCATE Y + 1, X: PRINT CHR$(179);

COLOR 0, 7
LOCATE Y2, X + 1: PRINT STRING$(X2 - X - 1, 196);

LOCATE Y + 1, X2: PRINT CHR$(179);

LOCATE Y, X2: PRINT CHR$(191);
LOCATE Y2, X2: PRINT CHR$(217);
LOCATE Y + 1, X + 1: PRINT A$;
T1 = TIMER
DO
IF TIMER > T1 + .05 THEN EXIT DO
LOOP
END SUB

SUB TXTIMA (X, Y, A$)
OPEN A$ FOR INPUT AS #1
DO UNTIL EOF(1)
LINE INPUT #1, B$
LOCATE Y + I, X: PRINT B$;
I = I + 1
LOOP
CLOSE #1
END SUB
