home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / cbm / nduk-v37.lha / V37 / include / graphics / displayinfo.h < prev    next >
C/C++ Source or Header  |  1991-11-27  |  7KB  |  219 lines

  1. #ifndef    GRAPHICS_DISPLAYINFO_H
  2. #define    GRAPHICS_DISPLAYINFO_H
  3. /*
  4. **    $Filename: graphics/displayinfo.h $
  5. **    $Release: 2.04 Includes, V37.4 $
  6. **    $Revision: 37.6 $
  7. **    $Date: 91/11/08 $
  8. **
  9. **    include define file for displayinfo database
  10. **
  11. **    (C) Copyright 1985-1991 Commodore-Amiga, Inc.
  12. **        All Rights Reserved
  13. */
  14.  
  15. #ifndef EXEC_TYPES_H
  16. #include <exec/types.h>
  17. #endif /* EXEC_TYPES_H */
  18.  
  19. #ifndef GRAPHICS_GFX_H
  20. #include <graphics/gfx.h>
  21. #endif /* GRAPHICS_GFX_H */
  22.  
  23. #ifndef GRAPHICS_MONITOR_H
  24. #include <graphics/monitor.h>
  25. #endif /* GRAPHICS_MONITOR_H */
  26.  
  27. #ifndef UTILITY_TAGITEM_H
  28. #include <utility/tagitem.h>
  29. #endif /* UTILITY_TAGITEM_H */
  30.  
  31. /* the "public" handle to a DisplayInfoRecord */
  32.  
  33. typedef APTR DisplayInfoHandle;
  34.  
  35. /* datachunk type identifiers */
  36.  
  37. #define DTAG_DISP        0x80000000
  38. #define DTAG_DIMS        0x80001000
  39. #define DTAG_MNTR        0x80002000
  40. #define DTAG_NAME        0x80003000
  41.  
  42. struct QueryHeader
  43. {
  44.     ULONG    StructID;    /* datachunk type identifier */
  45.     ULONG    DisplayID;    /* copy of display record key    */
  46.     ULONG    SkipID;        /* TAG_SKIP -- see tagitems.h */
  47.     ULONG    Length;        /* length of local data in double-longwords */
  48. };
  49.  
  50. struct DisplayInfo
  51. {
  52.     struct    QueryHeader Header;
  53.     UWORD    NotAvailable;    /* if NULL available, else see defines */
  54.     ULONG    PropertyFlags;    /* Properties of this mode see defines */
  55.     Point    Resolution;    /* ticks-per-pixel X/Y               */
  56.     UWORD    PixelSpeed;    /* aproximation in nanoseconds           */
  57.     UWORD    NumStdSprites;    /* number of standard amiga sprites    */
  58.     UWORD    PaletteRange;    /* distinguishable shades available    */
  59.     Point    SpriteResolution; /* std sprite ticks-per-pixel X/Y    */
  60.     UBYTE    pad[4];
  61.     ULONG    reserved[2];    /* terminator */
  62. };
  63.  
  64. /* availability */
  65.  
  66. #define DI_AVAIL_NOCHIPS    0x0001
  67. #define DI_AVAIL_NOMONITOR    0x0002
  68. #define DI_AVAIL_NOTWITHGENLOCK 0x0004
  69.  
  70. /* mode properties */
  71.  
  72. #define DIPF_IS_LACE        0x00000001
  73. #define DIPF_IS_DUALPF        0x00000002
  74. #define DIPF_IS_PF2PRI        0x00000004
  75. #define DIPF_IS_HAM        0x00000008
  76.  
  77. #define DIPF_IS_ECS        0x00000010    /*    note: ECS modes (SHIRES, VGA, and **
  78.                                             **    PRODUCTIVITY) do not support      **
  79.                                             **    attached sprites.          **
  80.                                             */
  81. #define DIPF_IS_PAL        0x00000020
  82. #define DIPF_IS_SPRITES    0x00000040
  83. #define DIPF_IS_GENLOCK    0x00000080
  84.  
  85. #define DIPF_IS_WB        0x00000100
  86. #define DIPF_IS_DRAGGABLE    0x00000200
  87. #define DIPF_IS_PANELLED    0x00000400
  88. #define DIPF_IS_BEAMSYNC    0x00000800
  89.  
  90. #define DIPF_IS_EXTRAHALFBRITE    0x00001000
  91.  
  92. struct DimensionInfo
  93. {
  94.     struct    QueryHeader Header;
  95.     UWORD    MaxDepth;          /* log2( max number of colors ) */
  96.     UWORD    MinRasterWidth;       /* minimum width in pixels      */
  97.     UWORD    MinRasterHeight;      /* minimum height in pixels     */
  98.     UWORD    MaxRasterWidth;       /* maximum width in pixels      */
  99.     UWORD    MaxRasterHeight;      /* maximum height in pixels     */
  100.     struct    Rectangle   Nominal;  /* "standard" dimensions          */
  101.     struct    Rectangle   MaxOScan; /* fixed, hardware dependant    */
  102.     struct    Rectangle VideoOScan; /* fixed, hardware dependant    */
  103.     struct    Rectangle   TxtOScan; /* editable via preferences     */
  104.     struct    Rectangle   StdOScan; /* editable via preferences     */
  105.     UBYTE    pad[14];
  106.     ULONG    reserved[2];          /* terminator */
  107. };
  108.  
  109. struct MonitorInfo
  110. {
  111.     struct    QueryHeader Header;
  112.     struct    MonitorSpec  *Mspc;   /* pointer to monitor specification  */
  113.     Point    ViewPosition;          /* editable via preferences       */
  114.     Point    ViewResolution;       /* standard monitor ticks-per-pixel  */
  115.     struct    Rectangle ViewPositionRange;  /* fixed, hardware dependant */
  116.     UWORD    TotalRows;          /* display height in scanlines       */
  117.     UWORD    TotalColorClocks;     /* scanline width in 280 ns units    */
  118.     UWORD    MinRow;          /* absolute minimum active scanline  */
  119.     WORD    Compatibility;          /* how this coexists with others       */
  120.     UBYTE    pad[36];
  121.         Point    DefaultViewPosition;  /* original, never changes */
  122.         ULONG    PreferredModeID;      /* for Preferences */
  123.     ULONG    reserved[2];          /* terminator */
  124. };
  125.  
  126. /* monitor compatibility */
  127.  
  128. #define MCOMPAT_MIXED    0    /* can share display with other MCOMPAT_MIXED */
  129. #define MCOMPAT_SELF    1    /* can share only within same monitor */
  130. #define MCOMPAT_NOBODY -1    /* only one viewport at a time */
  131.  
  132. #define DISPLAYNAMELEN 32
  133.  
  134. struct NameInfo
  135. {
  136.     struct    QueryHeader Header;
  137.     UBYTE    Name[DISPLAYNAMELEN];
  138.     ULONG    reserved[2];          /* terminator */
  139. };
  140.  
  141. /* DisplayInfoRecord identifiers */
  142.  
  143. #define INVALID_ID        ~0
  144.  
  145. /* normal identifiers */
  146.  
  147. #define MONITOR_ID_MASK        0xFFFF1000
  148.  
  149. #define DEFAULT_MONITOR_ID        0x00000000
  150. #define NTSC_MONITOR_ID        0x00011000
  151. #define PAL_MONITOR_ID            0x00021000
  152.  
  153. /* the following 20 composite keys are for Modes on the default Monitor */
  154. /* ntsc & pal "flavors" of these particular keys may be made by or'ing    */
  155. /* the ntsc or pal MONITOR_ID with the desired MODE_KEY... */
  156.  
  157. #define LORES_KEY            0x00000000
  158. #define HIRES_KEY            0x00008000
  159. #define SUPER_KEY            0x00008020
  160. #define HAM_KEY            0x00000800
  161. #define LORESLACE_KEY            0x00000004
  162. #define HIRESLACE_KEY            0x00008004
  163. #define SUPERLACE_KEY            0x00008024
  164. #define HAMLACE_KEY            0x00000804
  165. #define LORESDPF_KEY            0x00000400
  166. #define HIRESDPF_KEY            0x00008400
  167. #define SUPERDPF_KEY            0x00008420
  168. #define LORESLACEDPF_KEY        0x00000404
  169. #define HIRESLACEDPF_KEY        0x00008404
  170. #define SUPERLACEDPF_KEY        0x00008424
  171. #define LORESDPF2_KEY            0x00000440
  172. #define HIRESDPF2_KEY            0x00008440
  173. #define SUPERDPF2_KEY            0x00008460
  174. #define LORESLACEDPF2_KEY        0x00000444
  175. #define HIRESLACEDPF2_KEY        0x00008444
  176. #define SUPERLACEDPF2_KEY        0x00008464
  177. #define EXTRAHALFBRITE_KEY        0x00000080
  178. #define EXTRAHALFBRITELACE_KEY        0x00000084
  179.  
  180. /* vga identifiers */
  181.  
  182. #define VGA_MONITOR_ID            0x00031000
  183.  
  184. #define VGAEXTRALORES_KEY        0x00031004
  185. #define VGALORES_KEY            0x00039004
  186. #define VGAPRODUCT_KEY            0x00039024
  187. #define VGAHAM_KEY            0x00031804
  188. #define VGAEXTRALORESLACE_KEY        0x00031005
  189. #define VGALORESLACE_KEY        0x00039005
  190. #define VGAPRODUCTLACE_KEY        0x00039025
  191. #define VGAHAMLACE_KEY            0x00031805
  192. #define VGAEXTRALORESDPF_KEY        0x00031404
  193. #define VGALORESDPF_KEY        0x00039404
  194. #define VGAPRODUCTDPF_KEY        0x00039424
  195. #define VGAEXTRALORESLACEDPF_KEY    0x00031405
  196. #define VGALORESLACEDPF_KEY        0x00039405
  197. #define VGAPRODUCTLACEDPF_KEY        0x00039425
  198. #define VGAEXTRALORESDPF2_KEY        0x00031444
  199. #define VGALORESDPF2_KEY        0x00039444
  200. #define VGAPRODUCTDPF2_KEY        0x00039464
  201. #define VGAEXTRALORESLACEDPF2_KEY    0x00031445
  202. #define VGALORESLACEDPF2_KEY        0x00039445
  203. #define VGAPRODUCTLACEDPF2_KEY        0x00039465
  204. #define VGAEXTRAHALFBRITE_KEY        0x00031084
  205. #define VGAEXTRAHALFBRITELACE_KEY    0x00031085
  206.  
  207. /* a2024 identifiers */
  208.  
  209. #define A2024_MONITOR_ID        0x00041000
  210.  
  211. #define A2024TENHERTZ_KEY        0x00041000
  212. #define A2024FIFTEENHERTZ_KEY        0x00049000
  213.  
  214. /* prototype identifiers */
  215.  
  216. #define PROTO_MONITOR_ID        0x00051000
  217.  
  218. #endif    /* GRAPHICS_DISPLAYINFO_H */
  219.