Winsubs For prime prog

 BBS: Inland Empire Archive
Date: 02-15-93 (15:17)             Number: 325
From: MARK HARRIS                  Refer#: NONE
  To: ALL                           Recvd: NO  
Subj: Winsubs For prime prog         Conf: (2) Quik_Bas
------------ CUT HERE -------------------

 ' Shadowed window routines by Mark H Butler placed into the public domain
 ' on February 28, 1992 (bye bye babies). I would appreciate any feedback
 ' on these routines and if you improve on them I'd kinda like to know what
 ' you did so I can benefit by the improvements to. If that's a deal then
 ' enjoy the routines... there all yours now.

 DECLARE SUB Drawbox (UpRow%, LtCol%, LoRow%, RtCol%)
 DECLARE SUB Shadow (UpRow%, LtCol%, LoRow%, RtCol%)
 DECLARE SUB Explode (UpRow%, LtCol%, LoRow%, RtCol%)

 SUB Drawbox (UpRow%, LtCol%, LoRow%, RtCol%) STATIC
 ' This routine draws a double line box to the dimensions set
 ' in UpRow%, LtCol%, LoRow% and RtCol%. If you want a single line box
 ' just change the ascii chars, e.g. change CHR$(205) to CHR$(196) etc.
 '
    Wide% = (RtCol% - LtCol%) - 1
    LOCATE UpRow%, LtCol%
    PRINT CHR$(201); STRING$(Wide%, CHR$(205)); CHR$(187);
    FOR I% = UpRow% + 1 TO LoRow% - 1
        LOCATE I%, LtCol%
        PRINT CHR$(186); SPACE$(Wide%); CHR$(186);
    NEXT I%
    LOCATE LoRow%, LtCol%
    PRINT CHR$(200); STRING$(Wide%, CHR$(205)); CHR$(188);
 END SUB

 SUB Explode (UpRow%, LtCol%, LoRow%, RtCol%) STATIC
 ' This routine will "explode" the window onto the screen calling on
 ' DRAWBOX to draw sucessively larger boxes until it hits the limits
 ' set in UpRow%, LtCol%, LoRow% and RtCol%. The first few lines determine
 ' where the approximate center of the box begins even if the window is
 ' to be located off-center with respect to the screen.
 '
    RowCenter% = ((LoRow% - UpRow%) / 2) + UpRow%
    ColCenter% = ((RtCol% - LtCol%) / 2) + LtCol%
    UprRow% = RowCenter%: LeftCol% = ColCenter%
    LwrRow% = RowCenter%: RghtCol% = ColCenter%
    DO

        UprRow% = UprRow% - 1
        LeftCol% = LeftCol% - 3
        LwrRow% = LwrRow% + 1
        RghtCol% = RghtCol% + 3

        IF UprRow% < UpRow% THEN UprRow% = UpRow%
        IF LeftCol% < LtCol% THEN LeftCol% = LtCol%
        IF LwrRow% > LoRow% THEN LwrRow% = LoRow%
        IF RghtCol% > RtCol% THEN RghtCol% = RtCol%
        Drawbox UprRow%, LeftCol%, LwrRow%, RghtCol%
        IF UprRow% = UpRow% AND LeftCol% = LtCol% THEN
            IF LwrRow% = LoRow% AND RghtCol% = RtCol% THEN
                EXIT DO
            END IF
        END IF
    LOOP
    Shadow UpRow%, LtCol%, LoRow%, RtCol%   '*** now give it a shadow ****
 END SUB

 SUB Shadow (UpRow%, LtCol%, LoRow%, RtCol%) STATIC
 ' This routine creates a transparent shadow along the right side
 ' and bottom edge of the box. Note: Special thanks to John Strong
 ' for his very helpful tips on what to POKE and where.
 '
    DEF SEG = &H40
    mono% = PEEK(&H10)
    IF (mono% AND 48) = 48 THEN
        EXIT SUB            '*** Forget the shadow if it's monochrome.
    ELSE
        DEF SEG = &HB800
    END IF


... OFFLINE 1.50  "Live long and prosper."

--- MsgToss 2.0d(beta) 12/17/92
 * Origin: JW-PC Consulting DataFlex.HST (608)837-1923 (1:121/8)
Outer Court
Echo Basic Postings

Books at Amazon:

Back to BASIC: The History, Corruption, and Future of the Language

Hackers: Heroes of the Computer Revolution (including Tiny BASIC)

Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution

The Advent of the Algorithm: The Idea that Rules the World

Moths in the Machine: The Power and Perils of Programming

Mastering Visual Basic .NET