home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 2 / DATAFILE_PDCD2.iso / utilities2 / desklib / Libraries / Misc / c / Screen next >
Encoding:
Text File  |  1992-04-05  |  1.6 KB  |  55 lines

  1. /*
  2.     ####             #    #     # #
  3.     #   #            #    #       #          The FreeWare C library for 
  4.     #   #  ##   ###  #  # #     # ###             RISC OS machines
  5.     #   # #  # #     # #  #     # #  #   ___________________________________
  6.     #   # ####  ###  ##   #     # #  #                                      
  7.     #   # #        # # #  #     # #  #    Please refer to the accompanying
  8.     ####   ### ####  #  # ##### # ###    documentation for conditions of use
  9.     ________________________________________________________________________
  10.  
  11.     File:    Screen.c
  12.     Author:  Copyright © 1992 Jason Williams
  13.     Version: 1.00 (23 Mar 1992)
  14.     Purpose: Screen functions (read size, eig factors, etc.)
  15. */
  16.  
  17. #include "Wimp.h"
  18. #include "SWI.h"
  19.  
  20. int        screen_mode  = -1;
  21. wimp_point screen_size;
  22. wimp_point screen_eig;
  23. wimp_point screen_delta;
  24. int        screen_bpp;
  25.  
  26. #define ReadModeVar(m, v, r) SWI(3, 3, 0x20035, (m), (v), 0,   0, 0, (r))
  27. #define SWI_XOS_Byte 0x20006
  28.  
  29. extern BOOL Screen_CacheModeInfo(void)
  30. {
  31.   int oldmode = screen_mode;
  32.  
  33.   SWI(1, 3, SWI_XOS_Byte, 135,   NULL, NULL, &screen_mode);
  34.  
  35.   if (oldmode == screen_mode)
  36.     return(FALSE);
  37.  
  38.   ReadModeVar(-1, 9, &screen_bpp);
  39.   screen_bpp = 1 << screen_bpp;
  40.  
  41.   ReadModeVar(-1, 4, &screen_eig.x);
  42.   ReadModeVar(-1, 5, &screen_eig.y);
  43.  
  44.   screen_delta.x = 1 << screen_eig.x;
  45.   screen_delta.y = 1 << screen_eig.y;
  46.  
  47.   ReadModeVar(-1, 11, &screen_size.x);
  48.   screen_size.x = (screen_size.x + 1) << screen_eig.x;
  49.  
  50.   ReadModeVar(-1, 12, &screen_size.y);
  51.   screen_size.y = (screen_size.y + 1) << screen_eig.y;
  52.  
  53.   return(TRUE);
  54. }
  55.