ScreenMode: Difference between revisions
Jump to navigation
Jump to search
Screen Mode Detection Function
Code by Ted Weissgerber
Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link
(Created page with "<center>'''Screen Mode Detection Function'''</center> {{CodeStart}} '' '' DO {{Cl|PRINT}} {{Cl|PRINT}} {{Cl|PRINT}} " Screen W H Colors " {{Cl|PRINT}} " 0 80/40 (25) 16 " {{Cl|PRINT}} " 1 (320) (200) 4 " {{Cl|PRINT}} " 2 (640) 200 2 " {{Cl|PRINT}} " ........................ " {{Cl|PRINT}} " 7 320 200 16 " {{Cl|PRINT}} " 8 640 200 16 " {{Cl|PRINT}} " 9 (6...") |
No edit summary |
||
Line 2: | Line 2: | ||
{{CodeStart}} | {{CodeStart}} | ||
DO | DO | ||
{{Cl|PRINT}} | {{Cl|PRINT}} | ||
Line 65: | Line 65: | ||
{{Cl|IF...THEN|IF}} {{Cl|_PIXELSIZE}} = 4 {{Cl|THEN}} colors = 32 | {{Cl|IF...THEN|IF}} {{Cl|_PIXELSIZE}} = 4 {{Cl|THEN}} colors = 32 | ||
ScreenMode& = mode& | ScreenMode& = mode& | ||
{{Cl|END FUNCTION}} | {{Cl|END FUNCTION}} | ||
{{CodeEnd}} | {{CodeEnd}} | ||
{{small|Code by Ted Weissgerber}} | {{small|Code by Ted Weissgerber}} |
Revision as of 02:50, 23 January 2023
DO PRINT PRINT PRINT " Screen W H Colors " PRINT " 0 80/40 (25) 16 " PRINT " 1 (320) (200) 4 " PRINT " 2 (640) 200 2 " PRINT " ........................ " PRINT " 7 320 200 16 " PRINT " 8 640 200 16 " PRINT " 9 (640) 350 16 " PRINT " 10 (640) 350 4 " PRINT " 11 (640) 480 2 " PRINT " 12 (640) 480 16 " PRINT " 13 320 200 256 " PRINT " QB64 _NEWIMAGE screens " PRINT " 14 (600, 600, 32) 32 bit" PRINT " 15 (800, 600, 256) 256 " PRINT " 16 (900, 600, 13) 256 " 'simulate screen 13 PRINT " 17 (900, 600, 10) 4 " 'simulate screen 10 PRINT PRINT "SCREEN ="; scr&; "mode ="; ScreenMode&; "Colors ="; colors PRINT "_DEST ="; _DEST IF ScreenMode& THEN CIRCLE (200, 100), 50, 3 INPUT "Enter a SCREEN mode 0 to 17(18 quits): ", scrn$ scr& = VAL(scrn$) IF (scr& < 3 OR scr& > 6) AND scr& < 14 THEN SCREEN scr& IF scr& = 14 THEN handle& = _NEWIMAGE(600, 600, 32): SCREEN handle& IF scr& = 15 THEN handle& = _NEWIMAGE(800, 600, 256): SCREEN handle& IF scr& = 16 THEN handle& = _NEWIMAGE(900, 600, 13): SCREEN handle& IF scr& = 17 THEN handle& = _NEWIMAGE(900, 600, 10): SCREEN handle& LOOP UNTIL scr& > 17 FUNCTION ScreenMode& SHARED colors 'share number of colors with main program mode& = -1 _DEST 0 'destination zero always current screen mode OUT &H3C7, 1 'set attribute to read FOR colors = 1 TO 18 'get RGB color settings red = INP(&H3C9): grn = INP(&H3C9): blu = INP(&H3C9) IF red + grn + blu = 0 AND colors <> 16 THEN EXIT FOR NEXT wide& = _WIDTH: deep& = _HEIGHT 'get screen dimension IF colors = 4 THEN mode& = 1 IF colors = 2 AND deep& = 200 THEN mode& = 2 IF colors = 17 AND wide& = 320 AND deep& = 200 THEN mode& = 7 IF colors = 17 AND wide& = 640 AND deep& = 200 THEN mode& = 8 IF colors = 17 AND deep& = 350 THEN mode& = 9 IF colors = 1 AND wide& = 640 AND deep& = 350 THEN mode& = 10 IF colors = 2 AND deep& = 480 THEN mode& = 11 IF colors = 17 AND deep& = 480 THEN mode& = 12 IF colors > 17 AND wide& = 320 AND deep& = 200 THEN mode& = 13 IF _PIXELSIZE = 0 THEN mode& = 0 'screen 0 any size IF mode& = -1 THEN mode& = _DEST 'must be a QB64 screen IF colors = 1 THEN colors = 4 IF colors = 17 THEN colors = 16 IF colors > 17 THEN colors = 256 IF _PIXELSIZE = 4 THEN colors = 32 ScreenMode& = mode& END FUNCTION |
- Note: Function returns the negative handle value with up to 256 colors or 32 for 32 bit in QB64 _NEWIMAGE screens.
See also: