home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Misc / M2V11-1.LHA / modula / amiga / Classes.def < prev    next >
Encoding:
Text File  |  1993-11-16  |  32.9 KB  |  950 lines

  1. DEFINITION FOR LIBRARY MODULE Classes ;
  2.  
  3. (* Declared separately because Intuition.def is already    obese    *)
  4. (* IMPORT Classes{x} , will open Intuition with version x    *)
  5.  
  6. FROM SYSTEM    IMPORT STRING, ADDRESS ;
  7. FROM Utility    IMPORT Tag, HookPtr, Hook, TagItemPtr, TAG_USER ;
  8. FROM Exec    IMPORT ListPtr, MinNode ;
  9. FROM InputEvent IMPORT InputEventPtr ;
  10. FROM Graphics    IMPORT RastPortPtr ;
  11. FROM Intuition    IMPORT IBox, ScreenPtr, WindowPtr, GadgetPtr, RequesterPtr,
  12.             GadgetInfoPtr, TabletDataPtr, IBoxPtr, DrawInfoPtr ;
  13.  
  14. TYPE
  15.   opSetPtr        = POINTER TO opSet      ;
  16.   opUpdatePtr        = POINTER TO opUpdate      ;
  17.   opGetPtr        = POINTER TO opGet      ;
  18.   opMemberPtr        = POINTER TO opMember      ;
  19.   IClassPtr        = POINTER TO IClass      ;
  20.   ObjectPtr        = POINTER TO Object      ;
  21.   _ObjectPtr        = POINTER TO _Object      ;
  22.   gpHitTestPtr        = POINTER TO gpHitTest      ;
  23.   gpRenderPtr        = POINTER TO gpRender      ;
  24.   gpInputPtr        = POINTER TO gpInput      ;
  25.   gpGoInactivePtr    = POINTER TO gpGoInactive ;
  26.   gpLayoutPtr        = POINTER TO gpLayout     ;
  27.   impFrameBoxPtr    = POINTER TO impFrameBox  ;
  28.   impDrawPtr        = POINTER TO impDraw      ;
  29.   impErasePtr         = POINTER TO impErase     ;
  30.   impHitTestPtr        = POINTER TO impHitTest   ;
  31.  
  32. (* User visible handles on objects, classes, messages *)
  33.  
  34.   Object  = LONGINT ;        (* abstract handle *)
  35.  
  36.   ClassID = STRING ;
  37.  
  38. (* you can use this type to point to a "generic" message,    *)
  39. (* in the object-oriented programming parlance.  Based on    *)
  40. (* the value of 'MethodID', you dispatch to processing        *)
  41. (* for the various message types.  The meaningful parameter    *)
  42. (* packet structure definitions are defined below.        *)
  43.  
  44.   Msg = POINTER TO RECORD
  45.           MethodID : LONGINT (* method-specific data follows *)
  46.                       (* some examples below         *)
  47.         END ;
  48.  
  49. (* Class id strings for Intuition classes.            *)
  50. (* There's no real reason to use the uppercase constants    *)
  51. (* over the lowercase strings, but this makes a good place    *)
  52. (* to list the names of the built-in classes.            *)
  53.  
  54. CONST
  55.   ROOTCLASS    = "rootclass"     ;
  56.   IMAGECLASS    = "imageclass"    ;
  57.   FRAMEICLASS    = "frameiclass"   ;
  58.   SYSICLASS    = "sysiclass"     ;
  59.   FILLRECTCLASS    = "fillrectclass" ;
  60.   GADGETCLASS    = "gadgetclass"   ;
  61.   PROPGCLASS    = "propgclass"    ;
  62.   STRGCLASS    = "strgclass"     ;
  63.   BUTTONGCLASS    = "buttongclass"  ;
  64.   FRBUTTONCLASS    = "frbuttonclass" ;
  65.   GROUPGCLASS    = "groupgclass"   ;
  66.   ICCLASS    = "icclass"       ;
  67.   MODELCLASS    = "modelclass"    ;
  68.   ITEXTICLASS    = "itexticlass"      ;
  69.   POINTERCLASS    = "pointerclass"  ;
  70.  
  71. (* Dispatched method ID's                        *)
  72. (* NOTE: Applications should use Intuition entry points, not direct    *)
  73. (* DoMethod() calls, for NewObject, DisposeObject, SetAttrs,        *)
  74. (* SetGadgetAttrs, and GetAttr.                        *)
  75.  
  76.   OM_Dummy    = 0100H ;
  77.   OM_NEW    = 0101H ;    (* 'object' parameter is "true class"    *)
  78.   OM_DISPOSE    = 0102H ;    (* delete self (no parameters)        *)
  79.   OM_SET    = 0103H ;    (* set attributes (in tag list)        *)
  80.   OM_GET    = 0104H ;    (* return single attribute value    *)
  81.   OM_ADDTAIL    = 0105H ;    (* add self to a List (let root do it)    *)
  82.   OM_REMOVE    = 0106H ;    (* remove self from list        *)
  83.   OM_NOTIFY    = 0107H ;    (* send to self: notify dependents    *)
  84.   OM_UPDATE    = 0108H ;    (* notification message from somebody    *)
  85.   OM_ADDMEMBER    = 0109H ;    (* used by various classes with lists    *)
  86.   OM_REMMEMBER    = 010AH ;    (* used by various classes with lists    *)
  87.  
  88. (* Parameter "Messages" passed to methods *)
  89.  
  90. (* OM_NEW and OM_SET *)
  91.  
  92. TYPE
  93.   opSet = RECORD
  94.     MethodID     : LONGINT ;
  95.     ops_AttrList : TagItemPtr ;      (* new attributes            *)
  96.     ops_GInfo     : GadgetInfoPtr ;(* always there for gadgets,        *)
  97.                   (* when SetGadgetAttrs() is used,    *)
  98.                   (* but will be NULL for OM_NEW    *)
  99.   END ;
  100.  
  101. (* OM_NOTIFY, and OM_UPDATE *)
  102.   opUpdate = RECORD
  103.     MethodID     : LONGINT ;
  104.     opu_AttrList : TagItemPtr ;    (* new attributes *)
  105.     opu_GInfo    : GadgetInfoPtr ;
  106.                     (* non-NULL when SetGadgetAttrs or    *)
  107.                 (* notification resulting from gadget    *)
  108.                 (* input occurs.            *)
  109.  
  110.     opu_Flags     : LONGINT ;    (* defined below *)
  111.   END ;
  112.  
  113. (* this flag means that the update message is being issued from        *)
  114. (* something like an active gadget, a la GACT_FOLLOWMOUSE.  When    *)
  115. (* the gadget goes inactive, it will issue a final update        *)
  116. (* message with this bit cleared.  Examples of use are for        *)
  117. (* GACT_FOLLOWMOUSE equivalents for propgadclass, and repeat strobes    *)
  118. (* for buttons.                                *)
  119.  
  120. CONST
  121.   OPUF_INTERIM    = {0} ;
  122.  
  123. (* OM_GET *)
  124.  
  125. TYPE
  126.   opGet = RECORD
  127.     MethodID    : LONGINT ;
  128.     opg_AttrID  : LONGINT ;
  129.     opg_Storage : ADDRESS ;
  130.     (* may be other types, but "int" types are all ULONG *)
  131.   END ;
  132.  
  133. (* OM_ADDTAIL    *)
  134.  
  135.   opAddTail = RECORD
  136.     MethodID  : LONGINT ;
  137.     opat_List : ListPtr ;
  138.   END ;
  139.  
  140. (* OM_ADDMEMBER, OM_REMMEMBER    *)
  141.  
  142.   opMember = RECORD
  143.     MethodID    : LONGINT ;
  144.     opam_Object : ObjectPtr ;
  145.   END ;
  146.  
  147.   opAddMember = opMember ;
  148.  
  149. (* "White box" access to struct IClass *)
  150.  
  151. (* This structure is READ-ONLY, and allocated only by Intuition *)
  152. TYPE
  153.   IClass = RECORD
  154.     cl_Dispatcher    : Hook ;
  155.     cl_Reserved        : LONGINT ; (* must be 0 *)
  156.     cl_Super        : IClassPtr ;
  157.     cl_ID        : STRING ;
  158.     cl_InstOffset    : CARDINAL ;(* where within an object is the instance *)
  159.                         (* data for this class?              *)
  160.     cl_InstSize        : CARDINAL ;
  161.     cl_UserData        : LONGINT ; (* per-class data of your choice          *)
  162.     cl_SubclassCount    : LONGINT ; (* how many direct subclasses?          *)
  163.     cl_ObjectCount    : LONGINT ; (* how many objects created of this class?*)
  164.     cl_Flags        : LONGSET ;
  165.   END ;
  166.  
  167.   Class = IClass ;
  168.   ClassPtr = IClassPtr ;
  169.  
  170. CONST
  171.   CLF_INLIST = 000000001H ; (* class is in public class list *)
  172.  
  173. TYPE
  174.   _Object = RECORD
  175.     o_Node  : MinNode ;
  176.     o_Class : IClassPtr
  177.   END ;
  178.  
  179. CONST
  180. (* these are the display modes for which we have corresponding parameter *)
  181. (*  settings in the config arrays                     *)
  182.  
  183.   DMODECOUNT        = 00002H ;    (* how many modes there are *)
  184.   HIRESPICK        = 00000H ;
  185.   LOWRESPICK        = 00001H ;
  186.  
  187.   EVENTMAX        = 10 ;        (* size of event array        *)
  188.  
  189. (* these are the system Gadget defines *)
  190.   RESCOUNT        = 2 ;
  191.   HIRESGADGET        = 0 ;
  192.   LOWRESGADGET        = 1 ;
  193.   GADGETCOUNT        = 8 ;
  194.   UPFRONTGADGET        = 0 ;
  195.   DOWNBACKGADGET    = 1 ;
  196.   SIZEGADGET        = 2 ;
  197.   CLOSEGADGET        = 3 ;
  198.   DRAGGADGET        = 4 ;
  199.   SUPFRONTGADGET    = 5 ;
  200.   SDOWNBACKGADGET    = 6 ;
  201.   SDRAGGADGET        = 7 ;
  202.  
  203. (*=====  Custom and 'boopsi' gadget class interface =======*)
  204.  
  205. (* Gadget Class attributes *)
  206. CONST
  207.   GA_Dummy        = TAG_USER+030000H ;
  208.   GA_Left        = GA_Dummy+00001H ;
  209.   GA_RelRight        = GA_Dummy+00002H ;
  210.   GA_Top        = GA_Dummy+00003H ;
  211.   GA_RelBottom        = GA_Dummy+00004H ;
  212.   GA_Width        = GA_Dummy+00005H ;
  213.   GA_RelWidth        = GA_Dummy+00006H ;
  214.   GA_Height        = GA_Dummy+00007H ;
  215.   GA_RelHeight        = GA_Dummy+00008H ;
  216.   GA_Text        = GA_Dummy+00009H ;
  217.   GA_Image        = GA_Dummy+0000AH ;
  218.   GA_Border        = GA_Dummy+0000BH ;
  219.   GA_SelectRender    = GA_Dummy+0000CH ;
  220.   GA_Highlight        = GA_Dummy+0000DH ;
  221.   GA_Disabled        = GA_Dummy+0000EH ;
  222.   GA_GZZGadget        = GA_Dummy+0000FH ;
  223.   GA_ID            = GA_Dummy+00010H ;
  224.   GA_UserData        = GA_Dummy+00011H ;
  225.   GA_SpecialInfo    = GA_Dummy+00012H ;
  226.   GA_Selected        = GA_Dummy+00013H ;
  227.   GA_EndGadget        = GA_Dummy+00014H ;
  228.   GA_Immediate        = GA_Dummy+00015H ;
  229.   GA_RelVerify        = GA_Dummy+00016H ;
  230.   GA_FollowMouse    = GA_Dummy+00017H ;
  231.   GA_RightBorder    = GA_Dummy+00018H ;
  232.   GA_LeftBorder        = GA_Dummy+00019H ;
  233.   GA_TopBorder        = GA_Dummy+0001AH ;
  234.   GA_BottomBorder    = GA_Dummy+0001BH ;
  235.   GA_ToggleSelect    = GA_Dummy+0001CH ;
  236.  
  237.    (* internal use only, until further notice, please *)
  238.  
  239.   GA_SysGadget    = GA_Dummy+0001DH ; (* bool, sets GTYP_SYSGADGET field in type*)
  240.  
  241.   GA_SysGType        = GA_Dummy+0001EH ; (* e.g., GTYP_WUPFRONT, ...    *)
  242.  
  243.   GA_Previous        = GA_Dummy+0001FH ; (* previous gadget (or          *)
  244.                         (* (struct Gadget ** )) in linked *)
  245.                         (* list NOTE: This attribute      *)
  246.                         (* CANNOT be used to link new     *)
  247.                         (* gadgets into the gadget list of*)
  248.                         (* an open window or requester.   *)
  249.                         (* You must use AddGList().          *)
  250.  
  251.   GA_Next        = GA_Dummy+00020H ; (* not implemented              *)
  252.  
  253.   GA_DrawInfo        = GA_Dummy+00021H ; (* some fancy gadgets need to see *)
  254.                           (* a DrawInfo when created or for *)
  255.                           (* layout                  *)
  256.  
  257. (* You should use at most ONE of GA_Text, GA_IntuiText, and GA_LabelImage     *)
  258.  
  259.   GA_IntuiText        = GA_Dummy+00022H ; (* ti_Data is (IntuiTextPtr)      *)
  260.  
  261.   GA_LabelImage        = GA_Dummy+00023H ; (* ti_Data is an image (object),  *)
  262.                          (* used in place of GadgetText    *)
  263.  
  264.   GA_TabCycle        = GA_Dummy+00024H ; (* New for V37: Boolean indicates *)
  265.                          (* that this gadget is to          *)
  266.                          (* participate in cycling         *)
  267.                          (* activation with Tab or         *)
  268.                          (* Shift-Tab.              *)
  269.  
  270.   GA_GadgetHelp        = GA_Dummy+00025H ; (* New for V39: Boolean indicates *)
  271.                          (* that this gadget sends          *)
  272.                          (* gadget-help              *)
  273.  
  274.   GA_Bounds        = GA_Dummy+00026H ; (* New for V39: ti_Data is a      *)
  275.                          (* pointer to an IBox structure   *)
  276.                          (* which is to be copied into the *)
  277.                          (* extended gadget's bounds.      *)
  278.  
  279.   GA_RelSpecial        = GA_Dummy+00027H ; (* New for V39: Boolean indicates *)
  280.                          (* that this gadget has the          *)
  281.                          (* "special relativity" property, *)
  282.                          (* which is useful for certain    *)
  283.                          (* fancy relativity operations    *)
  284.                          (* through the GM_LAYOUT method.  *)
  285. (* PROPGCLASS attributes *)
  286.  
  287.   PGA_Dummy    = TAG_USER+031000H ;
  288.   PGA_Freedom    = PGA_Dummy+00001H ;
  289.  
  290. (* only one of FREEVERT or FREEHORIZ *)
  291.  
  292.   PGA_Borderless= PGA_Dummy+00002H ;
  293.   PGA_HorizPot    = PGA_Dummy+00003H ;
  294.   PGA_HorizBody    = PGA_Dummy+00004H ;
  295.   PGA_VertPot    = PGA_Dummy+00005H ;
  296.   PGA_VertBody    = PGA_Dummy+00006H ;
  297.   PGA_Total    = PGA_Dummy+00007H ;
  298.   PGA_Visible    = PGA_Dummy+00008H ;
  299.   PGA_Top    = PGA_Dummy+00009H ;
  300.  
  301. (* New for V37: *)
  302.  
  303.   PGA_NewLook    = PGA_Dummy+0000AH ;
  304.  
  305. (* STRGCLASS attributes    *)
  306.  
  307.   STRINGA_Dummy        = TAG_USER+032000H ;
  308.   STRINGA_MaxChars    = STRINGA_Dummy+00001H ;
  309.  
  310. (* Note:  There is a minor problem with Intuition when using boopsi integer  *)
  311. (* gadgets (which are requested by using STRINGA_LongInt).  Such gadgets     *)
  312. (* must not have a STRINGA_MaxChars to be bigger than 15.  Setting         *)
  313. (* STRINGA_MaxChars for a boopsi integer gadget will cause a mismatched         *)
  314. (* FreeMem() to occur.                                 *)
  315.  
  316.   STRINGA_Buffer    = STRINGA_Dummy+00002H ;
  317.   STRINGA_UndoBuffer    = STRINGA_Dummy+00003H ;
  318.   STRINGA_WorkBuffer    = STRINGA_Dummy+00004H ;
  319.   STRINGA_BufferPos    = STRINGA_Dummy+00005H ;
  320.   STRINGA_DispPos    = STRINGA_Dummy+00006H ;
  321.   STRINGA_AltKeyMap    = STRINGA_Dummy+00007H ;
  322.   STRINGA_Font        = STRINGA_Dummy+00008H ;
  323.   STRINGA_Pens        = STRINGA_Dummy+00009H ;
  324.   STRINGA_ActivePens    = STRINGA_Dummy+0000AH ;
  325.   STRINGA_EditHook    = STRINGA_Dummy+0000BH ;
  326.   STRINGA_EditModes    = STRINGA_Dummy+0000CH ;
  327.  
  328. (* booleans *)
  329.   STRINGA_ReplaceMode    = STRINGA_Dummy+0000DH ;
  330.   STRINGA_FixedFieldMode= STRINGA_Dummy+0000EH ;
  331.   STRINGA_NoFilterMode    = STRINGA_Dummy+0000FH ;
  332.  
  333.   STRINGA_Justification    = STRINGA_Dummy+00010H ;
  334. (* GACT_STRINGCENTER, GACT_STRINGLEFT, GACT_STRINGRIGHT *)
  335.  
  336.   STRINGA_LongVal    = STRINGA_Dummy+00011H ;
  337.   STRINGA_TextVal    = STRINGA_Dummy+00012H ;
  338.  
  339.   STRINGA_ExitHelp    = STRINGA_Dummy+00013H ;
  340. (* STRINGA_ExitHelp is new for V37, and ignored by V36.      *)
  341. (* Set this if you want the gadget to exit when Help is pressed. *)
  342. (* Look for a code of 05FH, the rawkey code for Help          *)
  343.  
  344.   SG_DEFAULTMAXCHARS    = 128 ;
  345.  
  346. (* Gadget Layout related attributes *)
  347.  
  348.   LAYOUTA_Dummy        = TAG_USER+038000H ;
  349.   LAYOUTA_LayoutObj    = LAYOUTA_Dummy+00001H ;
  350.   LAYOUTA_Spacing    = LAYOUTA_Dummy+00002H ;
  351.   LAYOUTA_Orientation    = LAYOUTA_Dummy+00003H ;
  352.  
  353. (* orientation values *)
  354.  
  355.   LORIENT_NONE    = 0 ;
  356.   LORIENT_HORIZ    = 1 ;
  357.   LORIENT_VERT    = 2 ;
  358.  
  359. (* Gadget Method ID's *)
  360.  
  361.   GM_Dummy    = -1 ;    (* not used for anything             *)
  362.   GM_HITTEST    = 0  ;  (* return GMR_GADGETHIT if you are clicked on    *)
  363.             (* (whether or not you are disabled).         *)
  364.  
  365.   GM_RENDER    = 1 ;    (* draw yourself, in the appropriate state     *)
  366.   GM_GOACTIVE    = 2 ;    (* you are now going to be fed input         *)
  367.   GM_HANDLEINPUT= 3 ;    (* handle that input                 *)
  368.   GM_GOINACTIVE    = 4 ;    (* whether or not by choice, you are done      *)
  369.   GM_HELPTEST    = 5 ;    (* Will you send gadget help if the mouse is     *)
  370.             (* at the specified coordinates?  See below     *)
  371.             (* for possible GMR_ values.             *)
  372.  
  373.  GM_LAYOUT    = 6 ;    (* re-evaluate your size based on the GadgetInfo *)
  374.             (* Domain.  Do NOT re-render yourself yet, you   *)
  375.             (* will be called when it is time...         *)
  376.  
  377. (* Parameter "Messages" passed to gadget class methods            *)
  378.  
  379. (* GM_HITTEST and GM_HELPTEST send this message.            *)
  380. (* For GM_HITTEST, gpht_Mouse are coordinates relative to the gadget    *)
  381. (* select box.    For GM_HELPTEST, the coordinates are relative to    *)
  382. (* the gadget bounding box (which defaults to the select box).        *)
  383.  
  384. TYPE
  385.   gpHitTest = RECORD
  386.     MethodID    : LONGINT ;
  387.     gpht_GInfo    : GadgetInfoPtr ;
  388.     gpht_Mouse    : RECORD X, Y : INTEGER END ;
  389.   END ;
  390.  
  391. (* For GM_HITTEST, return GMR_GADGETHIT if you were indeed hit,            *)
  392. (* otherwise return zero.                            *)
  393. (*                                        *)
  394. (* For GM_HELPTEST, return GMR_NOHELPHIT (zero) if you were not hit.        *)
  395. (* Typically, return GMR_HELPHIT if you were hit.                *)
  396. (* It is possible to pass a UWORD to the application via the Code field     *)
  397. (* of the IDCMP_GADGETHELP message.  Return GMR_HELPCODE or'd with        *)
  398. (* the UWORD-sized result you wish to return.                    *)
  399. (*                                        *)
  400. (* GMR_HELPHIT yields a Code value of ((UWORD) ~0), which should        *)
  401. (* mean "nothing particular" to the application.                *)
  402.  
  403. CONST
  404.   GMR_GADGETHIT    = 000000004H ;    (* GM_HITTEST hit                *)
  405.  
  406.   GMR_NOHELPHIT    = 000000000H ;    (* GM_HELPTEST didn't hit            *)
  407.   GMR_HELPHIT    = 0FFFFFFFFH ;    (* GM_HELPTEST hit, return code = ~0        *)
  408.   GMR_HELPCODE    = 000010000H ;    (* GM_HELPTEST hit, return low word as code *)
  409.  
  410. (* GM_RENDER *)
  411.  
  412. TYPE
  413.   gpRender = RECORD
  414.     MethodID   : LONGINT ;
  415.     gpr_GInfo  : GadgetInfoPtr ; (* gadget context        *)
  416.     gpr_RPort  : RastPortPtr ;     (* all ready for use        *)
  417.     gpr_Redraw : LONGINT ;     (* might be a "highlight pass"    *)
  418.   END ;
  419.  
  420. (* values of gpr_Redraw    *)
  421.  
  422. CONST
  423.   GREDRAW_UPDATE = 2 ;    (* incremental update, e.g. prop slider    *)
  424.   GREDRAW_REDRAW = 1 ;    (* redraw gadget            *)
  425.   GREDRAW_TOGGLE = 0 ;    (* toggle highlight, if applicable    *)
  426.  
  427. (* GM_GOACTIVE, GM_HANDLEINPUT *)
  428. TYPE
  429.   gpInput = RECORD
  430.     MethodID        : LONGINT ;
  431.     gpi_GInfo        : GadgetInfoPtr ;
  432.     gpi_IEvent        : InputEventPtr ;
  433.     gpi_Termination    : LONGINT ;
  434.     gpi_Mouse        : RECORD X, Y : INTEGER END ;
  435.  
  436.     (* (V39) Pointer to TabletData structure, if this event originated   *)
  437.     (* from a tablet which sends IESUBCLASS_NEWTABLET events, or NULL if *)
  438.     (* not.                                 *)
  439.     (*                                     *)
  440.     (* DO NOT ATTEMPT TO READ THIS FIELD UNDER INTUITION PRIOR TO V39!     *)
  441.     (* IT WILL BE INVALID!                         *)
  442.  
  443.     gpi_TabletData    : TabletDataPtr ;
  444.   END ;
  445.  
  446. (* GM_HANDLEINPUT and GM_GOACTIVE  return code flags            *)
  447. (* return GMR_MEACTIVE (0) alone if you want more input.        *)
  448. (* Otherwise, return ONE of GMR_NOREUSE and GMR_REUSE, and optionally    *)
  449. (* GMR_VERIFY.     (M2: eg GMR_NOREUSE+GMR_VERIFY )            *)
  450.  
  451. CONST
  452.  GMR_MEACTIVE    = LONGINT({ }) ;
  453.  GMR_NOREUSE    = LONGINT({1}) ;
  454.  GMR_REUSE    = LONGINT({2}) ;
  455.  GMR_VERIFY    = LONGINT({3}) ; (* you MUST set gpi_Termination *)
  456.  
  457. (* New for V37:                                 *)
  458. (* You can end activation with one of GMR_NEXTACTIVE and GMR_PREVACTIVE, *)
  459. (* which instructs Intuition to activate the next or previous gadget     *)
  460. (* that has GFLG_TABCYCLE set.                         *)
  461.  
  462.  
  463.  GMR_NEXTACTIVE    = {4} ;
  464.  GMR_PREVACTIVE    = {5} ;
  465.  
  466. (* GM_GOINACTIVE *)
  467.  
  468. TYPE
  469.   gpGoInactive = RECORD
  470.     MethodID   : LONGINT ;
  471.     gpgi_GInfo : GadgetInfoPtr ;
  472.  
  473.     (* V37 field only!    DO NOT attempt to read under V36! *)
  474.     gpgi_Abort : LONGINT ; (* gpgi_Abort=1 if gadget was aborted  *)
  475.                (* by Intuition and 0 if gadget went   *)
  476.                (* inactive at its own request      *)
  477.   END ;
  478.  
  479. (* New for V39: Intuition sends GM_LAYOUT to any GREL_ gadget when    *)
  480. (* the gadget is added to the window (or when the window opens, if    *)
  481. (* the gadget was part of the NewWindow.FirstGadget or the WA_Gadgets    *)
  482. (* list), or when the window is resized.  Your gadget can set the    *)
  483. (* GA_RelSpecial property to get GM_LAYOUT events without Intuition    *)
  484. (* changing the interpretation of your gadget select box.  This        *)
  485. (* allows for completely arbitrary resizing/repositioning based on    *)
  486. (* window size.                                *)
  487.  
  488. (* GM_LAYOUT *)
  489.  
  490.   gpLayout = RECORD
  491.     MethodID    : LONGINT ;
  492.     gpl_GInfo   : GadgetInfoPtr ;
  493.     gpl_Initial : LONGINT ;    (* non-zero if this method was invoked      *)
  494.                 (* during AddGList() or OpenWindow()      *)
  495.                 (* time.  zero if this method was invoked *)
  496.                 (* during window resizing.          *)
  497.   END ;
  498.  
  499. (*=======  Gadget/object interconnection classes ========*)
  500.  
  501. CONST
  502.   ICM_Dummy    = 00401H ; (* used for nothing            *)
  503.   ICM_SETLOOP    = 00402H ; (* set/increment loop counter    *)
  504.   ICM_CLEARLOOP    = 00403H ; (* clear/decrement loop counter    *)
  505.   ICM_CHECKLOOP    = 00404H ; (* set/increment loop        *)
  506.  
  507. (* no parameters for ICM_SETLOOP, ICM_CLEARLOOP, ICM_CHECKLOOP    *)
  508.  
  509. (* interconnection attributes used by icclass, modelclass, and gadgetclass *)
  510.  
  511.   ICA_Dummy     = TAG_USER+040000H ;
  512.   ICA_TARGET     = ICA_Dummy+1 ; (* interconnection target        *)
  513.   ICA_MAP     = ICA_Dummy+2 ; (* interconnection map tagitem list    *)
  514.   ICSPECIAL_CODE = ICA_Dummy+3 ; (* a "pseudo-attribute", see below.    *)
  515.  
  516. (* Normally, the value for ICA_TARGET is some object pointer,              *)
  517. (* but if you specify the special value ICTARGET_IDCMP, notification          *)
  518. (* will be send as an IDCMP_IDCMPUPDATE message to the appropriate window's   *)
  519. (* IDCMP port.    See the definition of IDCMP_IDCMPUPDATE.              *)
  520. (*                                          *)
  521. (* When you specify ICTARGET_IDCMP for ICA_TARGET, the map you              *)
  522. (* specify will be applied to derive the attribute list that is              *)
  523. (* sent with the IDCMP_IDCMPUPDATE message.  If you specify a map list          *)
  524. (* which results in the attribute tag id ICSPECIAL_CODE, the              *)
  525. (* lower sixteen bits of the corresponding ti_Data value will              *)
  526. (* be copied into the Code field of the IDCMP_IDCMPUPDATE IntuiMessage.          *)
  527.  
  528.   ICTARGET_IDCMP = LONGSET(-1) ;
  529.  
  530. (*=====  Definitions for the image classes ========*)
  531.  
  532. CONST
  533.   CUSTOMIMAGEDEPTH = -1 ; (* if image.Depth is this,       *)
  534.                 (* it's a new Image class object *)
  535.  
  536. (* some convenient macros and casts *)
  537.  
  538. CONST
  539.   IA_Dummy    = TAG_USER+020000H ;
  540.   IA_Left    = IA_Dummy+001H ;
  541.   IA_Top    = IA_Dummy+002H ;
  542.   IA_Width    = IA_Dummy+003H ;
  543.   IA_Height    = IA_Dummy+004H ;
  544.   IA_FGPen    = IA_Dummy+005H ; (* IA_FGPen also means "PlanePick"          *)
  545.   IA_BGPen    = IA_Dummy+006H ; (* IA_BGPen also means "PlaneOnOff"          *)
  546.   IA_Data    = IA_Dummy+007H ; (* bitplanes, for classic image, other image*)
  547.                     (* classes may use it for other things      *)
  548.  
  549.   IA_LineWidth    = IA_Dummy+008H ;
  550.   IA_Pens    = IA_Dummy+00EH ;
  551.                   (* pointer to UWORD pens[], ala DrawInfo.Pens,*)
  552.                   (* MUST be terminated by ~0.  Some classes can*)
  553.                   (* choose to have this, or SYSIA_DrawInfo, or *)
  554.                   (* both.                      *)
  555.  
  556.   IA_Resolution    = IA_Dummy+00FH ;(* packed uwords for x/y resolution into a   *)
  557.                    (* longword ala DrawInfo.Resolution          *)
  558.  
  559. (*=== see class documentation to learn which    ====*)
  560. (*=== classes recognize these            ====*)
  561.  
  562.   IA_APattern    = IA_Dummy+010H ;
  563.   IA_APatSize    = IA_Dummy+011H ;
  564.   IA_Mode    = IA_Dummy+012H ;
  565.   IA_Font    = IA_Dummy+013H ;
  566.   IA_Outline    = IA_Dummy+014H ;
  567.   IA_Recessed    = IA_Dummy+015H ;
  568.  
  569.   IA_DoubleEmboss = IA_Dummy+016H ;
  570.   IA_EdgesOnly      = IA_Dummy+017H ;
  571.  
  572. (*=== "sysiclass" attributes ====*)
  573.  
  574.   SYSIA_Size     = IA_Dummy+00BH ; (*  constants's below              *)
  575.   SYSIA_Depth     = IA_Dummy+00CH ; (* this is unused by Intuition.          *)
  576.                      (* SYSIA_DrawInfo is used instead for V36  *)
  577.  
  578.   SYSIA_Which     = IA_Dummy+00DH ; (* see  constants's below              *)
  579.   SYSIA_DrawInfo = IA_Dummy+018H ; (* pass to sysiclass, please              *)
  580.  
  581. (*==== obsolete: don't use these, use IA_Pens ====*)
  582.  
  583.   SYSIA_Pens      = IA_Pens ;
  584.   IA_ShadowPen      = IA_Dummy+009H ;
  585.   IA_HighlightPen = IA_Dummy+00AH ;
  586.  
  587. (* New for V39: *)
  588.  
  589.   SYSIA_ReferenceFont = IA_Dummy+019H ; (* Font to use as reference for       *)
  590.                       (* scaling certain sysiclass images   *)
  591.  
  592.  
  593.   IA_SupportsDisable  = IA_Dummy+01AH ; (* By default, Intuition ghosts          *)
  594.                       (* gadgets itself, instead of relying *)
  595.                       (* on IDS_DISABLED or              *)
  596.                       (* IDS_SELECTEDDISABLED.          *)
  597.                       (* An imageclass that supports these  *)
  598.                       (* states should return this attribute*)
  599.                       (* as TRUE.  You cannot set or clear  *)
  600.                       (* this attribute, however.          *)
  601.  
  602.   IA_FrameType          = IA_Dummy+01BH ; (* Starting with V39, FrameIClass     *)
  603.                       (* recognizes several standard types  *)
  604.                       (* of frame.  Use one of the FRAME_   *)
  605.                       (* specifiers below. Defaults to      *)
  606.                       (* FRAME_DEFAULT.              *)
  607.  
  608. (* next attribute: (IA_Dummy + 01CH) *)
  609.  
  610. (* data values for SYSIA_Size    *)
  611. CONST
  612.   SYSISIZE_MEDRES = 0 ;
  613.   SYSISIZE_LOWRES = 1 ;
  614.   SYSISIZE_HIRES  = 2 ;
  615.  
  616. (* SYSIA_Which tag data values:                *)
  617. (* Specifies which system gadget you want an image for. *)
  618. (* Some numbers correspond to internal Intuition s    *)
  619.  
  620.   DEPTHIMAGE    = 000H ; (* Window depth gadget image           *)
  621.   ZOOMIMAGE    = 001H ; (* Window zoom gadget image           *)
  622.   SIZEIMAGE    = 002H ; (* Window sizing gadget image           *)
  623.   CLOSEIMAGE    = 003H ; (* Window close gadget image           *)
  624.   SDEPTHIMAGE    = 005H ; (* Screen depth gadget image           *)
  625.   LEFTIMAGE    = 00AH ; (* Left-arrow gadget image           *)
  626.   UPIMAGE    = 00BH ; (* Up-arrow gadget image           *)
  627.   RIGHTIMAGE    = 00CH ; (* Right-arrow gadget image           *)
  628.   DOWNIMAGE    = 00DH ; (* Down-arrow gadget image           *)
  629.   CHECKIMAGE    = 00EH ; (* GadTools checkbox image           *)
  630.   MXIMAGE    = 00FH ; (* GadTools mutual exclude "button" image *)
  631.  
  632. (* New for V39: *)
  633.  
  634.   MENUCHECK    = 010H ; (* Menu checkmark image *)
  635.   AMIGAKEY    = 011H ; (* Menu Amiga-key image *)
  636.  
  637. (* Data values for IA_FrameType (recognized by FrameIClass)        *)
  638. (*                                    *)
  639. (* FRAME_DEFAULT:  The standard V37-type frame, which has        *)
  640. (*    thin edges.                            *)
  641. (* FRAME_BUTTON:  Standard button gadget frames, having thicker        *)
  642. (*    sides and nicely edged corners.                    *)
  643. (* FRAME_RIDGE:  A ridge such as used by standard string gadgets.    *)
  644. (*    You can recess the ridge to get a groove image.            *)
  645. (* FRAME_ICONDROPBOX: A broad ridge which is the standard imagery    *)
  646. (*    for areas in AppWindows where icons may be dropped.        *)
  647.  
  648.   FRAME_DEFAULT        = 0 ;
  649.   FRAME_BUTTON        = 1 ;
  650.   FRAME_RIDGE        = 2 ;
  651.   FRAME_ICONDROPBOX = 3 ;
  652.  
  653. (* image message id's    *)
  654.  
  655.   IM_DRAW    = 0202H ; (* draw yourself, with "state"       *)
  656.   IM_HITTEST    = 0203H ; (* return TRUE if click hits image       *)
  657.   IM_ERASE    = 0204H ; (* erase yourself               *)
  658.   IM_MOVE    = 0205H ; (* draw new and erase old, smoothly       *)
  659.   IM_DRAWFRAME    = 0206H ; (* draw with specified dimensions       *)
  660.   IM_FRAMEBOX    = 0207H ; (* get recommended frame around some box *)
  661.   IM_HITFRAME    = 0208H ; (* hittest with dimensions           *)
  662.   IM_ERASEFRAME    = 0209H ; (* hittest with dimensions           *)
  663.  
  664. (* image draw states or styles, for IM_DRAW           *)
  665. (* Note that they have no bitwise meanings (unfortunately) *)
  666.  
  667.   IDS_NORMAL        = 0 ;
  668.   IDS_SELECTED        = 1 ;    (* for selected gadgets            *)
  669.   IDS_DISABLED        = 2 ;    (* for disabled gadgets            *)
  670.   IDS_BUSY        = 3 ;    (* for future functionality        *)
  671.   IDS_INDETERMINATE    = 4 ;    (* for future functionality        *)
  672.   IDS_INACTIVENORMAL    = 5 ;    (* normal, in inactive window border    *)
  673.   IDS_INACTIVESELECTED    = 6 ;    (* selected, in inactive border     *)
  674.   IDS_INACTIVEDISABLED    = 7 ;    (* disabled, in inactive border     *)
  675.   IDS_SELECTEDDISABLED  = 8 ;    (* disabled and selected            *)
  676.  
  677. (* oops, please forgive spelling error by jimm *)
  678.   IDS_INDETERMINANT = IDS_INDETERMINATE ;
  679.  
  680. (* IM_FRAMEBOX    *)
  681. TYPE
  682.   impFrameBox = RECORD
  683.     MethodID        : LONGINT ;
  684.     imp_ContentsBox : IBoxPtr ;        (* input: relative box of contents *)
  685.     imp_FrameBox    : IBoxPtr ;        (* output: rel. box of encl frame  *)
  686.     imp_DrInfo        : DrawInfoPtr ; (* NB: May be NULL               *)
  687.     imp_FrameFlags  : LONGSET ;
  688.   END ;
  689.  
  690. CONST
  691.   FRAMEF_SPECIFY = {0} ; (* Make do with the dimensions of FrameBox provided.*)
  692.  
  693. (* IM_DRAW, IM_DRAWFRAME *)
  694.  
  695. TYPE
  696.   impDraw = RECORD
  697.     MethodID   : LONGINT ;
  698.     imp_RPort  : RastPortPtr ;
  699.     imp_Offset : RECORD X, Y : INTEGER END ;
  700.     imp_State  : LONGINT ;
  701.     imp_DrInfo : DrawInfoPtr ;    (* NB: May be NULL *)
  702.  
  703.     (* these parameters only valid for IM_DRAWFRAME *)
  704.     imp_Dimensions : RECORD Width, Height : INTEGER END ;
  705.   END ;
  706.  
  707. (* IM_ERASE, IM_ERASEFRAME         *)
  708. (* NOTE: This is a subset of impDraw *)
  709.  
  710.   impErase = RECORD
  711.     MethodID   : LONGINT ;
  712.     imp_RPort  : RastPortPtr ;
  713.     imp_Offset : RECORD X, Y : INTEGER END ;
  714.  
  715.     (* these parameters only valid for IM_ERASEFRAME *)
  716.     imp_Dimensions : RECORD Width, Height : INTEGER END ;
  717.   END ;
  718.  
  719. (* IM_HITTEST, IM_HITFRAME *)
  720.  
  721.   impHitTest = RECORD
  722.     MethodID   : LONGINT ;
  723.     imp_Point  : RECORD X, Y : INTEGER END ;
  724.  
  725.     (* these parameters only valid for IM_HITFRAME *)
  726.     imp_Dimensions : RECORD Width, Height : INTEGER END ;
  727.   END ;
  728.  
  729. (*====== 'boopsi' pointer class interface ========*)
  730.  
  731. (* The following tags are recognized at NewObject() time by        *)
  732. (* pointerclass:                            *)
  733. (*                                    *)
  734. (* POINTERA_BitMap (BitMapPtr ) - Pointer to bitmap to            *)
  735. (*    get pointer imagery from.  Bitplane data need not be        *)
  736. (*    in chip RAM.                            *)
  737. (* POINTERA_XOffset (LONG) - X-offset of the pointer hotspot.        *)
  738. (* POINTERA_YOffset (LONG) - Y-offset of the pointer hotspot.        *)
  739. (* POINTERA_WordWidth (ULONG) - designed width of the pointer in words    *)
  740. (* POINTERA_XResolution (ULONG) - one of the POINTERXRESN_ flags below    *)
  741. (* POINTERA_YResolution (ULONG) - one of the POINTERYRESN_ flags below    *)
  742.  
  743. CONST
  744.   POINTERA_Dummy    = TAG_USER+039000H ;
  745.  
  746.   POINTERA_BitMap    = POINTERA_Dummy+001 ;
  747.   POINTERA_XOffset    = POINTERA_Dummy+002 ;
  748.   POINTERA_YOffset    = POINTERA_Dummy+003 ;
  749.   POINTERA_WordWidth    = POINTERA_Dummy+004 ;
  750.   POINTERA_XResolution    = POINTERA_Dummy+005 ;
  751.   POINTERA_YResolution    = POINTERA_Dummy+006 ;
  752.  
  753. (* These are the choices for the POINTERA_XResolution attribute which    *)
  754. (* will determine what resolution pixels are used for this pointer.    *)
  755. (*                                    *)
  756. (* POINTERXRESN_DEFAULT (ECS-compatible pointer width)            *)
  757. (*    = 70 ns if SUPERHIRES-type mode, 140 ns if not            *)
  758. (*                                    *)
  759. (* POINTERXRESN_SCREENRES                        *)
  760. (*    = Same as pixel speed of screen                    *)
  761. (*                                    *)
  762. (* POINTERXRESN_LORES (pointer always in lores-like pixels)        *)
  763. (*    = 140 ns in 15kHz modes, 70 ns in 31kHz modes            *)
  764. (*                                    *)
  765. (* POINTERXRESN_HIRES (pointer always in hires-like pixels)        *)
  766. (*    = 70 ns in 15kHz modes, 35 ns in 31kHz modes            *)
  767. (*                                    *)
  768. (* POINTERXRESN_140NS (pointer always in 140 ns pixels)            *)
  769. (*    = 140 ns always                            *)
  770. (*                                    *)
  771. (* POINTERXRESN_70NS (pointer always in 70 ns pixels)            *)
  772. (*    = 70 ns always                            *)
  773. (*                                    *)
  774. (* POINTERXRESN_35NS (pointer always in 35 ns pixels)            *)
  775. (*    = 35 ns always                            *)
  776.  
  777. CONST
  778.   POINTERXRESN_DEFAULT     = 0 ;
  779.   POINTERXRESN_140NS     = 1 ;
  780.   POINTERXRESN_70NS     = 2 ;
  781.   POINTERXRESN_35NS     = 3 ;
  782.  
  783.   POINTERXRESN_SCREENRES = 4 ;
  784.   POINTERXRESN_LORES     = 5 ;
  785.   POINTERXRESN_HIRES     = 6 ;
  786.  
  787. (* These are the choices for the POINTERA_YResolution attribute which          *)
  788. (* will determine what vertical resolution is used for this pointer.          *)
  789. (*                                          *)
  790. (* POINTERYRESN_DEFAULT                                  *)
  791. (*    = In 15 kHz modes, the pointer resolution will be the same          *)
  792. (*      as a non-interlaced screen.  In 31 kHz modes, the pointer          *)
  793. (*      will be doubled vertically.  This means there will be about          *)
  794. (*      200-256 pointer lines per screen.                      *)
  795. (*                                          *)
  796. (* POINTERYRESN_HIGH                                  *)
  797. (* POINTERYRESN_HIGHASPECT                              *)
  798. (*    = Where the hardware/software supports it, the pointer resolution     *)
  799. (*      will be high.  This means there will be about 400-480 pointer          *)
  800. (*      lines per screen.  POINTERYRESN_HIGHASPECT also means that          *)
  801. (*      when the pointer comes out double-height due to hardware/software   *)
  802. (*      restrictions, its width would be doubled as well, if possible          *)
  803. (*      (to preserve aspect).                              *)
  804. (*                                          *)
  805. (* POINTERYRESN_SCREENRES                              *)
  806. (* POINTERYRESN_SCREENRESASPECT                              *)
  807. (*    = Will attempt to match the vertical resolution of the pointer          *)
  808. (*      to the screen's vertical resolution.POINTERYRESN_SCREENASPECT also  *)
  809. (*      means that when the pointer comes out double-height due to          *)
  810. (*      hardware/software restrictions, its width would be doubled as well, *)
  811. (*      if possible (to preserve aspect).                      *)
  812.  
  813. CONST
  814.   POINTERYRESN_DEFAULT        = 0 ;
  815.   POINTERYRESN_HIGH        = 2 ;
  816.   POINTERYRESN_HIGHASPECT    = 3 ;
  817.   POINTERYRESN_SCREENRES    = 4 ;
  818.   POINTERYRESN_SCREENRESASPECT    = 5 ;
  819.  
  820. (* Compatibility note:                              *)
  821. (*                                      *)
  822. (* The AA chipset supports variable sprite width and resolution, but      *)
  823. (* the setting of width and resolution is global for all sprites.      *)
  824. (* When no other sprites are in use, Intuition controls the sprite      *)
  825. (* width and sprite resolution for correctness based on pointerclass      *)
  826. (* attributes specified by the creator of the pointer.    Intuition      *)
  827. (* controls sprite resolution with the VTAG_DEFSPRITERESN_SET tag      *)
  828. (* to VideoControl().  Applications can override this on a per-viewport      *)
  829. (* basis with the VTAG_SPRITERESN_SET tag to VideoControl().          *)
  830. (*                                      *)
  831. (* If an application uses a sprite other than the pointer sprite,      *)
  832. (* Intuition will automatically regenerate the pointer sprite's image in  *)
  833. (* a compatible width.    This might involve BitMap scaling of the imagery  *)
  834. (* you supply.                                  *)
  835. (*                                      *)
  836. (* If any sprites other than the pointer sprite were obtained with the      *)
  837. (* old GetSprite() call, Intuition assumes that the owner of those      *)
  838. (* sprites is unaware of sprite resolution, hence Intuition will set the  *)
  839. (* default sprite resolution (VTAG_DEFSPRITERESN_SET) to ECS-compatible,  *)
  840. (* instead of as requested by the various pointerclass attributes.      *)
  841. (*                                      *)
  842. (* No resolution fallback occurs when applications use ExtSprites.      *)
  843. (* Such applications are expected to use VTAG_SPRITERESN_SET tag if      *)
  844. (* necessary.                                  *)
  845. (*                                      *)
  846. (* NB:    Under release V39, only sprite width compatibility is implemented.*)
  847. (* Sprite resolution compatibility was added for V40.              *)
  848.  
  849. (*------------------------------ macros --------------------------------------*)
  850.  
  851. (* add offset for instance data to an object handle *)
  852. PROCEDURE INST_DATA( cl : IClassPtr ; o : ADDRESS ) : ADDRESS ;
  853.  
  854. (* sizeof the instance data for a given class *)
  855. PROCEDURE SIZEOF_INSTANCE( cl : IClassPtr ) : LONGINT ;
  856.  
  857. (* convenient typecast    *)
  858. PROCEDURE _OBJ( o : ADDRESS ) : _ObjectPtr ;
  859.  
  860. (* get "public" handle on baseclass instance from real beginning of obj data *)
  861. PROCEDURE BASEOBJECT( _obj : ADDRESS ) : _ObjectPtr ;
  862.  
  863. (* get back to object data struct from public handle *)
  864. PROCEDURE _OBJECT( o : ADDRESS ) : _ObjectPtr ;
  865.  
  866. (* get class pointer from an object handle *)
  867. PROCEDURE OCLASS( o : ADDRESS ) : IClassPtr ;
  868.  
  869. (*----------------------------- functions ------------------------------------*)
  870.  
  871. PROCEDURE NewObjectA( classPtr : IClassPtr ;
  872.               classID  : STRING ;
  873.               tagList  : TagItemPtr ) : ADDRESS ;
  874.  
  875. PROCEDURE NewObject( classPtr : IClassPtr ;
  876.              classID : STRING ;
  877.              tag1 : LONGINT ; .. ) : ADDRESS ;
  878.  
  879. PROCEDURE DisposeObject( object : ADDRESS ) ;
  880. PROCEDURE SetAttrsA( object : ADDRESS ; tagList : TagItemPtr ) : LONGINT ;
  881. PROCEDURE SetAttrs( object : ADDRESS ; tag1 : LONGINT ; .. ) : LONGINT ;
  882.  
  883. PROCEDURE GetAttr( attrID : LONGINT ;
  884.            object : ADDRESS ;
  885.            storagePtr : ADDRESS ) : LONGINT ;
  886.  
  887. (* special set attribute call for gadgets *)
  888.  
  889. PROCEDURE SetGadgetAttrsA( gadget    : GadgetPtr ;
  890.                window    : WindowPtr ;
  891.                requester : RequesterPtr ;
  892.                tagList   : TagItemPtr ) : LONGINT ;
  893.  
  894. PROCEDURE SetGadgetAttrs( gadget    : GadgetPtr ;
  895.               window    : WindowPtr ;
  896.               requester : RequesterPtr ;
  897.               tag1        : LONGINT ; .. ) : LONGINT ;
  898.  
  899. PROCEDURE NextObject( objectPtr : ADDRESS ) : ADDRESS ;
  900.  
  901. PROCEDURE MakeClass( classID , superClassID : STRING ;
  902.              superClassPtr : IClassPtr ;
  903.              instanceSize  : LONGINT ;
  904.              flags       : LONGSET ) : IClassPtr ;
  905.  
  906. PROCEDURE AddClass( classPtr : IClassPtr ) ;
  907.  
  908. PROCEDURE RemoveClass( classPtr : IClassPtr ) ;
  909. PROCEDURE FreeClass( classPtr : IClassPtr ) : BOOLEAN ;
  910.  
  911. (*--------- functions in V39 or higher (Release 3) ---------*)
  912. (* IMPORT Classes{39}, will open Intuition with version 39  *)
  913.  
  914. PROCEDURE DoGadgetMethodA( gad       : GadgetPtr ;
  915.                win       : WindowPtr ;
  916.                req       : RequesterPtr ;
  917.                message : Msg ) : LONGINT ;
  918.  
  919. PROCEDURE DoGadgetMethod( gad       : GadgetPtr ;
  920.               win       : WindowPtr ;
  921.               req       : RequesterPtr ;
  922.               MethodID : LONGINT ; .. ) : LONGINT ;
  923.  
  924. (*--------------- From AmigaLib linker library -------------------------*)
  925.  
  926. PROCEDURE DoMethodA( obj : ObjectPtr ; message  : Msg ) : LONGINT ;
  927. PROCEDURE DoMethod ( obj : ObjectPtr ; MethodID : LONGINT ; .. ) : LONGINT ;
  928.  
  929. PROCEDURE DoSuperMethodA( cl      : IClassPtr ;
  930.               obj      : ObjectPtr ;
  931.               message : Msg ) : LONGINT ;
  932.  
  933. PROCEDURE DoSuperMethod( cl       : IClassPtr ;
  934.              obj      : ObjectPtr ;
  935.              MethodID : LONGINT ; .. ) : LONGINT ;
  936.  
  937. PROCEDURE CoerceMethodA( cl      : IClassPtr ;
  938.              obj     : ObjectPtr ;
  939.              message : Msg ) : LONGINT ;
  940.  
  941. PROCEDURE CoerceMethod( cl     : IClassPtr ;
  942.             obj     : ObjectPtr ;
  943.             MethodID : LONGINT ; .. ) : LONGINT ;
  944.  
  945. PROCEDURE SetSuperAttrs( cl   : IClassPtr ;
  946.              obj  : ObjectPtr ;
  947.              Tag1 : Tag ; .. ) : LONGINT ;
  948.  
  949. END Classes.
  950.