home *** CD-ROM | disk | FTP | other *** search
/ World of Shareware - Software Farm 2 / wosw_2.zip / wosw_2 / QBAS / PBC22B.ZIP / PBC$BAS.ZIP / EWINDMAC.BAS < prev    next >
BASIC Source File  |  1993-01-01  |  4KB  |  113 lines

  1. '   +----------------------------------------------------------------------+
  2. '   |                                                                      |
  3. '   |        PBClone  Copyright (c) 1990-1993  Thomas G. Hanlin III        |
  4. '   |                                                                      |
  5. '   +----------------------------------------------------------------------+
  6.  
  7.    DECLARE SUB DelayV (BYVAL MilliSeconds%)
  8.    DECLARE SUB EXQPrintC (st$, BYVAL Row%, BYVAL Column%, BYVAL Fore%, BYVAL Back%)
  9.    DECLARE SUB UnCalcAttr (Foreground%, Background%, BYVAL VAttr%)
  10.  
  11. SUB EWindowManagerC (TopRow%, LeftCol%, BottomRow%, RightCol%, Frame%, Fore%, Back%, Grow%, Shade%, S1%, S2%, TitleFore%, Title$)
  12.    IF Grow% THEN
  13.       XD% = RightCol% - LeftCol% + 1
  14.       YD% = BottomRow% - TopRow% + 1
  15.       Y1% = TopRow% + YD% \ 2
  16.       X1% = LeftCol% + XD% \ 2
  17.       Y2% = BottomRow% - YD% \ 2
  18.       X2% = RightCol% - XD% \ 2
  19.       IF YD% > XD% THEN
  20.          XDelta% = 1
  21.          YDelta% = (YD% + XD% \ 2) \ XD%
  22.          IF YDelta% < 1 THEN YDelta% = 1
  23.       ELSE
  24.          YDelta% = 1
  25.          XDelta% = (XD% + YD% \ 2) \ YD%
  26.          IF XDelta% < 1 THEN XDelta% = 1
  27.       END IF
  28.       DO
  29.          Y1% = Y1% - YDelta%
  30.          IF Y1% < TopRow% THEN Y1% = TopRow%
  31.          X1% = X1% - XDelta%
  32.          IF X1% < LeftCol% THEN X1% = LeftCol%
  33.          Y2% = Y2% + YDelta%
  34.          IF Y2% > BottomRow% THEN Y2% = BottomRow%
  35.          X2% = X2% + XDelta%
  36.          IF X2% > RightCol% THEN X2% = RightCol%
  37.          GOSUB MakeWindow
  38.          IF Grow% > 0 THEN DelayV Grow%
  39.       LOOP UNTIL Y1% = TopRow% AND X1% = LeftCol% AND Y2% = BottomRow% AND X2% = RightCol%
  40.    ELSE
  41.       Y1% = TopRow%
  42.       X1% = LeftCol%
  43.       Y2% = BottomRow%
  44.       X2% = RightCol%
  45.       GOSUB MakeWindow
  46.    END IF
  47.  
  48.    EXIT SUB
  49.  
  50.  
  51.  
  52. MakeWindow:
  53.    tmp% = X2% - X1% + 1
  54.    IF Frame% AND 1 THEN
  55.       TopSt$ = STRING$(tmp%, "─")
  56.    ELSE
  57.       TopSt$ = STRING$(tmp%, "═")
  58.    END IF
  59.    MidSt$ = SPACE$(tmp%)
  60.    BotSt$ = TopSt$
  61.    SELECT CASE Frame%
  62.       CASE 1
  63.          TopSt$ = "┌" + TopSt$ + "┐"
  64.          MidSt$ = "│" + MidSt$ + "│"
  65.          BotSt$ = "└" + BotSt$ + "┘"
  66.       CASE 2
  67.          TopSt$ = "╔" + TopSt$ + "╗"
  68.          MidSt$ = "║" + MidSt$ + "║"
  69.          BotSt$ = "╚" + BotSt$ + "╝"
  70.       CASE 3
  71.          TopSt$ = "╓" + TopSt$ + "╖"
  72.          MidSt$ = "║" + MidSt$ + "║"
  73.          BotSt$ = "╙" + BotSt$ + "╜"
  74.       CASE 4
  75.          TopSt$ = "╒" + TopSt$ + "╕"
  76.          MidSt$ = "│" + MidSt$ + "│"
  77.          BotSt$ = "╘" + BotSt$ + "╛"
  78.       CASE 5
  79.          TopSt$ = STRING$(tmp% + 2, "▄")
  80.          MidSt$ = "▌" + MidSt$ + "▐"
  81.          BotSt$ = STRING$(tmp% + 2, "▀")
  82.       CASE ELSE
  83.          TopSt$ = SPACE$(tmp% + 2)
  84.          MidSt$ = TopSt$
  85.          BotSt$ = TopSt$
  86.    END SELECT
  87.  
  88.    Row% = Y1% - 1
  89.    Col% = X1% - 1
  90.    IF LEN(Title$) > 0 AND LEN(TopSt$) >= 4 THEN
  91.       St$ = LEFT$(Title$, LEN(TopSt$) - 4)
  92.       MID$(TopSt$, 2) = "[" + St$ + "]"
  93.       EXQPrintC TopSt$, Row%, Col%, Fore%, Back%
  94.       EXQPrintC St$, Row%, Col% + 2, TitleFore%, Back%
  95.    ELSE
  96.       EXQPrintC TopSt$, Row%, Col%, Fore%, Back%
  97.    END IF
  98.    FOR Row% = Y1% TO Y2%
  99.       EXQPrintC MidSt$, Row%, Col%, Fore%, Back%
  100.    NEXT
  101.    EXQPrintC BotSt$, Y2% + 1, Col%, Fore%, Back%
  102.  
  103.    Col% = X1% - 3
  104.    IF Shade% THEN
  105.       UnCalcAttr SFore%, SBack%, Shade%
  106.       FOR Row% = Y1% TO Y2% + 1
  107.          EXQPrintC "░░", Row%, Col%, SFore%, SBack%
  108.       NEXT
  109.       EXQPrintC STRING$(X2% - X1% + 3, "░"), Y2% + 2, Col%, SFore%, SBack%
  110.    END IF
  111.    RETURN
  112. END SUB
  113.