home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Misc / TRSICAT.LZX / CATS_CD2_TRSI / Inc&AD1.3 / Text_Autodocs / intuition.doc < prev    next >
Encoding:
Text File  |  1992-09-12  |  127.4 KB  |  3,646 lines

  1. TABLE OF CONTENTS
  2.  
  3. intuition.library/ActivateGadget
  4. intuition.library/ActivateWindow
  5. intuition.library/AddGadget
  6. intuition.library/AddGList
  7. intuition.library/AllocRemember
  8. intuition.library/AutoRequest
  9. intuition.library/BeginRefresh
  10. intuition.library/BuildSysRequest
  11. intuition.library/ClearDMRequest
  12. intuition.library/ClearMenuStrip
  13. intuition.library/ClearPointer
  14. intuition.library/CloseScreen
  15. intuition.library/CloseWindow
  16. intuition.library/CloseWorkBench
  17. intuition.library/CurrentTime
  18. intuition.library/DisplayAlert
  19. intuition.library/DisplayBeep
  20. intuition.library/DoubleClick
  21. intuition.library/DrawBorder
  22. intuition.library/DrawImage
  23. intuition.library/EndRefresh
  24. intuition.library/EndRequest
  25. intuition.library/FreeRemember
  26. intuition.library/FreeSysRequest
  27. intuition.library/GetDefPrefs
  28. intuition.library/GetPrefs
  29. intuition.library/GetScreenData
  30. intuition.library/InitRequester
  31. intuition.library/IntuiTextLength
  32. intuition.library/ItemAddress
  33. intuition.library/LockIBase
  34. intuition.library/MakeScreen
  35. intuition.library/ModifyIDCMP
  36. intuition.library/ModifyProp
  37. intuition.library/MoveScreen
  38. intuition.library/MoveWindow
  39. intuition.library/NewModifyProp
  40. intuition.library/OffGadget
  41. intuition.library/OffMenu
  42. intuition.library/OnGadget
  43. intuition.library/OnMenu
  44. intuition.library/OpenScreen
  45. intuition.library/OpenWindow
  46. intuition.library/OpenWorkBench
  47. intuition.library/PrintIText
  48. intuition.library/RefreshGadgets
  49. intuition.library/RefreshGList
  50. intuition.library/RefreshWindowFrame
  51. intuition.library/RemakeDisplay
  52. intuition.library/RemoveGadget
  53. intuition.library/RemoveGList
  54. intuition.library/ReportMouse
  55. intuition.library/Request
  56. intuition.library/RethinkDisplay
  57. intuition.library/ScreenToBack
  58. intuition.library/ScreenToFront
  59. intuition.library/SetDMRequest
  60. intuition.library/SetMenuStrip
  61. intuition.library/SetPointer
  62. intuition.library/SetPrefs
  63. intuition.library/SetWindowTitles
  64. intuition.library/ShowTitle
  65. intuition.library/SizeWindow
  66. intuition.library/UnlockIBase
  67. intuition.library/ViewAddress
  68. intuition.library/ViewPortAddress
  69. intuition.library/WBenchToBack
  70. intuition.library/WBenchToFront
  71. intuition.library/WindowLimits
  72. intuition.library/WindowToBack
  73. intuition.library/WindowToFront
  74.  
  75.  
  76. intuition.library/ActivateGadget               intuition.library/ActivateGadget
  77.  
  78.     NAME
  79.     ActivateGadget -- Activate a (String) Gadget.
  80.  
  81.     SYNOPSIS
  82.     Success = ActivateGadget(Gadget, Window, Request)
  83.     D0             A0     A1     A2
  84.  
  85.     BOOL   Success;
  86.     struct Gadget *Gadget;
  87.     struct Window *Window;
  88.     struct Requester *Request;
  89.  
  90.     FUNCTION
  91.     Activates a String Gadget.  If successful, this means that the user
  92.     does not need to click in the gadget before typing.
  93.  
  94.     The Window parameter must point to the window which contains the Gadget.
  95.     If the gadget is actually in a Requester, the Window must contain
  96.     the Requester, and a pointer to the Requester must also be
  97.     passed.    The Requester parameter must only be valid if the Gadget
  98.     has the    REQGADGET flag set, a requirement for all Requester Gadgets.
  99.  
  100.     The success of this function depends on a rather complex set
  101.     of conditions.  The intent is that the user is never interrupted from
  102.     what interactions he may have underway.
  103.  
  104.     The current set of conditions includes:
  105.     -   The Window must be active. (Use the ACTIVEWINDOW IDCMP).
  106.     -   No other gadgets may be in use.  This includes system gadgets,
  107.         such as those for window sizing, dragging, etc.
  108.     -   If the gadget is in a Requester, that Requester must
  109.         be active. (Use the REQSET and REQCLEAR IDCMP).
  110.     -   The right mouse button cannot be held down (e.g. menus
  111.  
  112.     INPUTS
  113.     Gadget = pointer to the Gadget that you want activated.
  114.     Window = pointer to a Window structure containing the Gadget.
  115.     Requester = pointer to a Requester (may by NULL if this isn't 
  116.            a Requester Gadget (i.e. REQGADGET is not set)).
  117.  
  118.     RESULT
  119.     If the conditions above are met, and the Gadget is in fact a String
  120.     Gadget, then this function will return TRUE, else FALSE.
  121.  
  122.     BUGS
  123.  
  124.     SEE ALSO
  125.     
  126.  
  127. intuition.library/ActivateWindow               intuition.library/ActivateWindow
  128.  
  129.     NAME
  130.     ActivateWindow  --  Activate an Intuition Window.
  131.  
  132.     SYNOPSIS
  133.     ActivateWindow(Window)
  134.             A0
  135.  
  136.     struct Window *Window;
  137.  
  138.     FUNCTION
  139.     Activates an Intuition Window. 
  140.  
  141.     Note that this call may have its action deferred: you cannot assume
  142.     that when this call is made the selected window has become active. 
  143.     This action will be postponed while the user plays with gadgets and menus,
  144.     or sizes and drags windows.  You may detect when the window actually
  145.     has become active by the ACTIVEWINDOW IDCMP Message.
  146.  
  147.     This call is intended to provide flexibility but not to confuse the
  148.     user.  Please call this function synchronously with some action
  149.     by the user.
  150.  
  151.     INPUTS
  152.     Window = a pointer to a Window structure
  153.  
  154.     RESULT
  155.     None
  156.  
  157.     BUGS
  158.     Calling this function in a tight loop can blow out Intuition's deferred
  159.     action queue.
  160.  
  161.     SEE ALSO
  162.     OpenWindow(), and the ACTIVATE Window Flag
  163.  
  164. intuition.library/AddGadget                         intuition.library/AddGadget
  165.  
  166.     NAME
  167.     AddGadget  --  Add a Gadget to the Gadget list of the Window or Screen.
  168.  
  169.     SYNOPSIS
  170.     RealPosition = AddGadget(Window, Gadget, Position)
  171.     D0             A0     A1     D0
  172.  
  173.     USHORT RealPosition;
  174.     struct Window *Window;
  175.     struct Gadget *Gadget;
  176.     USHORT Position;
  177.  
  178.     FUNCTION
  179.     Adds the specified Gadget to the Gadget list of the given Window,
  180.     linked in at the position in the list specified by the Position 
  181.     argument (that is, if Pos == 0, the Gadget will be inserted at the 
  182.     head of the list, and if Position == 1 then the Gadget will be inserted 
  183.     after the first Gadget and before the second).  If the Position 
  184.     you specify is greater than the number of Gadgets in the list, 
  185.     your Gadget will be added to the end of the list.
  186.  
  187.     Calling AddGadget() does not cause your gadget do be redisplayed.
  188.     The benefit of this is that you may add several gadgets without having
  189.     the gadget list be redrawn every time.
  190.  
  191.     This procedure returns the position at which your Gadget was added.
  192.    
  193.     NOTE:  A relatively safe way to add the Gadget to the end of the 
  194.     list is to specify a Position of -1 (i.e., (USHORT) ~0).  That way,
  195.     only the 65536th (and multiples of it) will be inserted at the wrong
  196.     position.  The return value of the procedure will tell you where it was 
  197.     actually inserted.
  198.  
  199.     NOTE:  The System Window Gadgets are initially added to the
  200.     front of the Gadget List.  The reason for this is:  If you position your
  201.     own Gadgets in some way that interferes with the graphical representation
  202.     of the system Gadgets, the system's ones will be "hit"
  203.     first by User.  If you then start adding Gadgets to the front of the list,
  204.     you will disturb this plan, so beware.  On the other hand, if you don't
  205.     violate the design rule of never overlapping your Gadgets, there's no
  206.     problem.  
  207.  
  208.     NOTE:  You may not add your own gadgets to a Screen.  Gadgets may
  209.     be added to backdrop windows, however, which can be visually similar,
  210.     but also provide an IDCMP channel for gadget input messages.
  211.  
  212.     INPUTS
  213.     Window = pointer to the Window to get your Gadget
  214.     Gadget = pointer to the new Gadget
  215.     Position = integer position in the list for the new Gadget (starting from
  216.               zero as the first position in the list)
  217.  
  218.     RESULT
  219.     Returns the position of where the Gadget was actually added.
  220.  
  221.     BUGS
  222.  
  223.     SEE ALSO
  224.     AddGList(), RemoveGadget()
  225.  
  226. intuition.library/AddGList                           intuition.library/AddGList
  227.  
  228.     NAME
  229.     AddGList  --  add a linked list of gadgets to a Window or Requester
  230.  
  231.     SYNOPSIS
  232.     RealPosition =  AddGList(Window, Gadget, Position, Numgad, Requester);
  233.     D0             A0      A1      D0        D1       A2
  234.     
  235.     USHORT RealPosition;
  236.     struct Window *Window;
  237.     struct Gadget *Gadget;
  238.     USHORT Position;
  239.     USHORT Numgad;
  240.     struct Requester *Requester;
  241.  
  242.     FUNCTION
  243.     Adds the list of Gadgets to the Gadget list of the given Window
  244.     or Requester linked in at the position in the list specified by
  245.     the Position argument. 
  246.  
  247.     See AddGadget() for more information about gadget list position.
  248.  
  249.     The Requester parameter will be ignored unless the REQGADGET bit
  250.     is set in the GadgetType field of the first Gadget in the list.
  251.     In that case, the gadget list is added to the Requester gadgets.
  252.     NOTE: be sure that REQGADGET is either set of cleared consistently
  253.     for all gadgets in the list.  NOTE ALSO: The Window parameter
  254.     should point to the Window that the Requester (will) appear in.
  255.  
  256.     Will add 'Numgad' gadgets from gadget list linked by the field
  257.     NextGadget, or until some NextGadget field is found to be NULL.  Does
  258.     not assume that the Numgad'th gadget has NextGadget equal to NULL.
  259.  
  260.     NOTE WELL: In order to link your gadget list in, the NextGadget
  261.     field of the Numgad'th (or last) gadget will be modified.  Thus, if 
  262.     you are adding the first 3 gadgets from a linked list of five gadgets,
  263.     this call will sever the connection between your third and fourth
  264.     gadgets.
  265.  
  266.     INPUTS
  267.     Window = pointer to the Window to get your Gadget
  268.     Gadget = pointer to the first Gadget to be added
  269.     Position = integer position in the list for the new Gadget
  270.         (starting from zero as the first position in the list)
  271.     Numgad = the number of gadgets from the linked list to be added
  272.         if Numgad equals -1, the entire null-terminated list of
  273.         gadgets will be added.
  274.     Requester = the requester the gadgets will be added to if the
  275.         REQGADGET GadgetType flag is set for the first gadget in the list
  276.  
  277.     RESULT
  278.     Returns the position of where the first Gadget in the list was actually
  279.     added.
  280.  
  281.     BUGS
  282.  
  283.     SEE ALSO
  284.     AddGadget(), RemoveGadget()
  285.  
  286. intuition.library/AllocRemember                 intuition.library/AllocRemember
  287.  
  288.     NAME
  289.     AllocRemember  --  AllocMem and create a link node to make FreeMem easy.
  290.  
  291.     SYNOPSIS
  292.     MemBlock = AllocRemember(RememberKey, Size, Flags)
  293.     D0             A0          D0    D1
  294.     
  295.     CPTR MemBlock;
  296.     struct Remember **RememberKey;
  297.     ULONG Size;
  298.     ULONG Flags;
  299.  
  300.     FUNCTION
  301.     This routine calls the EXEC AllocMem() function for you, but also links
  302.     the parameters of the allocation into a master list, so that
  303.     you can simply call the Intuition routine FreeRemember() at a later 
  304.     time to deallocate all allocated memory without being required to
  305.     remember the details of the memory you've allocated.
  306.  
  307.     This routine will have two primary uses:
  308.        -   Let's say that you're doing a long series of allocations in a 
  309.            procedure (such as the Intuition OpenWindow() procedure).  
  310.            If any one of the allocations fails for lack of memory, you 
  311.            need to abort the procedure.  Abandoning ship correctly involves 
  312.            freeing up what memory you've already allocated.  This procedure 
  313.            allows you to free up that memory easily, without being required 
  314.            to keep track of how many allocations you've already done, what the 
  315.            sizes of the allocations were, or where the memory was allocated.
  316.  
  317.        -   Also, in the more general case, you may do all of the allocations 
  318.            in your entire program using this routine.  Then, when your 
  319.            program is exiting, you can free it all up at once with a 
  320.            simple call to FreeRemember().
  321.  
  322.     You create the "anchor" for the allocation master list by creating 
  323.     a variable that's a pointer to struct Remember, and initializing 
  324.     that pointer to NULL.  This is called the RememberKey.  Whenever 
  325.     you call AllocRemember(), the routine actually does two memory 
  326.     allocations, one for the memory you want and the other for a copy 
  327.     of a Remember structure.  The Remember structure is filled in 
  328.     with data describing your memory allocation, and it's linked 
  329.     into the master list pointed to by your RememberKey.  Then, to 
  330.     free up any memory that's been allocated, all you have to do is 
  331.     call FreeRemember() with your RememberKey.
  332.  
  333.     Please read the FreeRemember() function description, too.  As you will
  334.     see, you can select either to free just the link nodes and keep all the 
  335.     allocated memory for yourself, or to free both the nodes and your memory
  336.     buffers.
  337.  
  338.  
  339.     INPUTS
  340.     RememberKey = the address of a pointer to struct Remember.  Before the
  341.     very first call to AllocRemember, initialize this pointer to NULL. 
  342.  
  343.     Size = the size in bytes of the memory allocation.  Please refer to the
  344.         exec.library/AllocMem function for details.
  345.     Flags = the specifications for the memory allocation.  Please refer to 
  346.         the exec.library/AllocMem function for details.
  347.  
  348.     EXAMPLE
  349.     struct Remember *RememberKey;
  350.     RememberKey = NULL;
  351.     AllocRemember(&RememberKey, BUFSIZE, MEMF_CHIP);
  352.     FreeRemember(&RememberKey, TRUE);
  353.  
  354.     RESULT
  355.     If the memory allocation is successful, this routine returns the byte 
  356.     address of your requested memory block.  Also, the node to your block 
  357.     will be linked into the list pointed to by your RememberKey variable.
  358.     If the allocation fails, this routine returns NULL and the list pointed
  359.     to by RememberKey, if any, will be undisturbed.
  360.  
  361.     BUGS
  362.  
  363.     SEE ALSO
  364.     FreeRemember(), exec.library/AllocMem()
  365.  
  366. intuition.library/AutoRequest                     intuition.library/AutoRequest
  367.  
  368.     NAME
  369.     AutoRequest  --  Automatically build and get response from a Requester.
  370.  
  371.     SYNOPSIS
  372.     Response = AutoRequest(Window, BodyText, PositiveText, NegativeText, 
  373.     D0               A0      A1     A2           A3
  374.                       PositiveFlags, NegativeFlags, Width, Height)
  375.             D0           D1          D2     D3
  376.  
  377.     BOOL Response;
  378.     struct Window *Window;
  379.     struct IntuiText *BodyText, *PositiveText, *NegativeText;
  380.     ULONG PositiveFlags, NegativeFlags;
  381.     SHORT Width, Height;
  382.  
  383.     FUNCTION
  384.     This procedure automatically builds a Requester for you and then 
  385.     waits for a response from the user, or for the system to satisfy your 
  386.     request.  If the response is positive, this procedure returns TRUE.  
  387.     If the response is negative, this procedure returns FALSE.  
  388.  
  389.     An IDCMPFlag specification is creates by bitwise "or'ing" your
  390.     PositiveFlags, NegativeFlags, and the IDCMP classes GADGETUP and
  391.     RAWKEY.  You may specify zero flags for either the PositiveFlags
  392.     or NegativeFlags arguments.  
  393.  
  394.     The IntuiText arguments, and the Width and Height values, are 
  395.     passed directly to the BuildSysRequest() procedure along with 
  396.     your Window pointer and the IDCMP flags.  Please refer to 
  397.     BuildSysRequest() for a description of the IntuiText that you are 
  398.     expected to supply when calling this routine.  It's an important
  399.     but long-winded description that need not be duplicated here.  
  400.  
  401.     If the BuildSysRequest() procedure does not return a pointer 
  402.     to a Window, it will return TRUE or FALSE (not valid structure 
  403.     pointers) instead, and these BOOL values will be returned to 
  404.     you immediately.  
  405.  
  406.     On the other hand, if a valid Window pointer is returned, that 
  407.     Window will have had its IDCMP Ports and flags initialized according 
  408.     to your specifications.  AutoRequest() then waits for IDCMP messages 
  409.     on the UserPort, which satisfies one of four requirements:
  410.     -   either the message is of a class that matches 
  411.            one of your PositiveFlags arguments (if you've supplied 
  412.            any), in which case this routine returns TRUE.  Or
  413.        -   the message class matches one of your NegativeFlags 
  414.            arguments (if you've supplied any), in which case 
  415.            this routine returns FALSE.  Or
  416.        -   the IDCMP message is of class GADGETUP, which means that one of
  417.         the two Gadgets, as provided with the PositiveText and NegativeText 
  418.            arguments, was selected by the user.  If the TRUE Gadget 
  419.            was selected, TRUE is returned.  If the FALSE Gadget was 
  420.            selected, FALSE is returned.  
  421.     -   Lastly, two RAWKEY messages may satisfy the request: those
  422.         for the V and B keys with the left Amiga key depressed.
  423.         These keys, satisfy the gadgets on the left or right side of
  424.         the Requester--TRUE or FALSE--, respectively.
  425.  
  426.     When the dust has settled, this routine calls FreeSysRequest() if
  427.     necessary to clean up the Requester and any other allocated memory.
  428.  
  429.     INPUTS
  430.     Window = pointer to a Window structure
  431.     BodyText = pointer to an IntuiText structure
  432.     PositiveText = pointer to an IntuiText structure, may be NULL.
  433.     NegativeText = pointer to an IntuiText structure, MUST be valid!
  434.     PositiveFlags = flags for the IDCMP
  435.     NegativeFlags = flags for the IDCMP
  436.     Width, Height = the sizes to be used for the rendering of the Requester 
  437.  
  438.     RESULT
  439.     The return value is either TRUE or FALSE.  See the text above for a 
  440.     complete description of the chain of events that might lead to either
  441.     of these values being returned.
  442.  
  443.     BUGS
  444.  
  445.     SEE ALSO
  446.     BuildSysRequest()
  447.  
  448. intuition.library/BeginRefresh                   intuition.library/BeginRefresh
  449.  
  450.     NAME
  451.     BeginRefresh  --  Sets up a Window for optimized refreshing.
  452.  
  453.     SYNOPSIS
  454.     BeginRefresh(Window)
  455.              A0
  456.  
  457.     struct Window *Window;
  458.  
  459.     FUNCTION
  460.     This routine sets up your Window for optimized refreshing.  
  461.  
  462.     It's role is to provide Intuition integrated access to the Layers
  463.     library function BeginUpdate().  Its additional contribution is
  464.     to be sure that locking protocols for layers are followed, by
  465.     locking both layers of a GIMMEZEROZERO window only after the
  466.     parent Layer_Info has been locked.  Also, the WINDOWREFRESH
  467.     flag is set in your window, for your information.
  468.  
  469.     The purpose of BeginUpdate(), and hence BeginRefresh(), is to 
  470.     restrict rendering in a Window (Layer) to the region in
  471.     that needs refreshing after an operation such as window sizing or
  472.     uncovering.  This restriction to the "Damage Region" persists until
  473.     you call EndRefresh().
  474.     
  475.     For instance, if you have a SIMPLE_REFRESH Window which is partially
  476.     concealed and the user brings it to the front, you may receive a
  477.     message asking you to refresh your display.  If you call BeginRefresh()
  478.     before doing any of the rendering, then the layer that underlies your
  479.     Window will be arranged such that the only rendering that will actually
  480.     take place will be that which goes to the newly-revealed areas.  This
  481.     is very performance-efficient, and visually attractive.
  482.  
  483.     After you have performed your refresh of the display, you should call
  484.     EndRefresh() to reset the state of the layer and the Window.  Then you
  485.     may proceed with rendering to the Window as usual.
  486.  
  487.     You learn that your Window needs refreshing by receiving either a
  488.     message of class REFRESHWINDOW through the IDCMP, or an input event
  489.     of class IECLASS_REFRESHWINDOW through the Console Device.  Whenever
  490.     you are told that your Window needs refreshing, you should call
  491.     BeginRefresh() and EndRefresh() to clear the refresh-needed state,
  492.     even if you don't plan on doing any rendering.  You may relieve yourself
  493.     of even this burden by setting the NOCAREREFRESH Flag when opening
  494.     your window.
  495.  
  496.     INPUTS
  497.     Window = pointer to the Window structure which needs refreshing
  498.  
  499.     RESULT
  500.     None
  501.  
  502.     BUGS
  503.  
  504.     SEE ALSO
  505.        EndRefresh(), layers.library/BeginUpdate(), OpenWindow()
  506.     The "Windows" chapter of the Intuition Reference Manual
  507.  
  508. intuition.library/BuildSysRequest             intuition.library/BuildSysRequest
  509.  
  510.     NAME
  511.     BuildSysRequest  --  Build and display a system Requester.
  512.  
  513.     SYNOPSIS
  514.     ReqWindow = BuildSysRequest(Window, BodyText, PositiveText, NegativeText, 
  515.     D0                A0        A1          A2        A3
  516.                    IDCMPFlags, Width, Height)
  517.                D0          D2      D3
  518.  
  519.     struct Window *ReqWindow;
  520.     struct Window *Window;
  521.     struct IntuiText *BodyText;
  522.     struct IntuiText *PositiveText;
  523.     struct IntuiText *NegativeText;
  524.     ULONG  IDCMPFlags;
  525.     SHORT  Width, Height;
  526.  
  527.     FUNCTION
  528.     This procedure builds a Requester based on the supplied information.  
  529.     If all goes well and the Requester is constructed, this procedure 
  530.     returns a pointer to the Window in which the Requester appears.  
  531.     That Window will have the IDCMP UserPort and WindowPort initialized 
  532.     to reflect the flags found in the IDCMPFlags argument.  You may then
  533.     Wait() on those ports to detect the user's response to your Requester,
  534.     which response may include either selecting one of the Gadgets or 
  535.     causing some other event to be noticed by Intuition (like DISKINSERTED,
  536.     for instance).  After the Requester is satisfied, you should call the
  537.     FreeSysRequest() procedure to remove the Requester and free up any
  538.     allocated memory.
  539.  
  540.     The requester used by this function has the NOISYREQ flag bit set,
  541.     which means that the set of IDCMPFlags that may be used here
  542.     include RAWKEY, MOUSEBUTTONS, and others.
  543.    
  544.     If it isn't possible to construct the Requester for any reason, this
  545.     procedure will instead use the text arguments to construct a text
  546.     string for a call to the DisplayAlert() procedure, and then will return
  547.     either a TRUE or FALSE depending on whether DisplayAlert() returned 
  548.     a FALSE or TRUE respectively.
  549.  
  550.     If the Window argument you supply is equal to NULL, a new Window will
  551.     be created for you in the Workbench Screen.  If you want the Requester
  552.     created by this routine to be bound to a particular Window, you should
  553.     not supply a Window argument of NULL.
  554.  
  555.     The text arguments are used to construct the display.  Each is a
  556.     pointer to an instance of the structure IntuiText.
  557.  
  558.     The BodyText argument should be used to describe the nature of 
  559.     the Requester.  As usual with IntuiText data, you may link several
  560.     lines of text together, and the text may be placed in various 
  561.     locations in the Requester.  This IntuiText pointer will be stored
  562.     in the ReqText variable of the new Requester.
  563.  
  564.     The PositiveText argument describes the text that you want associated 
  565.     with the user choice of "Yes,  TRUE,  Retry,  Good."  If the Requester 
  566.     is successfully opened, this text will be rendered in a Gadget in 
  567.     the lower-left of the Requester, which Gadget will have the 
  568.     GadgetID field set to TRUE.  If the Requester cannot be opened and 
  569.     the DisplayAlert() mechanism is used, this text will be rendered in 
  570.     the lower-left corner of the Alert display with additional text 
  571.     specifying that the left mouse button will select this choice.  This 
  572.     pointer can be set to NULL, which specifies that there is no TRUE 
  573.     choice that can be made.
  574.  
  575.     The NegativeText argument describes the text that you want associated 
  576.     with the user choice of "No,  FALSE,  Cancel,  Bad."  If the Requester 
  577.     is successfully opened, this text will be rendered in a Gadget in 
  578.     the lower-right of the Requester, which Gadget will have the 
  579.     GadgetID field set to FALSE.  If the Requester cannot be opened and 
  580.     the DisplayAlert() mechanism is used, this text will be rendered in 
  581.     the lower-right corner of the Alert display with additional text 
  582.     specifying that the right mouse button will select this choice.  This 
  583.     pointer cannot be set to NULL.  There must always be a way for the
  584.     user to cancel this Requester.
  585.  
  586.     The Positive and Negative Gadgets created by this routine have
  587.     the following features:
  588.           - BOOLGADGET
  589.           - RELVERIFY
  590.           - REQGADGET
  591.           - TOGGLESELECT
  592.  
  593.     When defining the text for your Gadgets, you may find it convenient
  594.     to use the special constants used by Intuition for the construction
  595.     of the Gadgets.  These include defines like AUTODRAWMODE, AUTOLEFTEDGE,
  596.     AUTOTOPEDGE and AUTOFRONTPEN.  You can find these in your local
  597.     intuition.h (or intuition.i) file.
  598.  
  599.     The Width and Height values describe the size of the Requester.  All
  600.     of your BodyText must fit within the Width and Height of your
  601.     Requester.  The Gadgets will be created to conform to your sizes.
  602.  
  603.     VERY IMPORTANT NOTE:  for this release of this procedure, a new Window
  604.     is opened in the same Screen as the one containing your Window. 
  605.     Future alternatives will be provided as a function distinct from this
  606.     one.
  607.  
  608.     INPUTS
  609.     Window = pointer to a Window structure
  610.     BodyText = pointer to an IntuiText structure
  611.     PositiveText = pointer to an IntuiText structure
  612.     NegativeText = pointer to an IntuiText structure
  613.     IDCMPFlags = the IDCMP flags you want used for the initialization of the
  614.            IDCMP of the Window containing this Requester
  615.     Width, Height = the size required to render your Requester
  616.  
  617.     RESULT
  618.     If the Requester was successfully rendered in a Window, the value 
  619.     returned by this procedure is a pointer to the Window in which the 
  620.     Requester was rendered.  If, however, the Requester cannot be rendered 
  621.     in the Window, this routine will have called DisplayAlert() before 
  622.     returning and will pass back TRUE if the user pressed the left mouse 
  623.     button and FALSE if the user pressed the right mouse button. 
  624.  
  625.     BUGS
  626.     This procedure currently opens a Window as wide as the Screen in 
  627.     which it was rendered, and then opens the Requester within that 
  628.     Window.  Also, if DisplayAlert() is called, the PositiveText and 
  629.     NegativeText are not rendered in the lower corners of the Alert.
  630.  
  631.     SEE ALSO
  632.     FreeSysRequest(), DisplayAlert(), ModifyIDCMP(), exec.library/Wait(),
  633.     Request(), AutoRequest()
  634.  
  635. intuition.library/ClearDMRequest               intuition.library/ClearDMRequest
  636.  
  637.     NAME
  638.     ClearDMRequest -- clears (detaches) the DMRequest of the Window.
  639.  
  640.     SYNOPSIS
  641.     Response = ClearDMRequest(Window)
  642.     D0              A0
  643.  
  644.     BOOL Response;
  645.     struct Window *Window;
  646.  
  647.     FUNCTION
  648.     Attempts to clear the DMRequester from the specified window,
  649.     that is detaches the special Requester that you attach to 
  650.     the double-click of the menu button which the user can then 
  651.     bring up on demand.  This routine WILL NOT clear the DMRequester 
  652.     if it's active (in use by the user). The IDCMP message class REQCLEAR
  653.     can be used to detect that the requester is not in use,
  654.     but that message is sent only when the last of perhaps several
  655.     requesters in use in a window is terminated.
  656.  
  657.     INPUTS
  658.     Window = pointer to the window from which the DMRequest is to be cleared.
  659.  
  660.     RESULT
  661.     If the DMRequest was not currently in use, zeroes out the DMRequest
  662.     pointer in the Window and returns TRUE.
  663. pointer in the Window and returns TRUE.
  664.     If the DMRequest was currently in use, doesn't change the pointer
  665.     and returns FALSE.
  666.  
  667.     BUGS
  668.  
  669.     SEE ALSO
  670.     SetDMRequest(), Request()
  671.  
  672. intuition.library/ClearMenuStrip               intuition.library/ClearMenuStrip
  673.  
  674.     NAME
  675.     ClearMenuStrip  --  Clears (detaches) the Menu strip from the Window
  676.  
  677.     SYNOPSIS
  678.     ClearMenuStrip(Window)
  679.                A0
  680.  
  681.     struct Window *Window;
  682.  
  683.     FUNCTION
  684.     Detaches the current menu strip from the Window; menu strips
  685.     are attached to windows using the SetMenuStrip() function.
  686.  
  687.     If the menu is in use (for that matter if any menu is in use)
  688.     this function will block (Wait()) until the user has finished.
  689.  
  690.     Call this function before you make any changes to the data
  691.     in a Menu or MenuItem structure which is part of a menu
  692.     strip linked into a window.
  693.  
  694.     INPUTS
  695.     Window = pointer to a Window structure
  696.  
  697.     RESULT
  698.     None
  699.  
  700.     BUGS
  701.  
  702.     SEE ALSO
  703.     SetMenuStrip()
  704.  
  705. intuition.library/ClearPointer                   intuition.library/ClearPointer
  706.  
  707.     NAME
  708.     ClearPointer  --  clears the Mouse Pointer definition from a Window.
  709.  
  710.     SYNOPSIS
  711.     ClearPointer(Window)
  712.              A0
  713.  
  714.     struct Window *Window;
  715.  
  716.     FUNCTION
  717.     Clears the Window of its own definition of the Intuition mouse pointer.  
  718.     After calling ClearPointer(), every time this Window is the active 
  719.     one the default Intuition pointer will be the pointer displayed 
  720.     to the user.  If your Window is the active one when this routine 
  721.     is called, the change will take place immediately.
  722.  
  723.     Custom definitions of the mouse pointer which this function clears
  724.     are installed by a call to SetPointer().
  725.  
  726.     INPUTS
  727.     Window = pointer to the Window to be cleared of its Pointer definition
  728.  
  729.     RESULT
  730.     None
  731.  
  732.     BUGS
  733.  
  734.     SEE ALSO
  735.     SetPointer()
  736.  
  737. intuition.library/CloseScreen                     intuition.library/CloseScreen
  738.  
  739.     NAME
  740.     CloseScreen  --  Closes an Intuition Screen.
  741.  
  742.     SYNOPSIS
  743.     CloseScreen(Screen)
  744.             A0
  745.  
  746.     struct Screen *Screen;
  747.  
  748.     FUNCTION
  749.     Unlinks the Screen, unlinks the ViewPort, deallocates everything that
  750.     Intuition allocated when the screen was opened (using OpenScreen()).
  751.     Doesn't care whether or not there are still any Windows attached to the
  752.     Screen.  Doesn't try to close any attached Windows; in fact, ignores them
  753.     altogether.  If this is the last Screen to go, attempts to reopen
  754.     Workbench.
  755.  
  756.     INPUTS
  757.     Screen = pointer to the Screen to be closed.
  758.  
  759.     RESULT
  760.     None
  761.  
  762.     BUGS
  763.  
  764.     SEE ALSO
  765.     OpenScreen()
  766.  
  767. intuition.library/CloseWindow                     intuition.library/CloseWindow
  768.  
  769.     NAME
  770.     CloseWindow  --  Closes an Intuition Window.
  771.  
  772.     SYNOPSIS
  773.     CloseWindow(Window)
  774.             A0
  775.  
  776.     struct Window *Window;
  777.  
  778.     FUNCTION
  779.     Closes an Intuition Window.  Unlinks it from the system, unallocates
  780.     its memory, and if its Screen is a system one that would be empty 
  781.     without the Window, closes the system Screen too.
  782.  
  783.     When this function is called, all IDCMP messages which have been sent
  784.     to your window are deallocated.  If the window had shared a Message Port
  785.     with other windows, you must be sure that there are no unreplied messages
  786.     for this window in the message queue.  Otherwise, your program will
  787.     try to make use of a linked list (the queue) which contains free
  788.     memory (the old messages).  This will give you big problems.
  789. memory (the old messages).  This will give you big problems.
  790.     NOTE:  If you have added a Menu strip to this Window (via
  791.     a call to SetMenuStrip()) you must be sure to remove that Menu strip
  792.     (via a call to ClearMenuStrip()) before closing your Window.
  793.     
  794.     NOTE: This function may block until it is safe to delink and free
  795.     your window.  Your program may thus be suspended while the user
  796.     plays with gadgets, menus, or window sizes and position.
  797.  
  798.     INPUTS
  799.     Window = a pointer to a Window structure
  800.  
  801.     RESULT
  802.     None
  803.  
  804.     BUGS
  805.  
  806.     SEE ALSO
  807.     OpenWindow(), CloseScreen()
  808.  
  809. intuition.library/CloseWorkBench               intuition.library/CloseWorkBench
  810.  
  811.     NAME 
  812.     CloseWorkBench  --  Closes the Workbench Screen.
  813.  
  814.     SYNOPSIS 
  815.     Success =  CloseWorkBench() 
  816.     D0
  817.  
  818.     BOOL Success;
  819.  
  820.     FUNCTION 
  821.     This routine attempts to close the Workbench.  The actions taken are: 
  822.        -   Test whether or not any applications have opened Windows on the 
  823.            Workbench, and return FALSE if so.  Otherwise ... 
  824.        -   Clean up all special buffers 
  825.        -   Close the Workbench Screen 
  826.        -   Make the Workbench program mostly inactive (it will still  
  827.            monitor disk activity) 
  828.        -   Return TRUE 
  829.  
  830.     INPUTS 
  831.     None 
  832.  
  833.     RESULT 
  834.     TRUE if the Workbench Screen closed successfully 
  835.     FALSE if the Workbench was not open, or if it has windows
  836.         open which are not Workbench drawers.
  837.  
  838.     BUGS 
  839.  
  840.     SEE ALSO 
  841.     OpenWindow()
  842.  
  843. intuition.library/CurrentTime                     intuition.library/CurrentTime
  844.  
  845.     NAME
  846.     CurrentTime  --  Get the current time values.
  847.  
  848.     SYNOPSIS
  849.     CurrentTime(Seconds, Micros)
  850.             A0         A1
  851.  
  852.     ULONG *Seconds, *Micros;
  853.  
  854.     FUNCTION
  855.     Puts copies of the current time into the supplied argument pointers.
  856.  
  857.     This time value is not extremely accurate, nor is it of a very fine 
  858.     resolution.  This time will be updated no more than sixty times a
  859.     a second, and will typically be updated far fewer times a second.
  860.  
  861.     INPUTS
  862.     Seconds = pointer to a LONG variable to receive the current seconds value
  863.     Micros = pointer to a LONG variable for the current microseconds value
  864.  
  865.     RESULT
  866.     Puts the time values into the memory locations specified by the arguments
  867.     Return value is not defined.
  868.  
  869.     BUGS
  870.  
  871.     SEE ALSO
  872.     timer.device/TR_GETSYSTIME
  873.  
  874. intuition.library/DisplayAlert                   intuition.library/DisplayAlert
  875.  
  876.     NAME
  877.     DisplayAlert  --  Create the display of an Alert message.
  878.  
  879.     SYNOPSIS
  880.     Response = DisplayAlert(AlertNumber, String, Height)
  881.     D0            D0         A0         D1
  882.  
  883.     BOOL  Response;
  884.     ULONG AlertNumber;
  885.     UBYTE *String;
  886.     SHORT Height;
  887.  
  888.     FUNCTION
  889.     Creates an Alert display with the specified message.
  890.  
  891.     If the system can recover from this Alert, its a RECOVERY_ALERT and 
  892.     this routine waits until the user presses one of the mouse buttons, 
  893.     after which the display is restored to its original state and a 
  894.     BOOL value is returned by this routine to specify whether or not 
  895.     the User pressed the LEFT mouse button.
  896.    
  897.     If the system cannot recover from this Alert, it's a DEADEND_ALERT
  898.     and this routine returns immediately upon creating the Alert display.
  899.     The return value is FALSE.
  900.  
  901.     NOTE THIS: Starting with Version 1.2, if Intuition can't get enough
  902.     memory to display a RECOVERY_ALERT, the value FALSE will be returned.
  903.  
  904.     The AlertNumber is a LONG value, historically related to the value
  905.     sent to the Alert() routine.  But the only bits that are pertinent to
  906.     this routine are the ALERT_TYPE bit(s).  These bits must be set to
  907.     either RECOVERY_ALERT for Alerts from which the system may safely
  908.     recover, or DEADEND_ALERT for those fatal Alerts.  These states are
  909.     described in the paragraph above.
  910.    
  911.     The String argument points to an AlertMessage string.  The AlertMessage
  912.     string is comprised of one or more substrings, each of which is 
  913.     comprised of the following components:
  914.            - first, a 16-bit x-coordinate and an 8-bit y-coordinate, 
  915.              describing where on the Alert display you want this string
  916.              to appear.  The y-coordinate describes the offset to the
  917.              baseline of the text.
  918.            - then, the bytes of the string itself, which must be
  919.              null-terminated (end with a byte of zero)
  920.            - lastly, the continuation byte, which specifies whether or
  921.              not there's another substring following this one.  If the
  922.              continuation byte is non-zero, there IS another substring
  923.              to be processed in this Alert Message.  If the continuation
  924.              byte is zero, this is the last substring in the message.
  925.  
  926.     The last argument, Height, describes how many video lines tall you 
  927.     want the Alert display to be.
  928.  
  929.     INPUTS
  930.     AlertNumber = the number of this Alert Message.  The only pertinent bits
  931.            of this number are the ALERT_TYPE bit(s).  The rest of the
  932.            number is ignored by this routine
  933.     String = pointer to the Alert message string, as described above
  934.     Height = minimum display lines required for your message
  935.  
  936.     RESULT
  937.     A BOOL value of TRUE or FALSE.  If this is a DEADEND_ALERT, FALSE
  938.     is always the return value.  If this is a RECOVERY_ALERT. The return
  939.     value will be TRUE if the User presses the left mouse button in 
  940.     response to your message, and FALSE if the User presses the right hand 
  941.     button is response to your text, or if the alert could not
  942.     be posted.
  943.  
  944.     BUGS
  945.     If the system is worse off than you think, the level of your Alert
  946.     may become DEADEND_ALERT without you ever knowing about it.
  947.  
  948.     SEE ALSO
  949.     
  950.  
  951. intuition.library/DisplayBeep                     intuition.library/DisplayBeep
  952.  
  953.     NAME
  954.     DisplayBeep  --  flashes the video display.
  955.  
  956.     SYNOPSIS
  957.     DisplayBeep(Screen)
  958.             A0
  959.  
  960.     struct Screen *Screen;
  961.  
  962.     FUNCTION
  963.     "Beeps" the video display by flashing the background color of the
  964.     specified Screen.  If the Screen argument is NULL, every Screen
  965.     in the display will be beeped.  Flashing everyone's Screen is not
  966.     a polite thing to do, so this should be reserved for dire
  967.     circumstances.
  968.  
  969.     The reason such a routine is supported is because the Amiga has
  970.     no internal bell or speaker.  When the user needs to know of
  971.     an event that is not serious enough to require the use of a Requester,
  972.     the DisplayBeep() function may be called.
  973.  
  974.     INPUTS
  975.     Screen = pointer to a Screen.  If NULL, every Screen in the display
  976.            will be flashed
  977.  
  978.     RESULT
  979.     None
  980.  
  981.     BUGS
  982.  
  983.     SEE ALSO
  984.     
  985.  
  986. intuition.library/DoubleClick                     intuition.library/DoubleClick
  987.  
  988.     NAME
  989.     DoubleClick  --  Test two time values for double-click timing.
  990.  
  991.     SYNOPSIS
  992.     IsDouble = DoubleClick(StartSecs, StartMicros, CurrentSecs, CurrentMicros)
  993.     A0                D0      D1           D2        D3
  994.  
  995.     BOOL IsDouble;
  996.     LONG StartSecs, StartMicros;
  997.     LONG CurrentSecs, CurrentMicros;
  998.  
  999.     FUNCTION
  1000.     Compares the difference in the time values with the double-click 
  1001.     timeout range that the user has set (using the "Preferences" tool) or 
  1002.     some other program has configured into the system.  If the 
  1003.     difference between the specified time values is within the current 
  1004.     double-click time range, this function returns TRUE, else it 
  1005.     returns FALSE.  
  1006.  
  1007.        These time values can be found in InputEvents and IDCMP Messages.
  1008.        The time values are not perfect; however, they are precise enough for 
  1009.        nearly all applications.
  1010.  
  1011.     INPUTS
  1012.     StartSeconds, StartMicros = the timestamp value describing the start of
  1013.           the double-click time period you are considering
  1014.     CurrentSeconds, CurrentMicros = the timestamp value describing 
  1015.           the end of the double-click time period you are considering
  1016.  
  1017.     RESULT
  1018.     If the difference between the supplied timestamp values is within the
  1019.     double-click time range in the current set of Preferences, this
  1020.     function returns TRUE, else it returns FALSE
  1021.  
  1022.     BUGS
  1023.  
  1024.     SEE ALSO
  1025.     CurrentTime()
  1026.  
  1027. intuition.library/DrawBorder                       intuition.library/DrawBorder
  1028.  
  1029.     NAME
  1030.     DrawBorder  --  draws the specified Border into the RastPort.
  1031.  
  1032.     SYNOPSIS
  1033.     DrawBorder(RastPort, Border, LeftOffset, TopOffset)
  1034.            A0         A1         D0         D1
  1035.  
  1036.     struct RastPort *RastPort;
  1037.     struct Border    *Border;
  1038.     SHORT  LeftOffset, TopOffset;
  1039.  
  1040.     FUNCTION
  1041.     First, sets up the DrawMode and Pens in the RastPort according to the
  1042.     arguments of the Border structure.  Then, draws the vectors of
  1043.     the Border argument into the RastPort, offset by the Left and Top Offsets.
  1044.     As with all graphics rendering routines, the border will be clipped to
  1045.     to the boundaries of the RastPort's layer, if it exists.  This is
  1046.     the case with Window RastPorts.
  1047.  
  1048.     If the NextBorder field of the Border argument is non-zero, 
  1049.     the next Border is rendered as well, and so on until some NextBorder
  1050.     field is found to be NULL.
  1051.  
  1052.     INPUTS
  1053.     RastPort = pointer to the RastPort to receive the border rendering
  1054.     Border = pointer to a Border structure
  1055.     LeftOffset = the offset which will be added to each vector's x coordinate
  1056.     TopOffset = the offset which will be added to each vector's y coordinate
  1057.  
  1058.     RESULT
  1059.     None
  1060.  
  1061.     BUGS
  1062.  
  1063.     SEE ALSO
  1064.     
  1065.  
  1066. intuition.library/DrawImage                         intuition.library/DrawImage
  1067.  
  1068.     NAME
  1069.     DrawImage  --  draws the specified Image into the RastPort.
  1070.  
  1071.     SYNOPSIS
  1072.     DrawImage(RastPort, Image, LeftOffset, TopOffset)
  1073.           A0        A1       D0           D1
  1074.  
  1075.     struct RastPort *RastPort;
  1076.     struct Image    *Image;
  1077.     SHORT  LeftOffset, TopOffset;
  1078.  
  1079.     FUNCTION
  1080.     First, sets up the DrawMode and Pens in the RastPort according to the
  1081.     arguments of the Image structure.  Then, moves the image data of
  1082.     the Image argument into the RastPort, offset by the Left and Top Offsets.
  1083.     This routine does window layer clipping as appropriate -- if you 
  1084.     draw an image outside of your Window, your imagery will be 
  1085.     clipped at the Window's edge.
  1086.  
  1087.     If the NextImage field of the Image argument is non-zero, 
  1088.     the next Image is rendered as well, and so on until some
  1089.     NextImage field is found to be NULL.
  1090.  
  1091.     INPUTS
  1092.     RastPort = pointer to the RastPort to receive image rendering
  1093.     Image = pointer to an Image structure
  1094.     LeftOffset = the offset which will be added to the Image's x coordinate
  1095.     TopOffset = the offset which will be added to the Image's y coordinate
  1096.  
  1097.     RESULT
  1098.     None
  1099.  
  1100.     BUGS
  1101.  
  1102.     SEE ALSO
  1103.     
  1104.  
  1105. intuition.library/EndRefresh                       intuition.library/EndRefresh
  1106.  
  1107.     NAME
  1108.     EndRefresh  --  Ends the optimized refresh state of the Window.
  1109.  
  1110.     SYNOPSIS
  1111.     EndRefresh(Window, Complete)
  1112.            A0       D0
  1113.  
  1114.     struct Window *Window;
  1115.     BOOL Complete;
  1116.  
  1117.     FUNCTION
  1118.     This function gets you out of the special refresh state of your 
  1119.     Window.  It is called following a call to BeginRefresh(), which 
  1120.     routine puts you into the special refresh state.  While your Window
  1121.     is in the refresh state, the only rendering that will be wrought in
  1122.     your Window will be to those areas which were recently revealed and
  1123.     need to be refreshed.
  1124.  
  1125.     After you've done all the refreshing you want to do for this Window, 
  1126.     you should call this routine to restore the Window to its
  1127.     non-refreshing state.  Then all rendering will go to the entire
  1128.     Window, as usual.
  1129.    
  1130.     The Complete argument is a boolean TRUE or FALSE value used to 
  1131.     describe whether or not the refreshing you've done was all the
  1132.     refreshing that needs to be done at this time.  Most often, this
  1133.     argument will be TRUE.  But if, for instance, you have multiple
  1134.     tasks or multiple procedure calls which must run to completely
  1135.     refresh the Window, then each can call its own Begin/EndRefresh() 
  1136.     pair with a Complete argument of FALSE, and only the last calls
  1137.     with a Complete argument of TRUE.
  1138.  
  1139.     For your information, this routine calls the Layers library function
  1140.     EndUpdate(), unlocks your layers (calls UnlockLayerRom()), clears
  1141.     the LAYERREFRESH bit in your Layer Flags, and clears the WINDOWREFRESH
  1142.     bit in your window flags.
  1143.  
  1144.     INPUTS
  1145.     Window = pointer to the Window currently in optimized-refresh mode
  1146.     Complete = Boolean TRUE or FALSE describing whether or not this
  1147.            Window is completely refreshed
  1148.  
  1149.     RESULT
  1150.     None
  1151.  
  1152.     BUGS
  1153.  
  1154.     SEE ALSO
  1155.     BeginRefresh(), layers.library/EndUpdate(), layers.library/UnlockLayerRom()
  1156.  
  1157. intuition.library/EndRequest                       intuition.library/EndRequest
  1158.  
  1159.     NAME
  1160.     EndRequest  --  Ends the Request and resets the Window.
  1161.  
  1162.    SYNOPSIS
  1163.     EndRequest(Requester, Window);
  1164.            A0          A1
  1165.  
  1166.     FUNCTION
  1167.     Ends the Request by erasing the Requester and resetting the Window.
  1168.     Note that this doesn't necessarily clear all Requesters from the Window,
  1169.     only the specified one.  If the Window labors under other Requesters,
  1170.     they will remain in the Window.
  1171.  
  1172.     INPUTS
  1173.     Requester = pointer to the Requester to be removed
  1174.     Window = pointer to the Window structure with which this Requester 
  1175.            is associated
  1176.  
  1177.     RESULT
  1178.     None
  1179.  
  1180.     BUGS
  1181.  
  1182.     SEE ALSO
  1183.     Request()
  1184.  
  1185. intuition.library/FreeRemember                   intuition.library/FreeRemember
  1186.  
  1187.     NAME
  1188.     FreeRemember  --  Free memory allocated by calls to AllocRemember().
  1189.  
  1190.     SYNOPSIS
  1191.     FreeRemember(RememberKey, ReallyForget)
  1192.              A0          D0
  1193.  
  1194.     struct Remember **RememberKey;
  1195.     BOOL   ReallyForget;
  1196.  
  1197.     FUNCTION
  1198.     This function frees up memory allocated by the AllocRemember() function.
  1199.     It will either free up just the Remember structures, which supply the
  1200.     link nodes that tie your allocations together, or it will deallocate
  1201.     both the link nodes AND your memory buffers too.
  1202.     
  1203.     If you want to deallocate just the Remember structure link nodes,
  1204.     you should set the ReallyForget argument to FALSE.  However, if you
  1205.     want FreeRemember to really deallocate all the memory, including
  1206.     both the Remember structure link nodes and the buffers you requested
  1207.     via earlier calls to AllocRemember(), then you should set the 
  1208.     ReallyForget argument to TRUE.
  1209.  
  1210.     INPUTS
  1211.     RememberKey = the address of a pointer to struct Remember.  This
  1212.            pointer should either be NULL or set to some value (possibly
  1213.            NULL) by a call to AllocRemember().
  1214.     ReallyForget = a BOOL FALSE or TRUE describing, respectively, 
  1215.            whether you want to free up only the Remember nodes or 
  1216.            if you want this procedure to really forget about all of 
  1217.            the memory, including both the nodes and the memory buffers 
  1218.            referenced by the nodes.
  1219.  
  1220.     EXAMPLE
  1221.     struct Remember *RememberKey;
  1222.     RememberKey = NULL;
  1223.     AllocRemember(&RememberKey, BUFSIZE, MEMF_CHIP);
  1224.     FreeRemember(&RememberKey, TRUE);
  1225.  
  1226.     RESULT
  1227.     None
  1228.  
  1229.     BUGS
  1230.  
  1231.     SEE ALSO
  1232.     AllocRemember(), exec.library/FreeMem()
  1233.  
  1234. intuition.library/FreeSysRequest               intuition.library/FreeSysRequest
  1235.  
  1236.     NAME
  1237.     FreeSysRequest -- Frees resources used by a call to BuildSysRequest().
  1238.  
  1239.     SYNOPSIS
  1240.     FreeSysRequest(Window)
  1241.                A0
  1242.  
  1243.     struct Window *Window;
  1244.  
  1245.     FUNCTION
  1246.     This routine frees up all memory allocated by a successful call to
  1247.     the BuildSysRequest() procedure.  If BuildSysRequest() returned a
  1248.     pointer to a Window, then you are able to Wait() on the message port
  1249.     of that Window to detect an event which satisfies the Requester.
  1250.     When you want to remove the Requester, you call this procedure.  It
  1251.     ends the Requester and deallocates any memory used in the creation
  1252.     of the Requester.  It also closes the special window that was opened
  1253.     for your System Requester.
  1254.  
  1255.        NOTE:  if BuildSysRequest() did not return a pointer to a Window,
  1256.        you should not call FreeSysRequest()!
  1257.  
  1258.     INPUTS
  1259.     Window = value of the Window pointer returned by a successful call to
  1260.            the BuildSysRequest() procedure
  1261.  
  1262.     RESULT
  1263.     None
  1264.  
  1265.     BUGS
  1266.  
  1267.     SEE ALSO
  1268.     BuildSysRequest(), AutoRequest(), CloseWindow(), exec.library/Wait()
  1269.  
  1270. intuition.library/GetDefPrefs                     intuition.library/GetDefPrefs
  1271.  
  1272.     NAME
  1273.     GetDefPrefs  --  Get a copy of the the Intuition default Preferences.
  1274.  
  1275.     SYNOPSIS
  1276.     Prefs = GetDefPrefs(PrefBuffer, Size)
  1277.     D0            A0        D0
  1278.  
  1279.     struct Preferences *Prefs;
  1280.     struct Preferences *PrefBuffer;
  1281.     SHORT  Size;
  1282.  
  1283.     FUNCTION
  1284.     Gets a copy of the Intuition default preferences data.  Writes the
  1285.     data into the buffer you specify.  The number of bytes you want
  1286.     copied is specified by the Size argument.
  1287.  
  1288.     The default Preferences are those that Intuition uses when it
  1289.     is first opened.  If no preferences file is found, these are
  1290.     the preferences that are used.  These would also be the startup
  1291.     Preferences in an AmigaDOS-less environment.
  1292.    
  1293.     It is legal to take a partial copy of the Preferences structure.
  1294.     The more pertinent Preferences variables have been grouped near
  1295.     the top of the structure to facilitate the memory conservation
  1296.     that can be had by taking a copy of only some of the Preferences
  1297.     structure.
  1298.  
  1299.     INPUTS
  1300.     PrefBuffer = pointer to the memory buffer to receive your copy of the
  1301.                 Intuition Preferences
  1302.     Size = the number of bytes in your PrefBuffer, the number of bytes
  1303.           you want copied from the system's internal Preference settings
  1304.  
  1305.     RESULT
  1306.     Returns your parameter PrefBuffer.
  1307.  
  1308.     BUGS
  1309.  
  1310.     SEE ALSO
  1311.     GetPrefs()
  1312.  
  1313. intuition.library/GetPrefs                           intuition.library/GetPrefs
  1314.  
  1315.     NAME
  1316.     GetPrefs  --  Get the current setting of the Intuition Preferences.
  1317.  
  1318.     SYNOPSIS
  1319.     Prefs = GetPrefs(PrefBuffer, Size)
  1320.     D0         A0         D0
  1321.  
  1322.     struct Preferences *Prefs;
  1323.     struct Preferences *PrefBuffer;
  1324.  
  1325.     FUNCTION
  1326.     Gets a copy of the current Intuition Preferences data.  Writes the
  1327.     data into the buffer you specify.  The number of bytes you want
  1328.     copied is specified by the Size argument.
  1329.    
  1330.     It is legal to take a partial copy of the Preferences structure.
  1331.     The more pertinent Preferences variables have been grouped near
  1332.     the top of the structure to facilitate the memory conservation
  1333.     that can be had by taking a copy of only some of the Preferences
  1334.     structure.
  1335.  
  1336.     INPUTS
  1337.     PrefBuffer = pointer to the memory buffer to receive your copy of the
  1338.            Intuition Preferences
  1339.     Size = the number of bytes in your PrefBuffer, the number of bytes
  1340.            you want copied from the system's internal Preference settings
  1341.  
  1342.     RESULT
  1343.     Returns your parameter PrefBuffer.
  1344.  
  1345.     BUGS
  1346.  
  1347.     SEE ALSO
  1348.     GetDefPrefs(), SetPrefs()
  1349.  
  1350. intuition.library/GetScreenData                 intuition.library/GetScreenData
  1351.  
  1352.     NAME 
  1353.     GetScreenData -- Get copy of a screen data structure.
  1354.  
  1355.     SYNOPSIS 
  1356.        Success = GetScreenData(Buffer, Size, Type, Screen ) 
  1357.     D0            A0    D0    D1    A1
  1358.  
  1359.     BOOL   Success;
  1360.     CPTR   Buffer;
  1361.     USHORT Size;
  1362.     USHORT Type;
  1363.     struct Screen *Screen;
  1364.  
  1365.     FUNCTION 
  1366.     This function copies into the caller's buffer data from a Screen structure
  1367.     Typically, this call will be used to find the size, title bar height, and
  1368.     other values for a standard screen, such as the Workbench screen.
  1369.  
  1370.     To get the data for the Workbench screen, one would call:
  1371.         GetScreenData(buff, sizeof(struct Screen), WBENCHSCREEN, NULL)
  1372.  
  1373.     NOTE: if the requested standard screen is not open, this function
  1374.     will have the effect of opening it.
  1375.  
  1376.     INPUTS 
  1377.     Buffer = pointer to a buffer into which data can be copied
  1378.     Size   = the size of the buffer provided, in bytes
  1379.     Type   = the screen type, as specified in OpenWindow (WBENCHSCREEN,
  1380.         CUSTOMSCREEN, ...)
  1381.     Screen = ignored, unless type is CUSTOMSCREEN, which results only in
  1382.         copying 'size' bytes from 'screen' to 'buffer'
  1383.  
  1384.     RESULT 
  1385.     TRUE if successful
  1386.     FALSE if standard screen of Type 'type' could not be opened.
  1387.  
  1388.     BUGS 
  1389.  
  1390.     SEE ALSO 
  1391.     OpenWindow()
  1392.  
  1393. intuition.library/InitRequester                 intuition.library/InitRequester
  1394.  
  1395.     NAME
  1396.     InitRequester  --  initializes a Requester structure.
  1397.  
  1398.     SYNOPSIS
  1399.     InitRequester(Requester)
  1400.               A0
  1401.  
  1402.     struct Requester *Requester;
  1403.  
  1404.     FUNCTION
  1405.     Initializes a requester for general use.  After calling InitRequester,
  1406.     you need fill in only those Requester values that fit your needs.
  1407.     The other values are set to NULL--or zero--states.
  1408.  
  1409.     INPUTS
  1410.     Requester = a pointer to a Requester structure
  1411.  
  1412.     RESULT
  1413.     None
  1414.  
  1415.     BUGS
  1416.  
  1417.     SEE ALSO
  1418.     
  1419.  
  1420. intuition.library/IntuiTextLength             intuition.library/IntuiTextLength
  1421.  
  1422.     NAME
  1423.     IntuiTextLength  --  Returns the length (pixel-width) of an IntuiText.
  1424.  
  1425.     SYNOPSIS
  1426.     IntuiTextLength(IText)
  1427.             D0
  1428.  
  1429.     struct IntuiText *IText;
  1430.  
  1431.     FUNCTION
  1432.     This routine accepts a pointer to an instance of an IntuiText structure,
  1433.     and returns the length (the pixel-width) of the string which that
  1434.     instance of the structure represents.
  1435.  
  1436.     NOTE: if the Font pointer of your IntuiText structure is set to NULL,
  1437.     you'll get the pixel-width of your text in terms of the current system
  1438.     default font.  You may wish to be sure that the field IText->ITextFont
  1439.     for 'default font' text is equal to the Font field of the screen it is
  1440.     being measured for.
  1441.  
  1442.     INPUTS
  1443.     IText = pointer to an instance of an IntuiText structure
  1444.  
  1445.     RESULT
  1446.     Returns the pixel-width of the text specified by the IntuiText data
  1447.  
  1448.     BUGS
  1449.     Would do better to take a RastPort as argument, so that a NULL in
  1450.     the Font pointer would lead automatically to the font for the
  1451.     intended target RastPort.
  1452.  
  1453.     SEE ALSO
  1454.     OpenScreen()
  1455.  
  1456. intuition.library/ItemAddress                     intuition.library/ItemAddress
  1457.  
  1458.     NAME
  1459.     ItemAddress  --  Returns the address of the specified MenuItem.
  1460.  
  1461.     SYNOPSIS
  1462.     Item = ItemAddress(MenuStrip, MenuNumber)
  1463.     D0           A0          D0
  1464.  
  1465.     struct MenuItem *ItemAddress;
  1466.     struct Menu    *MenuStrip;
  1467.     USHORT MenuNumber;
  1468.  
  1469.     FUNCTION
  1470.     This routine feels through the specified MenuStrip and returns the 
  1471.     address of the Item specified by the MenuNumber.  Typically,
  1472.     you will use this routine to get the address of a MenuItem from
  1473.     a MenuNumber sent to you by Intuition after User has played with
  1474.     a Window's Menus.  
  1475.  
  1476.        This routine requires that the arguments are well-defined.
  1477.     MenuNumber may be equal to MENUNULL, in which case this routine returns
  1478.     NULL.  If MenuNumber doesn't equal MENUNULL, it's presumed to be a 
  1479.     valid Item number selector for your MenuStrip, which includes:
  1480.            - a valid Menu number
  1481.            - a valid Item Number
  1482.            - if the Item specified by the above two components has a
  1483.              SubItem, the MenuNumber may have a SubItem component too
  1484.  
  1485.     Note that there must be BOTH a Menu number and an Item number.  
  1486.     Because a SubItem specifier is optional, the address returned by
  1487.     this routine may point to either an Item or a SubItem.
  1488.  
  1489.     INPUTS
  1490.     MenuStrip = a pointer to the first Menu in your MenuStrip
  1491.     MenuNumber = the value which contains the packed data that selects
  1492.            the Menu and Item (and SubItem).  See the Intuition Reference
  1493.         Manual for information on Menu Numbers.
  1494.  
  1495.     RESULT
  1496.     If MenuNumber == MENUNULL, this routine returns NULL,
  1497.     else this routine returns the address of the MenuItem specified
  1498.     by MenuNumber.
  1499.  
  1500.     BUGS
  1501.  
  1502.     SEE ALSO
  1503.     The "Menus" chapter of the Intuition Reference Manual,
  1504.     for more information about "Menu Numbers."
  1505.  
  1506. intuition.library/LockIBase                         intuition.library/LockIBase
  1507.  
  1508.     NAME
  1509.     LockIBase -- Intuition user's access to Intuition Locking
  1510.  
  1511.     SYNOPSIS
  1512.     Lock = LockIBase(LockNumber)
  1513.     D0         D0
  1514.  
  1515.     ULONG Lock;
  1516.     ULONG LockNumber;
  1517.  
  1518.     FUNCTION
  1519.     
  1520.     Grabs Intuition internal semaphore so that caller may examine
  1521.     IntuitionBase safely.
  1522.  
  1523.     The idea here is that you can get the locks Intuition needs before
  1524.     such IntuitionBase fields as ActiveWindow and FirstScreen are
  1525.     changed, or linked lists of windows and screens, are changed.
  1526.  
  1527.     Do Not Get Tricky with this entry point, and do not hold these locks
  1528.     for long, as all Intuition input processing will wait for you to
  1529.     surrender the lock by a call to UnlockIBase().
  1530.  
  1531.     NOTE WELL: A call to this function MUST be paired with a subsequent
  1532.     call to UnlockIBase(), and soon, please.
  1533.  
  1534.     INPUTS
  1535.  
  1536.     A long unsigned integer, LockNumber, specifies which of Intuition's internal
  1537.     locks you want to get.  This parameter should be zero for all forseeable
  1538.     uses of this function, which will let you examine Active fields and linked
  1539.     lists of screens and windows with safety.
  1540.  
  1541.     RESULT
  1542.     
  1543.     Returns another ULONG which should be passed to UnlockIBase() to surrender
  1544.     the lock gotten by this call.
  1545.  
  1546.     BUGS
  1547.     This function should not be called while holding any other system locks
  1548.     such as Layer or LayerInfo locks.
  1549.  
  1550.     SEE ALSO
  1551.     UnlockIBase(), layers.library/LockLayerInfo, exec.library/ObtainSemaphore
  1552.  
  1553. intuition.library/MakeScreen                       intuition.library/MakeScreen
  1554.  
  1555.     NAME
  1556.     MakeScreen  --  Do an Intuition-integrated MakeVPort() of a custom screen
  1557.  
  1558.     SYNOPSIS
  1559.     MakeScreen(Screen)
  1560.            A0
  1561.  
  1562.     struct Screen *Screen;
  1563.  
  1564.     FUNCTION
  1565.     This procedure allows you to do a MakeVPort() for the ViewPort of your
  1566.     Custom Screen in an Intuition-integrated way.  This allows you to
  1567.     do your own Screen manipulations without worrying about interference
  1568.     with Intuition's usage of the same ViewPort.
  1569.  
  1570.     The operation of this function is as follows:
  1571.         - Block until the Intuition View is not in use.
  1572.         - Set the View Modes correctly to reflect if there is a (visible)
  1573.           interlaced screen.
  1574.         - call MakeVPort, passing the Intuition View and your Screen's
  1575.           ViewPort.
  1576.         - Unlocks the Intuition View.
  1577.  
  1578.     After calling this routine, you can call RethinkDisplay() to 
  1579.     incorporate the new ViewPort of your custom screen into the 
  1580.     Intuition display.
  1581.  
  1582.     INPUTS
  1583.     Screen = address of the Custom Screen structure
  1584.  
  1585.     RESULT
  1586.     None
  1587.  
  1588.     BUGS
  1589.  
  1590.     SEE ALSO
  1591.     RethinkDisplay(), RemakeDisplay(), graphics.library/MakeVPort()
  1592.  
  1593. intuition.library/ModifyIDCMP                     intuition.library/ModifyIDCMP
  1594.  
  1595.     NAME
  1596.     ModifyIDCMP  --  Modify the state of the Window's IDCMPFlags.
  1597.  
  1598.     SYNOPSIS
  1599.     ModifyIDCMP(Window, IDCMPFlags)
  1600.             A0        D0
  1601.  
  1602.     struct Window *Window;
  1603.     ULONG  IDCMPFlags;
  1604.  
  1605.     FUNCTION
  1606.     This routine modifies the state of your Window's IDCMP (Intuition Direct
  1607.     Communication Message Port).  The state is modified to reflect your
  1608.     desires as described by the flag bits in the value IDCMPFlags.
  1609.  
  1610.     The four actions that might be taken are:
  1611.  
  1612.        - if there is currently no IDCMP in the given Window, and IDCMPFlags
  1613.          is NULL, nothing happens
  1614.        - if there is currently no IDCMP in the given Window, and any of the
  1615.          IDCMPFlags is selected (set), then the IDCMP of the Window is
  1616.          created, including allocating and initializing the message ports
  1617.          and allocating a Signal bit for your Port.  See the "Input and
  1618.          Output Methods" chapter of the Intuition Reference Manual for full
  1619.       details
  1620.        - if the IDCMP for the given Window exists, and the 
  1621.          IDCMPFlags argument is NULL, this says that you want 
  1622.          Intuition to close the Ports, free the buffers and free 
  1623.          your Signal bit.  You MUST be the same Task that was active 
  1624.          when this Signal bit was allocated
  1625.        - if the IDCMP for the given Window is opened, and the IDCMPFlags
  1626.          argument is not NULL, this means that you want to change the 
  1627.          state of which events will be broadcast to you through the IDCMP
  1628.  
  1629.     NOTE:  You can set up the Window->UserPort to any Port of your own
  1630.     before you call ModifyIDCMP().  If IDCMPFlags is non-null but 
  1631.     your UserPort is already initialized, Intuition will assume that 
  1632.     it's a valid Port with Task and Signal data preset and Intuition 
  1633.     won't disturb your set-up at all, Intuition will just allocate 
  1634.     the Intuition Message Port half of it.  The converse is true 
  1635.     as well:  if UserPort is NULL when you call here with 
  1636.     IDCMPFlags == NULL, Intuition will deallocate only the Intuition
  1637.     side of the Port.  
  1638.  
  1639.     This allows you to use a Port that you already have allocated:  
  1640.        - OpenWindow() with IDCMPFlags equal to NULL (open no ports)
  1641.        - set the UserPort variable of your Window to any valid Port of your
  1642.          own choosing
  1643.        - call ModifyIDCMP with IDCMPFlags set to what you want
  1644.        - then, to clean up later, set UserPort equal to NULL before calling
  1645.          CloseWindow() (leave IDCMPFlags alone)  BUT FIRST: you must make
  1646.       sure that no messages sent your window are queued at the port,
  1647.       since they will be returned to the memory free pool.
  1648.  
  1649.     INPUTS
  1650.     Window = pointer to the Window structure containing the IDCMP Ports
  1651.     IDCMPFlags = the flag bits describing the new desired state of the IDCMP
  1652.  
  1653.     RESULT
  1654.     None
  1655.  
  1656.     BUGS
  1657.     Method for closing a window with a shared port needs to be better
  1658.     documented somewhere, or provided as an Intuition call, or both.
  1659.     At the present, the technique is available through developer support
  1660.     newsletters as a function called CloseWindowSafely().  See, for
  1661.     example, Amiga Mail, vol.2.
  1662.  
  1663.     SEE ALSO
  1664.     OpenWindow(), CloseWindow()
  1665.  
  1666. intuition.library/ModifyProp                       intuition.library/ModifyProp
  1667.  
  1668.     NAME
  1669.     ModifyProp  --  Modify the current parameters of a Proportional Gadget.
  1670.  
  1671.     SYNOPSIS
  1672.     ModifyProp(Gadget, Window, Requester, 
  1673.            A0       A1        A2
  1674.                    Flags, HorizPot, VertPot, HorizBody, VertBody)
  1675.             D0       D1         D2          D3     D4
  1676.  
  1677.     struct Gadget *Gadget;
  1678.     struct Window *Window;
  1679.     struct Requester *Requester;
  1680.     USHORT Flags;
  1681.     USHORT HorizPot, VertPot;
  1682.     USHORT HorizBody, VertBody;
  1683.  
  1684.     FUNCTION
  1685.     Modifies the parameters of the specified Proportional Gadget.  The 
  1686.     Gadget's internal state is then recalculated and the imagery 
  1687.     is redisplayed in the Window or Requester that contains the gadget.
  1688.  
  1689.     The Requester variable can point to a Requester structure.  If the 
  1690.     Gadget has the REQGADGET flag set, the Gadget is in a Requester 
  1691.     and the Window pointer must point to the window of the Requester.
  1692.     If this is not the Gadget of a Requester, the Requester argument may
  1693.     be NULL.
  1694.  
  1695.     NOTE: this function causes all gadgets from the proportional
  1696.     gadget to the end of the gadget list to be refreshed, for
  1697.     reasons of compatibility.
  1698.     For more refinded display updataing, use NewModifyProp
  1699.    
  1700.     INPUTS
  1701.     PropGadget = pointer to a Proportional Gadget
  1702.     Window = pointer to the window containing the gadget or the Window
  1703.         containing the Requester containing the Gadget.
  1704.     Requester = pointer to a Requester (may be NULL if this isn't 
  1705.         a Requester Gadget)
  1706.     Flags = value to be stored in the Flags variable of the PropInfo
  1707.     HorizPot = value to be stored in the HorizPot variable of the PropInfo
  1708.     VertPot = value to be stored in the VertPot variable of the PropInfo
  1709.     HorizBody = value to be stored in the HorizBody variable of the PropInfo
  1710.     VertBody = value to be stored in the VertBody variable of the PropInfo
  1711.  
  1712.     RESULT
  1713.     None
  1714.  
  1715.     BUGS
  1716.  
  1717.     SEE ALSO
  1718.     NewModifyProp()
  1719.     The Intuition Reference Manual contains more information on
  1720.     Proportional Gadgets.
  1721.  
  1722. intuition.library/MoveScreen                       intuition.library/MoveScreen
  1723.  
  1724.     NAME
  1725.     MoveScreen  --  attempts to move the Screen by increments provided.
  1726.  
  1727.     SYNOPSIS
  1728.     MoveScreen(Screen, DeltaX, DeltaY);
  1729.            A0       D0       D1
  1730.  
  1731.     struct Screen *Screen;
  1732.     SHORT  DeltaX, DeltaY;
  1733.  
  1734.     FUNCTION
  1735.     Moves the screen the specified increment.
  1736.  
  1737.     Currently, only the DeltaY coordinate is significant; you should
  1738.     pass zero for DeltaX.
  1739.     
  1740.     Screens are constrained now only by the top and bottom of the
  1741.     Intuition View, which is not guaranteed to be the same in all
  1742.     versions of the software.
  1743.  
  1744.        If the DeltaX and DeltaY variables you specify would move the Screen
  1745.        in a way that violates any restrictions, the Screen will be moved
  1746.        as far as possible.  You may examine the LeftEdge and TopEdge fields
  1747.     of the Screen Structure to see where the screen really ended up.
  1748.  
  1749.     In operation, this function determines what the actual increments
  1750.     that are actually to be used, sets these values up, and calls 
  1751.     RethinkDisplay().
  1752.  
  1753.     INPUTS
  1754.     Screen = pointer to a Screen structure
  1755.     DeltaX = amount to move the screen on the x-axis
  1756.         Note that DeltaX should be set to zero.
  1757.     DeltaY = amount to move the screen on the y-axis
  1758.  
  1759.     RESULT
  1760.     None
  1761.  
  1762.     BUGS
  1763.  
  1764.     SEE ALSO
  1765.     RethinkDisplay()
  1766.  
  1767. intuition.library/MoveWindow                       intuition.library/MoveWindow
  1768.  
  1769.     NAME
  1770.     MoveWindow  --  Ask Intuition to move a Window.
  1771.  
  1772.     SYNOPSIS
  1773.     MoveWindow(Window, DeltaX, DeltaY)
  1774.            A0       D0       D1
  1775.  
  1776.     struct Window *Window;
  1777.     SHORT  DeltaX, DeltaY;
  1778.  
  1779.     FUNCTION
  1780.     This routine sends a request to Intuition asking to move the Window 
  1781.     the specified distance.  The delta arguments describe how far to 
  1782.     move the Window along the respective axes.  
  1783.  
  1784.     Note that the Window will not be moved immediately, but rather 
  1785.     will be moved the next time Intuition receives an input event, 
  1786.     which happens currently at a minimum rate of ten times per second,
  1787.     and a maximum of sixty times a second.  
  1788.  
  1789.     This routine does no error-checking.  If your delta values specify 
  1790.     some far corner of the Universe, Intuition will attempt to move 
  1791.     your Window to the far corners of the Universe.  Because of the
  1792.     distortions in the space-time continuum that can result from this,
  1793.     as predicted by special relativity, the result is generally not
  1794.     a pretty sight.  
  1795.  
  1796.     You are thus advised to consider the dimensions of your Window's screen
  1797.     and the current position of your window before calling this function.
  1798.  
  1799.     INPUTS
  1800.     Window = pointer to the structure of the Window to be moved
  1801.     DeltaX = signed value describing how far to move the Window on the x-axis
  1802.     DeltaY = signed value describing how far to move the Window on the y-axis
  1803.  
  1804.     RESULT
  1805.     None
  1806.  
  1807.     BUGS
  1808.  
  1809.     SEE ALSO
  1810.     SizeWindow(), WindowToFront(), WindowToBack()
  1811.  
  1812. intuition.library/NewModifyProp                 intuition.library/NewModifyProp
  1813.  
  1814.     NAME
  1815.     NewModifyProp  --  ModifyProp, but with Selective Refresh
  1816.  
  1817.     SYNOPSIS
  1818.     NewModifyProp(Gadget, Window, Requester, Flags
  1819.               A0       A1        A2     D0
  1820.                    HorizPot, VertPot, HorizBody, VertBody, NumGad)
  1821.             D1         D2           D3      D4        D5
  1822.  
  1823.     struct Gadget *Gadget;
  1824.     struct Window *Window;
  1825.     struct Requester *Requester;
  1826.     USHORT Flags;
  1827.     USHORT HorizPot, VertPot;
  1828.     USHORT HorizBody, VertBody;
  1829.     int    NumGad;
  1830.  
  1831.     FUNCTION
  1832.     Performs the function of ModifyProp(), but refreshes
  1833.     gadgets following Gadget in the list as specified by
  1834.     the NumGad parameter.  With NumGad = -1, this function
  1835.     is identical to ModifyProp().
  1836.    
  1837.     INPUTS
  1838.     PropGadget = pointer to a Proportional Gadget
  1839.     Window = pointer to the window containing the gadget or the Window
  1840.         containing the Requester containing the Gadget.
  1841.     Requester = pointer to a Requester (may be NULL if this isn't 
  1842.         a Requester Gadget)
  1843.     Flags = value to be stored in the Flags variable of the PropInfo
  1844.     HorizPot = value to be stored in the HorizPot variable of the PropInfo
  1845.     VertPot = value to be stored in the VertPot variable of the PropInfo
  1846.     HorizBody = value to be stored in the HorizBody variable of the PropInfo
  1847.     VertBody = value to be stored in the VertBody variable of the PropInfo
  1848.     NumGad = number of gadgets to be refreshed after propgadget internals
  1849.         have been adjusted.  -1 means "to end of list."
  1850.          
  1851.     RESULT
  1852.     None
  1853.  
  1854.     BUGS
  1855.  
  1856.     SEE ALSO 
  1857.     ModifyProp()
  1858.     The Intuition Reference Manual contains more information on Proportional
  1859.     Gadgets.
  1860.  
  1861. intuition.library/OffGadget                         intuition.library/OffGadget
  1862.  
  1863.     NAME
  1864.     OffGadget  --  disables the specified Gadget.
  1865.  
  1866.     SYNOPSIS
  1867.     OffGadget(Gadget, Window, Requester)
  1868.           A0      A1       A2
  1869.  
  1870.     struct Gadget *Gadget;
  1871.     struct Window *Window;
  1872.     struct Requester *Requester;
  1873.  
  1874.     FUNCTION
  1875.     This command disables the specified Gadget.  When a Gadget is
  1876.     disabled, these things happen:
  1877.          - its imagery is displayed ghosted
  1878.          - the GADGDISABLED flag is set
  1879.          - the Gadget cannot be selected by User
  1880.  
  1881.     The Window parameter must point to the window which contains the Gadget,
  1882.     or which contains the Requester that contains the Gadget
  1883.     The Requester parameter must only be valid if the Gadget has the
  1884.     REQGADGET flag set, a requirement for all Requester Gadgets.
  1885.  
  1886.        NOTE:  it's never safe to tinker with the Gadget list yourself.  Don't
  1887.        supply some Gadget that Intuition hasn't already processed in
  1888.        the usual way.
  1889.  
  1890.         NOTE: for compatibility reasons, this function will refresh all
  1891.     gadgets in a requester, and all gadgets from Gadget to the 
  1892.     end of the gadget list if Gadget is in a window.
  1893.  
  1894.     INPUTS
  1895.     Gadget = pointer to the Gadget that you want disabled
  1896.     Window = pointer to a Window structure containing the Gadget or
  1897.         containing the Requester which contains the Gadget
  1898.     Requester = pointer to a Requester (may by NULL if this isn't 
  1899.            a Requester Gadget (i.e. REQGADGET is not set)).
  1900.  
  1901.     RESULT
  1902.     None
  1903.  
  1904.     BUGS
  1905.  
  1906.     SEE ALSO
  1907.     AddGadget(), RefreshGadgets()
  1908.  
  1909. intuition.library/OffMenu                             intuition.library/OffMenu
  1910.  
  1911.     NAME
  1912.     OffMenu  --  disables the given menu or menu item.
  1913.  
  1914.     SYNOPSIS
  1915.     OffMenu(Window, MenuNumber)
  1916.         A0    D0
  1917.  
  1918.     struct Window *Window;
  1919.     USHORT MenuNumber;
  1920.  
  1921.     FUNCTION
  1922.     This command disables a sub-item, an item, or a whole menu.
  1923.     This depends on the contents of the data packed into MenuNumber,
  1924.     which is described in the Intuition Reference Manual.
  1925.  
  1926.     INPUTS
  1927.     Window = pointer to the window
  1928.     MenuNumber = the menu piece to be disabled
  1929.  
  1930.     RESULT
  1931.     None
  1932.  
  1933.     BUGS
  1934.  
  1935.     SEE ALSO
  1936.     
  1937.  
  1938. intuition.library/OnGadget                           intuition.library/OnGadget
  1939.  
  1940.     NAME
  1941.     OnGadget  --  enables the specified Gadget.
  1942.  
  1943.     SYNOPSIS
  1944.     OnGadget(Gadget, Window, Requester)
  1945.          A0     A1     A2
  1946.  
  1947.     struct Gadget *Gadget;
  1948.     struct Window *Window;
  1949.     struct Requester *Requester;
  1950.  
  1951.     FUNCTION
  1952.     This command enables the specified Gadget.  When a Gadget is
  1953.     enabled, these things happen:
  1954.         - its imagery is displayed normally (not ghosted)
  1955.         - the GADGDISABLED flag is cleared
  1956.         - the Gadget can thereafter be selected by the user
  1957.  
  1958.     The Window parameter must point to the window which contains the Gadget,
  1959.     or which contains the Requester that contains the Gadget
  1960.     The Requester parameter must only be valid if the Gadget has the
  1961.     REQGADGET flag set, a requirement for all Requester Gadgets.
  1962.  
  1963.         NOTE:  it's never safe to tinker with the Gadget list yourself.  Don't
  1964.         supply some Gadget that Intuition hasn't already processed in
  1965.         the usual way.
  1966.  
  1967.         NOTE: for compatibility reasons, this function will refresh all
  1968.     gadgets in a requester, and all gadgets from Gadget to the 
  1969.     end of the gadget list if Gadget is in a window.
  1970.  
  1971.     INPUTS
  1972.     Gadget = pointer to the Gadget that you want disabled
  1973.     Window = pointer to a Window structure containing the Gadget or
  1974.         containing the Requester which contains the Gadget
  1975.     Requester = pointer to a Requester (may by NULL if this isn't 
  1976.            a Requester Gadget (i.e. REQGADGET is not set)).
  1977.  
  1978.     RESULT
  1979.     None
  1980.  
  1981.     BUGS
  1982.  
  1983.     SEE ALSO
  1984.     
  1985.  
  1986. intuition.library/OnMenu                               intuition.library/OnMenu
  1987.  
  1988.     NAME
  1989.     OnMenu  --  disables the given menu or menu item.
  1990.  
  1991.     SYNOPSIS
  1992.     OnMenu(Window, MenuNumber)
  1993.           A0       D0
  1994.  
  1995.     struct Window *Window;
  1996.     USHORT MenuNumber;
  1997.  
  1998.     FUNCTION
  1999.     This command enables a sub-item, an item, or a whole menu.
  2000.     This depends on the contents of the data packed into MenuNumber,
  2001.     which is described in the Intuition Reference Manual.
  2002.  
  2003.     INPUTS
  2004.     Window = pointer to the window
  2005.     MenuNumber = the menu piece to be enables
  2006.  
  2007.     RESULT
  2008.     None
  2009.  
  2010.     BUGS
  2011.  
  2012.     SEE ALSO
  2013.     
  2014.  
  2015. intuition.library/OpenScreen                       intuition.library/OpenScreen
  2016.  
  2017.     NAME
  2018.     OpenScreen  --  Open an Intuition Screen.
  2019.  
  2020.     SYNOPSIS
  2021.     Screen = OpenScreen(NewScreen)
  2022.     D0            A0
  2023.  
  2024.     struct Screen *Screen;
  2025.     struct NewScreen *NewScreen;
  2026.  
  2027.     FUNCTION
  2028.     Opens an Intuition Screen according to the specified parameters
  2029.     found in the NewScreen structure.
  2030.  
  2031.     Does all the allocations, sets up the Screen structure and all
  2032.     substructures completely, and links this Screen's ViewPort into 
  2033.     Intuition's View structure.
  2034.  
  2035.     Before you call OpenScreen(), you must initialize an instance of
  2036.     a NewScreen structure.  NewScreen is a structure that contains
  2037.     all of the arguments needed to open a Screen.  The NewScreen
  2038.     structure may be discarded immediately after OpenScreen() returns.
  2039.  
  2040.     The SHOWTITLE flag is set to TRUE by default when a Screen is opened.
  2041.     To change this, you must call the routine ShowTitle().
  2042.  
  2043.     INPUTS
  2044.     NewScreen = pointer to an instance of a NewScreen structure.
  2045.     That structure is initialized with the following information:
  2046.     --------------------------------------------------------------------------
  2047.     Left = initial x-position of your Screen (should be zero currently)
  2048.     Top = initial y-position of the opening Screen
  2049.     Width = the width for this Screen's RastPort. 
  2050.     Height = the height for his Screen's RastPort, or the constant
  2051.          STDSCREENHEIGHT to get current local maximum (at this time
  2052.          guaranteed to be at least 200).  The actual height the screen
  2053.          opended to can be found in the returned Screen structure.
  2054.     The "normal" width and height for a particular system is stored by
  2055.     the graphics.library in GfxBase->NormalDisplayRows and
  2056.     GfxBase->NormalDisplayColumns.  These values will be different
  2057.     depending on factors such as PAL video and overscan.
  2058.  
  2059.     Depth = number of BitPlanes
  2060.     DetailPen = pen number for details (like gadgets or text in title bar)
  2061.     BlockPen = pen number for block fills (like title bar)
  2062.     Type = Screen type 
  2063.         Set these flag bits as desired from the set:
  2064.         CUSTOMSCREEN -- this is your own Screen, not a System screen.
  2065.         CUSTOMBITMAP -- this custom screen has bit maps supplied
  2066.         in the BitMap field of the NewScreen structure.  Intuition is
  2067.         not to allocate any Raster BitMaps.
  2068.         SCREENBEHIND -- your screen will be created behind all other open
  2069.         screens.  This allows a program to prepare imagery in the
  2070.         screen, change it's colors, and so on, bringing it to the front
  2071.         when it is presentable. 
  2072.         SCREENQUIET -- Intuition will not render system screen gadgets or
  2073.         screen title.  In concert with the RMBTRAP flag on all your
  2074.         screen's windows, this flag will prevent Intuition from rendering
  2075.         into your screen's bitplanes.  Without RMBTRAP (or using MENUVERIFY
  2076.         IDCMP facility to cancel menu operations), this flag will
  2077.         prevent Intuition from clearing your menu bar, which is probably
  2078.         unacceptable.  The title bar layer may still overwrite your
  2079.         bitmap on open.
  2080.     ViewModes = the appropriate argument for the data type ViewPort.Modes.
  2081.                these might include:
  2082.                       HIRES for this screen to be HIRES width.
  2083.                       INTERLACE for the display to switch to interlace.
  2084.                       SPRITES for this Screen to use sprites (pointer comes anyway).
  2085.                       DUALPF for dual-playfield mode (not supported yet)
  2086.     Font = pointer to the default TextAttr structure for text in this Screen
  2087.         and all Windows that open in this Screen.  Text that uses this TextAttr
  2088.         includes title bars of both Screen and Windows, String Gadgets, and
  2089.         Menu titles.  Of course, IntuiText that specifies a NULL TextAttr field
  2090.         will use the Screen/Window default Fonts.
  2091.     DefaultTitle = pointer to a line of text that will be displayed along the
  2092.           Screen's Title Bar.  Null terminated, or just a NULL pointer
  2093.           to get no text
  2094.     Gadgets = This field should be set to NULL, since no user Gadgets may
  2095.        be attached to a Screen.
  2096.     CustomBitMap = if you're not supplying a custom BitMap, this value is 
  2097.           ignored.  However, if you have your own display memory that you
  2098.           want used for this Screen, the CustomBitMap argument should
  2099.           point to the BitMap that describes your display memory.  See the
  2100.           "Screens" chapter and the "Amiga ROM Kernel Manual" for more 
  2101.           information about BitMaps.
  2102.  
  2103.     RESULT
  2104.     If all is well, returns the pointer to your new Screen
  2105.     If anything goes wrong, returns NULL
  2106.  
  2107.     NOTE
  2108.     By default AmigaDOS requesters related to your Process are put on
  2109.     the workbench screen (these are messages like "Disk Full").  If
  2110.     you wish them to show up on custom screens, DOS must be told.
  2111.     This fragment shows the procedure.  More information is availble
  2112.     in the AmigaDOS books.  Sample code fragment:
  2113.  
  2114.     ----------- cut here ----------
  2115.     #include "libraries/dosextens.h"
  2116.             ...
  2117.     struct Process *process;
  2118.     struct Window  *window;
  2119.     APTR           temp;
  2120.             ...
  2121.         process=(struct Process *)FindTask(0L);
  2122.         temp=process->pr_WindowPtr;         /* save old value */
  2123.         process->pr_WindowPtr=(APTR)window;
  2124.         /* set a pointer to any open window on your screen */
  2125.             ...
  2126.             your code goes here
  2127.             ...
  2128.         process->pr_WindowPtr=temp;
  2129.         /* restore value _before_ CloseWindow */
  2130.         CloseWindow(window);
  2131.     ------- cut here ------
  2132.  
  2133.     BUGS
  2134.  
  2135.     SEE ALSO
  2136.     OpenWindow(), PrintIText(), CloseScreen(), The Intuition Reference Manual
  2137.  
  2138. intuition.library/OpenWindow                    intuition.library/OpenWindow
  2139.  
  2140. NAME
  2141.    OpenWindow  --  Opens an Intuition Window
  2142.  
  2143. SYNOPSIS
  2144.    OpenWindow(NewWindow);
  2145.    where the NewWindow structure is initialized with:
  2146.        Left, Top, Width, Height, DetailPen, BlockPen, Flags, 
  2147.        IDCMPFlags, Gadgets, CheckMark, Text, Type, Screen, BitMap,
  2148.        MinWidth, MinHeight, MaxWidth, MaxHeight
  2149.  
  2150. FUNCTION
  2151.    Opens an Intuition window of the given height, width and depth, including
  2152.    the specified system Gadgets as well as any of your own.  Allocates
  2153.    everything you need to get going.
  2154.  
  2155.    Before you call OpenWindow(), you must initialize an instance of
  2156.    a NewWindow structure.  NewWindow is a structure that contains
  2157.    all of the arguments needed to open a Window.  The NewWindow
  2158.    structure may be discarded immediately after it is used to open 
  2159.    the Window.
  2160.  
  2161.    If Type == CUSTOMSCREEN, you must have opened your own Screen
  2162.    already via a call to OpenScreen().  Then Intuition uses your screen
  2163.    argument for the pertinent information needed to get your Window
  2164.    going.  On the other hand, if type == one of the Intuition's standard
  2165.    Screens, your screen argument is ignored.  Instead, 
  2166.    Intuition will check to see whether or not that Screen
  2167.    already exists:  if it doesn't, it will be opened first before
  2168.    Intuition opens your window in the Standard Screen.
  2169.    If the flag SUPER_BITMAP is set, the bitmap variable must point to
  2170.    your own BitMap.
  2171.    The DetailPen and the BlockPen are used for system rendering; for
  2172.    instance, the Title bar is first filled using the BlockPen, and then
  2173.    the Gadgets and text are rendered using DetailPen.  You can either
  2174.    choose to supply special pens for your Window, or, by setting either
  2175.    of these arguments to -1, the Screen's Pens will be used instead.
  2176.  
  2177. INPUTS
  2178.    NewWindow = pointer to an instance of a NewWindow structure.  That
  2179.                structure is initialized with the following data:
  2180.    -------------------------------------------------------------------------
  2181.    Left = the initial x-position for your window
  2182.    Top = the initial y-position for your window
  2183.    Width = the initial width of this window
  2184.    Height = the initial height of this window
  2185.    DetailPen = pen number (or -1) for the rendering of Window details
  2186.          (like gadgets or text in title bar)
  2187.    BlockPen = pen number (or -1) for Window block fills (like Title Bar)
  2188.    Flags = specifiers for your requirements of this window, including:
  2189.                - which system Gadgets you want attached to your window:
  2190.                    - WINDOWDRAG allows this Window to be dragged
  2191.                    - WINDOWDEPTH lets the user depth-arrange this Window
  2192.                    - WINDOWCLOSE attaches the standard Close Gadget
  2193.                    - WINDOWSIZING allows this Window to be sized.  If you ask
  2194.                      the WINDOWSIZING Gadget, you must specify one or both
  2195.                      of the flags SIZEBRIGHT and SIZEBBOTTOM below; if you
  2196.                      don't, the default is SIZEBRIGHT.  See the
  2197.                      following items SIZEBRIGHT and SIZEBBOTTOM for extra
  2198.                      information.
  2199.                    - SIZEBRIGHT is a special system Gadget flag that
  2200.                      you set to specify whether or not you want the
  2201.                      RIGHT Border adjusted to account for the physical size 
  2202.                      of the Sizing Gadget.  The Sizing Gadget must, after
  2203.                      all, take up room in either the right or bottom border
  2204.                      (or both, if you like) of the Window.  Setting either
  2205.                      this or the SIZEBBOTTOM flag selects which edge 
  2206.                      will take up the slack.  This will be particularly
  2207.                      useful to applications that want to use the extra space
  2208.                      for other Gadgets (like a Proportional Gadget and two
  2209.                      Booleans done up to look like scroll bars) or, for
  2210.                      for instance, applications that want every possible
  2211.                      horizontal bit and are willing to lose lines vertically.
  2212.                      NOTE:  if you select WINDOWSIZING, you must select 
  2213.                      either SIZEBRIGHT or SIZEBBOTTOM or both.  If you select
  2214.                      neither, the default is SIZEBRIGHT.
  2215.                    - SIZEBBOTTOM is a special system Gadget flag that
  2216.                      you set to specify whether or not you want the
  2217.                      BOTTOM Border adjusted to account for the physical size 
  2218.                      of the Sizing Gadget.  For details, refer to
  2219.                      SIZEBRIGHT above.
  2220.                      NOTE:  if you select WINDOWSIZING, you must select 
  2221.                      either SIZEBRIGHT or SIZEBBOTTOM or both.  If you select
  2222.                      neither, the default is SIZEBRIGHT.
  2223.                - GIMMEZEROZERO for easy but expensive output
  2224.                - what type of window raster you want, either:
  2225.                    - SIMPLE_REFRESH
  2226.                    - SMART_REFRESH
  2227.                    - SUPER_BITMAP
  2228.          If the type is SMART_REFRESH, and you do not handle
  2229.          REFRESHWINDOW type messages, also set the NOCAREREFRESH
  2230.          flag.
  2231.                - BACKDROP for whether or not you want this window to be one
  2232.                  of Intuition's special backdrop windows.  See BORDERLESS
  2233.                  as well.
  2234.                - REPORTMOUSE for whether or not you want to "listen" to
  2235.                  mouse movement events whenever your Window is the active
  2236.                  one.  After you've opened your Window, if you want to change
  2237.                  you can later change the status of this via a call to
  2238.                  ReportMouse().  Whether or not your Window is listening to
  2239.                  Mouse is affected by Gadgets too, since they can cause
  2240.                  you to start getting reports too if you like.
  2241.                  The mouse move reports (either InputEvents or messages on
  2242.                  the IDCMP) that you get will have the x/y coordinates of the
  2243.                  current mouse position, relative to the upper-left corner
  2244.                  of your Window (GIMMEZEROZERO notwithstanding).
  2245.                  This flag can work in conjunction with the IDCMP Flag 
  2246.                  called MOUSEMOVE, which allows you to listen via the
  2247.                  IDCMP.
  2248.                - BORDERLESS should be set if you want a Window with no
  2249.                  Border padding.  Your Window may have the Border variables
  2250.                  set anyway, depending on what Gadgetry you've requested for
  2251.                  the Window, but you won't get the standard border lines and
  2252.                  spacing that comes with typical Windows.  
  2253.                  This is a good way to take over the entire Screen, since you
  2254.                  can have a Window cover the entire width of the Screen using
  2255.                  this flag.  This will work particularly well in
  2256.                  conjunction with the BACKDROP flag (see above), since it
  2257.                  allows you to open a Window that fills the ENTIRE Screen.
  2258.                  NOTE:  this is not a flag that you want to set casually,
  2259.                  since it may cause visual confusion on the Screen.  The
  2260.                  Window borders are the only dependable visual division
  2261.                  between various Windows and the background Screen.  Taking 
  2262.                  away that Border takes away that visual cue, so make sure
  2263.                  that your design doesn't need it at all before you
  2264.                  proceed.
  2265.                - ACTIVATE is the flag you set if you want this
  2266.                  Window to automatically become the active Window.  
  2267.                  The active Window is the one that receives input from
  2268.                  the keyboard and mouse.  It's usually a good idea to
  2269.                  to have the Window you open when your application 
  2270.                  first starts up be an ACTIVATED one, but all others
  2271.                  opened later not be ACTIVATED (if the user is off 
  2272.                  doing something with another Screen, for instance, your
  2273.                  new Window will change where the input is going, which
  2274.                  would have the effect of yanking the input rug from
  2275.                  under the user).  Please use this flag thoughtfully and 
  2276.                  carefully.
  2277.                - RMBTRAP, when set, causes the right mouse button events 
  2278.                  to be trapped and broadcast as events.  You can receive 
  2279.                  these events through either the IDCMP or the Console.
  2280.    IDCMPFlags = IDCMP is the acronym for Intuition Direct Communications
  2281.          Message Port.  It's Intuition's sole acronym, given in honor of
  2282.          all hack-heads who love to mangle our brains with maniacal names,
  2283.          and fashioned especially cryptic and unpronounceable to make them
  2284.          squirm with sardonic delight.  Here's to you, my chums.  Meanwhile,
  2285.          I still opt (and argue) for simplicity and elegance.
  2286.              If any of the IDCMP Flags is selected, Intuition will create 
  2287.          a pair of messageports and use them for direct communications with 
  2288.          the Task opening this Window (as compared with broadcasting 
  2289.          information via the Console Device).  See the "Input and Output
  2290.          Methods" chapter of the intuition manual for complete details.  
  2291.              You request an IDCMP by setting any of these flags.  Except 
  2292.          for the special VERIFY flags, every other flag you set 
  2293.          tells me that if a given event occurs which your
  2294.          program wants to know about, I'm to broadcast the details
  2295.          of that event through the IDCMP rather than via the Console device.
  2296.          device.  This allows a program to interface with Intuition 
  2297.          directly, rather than going through the Console device.  
  2298.              Remember, if you are going to open both an IDCMP and 
  2299.          a Console, it will be far better to get most of the event 
  2300.          messages via the Console.  Reserve your usage of the IDCMP 
  2301.          for special performance cases; that is, when you aren't going
  2302.          to open a Console for your Window and you do want to learn
  2303.          about a certain set of events (for instance, CLOSEWINDOW); another
  2304.          example would be SIZEVERIFY, which is a function that you get
  2305.          ONLY through the use of the IDCMP (because the Console doesn't
  2306.          give you any way to talk to Intuition directly).  
  2307.              On the other hand, if the IDCMPFlags argument is equal to 
  2308.          zero, no IDCMP is created and the only way you can learn about any
  2309.          Window event for this Window is via a Console opened for 
  2310.          this Window.  And you have no way to SIZEVERIFY.
  2311.              If you want to change the state of the IDCMP some time after
  2312.          you've opened the Window (including opening or closing the IDCMP)
  2313.          you call the routine ModifyIDCMP().
  2314.              The flags you can set are:
  2315.                  - REQVERIFY is the flag which, like SIZEVERIFY and(see 
  2316.                    MENUVERIFY (see immediately below), specifies that you 
  2317.                    want to make sure that your graphical state is quiescent 
  2318.                    before something extraordinary happens.  In this 
  2319.                    case, the extraordinary event is that a rectangle of 
  2320.                    graphical data is about to be blasted into your Window.  
  2321.                    If you're drawing into that Window, you probably will 
  2322.                    wish to make sure that you've ceased drawing before 
  2323.                    the user is allowed to bring up the DMRequest you've set 
  2324.                    up, and the same for when system has a request for the 
  2325.                    user.  Set this flag to ask for that verification step.
  2326.                  - REQCLEAR is the flag you set to hear about it when the
  2327.                    last Requester is cleared from your Window and 
  2328.                    it's safe for you to start output again (presuming you're
  2329.                    using REQVERIFY)
  2330.                  - REQSET is a flag that you set to receive a broadcast
  2331.                    when the first Requester is opened in your Window.  
  2332.                    Compare this with REQCLEAR above.  This function is
  2333.                    distinct from REQVERIFY.  This functions merely tells you
  2334.                    that a Requester has opened, whereas REQVERIFY requires
  2335.                    you to respond before the Requester is opened. 
  2336.                  - MENUVERIFY is the flag you set to have Intuition stop
  2337.                    and wait for you to finish all graphical output to your
  2338.                    Window before rendering the menus.  Menus are currently
  2339.                    rendered in the most memory-efficient way, which 
  2340.                    involves interrupting output to all Windows in the
  2341.                    Screen before the Menus are drawn.  If you need to
  2342.                    finish your graphical output before this happens,
  2343.                    you can set this flag to make sure that you do.
  2344.                  - SIZEVERIFY means that you will be doing output to your 
  2345.                    Window which depends on a knowledge of the current size
  2346.                    of the Window.  If the user wants to resize the 
  2347.                    Window,  you may want to make sure that any queued 
  2348.                    output completes before the sizing takes place 
  2349.                    (critical Text, for instance).  If this is the case, 
  2350.                    set this flag.   Then, when the user wants to size, 
  2351.                    Intuition will send you the SIZEVERIFY message and 
  2352.                    Wait() until you reply that it's OK to proceed with 
  2353.                    the sizing. NOTE:  when I say that Intuition will 
  2354.                    Wait() until you reply, what I'm really saying is 
  2355.                    that User will WAIT until you reply, which suffers the 
  2356.                    great negative potential of User-Unfriendliness.  So 
  2357.                    remember:  use this flag sparingly, and, as always 
  2358.                    with any IDCMP Message you receive, Reply to it 
  2359.                    promptly!  Then, after User has sized the Window, you 
  2360.                    can find out about it using NEWSIZE:  
  2361.  
  2362.  
  2363.            With all of the "VERIFY" functions, it is not safe
  2364.            to leve them enabled at any time when you task may
  2365.            not be able to respond for a long period.
  2366.  
  2367.            It is NEVER safe to call AmigaDOS, directly or
  2368.            indirectly, when a "VERIFY" function is active.
  2369.            If AmigaDOS needs to put up a disk requester for you,
  2370.            your task might end up waiting for the requester
  2371.            to be satisfied, at the same time as Intuition is
  2372.            waiting for your response.  The result is a complete
  2373.            machine lockup.  USE ModifyIDCMP TO TURN OFF ANY VERIFY
  2374.            MESSAGES BEFORE CALLING AmigaDOS!!!
  2375.  
  2376.  
  2377.                  - NEWSIZE is the flag that tells Intuition to send an IDCMP
  2378.                    Message to you after the user has resized your Window.
  2379.                    At this point, you could examine the size variables 
  2380.                    in your Window structure to discover the new size 
  2381.                    of the Window
  2382.                  - REFRESHWINDOW when set will cause a Message to be sent
  2383.                    whenever your Window needs refreshing.  This flag makes
  2384.                    sense only with SIMPLE_REFRESH and SMART_REFRESH Windows.
  2385.                  - MOUSEBUTTONS will get reports about Mouse-button 
  2386.                    Up/Down events broadcast to you (Note:  only the 
  2387.                    ones that don't mean something to Intuition.  If 
  2388.                    the user clicks the Select button over a Gadget, 
  2389.                    Intuition deals with it and you don't find out 
  2390.                    about it through here). 
  2391.                  - MOUSEMOVE will work only if you've set the flag
  2392.                    REPORTMOUSE above, or if one of your Gadgets has the
  2393.                    flag FOLLOWMOUSE set.  Then all mouse movements will be
  2394.                    reported here.
  2395.                  - GADGETDOWN means that when the User "selects" a Gadget
  2396.                    you've created with the GADGIMMEDIATE flag set, the fact
  2397.                    will be broadcast through the IDCMP.
  2398.                  - GADGETUP means that when the User "releases" a Gadget that
  2399.                    you've created with the RELVERIFY flag set, the fact
  2400.                    will be broadcast through the IDCMP.
  2401.                  - MENUPICK selects that MenuNumber data will come this way
  2402.                  - CLOSEWINDOW means broadcast the CLOSEWINDOW event through
  2403.                    the IDCMP rather than the Console
  2404.                  - RAWKEY selects that all RAWKEY events are transmitted via
  2405.                    the IDCMP.  Note that these are absolutely RAW keycodes,
  2406.                    which you will have to massage before using.  Setting this
  2407.                    and the MOUSE flags effectively eliminates the need to
  2408.                    open a Console Device to get input from the keyboard and
  2409.                    mouse.  Of course, in exchange you lose all of the Console
  2410.                    features, most notably the "cooking" of input data and
  2411.                    the systematic output of text to your Window.
  2412.  
  2413.          - VANILLAKEY is for developers who don't want the hassle
  2414.            of RAWKEYS.  This flag will return all the keycodes
  2415.            after translation via the current country-dependant keymap.
  2416.            When you set this flag, you will get IntuiMessages where the
  2417.            Code field has a decoded ASCII character representing the key
  2418.                    struck on the keyboard.  Only codes that map to one character
  2419.                    are returned, you can't read such keys as HELP or the Function
  2420.                    keys with VANILLAKEY.
  2421.  
  2422.          - INTUITICKS gives you simple timer events from Intuition when
  2423.            your window is the active one; it may help you avoid opening
  2424.            and managing the timer device.  With this flag set, you will
  2425.            get only one queued-up INTUITICKS message at a time.  If
  2426.            Intuition notices that you've been sent an INTUITICKS message
  2427.                    and haven't replied to it, another message will not be sent.
  2428.                    Intuition receives timer events ten times a second
  2429.             (approximately).
  2430.  
  2431.          - DELTAMOVE gives raw (unscaled) input event delta X/Y values.
  2432.            This is so you can detect mouse motion regardless of
  2433.            screen/window/display boundaries. Note that MOUSEBUTTONS
  2434.            messages will also be affected.
  2435.  
  2436.          - NEWPREFS indicates you wish to be notified when the system-
  2437.            wide preferences changes.
  2438.  
  2439.          - Set ACTIVEWINDOW and INACTIVEWINDOW to get messages when those
  2440.            events happen to your window.  Take care not to confuse this
  2441.            "ACTIVEWINDOW" with the remarkably familiar sounding, but
  2442.            totally different "WINDOWACTIVE" flag.
  2443.  
  2444.    Gadgets = the pointer to the first of a linked list of the your own 
  2445.           Gadgets which you want attached to this Window.  Can be NULL
  2446.           if you have no Gadgets of your own
  2447.    CheckMark = a pointer to an instance of the struct Image where can
  2448.           be found the imagery you want used when any of your
  2449.           MenuItems is to be checkmarked.  If you don't want to
  2450.           supply your own imagery and you want to just use 
  2451.           Intuition's own checkmark, set this argument to NULL
  2452.    Text = a null-terminated line of text to appear on the title bar of
  2453.           your window (may be null if you want no text)
  2454.    Type = the Screen type for this window.  If this equal CUSTOMSCREEN,
  2455.           you must have already opened a CUSTOMSCREEN (see text above).
  2456.           Types available include:
  2457.               - WBENCHSCREEN
  2458.               - CUSTOMSCREEN
  2459.    Screen = if your type is one of Intuition's Standard Screens, then
  2460.           this argument is ignored.  However, if Type == CUSTOMSCREEN,
  2461.           this must point to the structure of your own Screen
  2462.    BitMap = if you have specified SUPER_BITMAP as the type of refreshing you
  2463.        want for this Window, then this value points to a instance of
  2464.        the struct BitMap.  However, if the refresh type is NOT
  2465.        SUPER_BITMAP, this pointer is ignored
  2466.    MinWidth, MinHeight, MaxWidth, MaxHeight = the size limits for this 
  2467.           that the minimums cannot be greater than the current size,
  2468.           nor can the maximums be smaller than the current size.
  2469.  
  2470.           The maximums may be LARGER than the current size, or even larger
  2471.           than the current screen.  The maximums should be set to 
  2472.           the highest value your application can handle.  This allows
  2473.           users with larger display devices to take full advantage
  2474.           of your software.  If there is no good reason to limit the size,
  2475.           then don't. -1 or ~0 indicates the maximum available.  
  2476.  
  2477.           Any one of these can be initialized to zero, which means that
  2478.           limit will be set to the current dimension of that axis.
  2479.           The limits can be changed after the Window is opened by calling
  2480.           the WindowLimits() routine.
  2481.  
  2482. RESULT
  2483.    If all is well, returns the pointer to your new Window
  2484.    If anything goes wrong, returns NULL
  2485.  
  2486. BUGS
  2487.  
  2488. SEE ALSO
  2489.    OpenScreen()
  2490.    ModifyIDCMP()
  2491.    WindowTitles()
  2492.  
  2493. intuition.library/OpenWorkBench                 intuition.library/OpenWorkBench
  2494.  
  2495.     NAME 
  2496.     OpenWorkBench  --  Opens the WorkBench Screen 
  2497.  
  2498.     SYNOPSIS 
  2499.     WBScreen =  OpenWorkBench()
  2500.     D0
  2501.  
  2502.     struct Screen *WBScreen;
  2503.  
  2504.     FUNCTION 
  2505.     This routine attempts to reopen the WorkBench.  The actions taken are: 
  2506.         - general good stuff and nice things, and then return a non-null
  2507.           pointer to the Workbench Screen.
  2508.         - find that something has gone wrong, and return NULL
  2509.  
  2510.     The return value, if not NULL, is indeed the address of the Workbench
  2511.     Screen, although you should not use it as such.  This is because the
  2512.     Workbench may be closed by other programs, which can invalidate
  2513.     the address at any time.  We suggest that you regard the return
  2514.     value as a BOOL indication that the routine has succeeded, if
  2515.     you pay any attention to it at all.
  2516.  
  2517.     INPUTS 
  2518.     None 
  2519.  
  2520.     RESULT 
  2521.     non-FALSE if WorkBench Screen opened successfully, or was already opened 
  2522.     FALSE if anything went wrong and the WorkBench Screen isn't out there 
  2523.  
  2524.     BUGS 
  2525.  
  2526.     SEE ALSO 
  2527.     
  2528.  
  2529. intuition.library/PrintIText                       intuition.library/PrintIText
  2530.  
  2531.     NAME
  2532.     PrintIText  --  prints the text according to the IntuiText argument
  2533.  
  2534.     SYNOPSIS
  2535.     PrintIText(RastPort, IText, LeftOffset, TopOffset)
  2536.            A0         A1     D0          D1
  2537.  
  2538.     struct RastPort *RastPort;
  2539.     struct IntuiText *IText;
  2540.     SHORT LeftOffset, TopOffset;
  2541.  
  2542.     FUNCTION
  2543.     Prints the IntuiText into the specified RastPort.  Sets up the RastPort
  2544.     as specified by the IntuiText values, then prints the text into the
  2545.     RastPort at the IntuiText x/y coordinates offset by the left/top 
  2546.     arguments.  Note, though, that the IntuitText structure itself
  2547.     may contain further text position coordinates: those coordinates
  2548.     and the Left/TopOffsets are added to obtain the true position of
  2549.     the text to be rendered.
  2550.  
  2551.     This routine does window layer clipping as appropriate -- if you 
  2552.     print text outside of your Window, your characters will be 
  2553.     clipped at the Window's edge.
  2554.  
  2555.     If the NextText field of the IntuiText argument is non-NULL, 
  2556.     the next IntuiText is rendered as well, and so on until some
  2557.     NextText field is NULL.
  2558.     
  2559.     IntuiText with the ITextAttr field NULL are displayed in the
  2560.     font of the RastPort.  If the RastPort font is also NULL, the
  2561.     system default font, as set via the Preferences tool, will be used.
  2562.  
  2563.     INPUTS
  2564.     RastPort = the RastPort destination of the text
  2565.     IText = pointer to an instance of the structure IntuiText
  2566.     LeftOffset = left offset of the IntuiText into the RastPort
  2567.     TopOffset = top offset of the IntuiText into the RastPort
  2568.  
  2569.     RESULT
  2570.     None
  2571.  
  2572.     BUGS
  2573.  
  2574.     SEE ALSO
  2575.     
  2576.  
  2577. intuition.library/RefreshGadgets               intuition.library/RefreshGadgets
  2578.  
  2579.     NAME
  2580.     RefreshGadgets  --  Refresh (redraw) the Gadget display
  2581.  
  2582.     SYNOPSIS
  2583.     RefreshGadgets(Gadgets, Window, Requester)
  2584.                A0    A1    A2
  2585.  
  2586.     FUNCTION
  2587.     Refreshes (redraws) all of the Gadgets in the Gadget List starting
  2588.     from the specified Gadget.  
  2589.  
  2590.     The Window parameter must point to the window which contains the Gadget,
  2591.     or which contains the Requester that contains the Gadget
  2592.     The Requester parameter must only be valid if the Gadget has the
  2593.     REQGADGET flag set, a requirement for all Requester Gadgets.
  2594.  
  2595.     The Pointer argument points a Window structure.
  2596.  
  2597.     The two main reasons why you might want to use this routine are:  
  2598.     first, that you've modified the imagery of the Gadgets in your 
  2599.     display and you want the new imagery to be displayed; secondly, 
  2600.     if you think that some graphic operation you just performed 
  2601.     trashed the Gadgetry of your display, this routine will refresh 
  2602.     the imagery for you.  
  2603.  
  2604.     Note that to modify the imagery of a gadget, you must first remove
  2605.     that gadget from the Window's Gadget list, using RemoveGadget() (or
  2606.     RemoveGList()).  After changing the Image, Border, Text (including
  2607.     Text for a String Gadget), the gadget is replaced in the Gadget List
  2608.     (using AddGadget() or AddGList()).  Adding gadgets does not cause
  2609.     them to be displayed (refreshed), so this function, or RefreshGList()
  2610.     is typically called.
  2611.  
  2612.     A common technique is to set or reset the SELECTED flag of a 
  2613.     Boolean Gadget and then call RefreshGadgets() to see them displayed
  2614.     highlighted if and only if SELECTED is set.  If you wish to do this
  2615.     and be completely proper, you must RemoveGadget(), change SELECTED
  2616.     flag, AddGadget(), and RefreshGadgets(), or the equivalent.
  2617.  
  2618.     The Gadgets argument can be a copy of the FirstGadget variable in 
  2619.     either the Screen or Window structure that you want refreshed:  
  2620.     the effect of this will be that all Gadgets will be redrawn.  
  2621.     However, you can selectively refresh just some of the Gadgets 
  2622.     by starting the refresh part-way into the list:  for instance, 
  2623.     redrawing your Window non-GIMMEZEROZERO Gadgets only, which you've 
  2624.     conveniently grouped at the end of your Gadget list.  
  2625.  
  2626.     Even more control is available using the RefreshGList routine which
  2627.     enables you to refresh a single gadget, or number of your choice.
  2628.  
  2629.     NOTE:  It's never safe to tinker with the Gadget list yourself.  Don't
  2630.     supply some Gadget list that Intuition hasn't already processed in
  2631.     the usual way.
  2632.  
  2633.     INPUTS
  2634.     Gadgets = pointer to the first in the list of Gadgets wanting refreshment
  2635.     Window = pointer to the Window containing the Gadget or its Requester
  2636.     Requester = pointer to a Requester (ignored if Gadget is not attached to
  2637.         a Requester).
  2638.  
  2639.     RESULT
  2640.     None
  2641.  
  2642.     BUGS
  2643.  
  2644.     SEE ALSO
  2645.     RefreshGList(), RemoveGadget(), RemoveGList(), AddGadget(), AddGList()
  2646.  
  2647. intuition.library/RefreshGList                   intuition.library/RefreshGList
  2648.  
  2649.     NAME
  2650.     RefreshGList  --  Refresh (redraw) a chosen number of gadgets.
  2651.  
  2652.     SYNOPSIS
  2653.     RefreshGList(Gadgets, Window, Requester, NumGad)
  2654.              A0          A1      A2     D0
  2655.  
  2656.     struct Gadget *Gadget;
  2657.     struct Window *Window;
  2658.     struct Requester *Requester;
  2659.     SHORT  NumGad;
  2660.  
  2661.     FUNCTION
  2662.     Refreshes (redraws) Gadgets in the Gadget List starting
  2663.     from the specified Gadget.  At most NumGad gadgets are redrawn.
  2664.     If NumGad is -1, all gadgets until a terminating NULL value
  2665.     in the NextGadget field is found will be refreshed, making this
  2666.     routine a superset of RefreshGadgets().
  2667.  
  2668.     The Requester variable can point to a Requester structure.  If 
  2669.     the first Gadget in the list has the REQGADGET flag set, the 
  2670.     Gadget list refers to Gadgets in a Requester and the Pointer 
  2671.     must necessarily point to a Window.  If these are not the Gadgets 
  2672.     of a Requester, the Requester argument may be NULL.  
  2673.  
  2674.     Be sure to see the RefreshGadgets() function description, as this
  2675.     function is simple an extension of that.
  2676.    
  2677.     INPUTS
  2678.     Gadgets = pointer to the first in the list of Gadgets wanting refreshment
  2679.     Window = pointer to the Window containing the Gadget or its Requester
  2680.     Requester = pointer to a Requester (ignored if Gadget is not attached to
  2681.         a Requester).
  2682.     NumGad  = maximum number of gadgets to be refreshed.  A value of -1
  2683.       will cause all gadgets to be refreshed from Gadget to the
  2684.       end of the list.  A value of -2 will also do this, but if Gadget
  2685.       is a Requester Gadget (REQGADGET) ALL gadgets in the requester
  2686.       will be refreshed (this is a mode compatible with v1.1 
  2687.       RefreshGadgets().
  2688.  
  2689.     RESULT
  2690.     None
  2691.  
  2692.     BUGS
  2693.  
  2694.     SEE ALSO
  2695.     RefreshGadgets()
  2696.  
  2697. intuition.library/RefreshWindowFrame
  2698.  
  2699.     NAME
  2700.     RefreshWindowFrame -- Ask Intuition to redraw your window border/gadgets
  2701.  
  2702.     SYNOPSIS
  2703.     RefreshWindowFrame(Window)
  2704.                A0
  2705.  
  2706.     struct Window *Window;
  2707.  
  2708.     FUNCTION
  2709.     Refreshes the border of a window, including title region and all
  2710.     of the window's gadgets.
  2711.  
  2712.     You may use this call if you wish to update the display of your borders.
  2713.     The expected use of this is to correct unavoidable corruption.
  2714.  
  2715.     INPUTS
  2716.     Window = a pointer to a Window structure
  2717.  
  2718.     RESULT
  2719.     None
  2720.  
  2721.     BUGS
  2722.  
  2723.     SEE ALSO
  2724.    
  2725.  
  2726. intuition.library/RemakeDisplay                 intuition.library/RemakeDisplay
  2727.  
  2728.     NAME
  2729.     RemakeDisplay  --  Remake the entire Intuition display 
  2730.  
  2731.     SYNOPSIS
  2732.     RemakeDisplay()
  2733.  
  2734.     FUNCTION
  2735.     This is the big one.
  2736.  
  2737.     This procedure remakes the entire Intuition display.  It does
  2738.     the equivalent of MakeScreen() for every Screen in the system,
  2739.     and then it calls RethinkDisplay().
  2740.    
  2741.     WARNING:  This routine can take several milliseconds to run, so
  2742.     do not use it lightly.  RethinkDisplay() (called by this routine) 
  2743.     does a Forbid() on entry and a Permit() on exit, which can seriously
  2744.     degrade the performance of the multi-tasking Eexecutive.
  2745.  
  2746.     INPUTS
  2747.     None
  2748.  
  2749.     RESULT
  2750.     None
  2751.  
  2752.     BUGS
  2753.  
  2754.     SEE ALSO
  2755.     MakeScreen(), RethinkDisplay(), graphics.library/MakeVPort
  2756.  
  2757. intuition.library/RemoveGadget                   intuition.library/RemoveGadget
  2758.  
  2759.     NAME
  2760.     RemoveGadget  --  removes a Gadget from a Window
  2761.  
  2762.     SYNOPSIS
  2763.     Position = RemoveGadget(Window, Gadget)
  2764.     D0            A0    A1
  2765.     
  2766.     USHORT Position;
  2767.     struct Window *Window;
  2768.     struct Gadget *Gadget;
  2769.  
  2770.     FUNCTION
  2771.     Removes the given Gadget from the Gadget list of the specified 
  2772.     Window.  Returns the ordinal position of the removed Gadget.
  2773.  
  2774.     If the Gadget is in a Requester attached the the window, this
  2775.     routine will look for it and remove it if it is found.
  2776.  
  2777.     If the Gadget pointer points to a Gadget that isn't in the
  2778.     appropriate list, -1 is returned.  If there aren't any Gadgets in the 
  2779.     list, -1 is returned.  If you remove the 65535th Gadget from the list
  2780.     -1 is returned.
  2781.  
  2782.     INPUTS
  2783.     Window = pointer to the Window containing the Gadget or the Requester
  2784.         containing the Gadget to be removed.
  2785.     Gadget = pointer to the Gadget to be removed.  The Gadget itself describes
  2786.             whether this is a Gadget that should be removed from the Window
  2787.             or some Requester.
  2788.  
  2789.     RESULT
  2790.     Returns the ordinal position of the removed Gadget.  If the Gadget
  2791.     wasn't found in the appropriate list, or if there are no Gadgets in
  2792.     the list, returns -1.
  2793.  
  2794.     BUGS
  2795.  
  2796.     SEE ALSO
  2797.     AddGadget(), RemoveGList()
  2798.  
  2799. intuition.library/RemoveGList                     intuition.library/RemoveGList
  2800.  
  2801.     NAME
  2802.     RemoveGList  --  removes a sublist of Gadgets from a Window.
  2803.  
  2804.     SYNOPSIS
  2805.     Position =  RemoveGList(Window, Gadget, Numgad)
  2806.     D0            A0    A1    D0
  2807.     
  2808.     struct Window *Window;
  2809.     struct Gadget *Gadget;
  2810.     SHORT  Numgad;
  2811.  
  2812.     FUNCTION
  2813.     Removes 'Numgad' Gadgets from the Gadget list of the specified 
  2814.     Window.  Will remove Gadgets from a Requester if the first
  2815.     Gadget's GadgetType flag REQGADGET is set.
  2816.  
  2817.     Otherwise identical to RemoveGadget().
  2818.  
  2819.     NOTE
  2820.     The last gadget in the list does NOT have it's link zeroed.
  2821.  
  2822.     INPUTS
  2823.     Window = pointer to the Window containing the Gadget or the Requester
  2824.         containing the Gadget to be removed.
  2825.     Gadget = pointer to the Gadget to be removed.  The Gadget itself
  2826.            describes whether this is a Gadget that should be removed 
  2827.            from the Window or some Requester.
  2828.     Numgad = number of gadgets to be removed.  If -1, remove all gadgets
  2829.         to end of Window Gadget List
  2830.  
  2831.     RESULT
  2832.     Returns the ordinal position of the removed Gadget.  If the Gadget
  2833.     wasn't found in the appropriate list, or if there are no Gadgets in
  2834.     the list, returns -1.
  2835.  
  2836.     BUGS
  2837.  
  2838.     SEE ALSO
  2839.     RemoveGadget(), AddGadget()
  2840.  
  2841. intuition.library/ReportMouse                     intuition.library/ReportMouse
  2842.  
  2843.     NAME
  2844.     ReportMouse  --  tells Intuition whether to report mouse movement.
  2845.  
  2846.     SYNOPSIS
  2847.     ReportMouse(Boolean, Window)
  2848.             D0         A0        <-note
  2849.     BOOL   Boolean;
  2850.     struct Window *Window;
  2851.  
  2852.     SPECIAL NOTE
  2853.     Some compilers and link files switch the arguments to this function about
  2854.     in unpredictable ways.  The call will take one of two forms:
  2855.  
  2856.         ReportMouse(Window, (ULONG)Boolean);
  2857.             -or-
  2858.         ReportMouse(Boolean, Window);
  2859.  
  2860.     The Manx Aztec compiler prefers the second form.  From assembler the
  2861.     interface is always the same:  Boolean in D0, Window in A0
  2862.  
  2863.     Also, it is still endorsed to simply set the REPORTMOUSE flag bit
  2864.     in Window->Flags, or reset it, on your own.  Make the operation
  2865.     an atomic assembly instruction (e.g.: OR.W #REPORTMOUSE,wd_Flags+2(A0)
  2866.     where A0 contains your window pointer).  Most compilers will produce
  2867.     an atomic operation when faced with:
  2868.             Window->Flags |= REPORTMOUSE;
  2869.             Window->Flags &=~REPORTMOUSE;
  2870.     or else bracket the operation between Forbid/Permit().
  2871.  
  2872.     FUNCTION
  2873.     Tells Intuition whether or not to broadcast mouse-movement events to
  2874.     your Window when it's the active one.  The Boolean value specifies
  2875.     whether to start or stop broadcasting position information of
  2876.     mouse-movement.  If the Window is the active one, mouse-movement reports
  2877.     start coming immediately afterwards.  This same routine will change
  2878.     the current state of the FOLLOWMOUSE function of a
  2879.     currently-selected Gadget too.  
  2880.  
  2881.     Note that calling ReportMouse() when a Gadget is selected will only
  2882.     temporarily change whether or not mouse    movements are reported while
  2883.     that Gadget remains selected; the next time the Gadget is selected, its
  2884.     FOLLOWMOUSE flag is examined anew.
  2885.  
  2886.     Note also that calling ReportMouse() when no Gadget is currently
  2887.     selected will change the state of the Window's REPORTMOUSE flag, but
  2888.     will have no effect on any Gadget that may be subsequently selected.
  2889.  
  2890.     The ReportMouse() function is first performed when OpenWindow() 
  2891.     is first called; if the flag REPORTMOUSE is included among
  2892.     the options, then all mouse-movement events are reported 
  2893.     to the opening task and will continue to be reported
  2894.     until ReportMouse() is called with a Boolean value of FALSE.
  2895.     If REPORTMOUSE is not set, then no mouse-movement reports will
  2896.     be broadcast until ReportMouse() is called with a Boolean of TRUE.
  2897.  
  2898.     Note that the REPORTMOUSE flag, as managed by this routine, determines
  2899.     IF mouse messages are to be broadcast.  Determining HOW they are to
  2900.     be broadcast is determined by the MOUSEMOVE IDCMPFlag.
  2901.  
  2902.     INPUTS
  2903.     Window = pointer to a Window structure associated with this request
  2904.     Boolean = TRUE or FALSE value specifying whether to turn this
  2905.              function on or off
  2906.  
  2907.     RESULT
  2908.     None
  2909.  
  2910.     BUGS
  2911.     See above
  2912.  
  2913.     SEE ALSO
  2914.     The Input and Output section of the Intuition Reference Manual
  2915.  
  2916. intuition.library/Request                             intuition.library/Request
  2917.  
  2918.     NAME
  2919.     Request  --  Activates a Requester.
  2920.  
  2921.     SYNOPSIS
  2922.     Success = Request(Requester, Window);
  2923.     D0          A0         A1
  2924.  
  2925.     BOOL Success;
  2926.     struct Requester *Requester;
  2927.     struct Window *Window;
  2928.  
  2929.     FUNCTION
  2930.     Links in and displays a Requester into the specified Window.  
  2931.  
  2932.     This routine ignores the Window's REQVERIFY flag.
  2933.  
  2934.     INPUTS
  2935.     Requester = pointer to the Requester to be displayed
  2936.     Window = pointer to the Window into which this Requester goes
  2937.  
  2938.     RESULT
  2939.     If the Requester is successfully opened, TRUE is returned.  Otherwise,
  2940.     if the Requester could not be opened, FALSE is returned.
  2941.  
  2942.     BUGS
  2943.     POINTREL requesters not currently supported, by THIS call, but 
  2944.     are now supported for Double-Menu Requesters.
  2945.  
  2946.     SEE ALSO
  2947.     The Requesters section of the Intuition Reference Manual
  2948.  
  2949. intuition.library/RethinkDisplay               intuition.library/RethinkDisplay
  2950.  
  2951.     NAME
  2952.     RethinkDisplay  --  the grand manipulator of the entire Intuition display
  2953.  
  2954.     SYNOPSIS
  2955.     RethinkDisplay()
  2956.  
  2957.     FUNCTION
  2958.     This function performs the Intuition global display reconstruction.  This
  2959.     includes rethinking about all of the  ViewPorts and their relationship to
  2960.     another and reconstructing the entire display based on the results of this 
  2961.     rethinking.
  2962.  
  2963.     Specifically, and omitting some internal details, the operation consists
  2964.     of this:
  2965.  
  2966.         Determine which ViewPorts are invisible and set their VP_HIDE
  2967.         ViewPort Mode flag.
  2968.  
  2969.         If a change to a viewport height or changing interlace needs
  2970.         require, MakeVPort() is called for specific ViewPorts.  After
  2971.         this phase, the Copper lists for each Screen's ViewPort are 
  2972.         correctly set up.
  2973.         
  2974.         MrgCop() and LoadView() are then called to get these copper lists
  2975.         in action, thus establishing the new state of the Intuition
  2976.         display.
  2977.    
  2978.     You may perform a MakeScreen() on your Custom Screen before calling this
  2979.     routine.  The results will be incorporated in the new display, but
  2980.     changing the INTERLACE ViewPort mode for one screens must be reflected
  2981.     in the Intuition View, which is best left to Intuition.
  2982.  
  2983.     WARNING:  This routine can take several milliseconds to run, so
  2984.     do not use it lightly.  RethinkDisplay() does a Forbid() on entry 
  2985.     and a Permit() on exit, which can seriously degrade the performance 
  2986.     of the multi-tasking Eexecutive.
  2987.  
  2988.     INPUTS
  2989.     None
  2990.  
  2991.     RESULT
  2992.     None
  2993.  
  2994.     BUGS
  2995.  
  2996.     SEE ALSO
  2997.     RemakeDisplay(), graphics.library/MakeVPort(), graphics.library/MrgCop(),
  2998.     graphics.library/LoadView(), MakeScreen()
  2999.  
  3000. intuition.library/ScreenToBack                   intuition.library/ScreenToBack
  3001.  
  3002.     NAME
  3003.     ScreenToBack  --  send the specified Screen to the back of the display.
  3004.  
  3005.     SYNOPSIS
  3006.     ScreenToBack(Screen)
  3007.              A0
  3008.  
  3009.     struct Screen *Screen;
  3010.  
  3011.     FUNCTION
  3012.     Sends the specified Screen to the back of the display.
  3013.  
  3014.     INPUTS
  3015.     Screen = pointer to a Screen structure
  3016.  
  3017.     RESULT
  3018.     None
  3019.  
  3020.     BUGS
  3021.  
  3022.     SEE ALSO
  3023.     
  3024.  
  3025. intuition.library/ScreenToFront                 intuition.library/ScreenToFront
  3026.  
  3027.     NAME
  3028.     ScreenToFront  --  brings the specified Screen to the front of the display
  3029.  
  3030.     SYNOPSIS
  3031.     ScreenToFront(Screen)
  3032.               A0
  3033.  
  3034.     FUNCTION
  3035.     Brings the specified Screen to the front of the display.
  3036.  
  3037.     INPUTS
  3038.     Screen = a pointer to a Screen structure
  3039.  
  3040.     RESULT
  3041.     None
  3042.  
  3043.     BUGS
  3044.  
  3045.     SEE ALSO
  3046.     
  3047.  
  3048. intuition.library/SetDMRequest                   intuition.library/SetDMRequest
  3049.  
  3050.     NAME
  3051.     SetDMRequest  --  sets the DMRequest of the Window.
  3052.  
  3053.     SYNOPSIS
  3054.     SetDMRequest(Window, DMRequester)
  3055.              A0         A1
  3056.  
  3057.     struct Window *Window;
  3058.     struct Requester *DMRequester;
  3059.  
  3060.     FUNCTION
  3061.     Attempts to set the DMRequester into the specified window.  
  3062.     The DMRequester is the special Requester that you attach to 
  3063.     the double-click of the menu button which the user can then 
  3064.     bring up on demand.  This routine WILL NOT set the DMRequester 
  3065.     if it's already set and is currently active (in use by the user).  
  3066.     After having called SetDMRequest(), if you want to change the 
  3067.     DMRequester, the correct way to start is by calling ClearDMRequest() 
  3068.     until it returns a value of TRUE; then you can call SetDMRequest() 
  3069.     with the new DMRequester.  
  3070.  
  3071.     If the POINTREL flag is set, the DMR will open as close to the
  3072.     pointer as possible.  The RelLeft/Top fields are for fine-tuning
  3073.     the position.
  3074.  
  3075.     INPUTS
  3076.     Window = pointer to the window from which the DMRequest is to be set
  3077.     DMRequester = a pointer to a Requester
  3078.  
  3079.     RESULT
  3080.     If the current DMRequest was not in use, sets the DMRequest
  3081.         pointer into the Window and returns TRUE.
  3082.     If the DMRequest was currently in use, doesn't change the pointer
  3083.         and returns FALSE
  3084.  
  3085.     BUGS
  3086.  
  3087.     SEE ALSO
  3088.     ClearDMRequest(), Request()
  3089.  
  3090. intuition.library/SetMenuStrip                   intuition.library/SetMenuStrip
  3091.  
  3092.     NAME
  3093.     SetMenuStrip  --  Attaches the Menu strip to the Window.
  3094.  
  3095.     SYNOPSIS
  3096.     Success = SetMenuStrip(Window, Menu)
  3097.     D0               A0      A1
  3098.  
  3099.     BOOL   Success;
  3100.     struct Window *Window;
  3101.     struct Menu *Menu;
  3102.  
  3103.     FUNCTION
  3104.     Attaches the Menu strip to the Window.  After calling this routine,
  3105.     if the user presses the menu button, this specified menu strip
  3106.     will be displayed and accessible by the user.
  3107.  
  3108.     Menus with zero MenuItems are not allowed.
  3109.  
  3110.     NOTE:  You should always design your Menu strip changes to be a 
  3111.     two-way operation, where for every Menu strip you add to your 
  3112.     Window you should always plan to clear that strip sometime.  Even 
  3113.     in the simplest case, where you will have just one Menu strip for 
  3114.     the lifetime of your Window, you should always clear the Menu strip 
  3115.     before closing the Window.  If you already have a Menu strip attached 
  3116.     to this Window, the correct procedure for changing to a new Menu 
  3117.     strip involves calling ClearMenuStrip() to clear the old first.  
  3118.     The sequence of events should be:
  3119.        - OpenWindow()
  3120.        - zero or more iterations of:
  3121.             - SetMenuStrip()
  3122.             - ClearMenuStrip()
  3123.        - CloseWindow()
  3124.  
  3125.     INPUTS
  3126.     Window = pointer to a Window structure
  3127.     Menu = pointer to the first Menu in the Menu strip
  3128.  
  3129.     RESULT
  3130.     TRUE if there were no problems.  TRUE always, since this routine
  3131.     will Wait until it is OK to proceed.
  3132.  
  3133.     BUGS
  3134.  
  3135.     SEE ALSO
  3136.     ClearMenuStrip()
  3137.  
  3138. intuition.library/SetPointer                       intuition.library/SetPointer
  3139.  
  3140.     NAME
  3141.     SetPointer  --  sets a Window with its own Pointer
  3142.  
  3143.     SYNOPSIS
  3144.     SetPointer(Window, Pointer, Height, Width, XOffset, YOffset)
  3145.            A0       A1        D0        D1       D2        D3
  3146.  
  3147.     struct Window *Window;
  3148.     USHORT    *Pointer;
  3149.     SHORT Height, Width;
  3150.     SHORT XOffset, YOffset;
  3151.  
  3152.     FUNCTION
  3153.     Sets up the Window with the sprite definition for the Pointer.  
  3154.     Then whenever the Window is the active one, the Pointer 
  3155.     image will change to its version of the Pointer.  If the 
  3156.     Window is the active one when this routine is called, the 
  3157.     change takes place immediately.
  3158.  
  3159.     The XOffset and YOffset are used to offset the top-left corner 
  3160.     of the hardware sprite imagery from what Intuition regards as 
  3161.     the current position of the Pointer.  Another way of describing 
  3162.     it is as the offset from the "hot spot" of the Pointer to the 
  3163.     top-left corner of the sprite.  For instance, if you specify 
  3164.     offsets of zero, zero, then the top-left corner of your sprite 
  3165.     image will be placed at the Pointer position.  On the other hand, 
  3166.     if you specify an XOffset of -7 (remember, sprites are 16 pixels 
  3167.     wide) then your sprite will be centered over the Pointer position.  
  3168.     If you specify an XOffset of -15, the right-edge of the sprite 
  3169.     will be over the Pointer position.
  3170.  
  3171.     INPUTS
  3172.     Window = pointer to the Window to receive this Pointer definition
  3173.     Pointer = pointer to the data definition of a Sprite
  3174.     Height = the height of the Pointer
  3175.     Width = the Width of the sprite (must be less than or equal to sixteen)
  3176.     XOffset = the offset for your sprite from the Pointer position
  3177.     YOffset = the offset for your sprite from the Pointer position
  3178.  
  3179.     RESULT
  3180.     None
  3181.  
  3182.     BUGS
  3183.  
  3184.     SEE ALSO
  3185.     ClearPointer()
  3186.  
  3187. intuition.library/SetPrefs                           intuition.library/SetPrefs
  3188.  
  3189.     NAME
  3190.     SetPrefs  --  Set Intuition Preferences.
  3191.  
  3192.     SYNOPSIS
  3193.     Prefs = SetPrefs(PrefBuffer, Size, Inform)
  3194.     D0         A0         D0       D1
  3195.  
  3196.     struct Preferences *Prefs;
  3197.     struct Preferences *PrefBuffer;
  3198.     int    Size;
  3199.     BOOL   Inform;
  3200.  
  3201.     FUNCTION
  3202.     Sets new Preferences values.  Copies the first 'Size' bytes
  3203.     from your Preferences buffer to the system Preferences table,
  3204.     and puts them into effect.
  3205.  
  3206.     The 'Inform' parameter, if TRUE, indicates that a NEWPREFS
  3207.     message is to be sent to all Windows that have the NEWPREFS
  3208.     IDCMPFlag set.
  3209.    
  3210.     It is legal to set a partial copy of the Preferences structure.
  3211.     The most frequently changed values are grouped at the beginning
  3212.     of the Preferences structure.
  3213.  
  3214.     INPUTS
  3215.     PrefBuffer = pointer to the memory buffer which contains your
  3216.         desired settings for Intuition Preferences
  3217.     Size = the number of bytes in your PrefBuffer, the number of bytes
  3218.            you want copied to the system's internal Preference settings
  3219.     Inform = whether you want the information of a new Preferences
  3220.         setting propogated to all windows.
  3221.  
  3222.     RESULT
  3223.     Returns your parameter PrefBuffer.
  3224.  
  3225.     BUGS
  3226.  
  3227.     SEE ALSO
  3228.     GetDefPrefs(), GetPrefs()
  3229.  
  3230. intuition.library/SetWindowTitles             intuition.library/SetWindowTitles
  3231.  
  3232.     NAME
  3233.     SetWindowTitles  --  Sets the Window's titles for both Window and Screen
  3234.  
  3235.     SYNOPSIS
  3236.     SetWindowTitles(Window, WindowTitle, ScreenTitle)
  3237.             A0    A1         A2
  3238.  
  3239.     struct Window *Window;
  3240.     UBYTE *WindowTitle, *ScreenTitle;
  3241.  
  3242.     FUNCTION
  3243.     Allows you to set the text which appears in the Window and/or Screen
  3244.     title bars.
  3245.  
  3246.     The Window Title appears at all times along the Window Title Bar.
  3247.     The Window's Screen Title appears at the Screen Title Bar whenever
  3248.     this Window is the active one.
  3249.    
  3250.     When this routine is called, your Window Title will be changed 
  3251.     immediately.  If your Window is the active one when this routine is 
  3252.     called, the Screen Title will be changed immediately.
  3253.    
  3254.     You can specify a value of -1 (i.e. (struct Window *) ~0) for either of
  3255.     the title pointers.  This designates that you want to Intuition to leave
  3256.     the current setting of that particular title alone, and modify
  3257.     only the other one.  Of course, you could set both to -1.
  3258.    
  3259.     Furthermore, you can set a value of 0 (zero) for either of the
  3260.     title pointers.  Doing so specifies that you want no title to
  3261.     appear (the title bar will be blank).
  3262.  
  3263.     Both of the titles are rendered in the default font of the Window's
  3264.     Screen, as set using OpenScreen().
  3265.  
  3266.     In setting the Window's title, Intuition may do some other rendering
  3267.     in the top border of your window.  If your own rendering sometimes appears
  3268.     in your window border areas, you may want to restore the entire
  3269.     window border frame.  The function SetWindowTitles() does not do this
  3270.     in the newer versions.  The function RefreshWindowFrame() is provided
  3271.     to do this kind of thing for you.
  3272.  
  3273.     INPUTS
  3274.     Window = pointer to your Window structure
  3275.     WindowTitle = pointer to a null-terminated text string, or set to
  3276.            either the value of -1 (negative one) or 0 (zero)
  3277.     ScreenTitle = pointer to a null-terminated text string, or set to
  3278.            either the value of -1 (negative one) or 0 (zero)
  3279.  
  3280.     RESULT
  3281.     None
  3282.  
  3283.     BUGS
  3284.  
  3285.     SEE ALSO
  3286.     OpenWindow(), RefreshWindowFrame(), OpenScreen()
  3287.  
  3288. intuition.library/ShowTitle                         intuition.library/ShowTitle
  3289.  
  3290.     NAME
  3291.     ShowTitle  --  Set the Screen title bar display mode
  3292.  
  3293.     SYNOPSIS
  3294.     ShowTitle(Screen, ShowIt)
  3295.           A0      D0
  3296.  
  3297.     struct Screen *Screen;
  3298.     BOOL   ShowIt;
  3299.  
  3300.     FUNCTION
  3301.     This routine sets the SHOWTITLE flag of the specified Screen, and
  3302.     then coordinates the redisplay of the Screen and its Windows.
  3303.     
  3304.     The Screen title bar can appear either in front of or behind BACKDROP
  3305.     Windows.  This is contrasted with the fact that non-BACKDROP Windows 
  3306.     always appear in front of the Screen Title Bar.  You specify whether
  3307.     you want the Screen Title Bar to be in front of or behind the
  3308.     Screen's BACKDROP Windows by calling this routine.
  3309.  
  3310.     The ShowIt argument should be set to either TRUE or FALSE.  If TRUE,
  3311.     the Screen's Title Bar will be shown in front of BACKDROP Windows.
  3312.     If FALSE, the Title Bar will be rendered behind all Windows.  
  3313.    
  3314.     When a Screen is first opened, the default setting of the SHOWTITLE
  3315.     flag is TRUE.
  3316.    
  3317.     INPUTS
  3318.     Screen = pointer to a Screen structure
  3319.     ShowIt = Boolean TRUE or FALSE describing whether to show or hide the
  3320.            Screen Title Bar
  3321.  
  3322.     RESULT
  3323.     None
  3324.  
  3325.     BUGS
  3326.  
  3327.     SEE ALSO
  3328.     
  3329.  
  3330. intuition.library/SizeWindow                       intuition.library/SizeWindow
  3331.  
  3332.     NAME
  3333.     SizeWindow  --  Ask Intuition to size a Window.
  3334.  
  3335.     SYNOPSIS
  3336.     SizeWindow(Window, DeltaX, DeltaY)
  3337.            A0       D0       D1
  3338.  
  3339.     struct Window *Window;
  3340.     SHORT  DeltaX, DeltaY;
  3341.  
  3342.     FUNCTION
  3343.     This routine sends a request to Intuition asking to size the Window 
  3344.     the specified amounts.  The delta arguments describe how much to 
  3345.     size the Window along the respective axes.  
  3346.  
  3347.     Note that the Window will not be sized immediately, but rather 
  3348.     will be sized the next time Intuition receives an input event, 
  3349.     which happens currently at a minimum rate of ten times per second,
  3350.     and a maximum of sixty times a second.  You can discover when 
  3351.     you Window has finally been sized by setting the NEWSIZE flag 
  3352.     of the IDCMP of your Window.  See the "Input and Output Methods"
  3353.     chapter of The Intuition Reference Manual for description of the IDCMP.
  3354.  
  3355.     This routine does no error-checking.  If your delta values specify 
  3356.     some far corner of the Universe, Intuition will attempt to size 
  3357.     your Window to the far corners of the Universe.  Because of the
  3358.     distortions in the space-time continuum that can result from this,
  3359.     as predicted by special relativity, the result is generally not
  3360.     a pretty sight.
  3361.  
  3362.     INPUTS
  3363.     Window = pointer to the structure of the Window to be sized
  3364.     DeltaX = signed value describing how much to size the Window on the x-axis
  3365.     DeltaY = signed value describing how much to size the Window on the y-axis
  3366.  
  3367.     RESULT
  3368.     None
  3369.  
  3370.     BUGS
  3371.  
  3372.     SEE ALSO
  3373.     MoveWindow(), WindowToFront(), WindowToBack()
  3374.  
  3375. intuition.library/UnlockIBase                     intuition.library/UnlockIBase
  3376.  
  3377.     NAME
  3378.     UnlockIBase -- surrender an Intuition lock gotten by LockIBase()
  3379.  
  3380.     SYNOPSIS
  3381.     UnlockIBase(Lock)
  3382.             A0
  3383.  
  3384.     ULONG Lock;
  3385.  
  3386.     FUNCTION
  3387.     
  3388.     Surrenders lock gotten by LockIBase().
  3389.  
  3390.     Calling this function when you do not own the specified lock will
  3391.     immediately crash the system.
  3392.  
  3393.     INPUTS
  3394.     The value returned by LockIBase() should be passed to this function,
  3395.     to specify which internal lock is to be freed.
  3396.  
  3397.     Note that the parameter is passed in A0, not D0, for historical reasons.
  3398.  
  3399.     RESULT
  3400.     None
  3401.  
  3402.     BUGS
  3403.  
  3404.     SEE ALSO
  3405.     LockIBase()
  3406.  
  3407. intuition.library/ViewAddress                     intuition.library/ViewAddress
  3408.  
  3409.     NAME
  3410.     ViewAddress  --  Returns the address of the Intuition View structure.
  3411.  
  3412.     SYNOPSIS
  3413.     ViewAddress()
  3414.  
  3415.     FUNCTION
  3416.     Returns the address of the Intuition View structure.  If you 
  3417.     want to use any of the graphics, text, or animation primitives 
  3418.     in your Window and that primitive requires a pointer to a View,
  3419.     this routine will return the address of the View for you.
  3420.  
  3421.     INPUTS
  3422.     None
  3423.  
  3424.     RESULT
  3425.     Returns the address of the Intuition View structure
  3426.    
  3427.     BUGS
  3428.  
  3429.     SEE ALSO
  3430.     graphics.library
  3431.  
  3432. intuition.library/ViewPortAddress             intuition.library/ViewPortAddress
  3433.  
  3434.     NAME
  3435.     ViewPortAddress  --  Returns the address of a Window's ViewPort structure.
  3436.  
  3437.     SYNOPSIS
  3438.     ViewPortAddress(Window)
  3439.             A0
  3440.  
  3441.     struct Window *Window;
  3442.  
  3443.     FUNCTION
  3444.     Returns the address of the ViewPort associated with the specified
  3445.     Window.  The ViewPort is actually the ViewPort of the Screen within which
  3446.     the Window is displayed.  If you want to use any of the graphics, text,
  3447.     or animation primitives in your Window and that primitive requires a
  3448.     pointer to a ViewPort, you can use this call.
  3449.  
  3450.     INPUTS
  3451.     Window = pointer to the Window for which you want the ViewPort address
  3452.  
  3453.     RESULT
  3454.     Returns the address of the Intuition View structure
  3455.    
  3456.     BUGS
  3457.  
  3458.     SEE ALSO
  3459.     graphics.library
  3460.  
  3461. intuition.library/WBenchToBack                   intuition.library/WBenchToBack
  3462.  
  3463.     NAME 
  3464.     WBenchToBack  --  Sends the WorkBench Screen in back of all Screens.
  3465.  
  3466.     SYNOPSIS 
  3467.     Success = WBenchToBack()
  3468.     D0
  3469.     
  3470.     BOOL Success;
  3471.  
  3472.     FUNCTION 
  3473.     Causes the WorkBench Screen, if it's currently opened, to go to 
  3474.     the background.  This does not 'move' the Screen up or down, instead 
  3475.     only affects the depth-arrangement of the Screen. 
  3476.  
  3477.     If the WorkBench Screen was opened, this function returns TRUE, otherwise 
  3478.     it returns FALSE. 
  3479.  
  3480.     INPUTS 
  3481.     None 
  3482.  
  3483.     RESULT 
  3484.     If the WorkBench Screen was opened, this function returns TRUE, otherwise 
  3485.     it returns FALSE. 
  3486.  
  3487.     BUGS 
  3488.  
  3489.     SEE ALSO 
  3490.     WBenchToFront(), ScreenToFront()
  3491.  
  3492. intuition.library/WBenchToFront                 intuition.library/WBenchToFront
  3493.  
  3494.     NAME 
  3495.     WBenchToFront  --  Brings the WorkBench Screen in front of all Screens.
  3496.  
  3497.     SYNOPSIS 
  3498.     Success = WBenchToFront() 
  3499.     D0
  3500.  
  3501.     BOOL Success;
  3502.  
  3503.     FUNCTION 
  3504.     Causes the WorkBench Screen, if it's currently opened, to come to 
  3505.     the foreground.  This does not 'move' the Screen up or down, instead 
  3506.     only affects the depth-arrangement of the Screen. 
  3507.  
  3508.     If the WorkBench Screen was opened, this function returns TRUE, otherwise 
  3509.     it returns FALSE. 
  3510.  
  3511.     INPUTS 
  3512.     None 
  3513.  
  3514.     RESULT 
  3515.     If the WorkBench Screen was opened, this function returns TRUE, otherwise 
  3516.     it returns FALSE. 
  3517.  
  3518.     BUGS 
  3519.  
  3520.     SEE ALSO 
  3521.     WBenchToBack(), ScreenToBack()
  3522.  
  3523. intuition.library/WindowLimits                   intuition.library/WindowLimits
  3524.  
  3525.     NAME
  3526.     WindowLimits  --  Set the minimum and maximum limits of the Window.
  3527.  
  3528.     SYNOPSIS
  3529.     Success = WindowLimits(Window, MinWidth, MinHeight, MaxWidth, MaxHeight)
  3530.     D0               A0      D0     D1        D2          D3
  3531.  
  3532.     BOOL   Success;
  3533.     struct Window *Window;
  3534.     SHORT  MinWidth, MinHeight;
  3535.     USHORT MaxWidth, MaxHeight;
  3536.  
  3537.     FUNCTION
  3538.     Sets the minimum and maximum limits of the Window's size.  Until this
  3539.     routine is called, the Window's size limits are equal to the Window's
  3540.     initial size, which means that the user won't be able to size it at all.
  3541.     After the call to this routine, the Window will be able to be sized
  3542.     to any dimensions within the specified limits.
  3543.     
  3544.     If you don't want to change any one of the dimensions, set the limit
  3545.     argument for that dimension to zero.  If any of the limit arguments 
  3546.     is equal to zero, that argument is ignored and the initial setting
  3547.     of that parameter remains undisturbed.
  3548.    
  3549.     If any of the arguments is out of range (minimums greater than the
  3550.     current size, maximums less than the current size), that limit
  3551.     will be ignored, though the others will still take effect if they
  3552.     are in range.  If any are out of range, the return value from this
  3553.     procedure will be FALSE.  If all arguments are valid, the return
  3554.     value will be TRUE.
  3555.  
  3556.     If you want your window to be able to become "as large as possible"
  3557.     you may put -1 (i.e. ~0) in either or both Max arguments.  But
  3558.     please note: screen sizes may vary for several reasons, and you
  3559.     must be able to handle any possible size of window you might end
  3560.     up with if you use this method.  Note that you can use the function
  3561.     GetScreenData() to find out how big the screen your window appears in
  3562.     is.  That function is particularly useful if your window is in
  3563.     the Workbench Screen.
  3564.  
  3565.     If the user is currently sizing this Window, the new limits will
  3566.     not take effect until after the sizing is completed.
  3567.  
  3568.     INPUTS
  3569.     Window = pointer to a Window structure
  3570.     MinWidth, MinHeight, MaxWidth, MaxHeight = the new limits for the size
  3571.             of this Window.  If any of these is set to zero, it will
  3572.             be ignored and that setting will be unchanged.
  3573.  
  3574.     RESULT
  3575.     Returns TRUE if everything was in order.  If any of the parameters was
  3576.     out of range (minimums greater than current size, maximums less than
  3577.     current size), FALSE is returned and the errant limit request is
  3578.     not fulfilled (though the valid ones will be).
  3579.  
  3580.     BUGS
  3581.  
  3582.     SEE ALSO
  3583.     GetScreenData()
  3584.  
  3585. intuition.library/WindowToBack                   intuition.library/WindowToBack
  3586.  
  3587.     NAME
  3588.     WindowToBack  --  Ask Intuition to send this Window to the back
  3589.  
  3590.     SYNOPSIS
  3591.     WindowToBack(Window)
  3592.              A0
  3593.  
  3594.     FUNCTION
  3595.     This routine sends a request to Intuition asking to send the Window 
  3596.     in back of all other Windows in the Screen.
  3597.  
  3598.     Note that the Window will not be depth-arranged immediately, but rather 
  3599.     will be arranged the next time Intuition receives an input event, 
  3600.     which happens currently at a minimum rate of ten times per second,
  3601.     and a maximum of sixty times a second.  
  3602.  
  3603.     Remember that BACKDROP Windows cannot be depth-arranged.
  3604.  
  3605.     INPUTS
  3606.     Window = pointer to the structure of the Window to be sent to the back
  3607.  
  3608.     RESULT
  3609.     None
  3610.  
  3611.     BUGS
  3612.  
  3613.     SEE ALSO
  3614.     MoveWindow(), SizeWindow(), WindowToFront()
  3615.  
  3616. intuition.library/WindowToFront                 intuition.library/WindowToFront
  3617.  
  3618.     NAME
  3619.     WindowToFront  --  Ask Intuition to bring this Window to the front.
  3620.  
  3621.     SYNOPSIS
  3622.     WindowToFront(Window)
  3623.  
  3624.     FUNCTION
  3625.     This routine sends a request to Intuition asking to bring the Window 
  3626.     in front of all other Windows in the Screen.
  3627.  
  3628.     Note that the Window will not be depth-arranged immediately, but rather 
  3629.     will be arranged the next time Intuition receives an input event, 
  3630.     which happens currently at a minimum rate of ten times per second,
  3631.     and a maximum of sixty times a second.  
  3632.  
  3633.     Remember that BACKDROP Windows cannot be depth-arranged.
  3634.  
  3635.     INPUTS
  3636.     Window = pointer to the structure of the Window to be brought to front
  3637.  
  3638.     RESULT
  3639.     None
  3640.  
  3641.     BUGS
  3642.  
  3643.     SEE ALSO
  3644.     MoveWindow(), SizeWindow(), WindowToBack()
  3645.  
  3646.