PRESET: Difference between revisions

From QB64 Phoenix Edition Wiki
Jump to navigation Jump to search
(Created page with "The '''PRESET''' graphic SCREEN statement turns a pixel at a coordinate to the background color or a designated color attribute. {{PageSyntax}} :: '''PRESET''' [STEP]'''('''''column%'', ''row%''''')'''[, colorAttribute] ''Parameters:'' * Can use STEP when relative graphics coordinates are required. * ''column'' and ''row'' coordinates can be literal ot variable INTEGER values which can be offscreen. * If the ''colorAttribute'' is omitted, PRESET will...")
 
No edit summary
 
(4 intermediate revisions by the same user not shown)
Line 8: Line 8:
''[[Parameters]]:''
''[[Parameters]]:''
* Can use [[STEP]] when relative graphics coordinates are required.
* Can use [[STEP]] when relative graphics coordinates are required.
* ''column'' and ''row'' coordinates can be literal ot variable [[INTEGER]] values which can be offscreen.  
* ''column'' and ''row'' coordinates can be literal ot variable [[INTEGER]] values which can be offscreen.
* If the ''colorAttribute'' is omitted, PRESET will use the current [[_DEST|destination]] page's [[_BACKGROUNDCOLOR]].
* If the ''colorAttribute'' is omitted, PRESET will use the current [[_DEST|destination]] page's [[_BACKGROUNDCOLOR]].


Line 18: Line 18:
* The PRESET action can be used in a graphics [[PUT (graphics statement)|PUT]] to produce a color inverted image on any background. See Example 2.
* The PRESET action can be used in a graphics [[PUT (graphics statement)|PUT]] to produce a color inverted image on any background. See Example 2.
* The graphic cursor is set to the center of the program window on program start for [[STEP]] relative coordinates.
* The graphic cursor is set to the center of the program window on program start for [[STEP]] relative coordinates.
* '''PRESET can be used in any graphic screen mode, but cannot be used in the default screen mode 0 as it is text only!'''  
* '''PRESET can be used in any graphic screen mode, but cannot be used in the default screen mode 0 as it is text only!'''




''Example 1:'' Using PRESET to locate a [[DRAW]] statement that draws a box that is bright red.
''Example 1:'' Using PRESET to locate a [[DRAW]] statement that draws a box that is bright red.
{{CodeStart}} '' ''
{{CodeStart}}
SCREEN 12
SCREEN 12
{{Cl|PRESET}}(100, 100)
{{Cl|PRESET}}(100, 100)
{{Cl|DRAW}} "C12 U20 R20 D20 L20" '' ''
{{Cl|DRAW}} "C12 U20 R20 D20 L20"
{{CodeEnd}}
{{CodeEnd}}
:''Explanation:'' The [[DRAW]] string required a color designation as PRESET defaulted to the black background color.  
:''Explanation:'' The [[DRAW]] string required a color designation as PRESET defaulted to the black background color.






''Example 2:'' Displays the flags of countries that use simple horizontal or vertical color blocks with a highlighted arrow key menu.
''Example 2:'' Displays the flags of countries that use simple horizontal or vertical color blocks with a highlighted arrow key menu.
{{CodeStart}} '' ''
{{CodeStart}}
{{Cl|DIM}} {{Cl|SHARED}} c$(21), x$(21), gg%(477)
{{Cl|DIM}} {{Cl|SHARED}} c$(21), x$(21), gg%(477)


Line 67: Line 67:


{{Cl|SUB}} DISPLAY.FLAG (calc%)
{{Cl|SUB}} DISPLAY.FLAG (calc%)
f% = {{Cl|VAL}}({{Cl|MID$}}(x$(calc%), 2, 2))
f% = {{Cl|VAL}}({{Cl|MID$ (function)|MID$}}(x$(calc%), 2, 2))
s% = {{Cl|VAL}}({{Cl|MID$}}(x$(calc%), 4, 2))
s% = {{Cl|VAL}}({{Cl|MID$ (function)|MID$}}(x$(calc%), 4, 2))
t% = {{Cl|VAL}}({{Cl|MID$}}(x$(calc%), 6, 2))
t% = {{Cl|VAL}}({{Cl|MID$ (function)|MID$}}(x$(calc%), 6, 2))


{{Cl|IF...THEN|IF}} {{Cl|LEFT$}}(x$(calc%), 1) = "V" {{Cl|THEN}}
{{Cl|IF...THEN|IF}} {{Cl|LEFT$}}(x$(calc%), 1) = "V" {{Cl|THEN}}
Line 129: Line 129:
{{Cl|NEXT}}
{{Cl|NEXT}}
{{Cl|END SUB}}
{{Cl|END SUB}}
{{CodeEnd}}{{small|Code by AlGoreIthm}}
{{CodeEnd}}
{{Small|Code by AlGoreIthm}}
: ''Explanation:'' Using the [[PUT (graphics statement)|PUT]] PRESET action highlights the menu selection in graphic screen modes by returning a negative image.
: ''Explanation:'' Using the [[PUT (graphics statement)|PUT]] PRESET action highlights the menu selection in graphic screen modes by returning a negative image.


''See also:''


