Entry
Language: Computer: BASIC: BBCBASIC: Windows: Screen: Display: Operation: Set: Selectively: How to?
Jan 29th, 2006 07:29
Knud van Eeden,
----------------------------------------------------------------------
--- Knud van Eeden --- 28 January 2021 - 07:18 pm --------------------
Language: Computer: BASIC: BBCBASIC: Windows: Screen: Display:
Operation: Set: Selectively: How to?
---
The function "GetSystemMetrics" gives the width and height of the
desktop area in pixels.
---
From BBCBASIC help, searching for 'MODE' gives a table showing the
resolution in pixels.
---
-------------------------------------------------------------------
DATABASE: DATABASENAME: BBCBASIC
-------------------------------------------------------------------
TABLE: TABLENAME: SCREEN RESOLUTION PIXEL
-------------------------------------------------------------------
TABLE: TYPE: ONE TO MANY
-------------------------------------------------------------------
| NR | GRAPHICS (PIXELS) | MODE |
-------------------------------------------------------------------
INTEGER( 4 ) STRING( 40 ) STRING( 40 )
-------------------------------------------------------------------
01 0640x400 16
02 0640x400 17
03 0640x400 32
04 0640x400 33
05 0640x480 18
06 0640x480 19
07 0640x500 3
08 0640x500 6
09 0640x512 0
10 0640x512 1
11 0640x512 2
12 0640x512 4
13 0640x512 5
14 0640x512 8
15 0640x512 9
16 0720x576 10
17 0720x576 11
18 0800x600 20
19 0800x600 21
20 0960x768 12
21 0960x768 13
22 1024x768 22
23 1024x768 23
24 1152x864 24
25 1152x864 25
26 1280x1024 14
27 1280x1024 15
28 1280x960 26
29 1280x960 27
30 1440x1080 28
31 1440x1080 29
32 1600x1200 30
33 1600x1200 31
34 teletext 7
-------------------------------------------------------------------
---
The function below uses this table values to return a possible MODE.
===
--- cut here: begin --------------------------------------------------
REM library: graphics: get: screen: mode: full
(filenamemacro=getgrmfu.bbc) [kn, ri, sa, 28-01-2021 18:21:38]
DEF FNGraphicsGetScreenModeFullI
REM e.g. MODE FNGraphicsGetScreenModeFullI
REM e.g. END
REM e.g. :
REM e.g. :
REM e.g. :
REM 13-May-2005 A.D. Cool
REM Select appropriate mode to fill screen based on returned
REM device screen size
REM
LOCAL xScreen%
LOCAL yScreen%
LOCAL modeI%
SYS "GetSystemMetrics", 0 TO xScreen%
SYS "GetSystemMetrics", 1 TO yScreen%
CASE xScreen% OF
:
WHEN 640
CASE yScreen% OF
WHEN 400 : modeI% = 16
REM WHEN 400 : modeI% = 17
REM WHEN 400 : modeI% = 32
REM WHEN 400 : modeI% = 33
WHEN 480 : modeI% = 18
REM WHEN 480 : modeI% = 19
WHEN 500 : modeI% = 3
REM WHEN 500 : modeI% = 6
WHEN 512 : modeI% = 0
REM WHEN 512 : modeI% = 1
REM WHEN 512 : modeI% = 2
REM WHEN 512 : modeI% = 4
REM WHEN 512 : modeI% = 5
REM WHEN 512 : modeI% = 8
REM WHEN 512 : modeI% = 9
ENDCASE
:
WHEN 720
CASE yScreen% OF
WHEN 576 : modeI% = 10
REM WHEN 576 : modeI% = 11
ENDCASE
:
WHEN 800
CASE yScreen% OF
WHEN 600 : modeI% = 20
REM WHEN 600 : modeI% = 21
ENDCASE
:
WHEN 960
CASE yScreen% OF
WHEN 768 : modeI% = 12
REM WHEN 768 : modeI% = 13
ENDCASE
:
WHEN 1024
CASE yScreen% OF
WHEN 768 : modeI% = 22
REM WHEN 768 : modeI% = 23
ENDCASE
:
WHEN 1152
CASE yScreen% OF
WHEN 864 : modeI% = 24
REM WHEN 864 : modeI% = 25
ENDCASE
:
WHEN 1280 :
CASE yScreen% OF
:
WHEN 800 : modeI% = 16
:
WHEN 960 : modeI% = 26
REM WHEN 960 : modeI% = 27
:
WHEN 1000 : modeI% = 3
:
WHEN 1024 : modeI% = 14
REM WHEN 1024 : modeI% = 15
ENDCASE
WHEN 1440
CASE yScreen% OF
WHEN 1080 : modeI% = 28
REM WHEN 1080 : modeI% = 29
ENDCASE
:
WHEN 1600
CASE yScreen% OF
WHEN 1600 : modeI% = 30
REM WHEN 1600 : modeI% = 31
ENDCASE
OTHERWISE modeI% = 2
REM if all else fails go for screen resolution 640 x 512 pixels.
REM Or maybe the largest
REM window that the screen coordinates can handle?
ENDCASE
= modeI%
:
--- cut here: end ----------------------------------------------------
---
---
Internet: see also:
---
----------------------------------------------------------------------