home *** CD-ROM | disk | FTP | other *** search
/ Aminet 18 / aminetcdnumber181997.iso / Aminet / misc / emu / AROS_m68k_bin.lha / AROS / include / intuition / gadgetclass.h next >
C/C++ Source or Header  |  1997-02-08  |  10KB  |  287 lines

  1. #ifndef INTUITION_GADGETCLASS_H
  2. #define INTUITION_GADGETCLASS_H
  3.  
  4. /*
  5.     (C) 1995-96 AROS - The Amiga Replacement OS
  6.     $Id: gadgetclass.h,v 1.3 1996/11/19 11:02:08 aros Exp $
  7.  
  8.     Desc: Headerfile for Intuitions' GadgetClass and ButtonGClass
  9.     Lang: english
  10. */
  11. #ifndef EXEC_TYPES_H
  12. #   include <exec/types.h>
  13. #endif
  14. #ifndef INTUITION_INTUITION_H
  15. #   include <intuition/intuition.h>
  16. #endif
  17. #ifndef UTILITY_TAGITEM_H
  18. #   include <utility/tagitem.h>
  19. #endif
  20.  
  21. /* GadgetClass attributes */
  22. #define GA_Dummy        (TAG_USER + 0x30000)
  23. #define GA_Left         (GA_Dummy +  1) /* (LONG) Left edge */
  24. #define GA_RelRight        (GA_Dummy +  2) /* (LONG) Left=Win->Width-this-1 */
  25. #define GA_Top            (GA_Dummy +  3) /* (LONG) Top edge */
  26. #define GA_RelBottom        (GA_Dummy +  4) /* (LONG) Top=Win->Height-this-1 */
  27. #define GA_Width        (GA_Dummy +  5) /* (LONG) Width */
  28. #define GA_RelWidth        (GA_Dummy +  6) /* (LONG) Width=Win->Width-this */
  29. #define GA_Height        (GA_Dummy +  7) /* (LONG) Height */
  30. #define GA_RelHeight        (GA_Dummy +  8)
  31. #define GA_Text         (GA_Dummy +  9) /* (UBYTE *) */
  32. #define GA_Image        (GA_Dummy + 10)
  33. #define GA_Border        (GA_Dummy + 11)
  34. #define GA_SelectRender     (GA_Dummy + 12)
  35. #define GA_Highlight        (GA_Dummy + 13)
  36. #define GA_Disabled        (GA_Dummy + 14)
  37. #define GA_GZZGadget        (GA_Dummy + 15)
  38. #define GA_ID            (GA_Dummy + 16)
  39. #define GA_UserData        (GA_Dummy + 17)
  40. #define GA_SpecialInfo        (GA_Dummy + 18)
  41. #define GA_Selected        (GA_Dummy + 19)
  42. #define GA_EndGadget        (GA_Dummy + 20)
  43. #define GA_Immediate        (GA_Dummy + 21)
  44. #define GA_RelVerify        (GA_Dummy + 22)
  45. #define GA_FollowMouse        (GA_Dummy + 23)
  46. #define GA_RightBorder        (GA_Dummy + 24)
  47. #define GA_LeftBorder        (GA_Dummy + 25)
  48. #define GA_TopBorder        (GA_Dummy + 26)
  49. #define GA_BottomBorder     (GA_Dummy + 27)
  50. #define GA_ToggleSelect     (GA_Dummy + 28)
  51. #define GA_SysGadget        (GA_Dummy + 29) /* internal */
  52. #define GA_SysGType        (GA_Dummy + 30) /* internal */
  53. #define GA_Previous        (GA_Dummy + 31) /* Previous Gadget [I.G] */
  54. #define GA_Next         (GA_Dummy + 32)
  55. #define GA_DrawInfo        (GA_Dummy + 33) /* Some Gadgets need this */
  56.  
  57. /* You should use at most ONE of GA_Text, GA_IntuiText, and GA_LabelImage */
  58. #define GA_IntuiText        (GA_Dummy + 34) /* ti_Data is (struct IntuiText *) */
  59. #define GA_LabelImage        (GA_Dummy + 35) /* ti_Data is an image (object) */
  60.  
  61. #define GA_TabCycle        (GA_Dummy + 36) /* BOOL: Handle Tab/Shift-Tab */
  62. #define GA_GadgetHelp        (GA_Dummy + 37) /* Send GADGETHELP message */
  63. #define GA_Bounds        (GA_Dummy + 38) /* struct IBox * */
  64. #define GA_RelSpecial        (GA_Dummy + 39) /* Special handling in GM_LAYOUT */
  65. #define GA_TextAttr        (GA_Dummy + 40) /* (struct TextAttr *) */
  66. #define GA_ReadOnly        (GA_Dummy + 41) /* (BOOL) */
  67.  
  68.  
  69. /* PROPGCLASS attributes */
  70. #define PGA_Dummy        (TAG_USER + 0x31000)
  71. #define PGA_Freedom        (PGA_Dummy +  1) /* only one of FREEVERT or FREEHORIZ */
  72. #define PGA_Borderless        (PGA_Dummy +  2)
  73. #define PGA_HorizPot        (PGA_Dummy +  3)
  74. #define PGA_HorizBody        (PGA_Dummy +  4)
  75. #define PGA_VertPot        (PGA_Dummy +  5)
  76. #define PGA_VertBody        (PGA_Dummy +  6)
  77. #define PGA_Total        (PGA_Dummy +  7)
  78. #define PGA_Visible        (PGA_Dummy +  8)
  79. #define PGA_Top         (PGA_Dummy +  9)
  80. #define PGA_NewLook        (PGA_Dummy + 10)
  81.  
  82. /* STRGCLASS attributes */
  83. #define STRINGA_Dummy        (TAG_USER      +0x32000)
  84. #define STRINGA_MaxChars    (STRINGA_Dummy +  1)
  85. #define STRINGA_Buffer        (STRINGA_Dummy +  2)
  86. #define STRINGA_UndoBuffer  (STRINGA_Dummy +  3)
  87. #define STRINGA_WorkBuffer  (STRINGA_Dummy +  4)
  88. #define STRINGA_BufferPos   (STRINGA_Dummy +  5)
  89. #define STRINGA_DispPos     (STRINGA_Dummy +  6)
  90. #define STRINGA_AltKeyMap   (STRINGA_Dummy +  7)
  91. #define STRINGA_Font        (STRINGA_Dummy +  8)
  92. #define STRINGA_Pens        (STRINGA_Dummy +  9)
  93. #define STRINGA_ActivePens  (STRINGA_Dummy + 10)
  94. #define STRINGA_EditHook    (STRINGA_Dummy + 11)
  95. #define STRINGA_EditModes   (STRINGA_Dummy + 12)
  96.  
  97. /* booleans */
  98. #define STRINGA_ReplaceMode    (STRINGA_Dummy + 13)
  99. #define STRINGA_FixedFieldMode    (STRINGA_Dummy + 14)
  100. #define STRINGA_NoFilterMode    (STRINGA_Dummy + 15)
  101. #define STRINGA_Justification    (STRINGA_Dummy + 16) /* GACT_STRINGCENTER,
  102.                             GACT_STRINGLEFT,
  103.                             GACT_STRINGRIGHT */
  104. #define STRINGA_LongVal     (STRINGA_Dummy + 17)
  105. #define STRINGA_TextVal     (STRINGA_Dummy + 18)
  106. #define STRINGA_ExitHelp    (STRINGA_Dummy + 19) /* Exit on "Help" */
  107.  
  108. #define SG_DEFAULTMAXCHARS    (128)
  109.  
  110. /* Gadget Layout related attributes    */
  111. #define LAYOUTA_Dummy        (TAG_USER  + 0x38000)
  112. #define LAYOUTA_LayoutObj    (LAYOUTA_Dummy + 1)
  113. #define LAYOUTA_Spacing     (LAYOUTA_Dummy + 2)
  114. #define LAYOUTA_Orientation    (LAYOUTA_Dummy + 3)
  115. #define LAYOUTA_ChildMaxWidth    (LAYOUTA_Dummy + 4)
  116. #define LAYOUTA_ChildMaxHeight    (LAYOUTA_Dummy + 5)
  117.  
  118. /* orientation values    */
  119. #define LORIENT_NONE    0
  120. #define LORIENT_HORIZ    1
  121. #define LORIENT_VERT    2
  122.  
  123.  
  124. /* Gadget Method ID's   */
  125. #define GM_HITTEST    (0)     /* return GMR_GADGETHIT if you are hit
  126.                    (works in disabled state, too). */
  127. #define GM_RENDER    (1)     /* draw yourself in the right state */
  128. #define GM_GOACTIVE    (2)     /* You will receive input */
  129. #define GM_HANDLEINPUT    (3)     /* handle input */
  130. #define GM_GOINACTIVE    (4)     /* no more input */
  131. #define GM_HELPTEST    (5)     /* Will you send gadget help if the mouse is
  132.                    at the specified coordinates?  See below
  133.                    for possible GMR_ values. */
  134. #define GM_LAYOUT    (6)     /* re-evaluate your size based on the GadgetInfo
  135.                    Domain. Do NOT re-render yourself yet, you
  136.                    will be called when it is time... */
  137. #define GM_DOMAIN    (7)     /* Query the sizing requirements */
  138.  
  139. /* Parameter "Messages" passed to gadget class methods  */
  140.  
  141. /* GM_HITTEST and GM_HELPTEST send this message.
  142.  * For GM_HITTEST, gpht_Mouse are coordinates relative to the gadget
  143.  * select box.    For GM_HELPTEST, the coordinates are relative to
  144.  * the gadget bounding box (which defaults to the select box).
  145.  */
  146. struct gpHitTest
  147. {
  148.     STACKULONG        MethodID;
  149.     struct GadgetInfo  *gpht_GInfo;
  150.     struct
  151.     {
  152.     STACKWORD X;
  153.     STACKWORD Y;
  154.     }            gpht_Mouse;
  155. };
  156.  
  157. /* For GM_HITTEST, return GMR_GADGETHIT if you were indeed hit,
  158.  * otherwise return zero.
  159.  *
  160.  * For GM_HELPTEST, return GMR_NOHELPHIT (zero) if you were not hit.
  161.  * Typically, return GMR_HELPHIT if you were hit.
  162.  * It is possible to pass a UWORD to the application via the Code field
  163.  * of the IDCMP_GADGETHELP message.  Return GMR_HELPCODE or'd with
  164.  * the UWORD-sized result you wish to return.
  165.  *
  166.  * GMR_HELPHIT yields a Code value of ((UWORD) ~0), which should
  167.  * mean "nothing particular" to the application.
  168.  */
  169.  
  170. #define GMR_GADGETHIT    (0x00000004)    /* GM_HITTEST hit */
  171.  
  172. #define GMR_NOHELPHIT    (0x00000000)    /* GM_HELPTEST didn't hit */
  173. #define GMR_HELPHIT    (0xFFFFFFFF)    /* GM_HELPTEST hit, return code = ~0 */
  174. #define GMR_HELPCODE    (0x00010000)    /* GM_HELPTEST hit, return low word as code */
  175.  
  176. /* GM_RENDER    */
  177. struct gpRender
  178. {
  179.     STACKULONG        MethodID;
  180.     struct GadgetInfo  *gpr_GInfo;    /* gadget context        */
  181.     struct RastPort    *gpr_RPort;    /* all ready for use        */
  182.     STACKLONG        gpr_Redraw;    /* might be a "highlight pass"  */
  183. };
  184.  
  185. /* values of gpr_Redraw */
  186. #define GREDRAW_UPDATE    (2)     /* incremental update, e.g. prop slider */
  187. #define GREDRAW_REDRAW    (1)     /* redraw gadget        */
  188. #define GREDRAW_TOGGLE    (0)     /* toggle highlight, if applicable      */
  189.  
  190. /* GM_GOACTIVE, GM_HANDLEINPUT    */
  191. struct gpInput
  192. {
  193.     STACKULONG        MethodID;
  194.     struct GadgetInfo  *gpi_GInfo;
  195.     struct InputEvent  *gpi_IEvent;
  196.     STACKLONG           *gpi_Termination;
  197.     struct
  198.     {
  199.     STACKWORD X;
  200.     STACKWORD Y;
  201.     }            gpi_Mouse;
  202.  
  203.     /* (V39) Pointer to TabletData structure, if this event originated
  204.      * from a tablet which sends IESUBCLASS_NEWTABLET events, or NULL if
  205.      * not.
  206.      *
  207.      * DO NOT ATTEMPT TO READ THIS FIELD UNDER INTUITION PRIOR TO V39!
  208.      * IT WILL BE INVALID!
  209.      */
  210.     struct TabletData  *gpi_TabletData;
  211. };
  212.  
  213. /* GM_HANDLEINPUT and GM_GOACTIVE  return code flags    */
  214. /* return GMR_MEACTIVE (0) alone if you want more input.
  215.    Otherwise, return ONE of GMR_NOREUSE and GMR_REUSE, and optionally
  216.    GMR_VERIFY.
  217. */
  218. #define GMR_MEACTIVE    (0)
  219. #define GMR_NOREUSE    (1 << 1)
  220. #define GMR_REUSE    (1 << 2)
  221. #define GMR_VERIFY    (1 << 3)        /* you MUST set gpi_Termination */
  222.  
  223. /*
  224.     You can end activation with one of GMR_NEXTACTIVE and GMR_PREVACTIVE,
  225.     which instructs Intuition to activate the next or previous gadget
  226.     that has GFLG_TABCYCLE set.
  227. */
  228. #define GMR_NEXTACTIVE    (1 << 4)
  229. #define GMR_PREVACTIVE    (1 << 5)
  230.  
  231. /* GM_GOINACTIVE */
  232. struct gpGoInactive
  233. {
  234.     STACKULONG        MethodID;
  235.     struct GadgetInfo  *gpgi_GInfo;
  236.  
  237.     /* V37 field only!    DO NOT attempt to read under V36! */
  238.     STACKULONG        gpgi_Abort;    /* gpgi_Abort=1 if gadget was aborted
  239.                      * by Intuition and 0 if gadget went
  240.                      * inactive at its own request
  241.                      */
  242. };
  243.  
  244.  
  245. /* New for V39: Intuition sends GM_LAYOUT to any GREL_ gadget when
  246.  * the gadget is added to the window (or when the window opens, if
  247.  * the gadget was part of the NewWindow.FirstGadget or the WA_Gadgets
  248.  * list), or when the window is resized.  Your gadget can set the
  249.  * GA_RelSpecial property to get GM_LAYOUT events without Intuition
  250.  * changing the interpretation of your gadget select box.  This
  251.  * allows for completely arbitrary resizing/repositioning based on
  252.  * window size.
  253.  */
  254. /* GM_LAYOUT */
  255. struct gpLayout
  256. {
  257.     STACKULONG        MethodID;
  258.     struct GadgetInfo  *gpl_GInfo;
  259.     STACKULONG        gpl_Initial;    /* non-zero if this method was invoked
  260.                      * during AddGList() or OpenWindow()
  261.                      * time.  zero if this method was invoked
  262.                      * during window resizing.
  263.                      */
  264. };
  265.  
  266.  
  267. /*
  268.     The GM_DOMAIN method is used to obtain the sizing requirements of an
  269.     object for a class before ever creating an object.
  270. */
  271. /* GM_DOMAIN */
  272. struct gpDomain
  273. {
  274.     STACKULONG         MethodID;
  275.     struct GadgetInfo    *gpd_GInfo;
  276.     struct RastPort    *gpd_RPort;    /* RastPort to layout for */
  277.     STACKLONG         gpd_Which;
  278.     struct IBox      gpd_Domain;    /* Resulting domain */
  279.     struct TagItem    *gpd_Attrs;    /* Additional attributes */
  280. };
  281.  
  282. #define GDOMAIN_MINIMUM     (0) /* Minimum size */
  283. #define GDOMAIN_NOMINAL     (1) /* Nominal size */
  284. #define GDOMAIN_MAXIMUM     (2) /* Maximum size */
  285.  
  286. #endif /* INTUITION_GADGETCLASS_H */
  287.