{{PageSeeAlso}}
* [https://qb64phoenix.com/forum/showthread.php?tid=1157 Featured in our "Keyword of the Day" series]
* [[PUT (graphics statement)]]
* [[PUT (graphics statement)]]
* [[GET (graphics statement)]]
* [[GET (graphics statement)]]

Latest revision as of 20:00, 24 May 2024

The PRESET graphic SCREEN statement turns a pixel at a coordinate to the background color or a designated color attribute.


Syntax

PRESET [STEP](column%, row%)[, colorAttribute]


Parameters:

  • Can use STEP when relative graphics coordinates are required.
  • column and row coordinates can be literal ot variable INTEGER values which can be offscreen.
  • If the colorAttribute is omitted, PRESET will use the current destination page's _BACKGROUNDCOLOR.


Usage:

  • Color attributes are limited to those available in the SCREEN mode used. PSET can be used to adopt previously used colors.
  • Any color value other than 0 will be white in monochrome SCREEN modes 2 and 11 where the COLOR statement cannot be used.
  • PRESET can invisibly locate other graphics objects like CIRCLEs and add color to subsequent graphic objects and DRAW when used.
  • The PRESET action can be used in a graphics PUT to produce a color inverted image on any background. See Example 2.
  • The graphic cursor is set to the center of the program window on program start for STEP relative coordinates.
  • PRESET can be used in any graphic screen mode, but cannot be used in the default screen mode 0 as it is text only!


Example 1: Using PRESET to locate a DRAW statement that draws a box that is bright red.

SCREEN 12
PRESET(100, 100)
DRAW "C12 U20 R20 D20 L20"
Explanation: The DRAW string required a color designation as PRESET defaulted to the black background color.


Example 2: Displays the flags of countries that use simple horizontal or vertical color blocks with a highlighted arrow key menu.

DIM SHARED c$(21), x$(21), gg%(477)

ARRAY
SETUP
SELECTION
TERMINATE

END

SUB ARRAY
c$(1) = "Armenia H040914"
c$(2) = "Austria H041504"
c$(3) = "Belgium V001404"
c$(4) = "Bulgaria H150204"
c$(5) = "Chad V011404"
c$(6) = "C“te D'Ivoire V061502"
c$(7) = "Estonia H090015"
c$(8) = "France V011504"
c$(9) = "Germany H000414"
c$(10) = "Hungary H041502"
c$(11) = "Ireland V021506"
c$(12) = "Italy V021504"
c$(13) = "Lithuania H140204"
c$(14) = "Luxembourg H041509"
c$(15) = "Mali V021404"
c$(16) = "Netherlands H041501"
c$(17) = "Nigeria V021502"
c$(18) = "Romania V091404"
c$(19) = "Russia H150104"
c$(20) = "Sierra Leone H021509"
c$(21) = "Yemen H041500"
END SUB

SUB DISPLAY.FLAG (calc%)
f% = VAL(MID$(x$(calc%), 2, 2))
s% = VAL(MID$(x$(calc%), 4, 2))
t% = VAL(MID$(x$(calc%), 6, 2))

IF LEFT$(x$(calc%), 1) = "V" THEN
  LINE (120, 225)-(253, 465), f%, BF
  LINE (254, 225)-(385, 465), s%, BF
  LINE (386, 225)-(519, 465), t%, BF
END IF

IF LEFT$(x$(calc%), 1) = "H" THEN
  LINE (120, 225)-(519, 305), f%, BF
  LINE (120, 306)-(519, 386), s%, BF
  LINE (120, 387)-(519, 465), t%, BF
END IF
END SUB

SUB SELECTION 'menu selection using arrow keys
x% = 2: y% = 4

DO
  WHILE (x% <> prevx% OR y% <> prevy%) AND k$ <> CHR$(27)
    k$ = INKEY$
    x% = x% + (k$ = (CHR$(0) + "K") AND x% > 1) + ABS(k$ = (CHR$(0) + "M") AND x% < 3)
    y% = y% + (k$ = (CHR$(0) + "H") AND y% > 1) + ABS(k$ = (CHR$(0) + "P") AND y% < 7)
    calc% = (x% - 1) * 7 + y%: LOCATE 14, 18: PRINT c$(calc%); SPACE$(10)
    x1% = 140 + (x% - 1) * 128
    x2% = x1% + LEN(c$(calc%)) * 8 + 7
    y1% = 48 + y% * 16
    IF x1% <> prevx1% OR y1% <> prevy1% THEN
      IF g% THEN PUT(prevx1%, prevy1%), gg%(), PSET
      GET(x1%, y1%)-(x2%, y1% + 16), gg%(): g% = 1
      PUT(x1%, y1%), gg%(), PRESET
      prevx1% = x1%: prevx2% = x2%: prevy1% = y1%
      DISPLAY.FLAG calc%
    END IF
  WEND
LOOP UNTIL k$ = CHR$(27)
END SUB

SUB SETUP
SCREEN 12
COLOR 6
c% = 1

FOR x% = 11 TO 50 STEP 16
  FOR y% = 1 TO 7
    x$(c%) = RIGHT$(c$(c%), 7)
    c$(c%) = RTRIM$(LEFT$(c$(c%), LEN(c$(c%)) - 7))
    LOCATE y% + 4, x% + 8: PRINT c$(c%)
    c% = c% + 1
NEXT y%, x%

COLOR 11: LOCATE 3, 20: PRINT "Use the Cursor Keys to Select a Country:"
LINE (119, 224)-(520, 466), 7, B
END SUB

SUB TERMINATE
FOR c% = 1 TO 219
  LINE (116 + c%, 29 + c%)-(523 - c%, 469 - c%), 0, B
NEXT
END SUB
Code by AlGoreIthm
Explanation: Using the PUT PRESET action highlights the menu selection in graphic screen modes by returning a negative image.


See also



Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link