QB64 Phoenix Edition
Halftone - A Utility to Demonstrate 255 Colors Mixed in Screen 12 - Printable Version

+- QB64 Phoenix Edition (https://qb64phoenix.com/forum)
+-- Forum: QB64 Rising (https://qb64phoenix.com/forum/forumdisplay.php?fid=1)
+--- Forum: Prolific Programmers (https://qb64phoenix.com/forum/forumdisplay.php?fid=26)
+---- Forum: TheBOB (https://qb64phoenix.com/forum/forumdisplay.php?fid=27)
+---- Thread: Halftone - A Utility to Demonstrate 255 Colors Mixed in Screen 12 (/showthread.php?tid=220)



Halftone - A Utility to Demonstrate 255 Colors Mixed in Screen 12 - Pete - 04-27-2022

Halftone.bas by Bob Seguin
[Image: Screenshot-585.png]

Code: (Select All)
'****************************************************************************
'
'               HALFTONE.BAS: Bob Seguin - 2003  (freeware)
'
'               A program to examine the possibilities of mixing the
'               16 basic palette colors in SCREEN 12 as halftones to
'               provide more than 16 colors on the screen at one time.
'
'               To use, send the sub program the left/top/right/bottom
'               boundaries of the shape being halftoned along with
'               ColorKEY and ToneCOLOR (the shape is in ColorKEY).
'
'         NOTE: Follow row and column from the halftone to find the
'               attribute numbers involved.
'
'     Comments: (textury, but useful in certain applications,
'               such as fabrics, wood, etc.)
'
'
'****************************************************************************

DEFINT A-Z

_TITLE "Halftone.bas by Bob Seguin"

DIM Box(1 TO 1600)
  
SCREEN 12
PALETTE 4, 63 'set default dark red to brightest red
  
LOCATE 2, 2: PRINT "0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15"
FOR x = 8 TO 384 STEP 24
    GET (x, 16)-(x + 16, 28), Box(n + 1)
    n = n + 100
NEXT x

CLS
FOR y = 0 TO 15
    FOR x = 0 TO 15
        LINE (x * 40, y * 30)-(x * 40 + 37, y * 30 + 27), y, BF
        HalfTONE x * 40, y * 30, x * 40 + 37, y * 30 + 27, y, x
    NEXT x
NEXT y

n = 0: y = 8
FOR x = 15 TO 611 STEP 40
    IF x = 415 THEN x = 411
    PUT (x, y), Box(n + 1)
    n = n + 100
    y = y + 30
NEXT x

DO: LOOP UNTIL INKEY$ <> ""
END

SUB HalfTONE (x1, y1, x2, y2, ColorKEY, ToneCOLOR)

    FOR x = x1 TO x2 STEP 2
        FOR y = y1 TO y2 STEP 2
            IF POINT(x, y) = ColorKEY THEN PSET (x, y), ToneCOLOR
            IF POINT(x + 1, y + 1) = ColorKEY THEN PSET (x + 1, y + 1), ToneCOLOR
        NEXT y
    NEXT x

END SUB


Description: A program to examine the possibilities of mixing the 16 basic palette colors in SCREEN 12 as halftones to provide more than 16 colors on the screen at one time.