home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 4 / FreshFish_May-June1994.bin / bbs / cbm / nduk-v37.lha / V37 / include / intuition / intuition.h < prev    next >
C/C++ Source or Header  |  1991-11-27  |  53KB  |  1,365 lines

  1. #ifndef INTUITION_INTUITION_H
  2. #define INTUITION_INTUITION_H TRUE
  3. /*
  4. **  $Filename: intuition/intuition.h $
  5. **  $Release: 2.04 Includes, V37.4 $
  6. **  $Revision: 36.51 $
  7. **  $Date: 91/03/28 $
  8. **
  9. **  Interface definitions for Intuition applications.
  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
  18.  
  19. #ifndef GRAPHICS_GFX_H
  20. #include <graphics/gfx.h>
  21. #endif
  22.  
  23. #ifndef GRAPHICS_CLIP_H
  24. #include <graphics/clip.h>
  25. #endif
  26.  
  27. #ifndef GRAPHICS_VIEW_H
  28. #include <graphics/view.h>
  29. #endif
  30.  
  31. #ifndef GRAPHICS_RASTPORT_H
  32. #include <graphics/rastport.h>
  33. #endif
  34.  
  35. #ifndef GRAPHICS_LAYERS_H
  36. #include <graphics/layers.h>
  37. #endif
  38.  
  39. #ifndef GRAPHICS_TEXT_H
  40. #include <graphics/text.h>
  41. #endif
  42.  
  43. #ifndef EXEC_PORTS_H
  44. #include <exec/ports.h>
  45. #endif
  46.  
  47. #ifndef DEVICES_INPUTEVENT_H
  48. #include <devices/inputevent.h>
  49. #endif
  50.  
  51. #ifndef UTILITY_TAGITEM_H
  52. #include <utility/tagitem.h>
  53. #endif
  54.  
  55. /*
  56.  * NOTE:  intuition/iobsolete.h is included at the END of this file!
  57.  */
  58.  
  59. /* ======================================================================== */
  60. /* === Menu =============================================================== */
  61. /* ======================================================================== */
  62. struct Menu
  63. {
  64.     struct Menu *NextMenu;    /* same level */
  65.     WORD LeftEdge, TopEdge;    /* position of the select box */
  66.     WORD Width, Height;    /* dimensions of the select box */
  67.     UWORD Flags;        /* see flag definitions below */
  68.     BYTE *MenuName;        /* text for this Menu Header */
  69.     struct MenuItem *FirstItem; /* pointer to first in chain */
  70.  
  71.     /* these mysteriously-named variables are for internal use only */
  72.     WORD JazzX, JazzY, BeatX, BeatY;
  73. };
  74.  
  75.  
  76. /* FLAGS SET BY BOTH THE APPLIPROG AND INTUITION */
  77. #define MENUENABLED 0x0001    /* whether or not this menu is enabled */
  78.  
  79. /* FLAGS SET BY INTUITION */
  80. #define MIDRAWN 0x0100        /* this menu's items are currently drawn */
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87. /* ======================================================================== */
  88. /* === MenuItem =========================================================== */
  89. /* ======================================================================== */
  90. struct MenuItem
  91. {
  92.     struct MenuItem *NextItem;    /* pointer to next in chained list */
  93.     WORD LeftEdge, TopEdge;    /* position of the select box */
  94.     WORD Width, Height;        /* dimensions of the select box */
  95.     UWORD Flags;        /* see the defines below */
  96.  
  97.     LONG MutualExclude;        /* set bits mean this item excludes that */
  98.  
  99.     APTR ItemFill;        /* points to Image, IntuiText, or NULL */
  100.  
  101.     /* when this item is pointed to by the cursor and the items highlight
  102.      *    mode HIGHIMAGE is selected, this alternate image will be displayed
  103.      */
  104.     APTR SelectFill;        /* points to Image, IntuiText, or NULL */
  105.  
  106.     BYTE Command;        /* only if appliprog sets the COMMSEQ flag */
  107.  
  108.     struct MenuItem *SubItem;    /* if non-zero, points to MenuItem for submenu */
  109.  
  110.     /* The NextSelect field represents the menu number of next selected
  111.      *    item (when user has drag-selected several items)
  112.      */
  113.     UWORD NextSelect;
  114. };
  115.  
  116.  
  117. /* FLAGS SET BY THE APPLIPROG */
  118. #define CHECKIT        0x0001    /* set to indicate checkmarkable item */
  119. #define ITEMTEXT    0x0002    /* set if textual, clear if graphical item */
  120. #define COMMSEQ        0x0004    /* set if there's an command sequence */
  121. #define MENUTOGGLE    0x0008    /* set for toggling checks (else mut. exclude) */
  122. #define ITEMENABLED    0x0010    /* set if this item is enabled */
  123.  
  124. /* these are the SPECIAL HIGHLIGHT FLAG state meanings */
  125. #define HIGHFLAGS    0x00C0    /* see definitions below for these bits */
  126. #define HIGHIMAGE    0x0000    /* use the user's "select image" */
  127. #define HIGHCOMP    0x0040    /* highlight by complementing the selectbox */
  128. #define HIGHBOX        0x0080    /* highlight by "boxing" the selectbox */
  129. #define HIGHNONE    0x00C0    /* don't highlight */
  130.  
  131. /* FLAGS SET BY BOTH APPLIPROG AND INTUITION */
  132. #define CHECKED    0x0100    /* state of the checkmark */
  133.  
  134. /* FLAGS SET BY INTUITION */
  135. #define ISDRAWN        0x1000    /* this item's subs are currently drawn */
  136. #define HIGHITEM    0x2000    /* this item is currently highlighted */
  137. #define MENUTOGGLED    0x4000    /* this item was already toggled */
  138.  
  139.  
  140.  
  141.  
  142.  
  143. /* ======================================================================== */
  144. /* === Requester ========================================================== */
  145. /* ======================================================================== */
  146. struct Requester
  147. {
  148.     struct Requester *OlderRequest;
  149.     WORD LeftEdge, TopEdge;        /* dimensions of the entire box */
  150.     WORD Width, Height;            /* dimensions of the entire box */
  151.     WORD RelLeft, RelTop;        /* for Pointer relativity offsets */
  152.  
  153.     struct Gadget *ReqGadget;        /* pointer to a list of Gadgets */
  154.     struct Border *ReqBorder;        /* the box's border */
  155.     struct IntuiText *ReqText;        /* the box's text */
  156.     UWORD Flags;            /* see definitions below */
  157.  
  158.     /* pen number for back-plane fill before draws */
  159.     UBYTE BackFill;
  160.     /* Layer in place of clip rect    */
  161.     struct Layer *ReqLayer;
  162.  
  163.     UBYTE ReqPad1[32];
  164.  
  165.     /* If the BitMap plane pointers are non-zero, this tells the system
  166.      * that the image comes pre-drawn (if the appliprog wants to define
  167.      * its own box, in any shape or size it wants!);  this is OK by
  168.      * Intuition as long as there's a good correspondence between
  169.      * the image and the specified Gadgets
  170.      */
  171.     struct BitMap *ImageBMap;    /* points to the BitMap of PREDRAWN imagery */
  172.     struct Window *RWindow;    /* added.  points back to Window */
  173.  
  174.     struct Image  *ReqImage;    /* new for V36: drawn if USEREQIMAGE set */
  175.  
  176.     UBYTE ReqPad2[32];
  177. };
  178.  
  179.  
  180. /* FLAGS SET BY THE APPLIPROG */
  181. #define POINTREL    0x0001
  182.               /* if POINTREL set, TopLeft is relative to pointer
  183.                * for DMRequester, relative to window center
  184.                * for Request().
  185.                */
  186. #define PREDRAWN    0x0002
  187.     /* set if Requester.ImageBMap points to predrawn Requester imagery */
  188. #define NOISYREQ    0x0004
  189.     /* if you don't want requester to filter input       */
  190. #define SIMPLEREQ    0x0010
  191.     /* to use SIMPLEREFRESH layer (recommended)    */
  192.  
  193. /* New for V36        */
  194. #define USEREQIMAGE    0x0020
  195.     /*  render linked list ReqImage after BackFill
  196.      * but before gadgets and text
  197.      */
  198. #define NOREQBACKFILL    0x0040
  199.     /* don't bother filling requester with Requester.BackFill pen    */
  200.  
  201.  
  202. /* FLAGS SET BY INTUITION */
  203. #define REQOFFWINDOW    0x1000    /* part of one of the Gadgets was offwindow */
  204. #define REQACTIVE    0x2000    /* this requester is active */
  205. #define SYSREQUEST    0x4000    /* (unused) this requester caused by system */
  206. #define DEFERREFRESH    0x8000    /* this Requester stops a Refresh broadcast */
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213. /* ======================================================================== */
  214. /* === Gadget ============================================================= */
  215. /* ======================================================================== */
  216. struct Gadget
  217. {
  218.     struct Gadget *NextGadget;    /* next gadget in the list */
  219.  
  220.     WORD LeftEdge, TopEdge;    /* "hit box" of gadget */
  221.     WORD Width, Height;        /* "hit box" of gadget */
  222.  
  223.     UWORD Flags;        /* see below for list of defines */
  224.  
  225.     UWORD Activation;        /* see below for list of defines */
  226.  
  227.     UWORD GadgetType;        /* see below for defines */
  228.  
  229.     /* appliprog can specify that the Gadget be rendered as either as Border
  230.      * or an Image.  This variable points to which (or equals NULL if there's
  231.      * nothing to be rendered about this Gadget)
  232.      */
  233.     APTR GadgetRender;
  234.  
  235.     /* appliprog can specify "highlighted" imagery rather than algorithmic
  236.      * this can point to either Border or Image data
  237.      */
  238.     APTR SelectRender;
  239.  
  240.     struct IntuiText *GadgetText;   /* text for this gadget */
  241.  
  242.     /* MutualExclude, never implemented, is now declared obsolete.
  243.      * There are published examples of implementing a more general
  244.      * and practical exclusion in your applications.
  245.      *
  246.      * Starting with V36, this field is used to point to a hook
  247.      * for a custom gadget.
  248.      *
  249.      * Programs using this field for their own processing will
  250.      * continue to work, as long as they don't try the
  251.      * trick with custom gadgets.
  252.      */
  253.     LONG MutualExclude;  /* obsolete */
  254.  
  255.     /* pointer to a structure of special data required by Proport