frequently ask ? : Computers : Programming : Languages : Bbcbasic

+ Search
Add Entry AlertManage Folder Edit Entry Add page to http://del.icio.us/
Did You Find This Entry Useful?

1 of 2 people (50%) answered Yes
Recently 1 of 2 people (50%) answered Yes

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:
---
----------------------------------------------------------------------