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

---



----------------------------------------------------------------------