home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD1.bin / gnu / os-include / intuition / pointerclass.h < prev    next >
C/C++ Source or Header  |  1993-10-15  |  5KB  |  147 lines

  1. #ifndef INTUITION_POINTERCLASS_H
  2. #define INTUITION_POINTERCLASS_H
  3. /*
  4. **  $VER: pointerclass.h 39.6 (15.2.93)
  5. **  Includes Release 40.15
  6. **
  7. **  'boopsi' pointer class interface
  8. **
  9. **  (C) Copyright 1992-1993 Commodore-Amiga, Inc.
  10. **        All Rights Reserved
  11. */
  12.  
  13. #ifndef EXEC_TYPES_H
  14. #include <exec/types.h>
  15. #endif
  16.  
  17. #ifndef INTUITION_INTUITION_H
  18. #include <intuition/intuition.h>
  19. #endif
  20.  
  21. #ifndef UTILITY_TAGITEM_H
  22. #include <utility/tagitem.h>
  23. #endif
  24.  
  25. /* The following tags are recognized at NewObject() time by
  26.  * pointerclass:
  27.  *
  28.  * POINTERA_BitMap (struct BitMap *) - Pointer to bitmap to
  29.  *    get pointer imagery from.  Bitplane data need not be
  30.  *    in chip RAM.
  31.  * POINTERA_XOffset (LONG) - X-offset of the pointer hotspot.
  32.  * POINTERA_YOffset (LONG) - Y-offset of the pointer hotspot.
  33.  * POINTERA_WordWidth (ULONG) - designed width of the pointer in words
  34.  * POINTERA_XResolution (ULONG) - one of the POINTERXRESN_ flags below
  35.  * POINTERA_YResolution (ULONG) - one of the POINTERYRESN_ flags below
  36.  *
  37.  */
  38.  
  39. #define POINTERA_Dummy    (TAG_USER + 0x39000)
  40.  
  41. #define POINTERA_BitMap        (POINTERA_Dummy + 0x01)
  42. #define POINTERA_XOffset    (POINTERA_Dummy + 0x02)
  43. #define POINTERA_YOffset    (POINTERA_Dummy + 0x03)
  44. #define POINTERA_WordWidth    (POINTERA_Dummy + 0x04)
  45. #define POINTERA_XResolution    (POINTERA_Dummy + 0x05)
  46. #define POINTERA_YResolution    (POINTERA_Dummy + 0x06)
  47.  
  48. /* These are the choices for the POINTERA_XResolution attribute which
  49.  * will determine what resolution pixels are used for this pointer.
  50.  *
  51.  * POINTERXRESN_DEFAULT (ECS-compatible pointer width)
  52.  *    = 70 ns if SUPERHIRES-type mode, 140 ns if not
  53.  *
  54.  * POINTERXRESN_SCREENRES
  55.  *    = Same as pixel speed of screen
  56.  *
  57.  * POINTERXRESN_LORES (pointer always in lores-like pixels)
  58.  *    = 140 ns in 15kHz modes, 70 ns in 31kHz modes
  59.  *
  60.  * POINTERXRESN_HIRES (pointer always in hires-like pixels)
  61.  *    = 70 ns in 15kHz modes, 35 ns in 31kHz modes
  62.  *
  63.  * POINTERXRESN_140NS (pointer always in 140 ns pixels)
  64.  *    = 140 ns always
  65.  *
  66.  * POINTERXRESN_70NS (pointer always in 70 ns pixels)
  67.  *    = 70 ns always
  68.  *
  69.  * POINTERXRESN_35NS (pointer always in 35 ns pixels)
  70.  *    = 35 ns always
  71.  */
  72.  
  73. #define POINTERXRESN_DEFAULT    0
  74. #define POINTERXRESN_140NS    1
  75. #define POINTERXRESN_70NS    2
  76. #define POINTERXRESN_35NS    3
  77.  
  78. #define POINTERXRESN_SCREENRES    4
  79. #define POINTERXRESN_LORES    5
  80. #define POINTERXRESN_HIRES    6
  81.  
  82. /* These are the choices for the POINTERA_YResolution attribute which
  83.  * will determine what vertical resolution is used for this pointer.
  84.  *
  85.  * POINTERYRESN_DEFAULT
  86.  *    = In 15 kHz modes, the pointer resolution will be the same
  87.  *      as a non-interlaced screen.  In 31 kHz modes, the pointer
  88.  *      will be doubled vertically.  This means there will be about
  89.  *      200-256 pointer lines per screen.
  90.  *
  91.  * POINTERYRESN_HIGH
  92.  * POINTERYRESN_HIGHASPECT
  93.  *    = Where the hardware/software supports it, the pointer resolution
  94.  *      will be high.  This means there will be about 400-480 pointer
  95.  *      lines per screen.  POINTERYRESN_HIGHASPECT also means that
  96.  *      when the pointer comes out double-height due to hardware/software
  97.  *      restrictions, its width would be doubled as well, if possible
  98.  *      (to preserve aspect).
  99.  *
  100.  * POINTERYRESN_SCREENRES
  101.  * POINTERYRESN_SCREENRESASPECT
  102.  *    = Will attempt to match the vertical resolution of the pointer
  103.  *      to the screen's vertical resolution.    POINTERYRESN_SCREENASPECT also
  104.  *      means that when the pointer comes out double-height due to
  105.  *      hardware/software restrictions, its width would be doubled as well,
  106.  *      if possible (to preserve aspect).
  107.  *
  108.  */
  109.  
  110. #define POINTERYRESN_DEFAULT        0
  111. #define POINTERYRESN_HIGH        2
  112. #define POINTERYRESN_HIGHASPECT        3
  113. #define POINTERYRESN_SCREENRES        4
  114. #define POINTERYRESN_SCREENRESASPECT    5
  115.  
  116. /* Compatibility note:
  117.  *
  118.  * The AA chipset supports variable sprite width and resolution, but
  119.  * the setting of width and resolution is global for all sprites.
  120.  * When no other sprites are in use, Intuition controls the sprite
  121.  * width and sprite resolution for correctness based on pointerclass
  122.  * attributes specified by the creator of the pointer.    Intuition
  123.  * controls sprite resolution with the VTAG_DEFSPRITERESN_SET tag
  124.  * to VideoControl().  Applications can override this on a per-viewport
  125.  * basis with the VTAG_SPRITERESN_SET tag to VideoControl().
  126.  *
  127.  * If an application uses a sprite other than the pointer sprite,
  128.  * Intuition will automatically regenerate the pointer sprite's image in
  129.  * a compatible width.    This might involve BitMap scaling of the imagery
  130.  * you supply.
  131.  *
  132.  * If any sprites other than the pointer sprite were obtained with the
  133.  * old GetSprite() call, Intuition assumes that the owner of those
  134.  * sprites is unaware of sprite resolution, hence Intuition will set the
  135.  * default sprite resolution (VTAG_DEFSPRITERESN_SET) to ECS-compatible,
  136.  * instead of as requested by the various pointerclass attributes.
  137.  *
  138.  * No resolution fallback occurs when applications use ExtSprites.
  139.  * Such applications are expected to use VTAG_SPRITERESN_SET tag if
  140.  * necessary.
  141.  *
  142.  * NB:    Under release V39, only sprite width compatibility is implemented.
  143.  * Sprite resolution compatibility was added for V40.
  144.  */
  145.  
  146. #endif
  147.