home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / jËzyki_programowania / ace_basic / ace / include / intuition / pointerclass.h < prev    next >
C/C++ Source or Header  |  1977-12-31  |  5KB  |  150 lines

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