home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD v1.2 / amidev_cd_12.iso / inc&ad2.0 / includes / intuition / intuition.i < prev    next >
Text File  |  1992-09-01  |  49KB  |  1,291 lines

  1.     IFND    INTUITION_INTUITION_I
  2. INTUITION_INTUITION_I    SET    1
  3. **
  4. **    $Filename: intuition/intuition.i $
  5. **    $Release: 2.04 Includes, V37.4 $
  6. **    $Revision: 36.30 $
  7. **    $Date: 91/03/28 $
  8. **
  9. **    Interface definitions for Intuition applications
  10. **
  11. **    (C) Copyright 1985-1991 Commodore-Amiga, Inc.
  12. **        All Rights Reserved
  13. **
  14.  
  15.     IFND EXEC_TYPES_I
  16.     INCLUDE "exec/types.i"
  17.     ENDC
  18.  
  19.     IFND    GRAPHICS_GFX_I
  20.     INCLUDE    "graphics/gfx.i"
  21.     ENDC
  22.  
  23.     IFND    GRAPHICS_CLIP_I
  24.     INCLUDE    "graphics/clip.i"
  25.     ENDC
  26.  
  27.     IFND    GRAPHICS_VIEW_I
  28.     INCLUDE    "graphics/view.i"
  29.     ENDC
  30.  
  31.     IFND    GRAPHICS_RASTPORT_I
  32.     INCLUDE    "graphics/rastport.i"
  33.     ENDC
  34.  
  35.     IFND    GRAPHICS_LAYERS_I
  36.     INCLUDE    "graphics/layers.i"
  37.     ENDC
  38.  
  39.     IFND    GRAPHICS_TEXT_I
  40.     INCLUDE "graphics/text.i"
  41.     ENDC
  42.  
  43.     IFND EXEC_PORTS_I
  44.     INCLUDE "exec/ports.i"
  45.     ENDC
  46.  
  47.     IFND    DEVICES_TIMER_I
  48.     INCLUDE    "devices/timer.i"
  49.     ENDC
  50.  
  51.     IFND    DEVICES_INPUTEVENT_I
  52.     INCLUDE "devices/inputevent.i"
  53.     ENDC
  54.  
  55.     IFND UTILITY_TAGITEM_I
  56.     INCLUDE "utility/tagitem.i"
  57.     ENDC
  58.  
  59. *
  60. * NOTE:  intuition/iobsolete.i is included at the END of this file!
  61. *
  62.  
  63.  
  64. ; ========================================================================;
  65. ; === Menu ===============================================================;
  66. ; ========================================================================;
  67.  STRUCTURE Menu,0
  68.  
  69.     APTR  mu_NextMenu    ; menu pointer, same level
  70.     WORD mu_LeftEdge    ; position of the select box
  71.     WORD mu_TopEdge    ; position of the select box
  72.     WORD mu_Width    ; dimensions of the select box
  73.     WORD mu_Height    ; dimensions of the select box
  74.     WORD mu_Flags    ; see flag definitions below
  75.     APTR mu_MenuName    ; text for this Menu Header
  76.     APTR  mu_FirstItem    ; pointer to first in chain
  77.  
  78.     ; these mysteriously-named variables are for internal use only
  79.     WORD mu_JazzX
  80.     WORD mu_JazzY
  81.     WORD mu_BeatX
  82.     WORD mu_BeatY
  83.  
  84.     LABEL mu_SIZEOF
  85.  
  86. ;*** FLAGS SET BY BOTH THE APPLIPROG AND INTUITION ***
  87. MENUENABLED EQU $0001    ; whether or not this menu is enabled
  88.  
  89. ;*** FLAGS SET BY INTUITION ***
  90. MIDRAWN EQU $0100    ; this menu's items are currently drawn
  91.  
  92. ; ========================================================================;
  93. ; === MenuItem ===========================================================;
  94. ; ========================================================================;
  95.  STRUCTURE MenuItem,0
  96.  
  97.     APTR mi_NextItem    ; pointer to next in chained list
  98.     WORD mi_LeftEdge    ; position of the select box
  99.     WORD mi_TopEdge    ; position of the select box
  100.     WORD mi_Width    ; dimensions of the select box
  101.     WORD mi_Height    ; dimensions of the select box
  102.     WORD mi_Flags    ; see the defines below
  103.  
  104.     LONG mi_MutualExclude ; set bits mean this item excludes that item
  105.  
  106.     APTR mi_ItemFill    ; points to Image, IntuiText, or NULL
  107.  
  108.     ; when this item is pointed to by the cursor and the items highlight
  109.     ; mode HIGHIMAGE is selected, this alternate image will be displayed
  110.     APTR mi_SelectFill    ; points to Image, IntuiText, or NULL
  111.  
  112.     BYTE mi_Command    ; only if appliprog sets the COMMSEQ flag
  113.  
  114.     BYTE mi_KludgeFill00 ; This is strictly for word-alignment
  115.  
  116.     APTR mi_SubItem    ; if non-zero, points to MenuItem for submenu
  117.  
  118.    ; The NextSelect field represents the menu number of next selected 
  119.    ; item (when user has drag-selected several items)
  120.     WORD mi_NextSelect
  121.  
  122.     LABEL  mi_SIZEOF
  123.  
  124. ; --- FLAGS SET BY THE APPLIPROG --------------------------------------------
  125. CHECKIT        EQU $0001    ; set to indicate checkmarkable item
  126. ITEMTEXT    EQU $0002    ; set if textual, clear if graphical item
  127. COMMSEQ        EQU $0004    ; set if there's an command sequence
  128. MENUTOGGLE    EQU $0008    ; set for toggling checks (else mut. exclude)
  129. ITEMENABLED    EQU $0010    ; set if this item is enabled
  130.  
  131. ; these are the SPECIAL HIGHLIGHT FLAG state meanings
  132. HIGHFLAGS    EQU $00C0    ; see definitions below for these bits
  133. HIGHIMAGE    EQU $0000    ; use the user's "select image"
  134. HIGHCOMP    EQU $0040    ; highlight by complementing the select box
  135. HIGHBOX        EQU $0080    ; highlight by drawing a box around the image
  136. HIGHNONE    EQU $00C0    ; don't highlight
  137.  
  138. ; --- FLAGS SET BY BOTH APPLIPROG AND INTUITION -----------------------------
  139. CHECKED    EQU $0100    ; state of the checkmark
  140.  
  141.  
  142. ; --- FLAGS SET BY INTUITION ------------------------------------------------
  143. ISDRAWN        EQU $1000    ; this item's subs are currently drawn
  144. HIGHITEM    EQU $2000    ; this item is currently highlighted
  145. MENUTOGGLED    EQU $4000    ; this item was already toggled 
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152. ; ========================================================================
  153. ; === Requester ==========================================================
  154. ; ========================================================================
  155.  STRUCTURE Requester,0
  156.  
  157.     APTR  rq_OlderRequest
  158.     WORD rq_LeftEdge        ; dimensions of the entire box
  159.     WORD rq_TopEdge        ; dimensions of the entire box
  160.     WORD rq_Width        ; dimensions of the entire box
  161.     WORD rq_Height        ; dimensions of the entire box
  162.  
  163.     WORD rq_RelLeft        ; get POINTREL Pointer relativity offsets
  164.     WORD rq_RelTop        ; get POINTREL Pointer relativity offsets
  165.  
  166.     APTR  rq_ReqGadget         ; pointer to the first of a list of gadgets
  167.     APTR  rq_ReqBorder        ; the box's border
  168.     APTR  rq_ReqText        ; the box's text
  169.  
  170.     WORD  rq_Flags        ; see definitions below
  171.  
  172.     UBYTE rq_BackFill        ; pen number for back-plane fill before draws
  173.  
  174.     BYTE rq_KludgeFill00    ; This is strictly for word-alignment
  175.  
  176.     APTR rq_ReqLayer        ; layer in which requester rendered
  177.     STRUCT rq_ReqPad1,32    ; for backwards compatibility (reserved)
  178.  
  179.     ; If the BitMap plane pointers are non-zero, this tells the system 
  180.     ; that the image comes pre-drawn (if the appliprog wants to define 
  181.     ; its own box, in any shape or size it wants!); this is OK by 
  182.     ; Intuition as long as there's a good correspondence between the image
  183.     ; and the specified Gadgets
  184.     APTR  rq_ImageBMap        ; points to the BitMap of PREDRAWN imagery
  185.  
  186.     APTR  rq_RWindow        ; points back to requester's window
  187.     APTR  rq_ReqImage        ; new for V36: drawn if USEREQIMAGE set
  188.     STRUCT rq_ReqPad2,32    ; for backwards compatibility (reserved)
  189.  
  190.     LABEL rq_SIZEOF
  191.  
  192. ; FLAGS SET BY THE APPLIPROG
  193. POINTREL    EQU $0001  ; if POINTREL set, TopLeft is relative to pointer
  194.                ; for DMRequester, relative to window center
  195.                ; for Request().
  196. PREDRAWN    EQU $0002  ; if ReqBMap points to predrawn Requester imagery
  197. NOISYREQ     EQU $0004  ; if you don't want requester to filter input
  198.  
  199. ; New for V36
  200. SIMPLEREQ    EQU $0010  ; to use SIMPLEREFRESH layer (recommended)
  201. USEREQIMAGE    EQU $0020  ; render linked list ReqImage after BackFill
  202.                ; but before gadgets and text
  203. NOREQBACKFILL    EQU $0040  ; don't bother filling with Requester.BackFill
  204.  
  205.  
  206. ; FLAGS SET BY INTUITION;
  207. REQOFFWINDOW    EQU $1000    ; part of one of the Gadgets was offwindow
  208. REQACTIVE    EQU $2000    ; this requester is active
  209. SYSREQUEST    EQU $4000    ; (unused) this requester caused by system
  210. DEFERREFRESH    EQU $8000    ; this Requester stops a Refresh broadcast
  211.  
  212.  
  213.  
  214.  
  215.  
  216. ; ========================================================================
  217. ; === Gadget =============================================================
  218. ; ========================================================================
  219.  STRUCTURE Gadget,0
  220.  
  221.     APTR gg_NextGadget        ; next gadget in the list
  222.  
  223.     WORD gg_LeftEdge        ; "hit box" of gadget
  224.     WORD gg_TopEdge        ; "hit box" of gadget
  225.     WORD gg_Width        ; "hit box" of gadget
  226.     WORD gg_Height        ; "hit box" of gadget
  227.  
  228.     WORD gg_Flags         ; see below for list of defines
  229.  
  230.     WORD gg_Activation        ; see below for list of defines
  231.  
  232.     WORD gg_GadgetType        ; see below for defines
  233.  
  234.     ; appliprog can specify that the Gadget be rendered as either as Border
  235.     ; or an Image.  This variable points to which (or equals NULL if there's
  236.     ; nothing to be rendered about this Gadget)
  237.     APTR gg_GadgetRender
  238.  
  239.     ; appliprog can specify "highlighted" imagery rather than algorithmic
  240.     ; this can point to either Border or Image data
  241.     APTR gg_SelectRender
  242.  
  243.     APTR gg_GadgetText        ; text for this gadget;
  244.  
  245.     ; MutualExclude, never implemented, is now declared obsolete.
  246.     ; There are published examples of implementing a more general
  247.     ; and practical exclusion in your applications.
  248.     ;
  249.     ; Starting V36, this field is used to point to a hook
  250.     ; for a custom gadget.
  251.     ;
  252.     ; Programs using this field for their own processing will
  253.     ; continue to work, as long as they don't try the
  254.     ; trick with custom gadgets
  255.     LONG gg_MutualExclude     ; obsolete
  256.  
  257.     ; pointer to a structure of special data required by Proportional, String 
  258.     ; and Integer Gadgets
  259.     APTR gg_SpecialInfo
  260.  
  261.     WORD gg_GadgetID    ; user-definable ID field
  262.     APTR  gg_UserData    ; ptr to general purpose User data (ignored by Intuit)
  263.  
  264.     LABEL gg_SIZEOF
  265.  
  266. ; --- Gadget.Flags values ---
  267. ; combinations in these bits describe the highlight technique to be used
  268. GFLG_GADGHIGHBITS    EQU $0003
  269. GFLG_GADGHCOMP        EQU $0000    ; Complement the select box
  270. GFLG_GADGHBOX        EQU $0001    ; Draw a box around the image
  271. GFLG_GADGHIMAGE        EQU $0002    ; Blast in this alternate image
  272. GFLG_GADGHNONE        EQU $0003    ; don't highlight
  273.  
  274. ; set this flag if the GadgetRender and SelectRender point to Image imagery,
  275. ; clear if it's a Border 
  276. GFLG_GADGIMAGE        EQU $0004
  277.  
  278. ; combinations in these next two bits specify to which corner the gadget's
  279. ; Left & Top coordinates are relative.    If relative to Top/Left,
  280. ; these are "normal" coordinates (everything is relative to something in
  281. ; this universe)
  282. GFLG_RELBOTTOM        EQU $0008    ; set if rel to bottom, clear if to top
  283. GFLG_RELRIGHT        EQU $0010    ; set if rel to right, clear if to left
  284. ; set the GFLG_RELWIDTH bit to spec that Width is relative to width of screen
  285. GFLG_RELWIDTH        EQU $0020
  286. ; set the GFLG_RELHEIGHT bit to spec that Height is rel to height of screen
  287. GFLG_RELHEIGHT        EQU $0040
  288.  
  289. ; the GFLG_SELECTED flag is initialized by you and set by Intuition.  It
  290. ; specifies whether or not this Gadget is currently selected/highlighted
  291. GFLG_SELECTED        EQU $0080
  292.  
  293.  
  294. ; the GFLG_DISABLED flag is initialized by you and later set by Intuition
  295. ; according to your calls to On/OffGadget().  It specifies whether or not
  296. ; this Gadget is currently disabled from being selected
  297. GFLG_DISABLED        EQU $0100
  298.  
  299. * These flags specify the type of text field that Gadget.GadgetText
  300. * points to.  In all normal (pre-V36) gadgets which you initialize
  301. * this field should always be zero.  Some types of gadget objects
  302. * created from classes will use these fields to keep track of
  303. * types of labels/contents that different from IntuiText, but are
  304. * stashed in GadgetText.
  305.  
  306. GFLG_LABELMASK        EQU    $3000
  307. GFLG_LABELITEXT        EQU    $0000    ; GadgetText points to IntuiText
  308. GFLG_LABELSTRING    EQU    $1000    ; GadgetText points to (UBYTE *)
  309. GFLG_LABELIMAGE        EQU    $2000    ; GadgetText points to Image (object)
  310. ; New for V37: GFLG_TABCYCLE
  311. GFLG_TABCYCLE        EQU    $0200    ; (string or custom) gadget
  312.                 ; participates in cycling activation with
  313.                 ; Tab or Shift-Tab
  314.  
  315. ; New for V37: GFLG_STRINGEXTEND.  We discovered that V34 doesn't properly
  316. ; ignore the value we had chosen for the Gadget->Activation flag
  317. ; GACT_STRINGEXTEND.  NEVER SET THAT FLAG WHEN RUNNING UNDER V34.
  318. ; The Gadget->Flags bit GFLG_STRINGEXTEND is provided as a synonym which is
  319. ; safe under V34, and equivalent to GACT_STRINGEXTEND under V37.
  320. ; (Note that the two flags are not numerically equal)
  321. GFLG_STRINGEXTEND    EQU    $0400  ; this String Gadget has StringExtend
  322.  
  323.  
  324.  
  325. ; --- These are the Activation flag bits ----------------------------------
  326. ; GACT_RELVERIFY is set if you want to verify that the pointer was still over
  327. ; the gadget when the select button was released.  Will cause
  328. ; an IDCMP_GADGETUP message to be sent if so.
  329. GACT_RELVERIFY        EQU $0001
  330.  
  331. ; the flag GACT_IMMEDIATE, when set, informs the caller that the gadget
  332. ; was activated when it was activated.  this flag works in conjunction with
  333. ; the GACT_RELVERIFY flag
  334. GACT_IMMEDIATE        EQU $0002
  335.  
  336. ; the flag GACT_ENDGADGET, when set, tells the system that this gadget, when
  337. ; selected, causes the Requester or AbsMessage to be ended.  Requesters or
  338. ; AbsMessages that are ended are erased and unlinked from the system
  339. GACT_ENDGADGET        EQU $0004
  340.  
  341. ; the GACT_FOLLOWMOUSE flag, when set, specifies that you want to receive
  342. ; reports on mouse movements while this gadget is active.
  343. ; You probably want to set the GACT_IMMEDIATE flag when using
  344. ; GACT_FOLLOWMOUSE, since that's the only reasonable way you have of learning
  345. ; why Intuition is suddenly sending you a stream of mouse movement events.
  346. ; If you don't set GACT_RELVERIFY, you'll get at least one Mouse Position
  347. ; event.
  348. ; Note: boolean FOLLOWMOUSE gadgets require GACT_RELVERIFY to get
  349. ; _any_ mouse movement events (this unusual behavior is a compatibility
  350. ; hold-over from the old days).
  351.  
  352. GACT_FOLLOWMOUSE    EQU $0008
  353.  
  354. ; if any of the BORDER flags are set in a Gadget that's included in the
  355. ; Gadget list when a Window is opened, the corresponding Border will
  356. ; be adjusted to make room for the Gadget
  357. GACT_RIGHTBORDER    EQU $0010
  358. GACT_LEFTBORDER        EQU $0020
  359. GACT_TOPBORDER        EQU $0040
  360. GACT_BOTTOMBORDER    EQU $0080
  361. GACT_BORDERSNIFF    EQU $8000    ; neither set nor rely on this bit
  362.  
  363. GACT_TOGGLESELECT    EQU $0100    ; this bit for toggle-select mode
  364. GACT_BOOLEXTEND        EQU $2000    ; This Boolean Gadget has a BoolInfo
  365.  
  366. ; should properly be in StringInfo, but aren't
  367. GACT_STRINGLEFT        EQU $0000    ; NOTE WELL: that this has value zero
  368. GACT_STRINGCENTER    EQU $0200    ; center the String
  369. GACT_STRINGRIGHT    EQU $0400    ; right-justify the String
  370. GACT_LONGINT        EQU $0800    ; This String Gadget is a Long Integer
  371. GACT_ALTKEYMAP        EQU $1000    ; has an alternate keymapping
  372. GACT_STRINGEXTEND    EQU $2000    ; this String Gadget has an extension
  373.                     ; NOTE: NEVER SET GACT_STRINGEXTEND
  374.                     ; IF YOU ARE RUNNING ON LESS THAN V36!
  375.                     ; SEE GFLG_STRINGEXTEND (ABOVE) INSTEAD
  376.  
  377. GACT_ACTIVEGADGET    EQU $4000    ; this gadget is "active".  This flag
  378.                 ; is maintained by Intuition, and you
  379.                 ; cannot count on its value persisting
  380.                 ; while you do something on your program's
  381.                 ; task.  It can only be trusted by
  382.                 ; people implementing custom gadgets
  383.  
  384. * note $8000 is used above (GACT_BORDERSNIFF); all Activation flags defined
  385.  
  386.  
  387.  
  388. ; --- GADGET TYPES -----------------------------------------------------------
  389. ; These are the Gaget Type definitions for the variable GadgetType.
  390. ; Gadget number type MUST start from one.  NO TYPES OF ZERO ALLOWED.
  391. ; first comes the mask for Gadget flags reserved for Gadget typing
  392. GTYP_GADGETTYPE        EQU $FC00    ; all Gadget Global Type flags
  393.                     ; (padded)
  394. GTYP_SYSGADGET        EQU $8000    ; 1 = Allocated by the system, 0 = by app.
  395. GTYP_SCRGADGET        EQU $4000    ; 1 = ScreenGadget, 0 = WindowGadget
  396. GTYP_GZZGADGET        EQU $2000    ; 1 = Gadget for WFLG_GIMMEZEROZERO
  397.                     ;     borders
  398. GTYP_REQGADGET        EQU $1000    ; 1 = this is a Requester Gadget
  399. ; system gadgets
  400. GTYP_SIZING        EQU $0010
  401. GTYP_WDRAGGING        EQU $0020
  402. GTYP_SDRAGGING        EQU $0030
  403. GTYP_WUPFRONT        EQU $0040
  404. GTYP_SUPFRONT        EQU $0050
  405. GTYP_WDOWNBACK        EQU $0060
  406. GTYP_SDOWNBACK        EQU $0070
  407. GTYP_CLOSE        EQU $0080
  408. ; application gadgets
  409. GTYP_BOOLGADGET        EQU $0001
  410. GTYP_GADGET0002        EQU $0002
  411. GTYP_PROPGADGET        EQU $0003
  412. GTYP_STRGADGET        EQU $0004
  413. GTYP_CUSTOMGADGET    EQU $0005
  414. GTYP_GTYPEMASK        EQU $0004    ; masks out to gadget class
  415.  
  416.  
  417.  
  418. ; ======================================================================== 
  419. ; === BoolInfo============================================================
  420. ; ======================================================================== 
  421. ; This is the special data needed by an Extended Boolean Gadget
  422. ; Typically this structure will be pointed to by the Gadget field SpecialInfo
  423.  
  424.  STRUCTURE BoolInfo,0
  425.  
  426.     WORD    bi_Flags    ; defined below 
  427.     APTR    bi_Mask    ; bit mask for highlighting and selecting
  428.             ; mask must follow the same rules as an Image
  429.             ; plane.  Its width and height are determined
  430.             ; by the width and height of the gadget's
  431.             ; select box. (i.e. Gadget.Width and .Height).
  432.     LONG    bi_Reserved    ; set to 0
  433.  
  434.     LABEL   bi_SIZEOF
  435.  
  436. ; set BoolInfo.Flags to this flag bit.
  437. ; in the future, additional bits might mean more stuff hanging
  438. ; off of BoolInfo.Reserved.
  439.  
  440. BOOLMASK    EQU    $0001    ; extension is for masked gadget
  441.  
  442. ; ========================================================================
  443. ; === PropInfo ===========================================================
  444. ; ========================================================================
  445. ; this is the special data required by the proportional Gadget
  446. ; typically, this data will be pointed to by the Gadget variable SpecialInfo
  447.  STRUCTURE PropInfo,0
  448.  
  449.     WORD pi_Flags    ; general purpose flag bits (see defines below)
  450.  
  451.     ; You initialize the Pot variables before the Gadget is added to
  452.     ; the system.  Then you can look here for the current settings
  453.     ; any time, even while User is playing with this Gadget.  To
  454.     ; adjust these after the Gadget is added to the System, use
  455.     ; ModifyProp(); The Pots are the actual proportional settings,
  456.     ; where a value of zero means zero and a value of MAXPOT means
  457.     ; that the Gadget is set to its maximum setting.
  458.     WORD pi_HorizPot    ; 16-bit FixedPoint horizontal quantity percentage;
  459.     WORD pi_VertPot    ; 16-bit FixedPoint vertical quantity percentage;
  460.  
  461.     ; the 16-bit FixedPoint Body variables describe what percentage
  462.     ; of the entire body of stuff referred to by this Gadget is
  463.     ; actually shown at one time.  This is used with the AUTOKNOB
  464.     ; routines, to adjust the size of the AUTOKNOB according to how
  465.     ; much of the data can be seen.  This is also used to decide how
  466.     ; far to advance the Pots when User hits the Container of the Gadget.
  467.     ; For instance, if you were controlling the display of a 5-line
  468.     ; Window of text with this Gadget, and there was a total of 15
  469.     ; lines that could be displayed, you would set the VertBody value to
  470.     ;     (MAXBODY / (TotalLines / DisplayLines)) = MAXBODY / 3.
  471.     ; Therefore, the AUTOKNOB would fill 1/3 of the container, and if
  472.     ; User hits the Cotainer outside of the knob, the pot would advance
  473.     ; 1/3 (plus or minus) If there's no body to show, or the total 
  474.     ; amount of displayable info is less than the display area, set the 
  475.     ; Body variables to the MAX.  To adjust these after the Gadget is 
  476.     ; added to the System, use ModifyProp().
  477.     WORD pi_HorizBody    ; horizontal Body
  478.     WORD pi_VertBody    ; vertical Body
  479.  
  480.     ; these are the variables that Intuition sets and maintains
  481.     WORD pi_CWidth    ; Container width (with any relativity absoluted)
  482.     WORD pi_CHeight    ; Container height (with any relativity absoluted)
  483.     WORD pi_HPotRes    ; pot increments
  484.     WORD pi_VPotRes    ; pot increments
  485.     WORD pi_LeftBorder    ; Container borders
  486.     WORD pi_TopBorder    ; Container borders
  487.     LABEL  pi_SIZEOF
  488.  
  489. ; --- FLAG BITS --------------------------------------------------------------
  490. AUTOKNOB    EQU $0001    ; this flag sez:  gimme that old auto-knob
  491. FREEHORIZ    EQU $0002    ; if set, the knob can move horizontally
  492. FREEVERT    EQU $0004    ; if set, the knob can move vertically
  493. PROPBORDERLESS    EQU $0008    ; if set, no border will be rendered
  494. KNOBHIT        EQU $0100    ; set when this Knob is hit
  495. PROPNEWLOOK    EQU $0010    ; set this if you want to get the new
  496.                 ; V36 look
  497.  
  498. KNOBHMIN    EQU 6        ; minimum horizontal size of the knob
  499. KNOBVMIN     EQU 4        ; minimum vertical size of the knob
  500. MAXBODY        EQU $FFFF    ; maximum body value
  501. MAXPOT         EQU $FFFF    ; maximum pot value
  502.  
  503.  
  504. ; ========================================================================
  505. ; === StringInfo =========================================================
  506. ; ========================================================================
  507. ; this is the special data required by the string Gadget
  508. ; typically, this data will be pointed to by the Gadget variable SpecialInfo
  509.  STRUCTURE StringInfo,0
  510.  
  511.     ; you initialize these variables, and then Intuition maintains them
  512.     APTR  si_Buffer    ; the buffer containing the start and final string
  513.     APTR  si_UndoBuffer    ; optional buffer for undoing current entry
  514.     WORD si_BufferPos    ; character position in Buffer
  515.     WORD si_MaxChars    ; max number of chars in Buffer (including NULL)
  516.     WORD si_DispPos    ; Buffer position of first displayed character
  517.  
  518.     ; Intuition initializes and maintains these variables for you
  519.     WORD si_UndoPos    ; character position in the undo buffer
  520.     WORD si_NumChars    ; number of characters currently in Buffer
  521.     WORD si_DispCount    ; number of whole characters visible in Container
  522.     WORD si_CLeft    ; topleft offset of the container
  523.     WORD si_CTop    ; topleft offset of the container
  524.  
  525.     ; unused field is changed to allow extended specification
  526.     ; of string gadget parameters.  It is ignored unless the flag
  527.     ; GACT_STRINGEXTEND is set in the Gadget's Activation field
  528.     ; or the GFLG_STRINGEXTEND flag is set in the Gadget Flags field.
  529.     ; (See GFLG_STRINGEXTEND for an important note)
  530.     ;APTR  si_LayerPtr    ; --- obsolete ---
  531.     APTR  si_Extension
  532.  
  533.     ; you can initialize this variable before the gadget is submitted to
  534.     ; Intuition, and then examine it later to discover what integer
  535.     ; the user has entered (if the user never plays with the gadget,
  536.     ; the value will be unchanged from your initial setting)
  537.     LONG  si_LongInt    ; the LONG return value of a GACT_LONGINT String Gad.
  538.  
  539.     ; If you want this Gadget to use your own Console keymapping, you
  540.     ; set the GACT_ALTKEYMAP bit in the Activation flags of the Gadget, and
  541.     ; then set this variable to point to your keymap.  If you don't set the
  542.     ; GACT_ALTKEYMAP, you'll get the standard ASCII keymapping.
  543.     APTR si_AltKeyMap
  544.  
  545.     LABEL si_SIZEOF
  546.  
  547.  
  548.  
  549.  
  550. ; ========================================================================
  551. ; === IntuiText ==========================================================
  552. ; ========================================================================
  553. ; IntuiText is a series of strings that start with a location
  554. ; (always relative to the upper-left corner of something) and then the
  555. ; text of the string.  The text is null-terminated.
  556.  STRUCTURE IntuiText,0
  557.  
  558.     BYTE it_FrontPen        ; the pens for rendering the text
  559.     BYTE it_BackPen        ; the pens for rendering the text
  560.  
  561.     BYTE it_DrawMode        ; the mode for rendering the text
  562.  
  563.     BYTE it_KludgeFill00    ; This is strictly for word-alignment
  564.  
  565.     WORD it_LeftEdge        ; relative start location for the text
  566.     WORD it_TopEdge        ; relative start location for the text
  567.  
  568.     APTR  it_ITextFont        ; if NULL, you accept the defaults
  569.  
  570.     APTR it_IText        ; pointer to null-terminated text
  571.  
  572.     APTR  it_NextText        ; pointer to another IntuiText to render
  573.  
  574.     LABEL it_SIZEOF
  575.  
  576.  
  577.  
  578.  
  579.  
  580. ; ========================================================================
  581. ; === Border =============================================================
  582. ; ========================================================================
  583. ; Data type Border, used for drawing a series of lines which is intended for
  584. ; use as a border drawing, but which may, in fact, be used to render any
  585. ; arbitrary vector shape.
  586. ; The routine DrawBorder sets up the RastPort with the appropriate
  587. ; variables, then does a Move to the first coordinate, then does Draws
  588. ; to the subsequent coordinates.
  589. ; After all the Draws are done, if NextBorder is non-zero we call DrawBorder
  590. ; on NextBorder
  591.  STRUCTURE Border,0
  592.  
  593.     WORD  bd_LeftEdge        ; initial offsets from the origin
  594.     WORD  bd_TopEdge        ; initial offsets from the origin
  595.     BYTE  bd_FrontPen        ; pen number for rendering
  596.     BYTE  bd_BackPen        ; pen number for rendering
  597.     BYTE  bd_DrawMode        ; mode for rendering
  598.     BYTE  bd_Count        ; number of XY pairs
  599.     APTR  bd_XY            ; vector coordinate pairs rel to LeftTop
  600.     APTR  bd_NextBorder        ; pointer to any other Border too
  601.  
  602.     LABEL bd_SIZEOF
  603.  
  604.  
  605. ; ========================================================================
  606. ; === Image ==============================================================
  607. ; ========================================================================
  608. ; This is a brief image structure for very simple transfers of
  609. ; image data to a RastPort
  610.  STRUCTURE Image,0
  611.  
  612.     WORD ig_LeftEdge        ; starting offset relative to something
  613.     WORD ig_TopEdge        ; starting offset relative to something
  614.     WORD ig_Width        ; pixel size (though data is word-aligned)
  615.     WORD ig_Height        ; pixel size
  616.     WORD ig_Depth        ; pixel size
  617.     APTR ig_ImageData        ; pointer to the actual image bits
  618.  
  619.     ; the PlanePick and PlaneOnOff variables work much the same way as the
  620.     ; equivalent GELS Bob variables.  It's a space-saving 
  621.     ; mechanism for image data.  Rather than defining the image data
  622.     ; for every plane of the RastPort, you need define data only for planes 
  623.     ; that are not entirely zero or one.  As you define your Imagery, you will
  624.     ; often find that most of the planes ARE just as color selectors.  For
  625.     ; instance, if you're designing a two-color Gadget to use colors two and
  626.     ; three, and the Gadget will reside in a five-plane display, plane zero
  627.     ; of your imagery would be all ones, bit plane one would have data that
  628.     ; describes the imagery, and bit planes two through four would be
  629.     ; all zeroes.  Using these flags allows you to avoid wasting all that
  630.     ; memory in this way:
  631.     ; first, you specify which planes you want your data to appear
  632.     ; in using the PlanePick variable.    For each bit set in the variable, the
  633.     ; next "plane" of your image data is blitted to the display.  For each bit
  634.     ; clear in this variable, the corresponding bit in PlaneOnOff is examined.
  635.     ; If that bit is clear, a "plane" of zeroes will be used.  If the bit is
  636.     ; set, ones will go out instead.  So, for our example:
  637.     ;    Gadget.PlanePick = 0x02;
  638.     ;    Gadget.PlaneOnOff = 0x01;
  639.     ; Note that this also allows for generic Gadgets, like the System Gadgets,
  640.     ; which will work in any number of bit planes
  641.     ; Note also that if you want an Image that is only a filled rectangle,
  642.     ; you can get this by setting PlanePick to zero (pick no planes of data)
  643.     ; and set PlaneOnOff to describe the pen color of the rectangle.
  644.     ;
  645.     ; NOTE:  Intuition relies on PlanePick to know how many planes
  646.     ; of data are found in ImageData.  There should be no more
  647.     ; '1'-bits in PlanePick than there are planes in ImageData.
  648.     BYTE ig_PlanePick
  649.     BYTE ig_PlaneOnOff
  650.  
  651.     ; if the NextImage variable is not NULL, Intuition presumes that
  652.     ; it points to another Image structure with another Image to be
  653.     ; rendered
  654.     APTR ig_NextImage
  655.  
  656.  
  657.     LABEL ig_SIZEOF
  658.  
  659.  
  660.  
  661.  
  662. ; ========================================================================
  663. ; === IntuiMessage =======================================================
  664. ; ========================================================================
  665.  STRUCTURE IntuiMessage,0
  666.  
  667.     STRUCT im_ExecMessage,MN_SIZE
  668.  
  669.     ; the Class bits correspond directly with the IDCMP Flags, except for the
  670.     ; special bit IDCMP_LONELYMESSAGE (defined below)
  671.     LONG im_Class
  672.  
  673.     ; the Code field is for special values like MENU number
  674.     WORD im_Code
  675.  
  676.     ; the Qualifier field is a copy of the current InputEvent's Qualifier 
  677.     WORD im_Qualifier
  678.  
  679.     ; IAddress contains particular addresses for Intuition functions, like
  680.     ; the pointer to the Gadget or the Screen
  681.     APTR im_IAddress
  682.  
  683.     ; when getting mouse movement reports, any event you get will have the
  684.     ; the mouse coordinates in these variables.  the coordinates are relative
  685.     ; to the upper-left corner of your Window (WFLG_GIMMEZEROZERO
  686.     ; notwithstanding)
  687.     ; If the DELTAMOVE IDCMP flag is set, these values will be deltas from
  688.     ; the last reported position.
  689.     WORD im_MouseX
  690.     WORD im_MouseY
  691.  
  692.     ; the time values are copies of the current system clock time.  Micros
  693.     ; are in units of microseconds, Seconds in seconds.
  694.     LONG im_Seconds
  695.     LONG im_Micros
  696.  
  697.     ; the IDCMPWindow variable will always have the address of the Window of 
  698.     ; this IDCMP 
  699.     APTR im_IDCMPWindow
  700.  
  701.     ; system-use variable 
  702.     APTR im_SpecialLink
  703.  
  704.     LABEL  im_SIZEOF
  705.  
  706.  
  707.  
  708. ; --- IDCMP Classes ------------------------------------------------------ 
  709. ; Please refer to the Autodoc for OpenWindow() and to the Rom Kernel
  710. ; Manual for full details on the IDCMP classes.
  711.  
  712. IDCMP_SIZEVERIFY    EQU    $00000001
  713. IDCMP_NEWSIZE        EQU    $00000002
  714. IDCMP_REFRESHWINDOW    EQU    $00000004
  715. IDCMP_MOUSEBUTTONS    EQU    $00000008
  716. IDCMP_MOUSEMOVE        EQU    $00000010
  717. IDCMP_GADGETDOWN    EQU    $00000020
  718. IDCMP_GADGETUP        EQU    $00000040
  719. IDCMP_REQSET        EQU    $00000080
  720. IDCMP_MENUPICK        EQU    $00000100
  721. IDCMP_CLOSEWINDOW    EQU    $00000200
  722. IDCMP_RAWKEY        EQU    $00000400
  723. IDCMP_REQVERIFY        EQU    $00000800
  724. IDCMP_REQCLEAR        EQU    $00001000
  725. IDCMP_MENUVERIFY    EQU    $00002000
  726. IDCMP_NEWPREFS        EQU    $00004000
  727. IDCMP_DISKINSERTED    EQU    $00008000
  728. IDCMP_DISKREMOVED    EQU    $00010000
  729. IDCMP_WBENCHMESSAGE    EQU    $00020000    ; System use only
  730. IDCMP_ACTIVEWINDOW    EQU    $00040000
  731. IDCMP_INACTIVEWINDOW    EQU    $00080000
  732. IDCMP_DELTAMOVE        EQU    $00100000
  733. IDCMP_VANILLAKEY    EQU    $00200000
  734. IDCMP_INTUITICKS    EQU    $00400000
  735. ;  for notifications from "boopsi" gadgets:
  736. IDCMP_IDCMPUPDATE    EQU    $00800000      ; new for V36
  737. ; for getting help key report during menu session:
  738. IDCMP_MENUHELP        EQU    $01000000      ; new for V36
  739. ; for notification of any move/size/zoom/change window:
  740. IDCMP_CHANGEWINDOW    EQU    $02000000      ; new for V36
  741. ; NOTEZ-BIEN:        $80000000 is reserved for internal use by IDCMP
  742.  
  743. ; the IDCMP Flags do not use this special bit, which is cleared when
  744. ; Intuition sends its special message to the Task, and set when Intuition
  745. ; gets its Message back from the Task.  Therefore, I can check here to
  746. ; find out fast whether or not this Message is available for me to send
  747. IDCMP_LONELYMESSAGE    EQU    $80000000
  748.  
  749.  
  750.  
  751. ; --- IDCMP Codes -------------------------------------------------------- 
  752. ; This group of codes is for the IDCMP_MENUVERIFY function 
  753. MENUHOT        EQU    $0001    ; IntuiWants verification or MENUCANCEL    
  754. MENUCANCEL    EQU    $0002    ; HOT Reply of this cancels Menu operation 
  755. MENUWAITING    EQU    $0003    ; Intuition simply wants a ReplyMsg() ASAP 
  756.  
  757. ; These are internal tokens to represent state of verification attempts
  758. ; shown here as a clue.
  759. OKOK        EQU    MENUHOT        ; guy didn't care
  760. OKABORT        EQU    $0004        ; window rendered question moot
  761. OKCANCEL    EQU    MENUCANCEL    ; window sent cancel reply
  762.  
  763. ; This group of codes is for the IDCMP_WBENCHMESSAGE messages
  764. WBENCHOPEN    EQU $0001
  765. WBENCHCLOSE    EQU $0002
  766.  
  767. ; A data structure common in V36 Intuition processing
  768.  
  769.  STRUCTURE    IBox,0
  770.     WORD    ibox_Left
  771.     WORD    ibox_Top
  772.     WORD    ibox_Width
  773.     WORD    ibox_Height
  774.  LABEL    ibox_SIZEOF
  775.  
  776.  
  777. ; ========================================================================
  778. ; === Window =============================================================
  779. ; ========================================================================
  780.  STRUCTURE Window,0
  781.  
  782.     APTR wd_NextWindow        ; for the linked list of a Screen
  783.  
  784.     WORD wd_LeftEdge        ; screen dimensions
  785.     WORD wd_TopEdge        ; screen dimensions
  786.     WORD wd_Width        ; screen dimensions
  787.     WORD wd_Height        ; screen dimensions
  788.  
  789.     WORD wd_MouseY        ; relative top top-left corner
  790.     WORD wd_MouseX        ; relative top top-left corner
  791.  
  792.     WORD wd_MinWidth        ; minimum sizes
  793.     WORD wd_MinHeight        ; minimum sizes
  794.     WORD wd_MaxWidth        ; maximum sizes
  795.     WORD wd_MaxHeight        ; maximum sizes
  796.  
  797.     LONG wd_Flags        ; see below for definitions
  798.  
  799.     APTR wd_MenuStrip        ; first in a list of menu headers
  800.  
  801.     APTR wd_Title        ; title text for the Window
  802.  
  803.     APTR wd_FirstRequest    ; first in linked list of active Requesters
  804.     APTR wd_DMRequest        ; the double-menu Requester
  805.     WORD wd_ReqCount        ; number of Requesters blocking this Window
  806.     APTR wd_WScreen        ; this Window's Screen
  807.     APTR wd_RPort        ; this Window's very own RastPort
  808.  
  809.     ; the border variables describe the window border.    If you specify
  810.     ; WFLG_GIMMEZEROZERO when you open the window, then the upper-left of the
  811.     ; ClipRect for this window will be upper-left of the BitMap (with correct
  812.     ; offsets when in SuperBitMap mode; you MUST select WFLG_GIMMEZEROZERO
  813.     ; when using SuperBitMap).    If you don't specify ZeroZero, then you save
  814.     ; memory (no allocation of RastPort, Layer, ClipRect and associated
  815.     ; Bitmaps), but you also must offset all your writes by BorderTop,
  816.     ; BorderLeft and do your own mini-clipping to prevent writing over the
  817.     ; system gadgets
  818.     BYTE wd_BorderLeft
  819.     BYTE wd_BorderTop
  820.     BYTE wd_BorderRight
  821.     BYTE wd_BorderBottom
  822.     APTR wd_BorderRPort
  823.  
  824.     ; You supply a linked-list of gadget that you want for your Window.
  825.     ; This list DOES NOT include system Gadgets.  You get the standard
  826.     ; window system Gadgets by setting flag-bits in the variable Flags (see
  827.     ; the bit definitions below)
  828.     APTR wd_FirstGadget
  829.  
  830.     ; these are for opening/closing the windows 
  831.     APTR wd_Parent
  832.     APTR wd_Descendant
  833.  
  834.     ; sprite data information for your own Pointer
  835.     ; set these AFTER you Open the Window by calling SetPointer()
  836.     APTR wd_Pointer
  837.     BYTE wd_PtrHeight
  838.     BYTE wd_PtrWidth
  839.     BYTE wd_XOffset
  840.     BYTE wd_YOffset
  841.  
  842.     ; the IDCMP Flags and User's and Intuition's Message Ports 
  843.     ULONG wd_IDCMPFlags
  844.     APTR wd_UserPort
  845.     APTR wd_WindowPort
  846.     APTR wd_MessageKey
  847.  
  848.     BYTE wd_DetailPen
  849.     BYTE wd_BlockPen
  850.  
  851.     ; the CheckMark is a pointer to the imagery that will be used when 
  852.     ; rendering MenuItems of this Window that want to be checkmarked
  853.     ; if this is equal to NULL, you'll get the default imagery
  854.     APTR wd_CheckMark
  855.  
  856.     ; if non-null, Screen title when Window is active
  857.     APTR wd_ScreenTitle
  858.  
  859.     ; These variables have the mouse coordinates relative to the
  860.     ; inner-Window of WFLG_GIMMEZEROZERO Windows.  This is compared with the
  861.     ; MouseX and MouseY variables, which contain the mouse coordinates
  862.     ; relative to the upper-left corner of the Window, WFLG_GIMMEZEROZERO
  863.     ; notwithstanding
  864.     WORD wd_GZZMouseX
  865.     WORD wd_GZZMouseY
  866.     ; these variables contain the width and height of the inner-Window of
  867.     ; WFLG_GIMMEZEROZERO Windows
  868.     WORD wd_GZZWidth
  869.     WORD wd_GZZHeight
  870.  
  871.     APTR wd_ExtData
  872.  
  873.     ; general-purpose pointer to User data extension
  874.     APTR wd_UserData
  875.     APTR wd_WLayer    ; stash of Window.RPort->Layer
  876.  
  877.     ; NEW 1.2: need to keep track of the font that OpenWindow opened,
  878.     ; in case user SetFont's into RastPort
  879.     APTR  wd_IFont
  880.  
  881.     ; (V36) another flag word (the Flags field is used up).
  882.     ; At present, all flag values are system private.
  883.     ; Until further notice, you may not change nor use this field.
  884.     ULONG wd_MoreFlags
  885.  
  886.     ; ----- subsequent fields are INTUITION PRIVATE ---
  887.  
  888.     LABEL wd_Size
  889.     LABEL wd_SIZEOF    ; you should never use this: only Intuition allocates
  890.  
  891. ; --- Flags requested at OpenWindow() time by the application -------------
  892. WFLG_SIZEGADGET      EQU $0001    ; include sizing system-gadget? 
  893. WFLG_DRAGBAR        EQU $0002    ; include dragging system-gadget? 
  894. WFLG_DEPTHGADGET       EQU $0004    ; include depth arrangement gadget? 
  895. WFLG_CLOSEGADGET       EQU $0008    ; include close-box system-gadget? 
  896.  
  897. WFLG_SIZEBRIGHT        EQU $0010    ; size gadget uses right border 
  898. WFLG_SIZEBBOTTOM    EQU $0020    ; size gadget uses bottom border 
  899.  
  900. ; --- refresh modes ----------------------------------------------------------
  901. ; combinations of the WFLG_REFRESHBITS select the refresh type 
  902. WFLG_REFRESHBITS    EQU $00C0
  903. WFLG_SMART_REFRESH    EQU $0000
  904. WFLG_SIMPLE_REFRESH    EQU $0040
  905. WFLG_SUPER_BITMAP    EQU $0080
  906. WFLG_OTHER_REFRESH    EQU $00C0
  907.  
  908. WFLG_BACKDROP        EQU $0100    ; this is a backdrop window 
  909.  
  910. WFLG_REPORTMOUSE    EQU $0200    ; set this to hear every mouse move
  911.  
  912. WFLG_GIMMEZEROZERO    EQU $0400    ; make extra border stuff 
  913.  
  914. WFLG_BORDERLESS        EQU $0800    ; set this to get a Window sans border 
  915.  
  916. WFLG_ACTIVATE        EQU $1000    ; when Window opens, it's the Active
  917.                     ; one
  918.  
  919. ; FLAGS SET BY INTUITION
  920. WFLG_WINDOWACTIVE    EQU $2000    ; this window is the active one
  921. WFLG_INREQUEST        EQU $4000    ; this window is in request mode
  922. WFLG_MENUSTATE        EQU $8000    ; this Window is active with its
  923.                     ; Menus on
  924.  
  925. ; --- Other User Flags -------------------------------------------------------
  926. WFLG_RMBTRAP        EQU $00010000    ; Catch RMB events for your own
  927. WFLG_NOCAREREFRESH    EQU $00020000    ; not to be bothered with REFRESH
  928.  
  929. ; --- Other Intuition Flags ----------------------------------------------
  930. WFLG_WINDOWREFRESH    EQU $01000000    ; Window is currently refreshing
  931. WFLG_WBENCHWINDOW    EQU $02000000    ; WorkBench Window
  932. WFLG_WINDOWTICKED    EQU $04000000    ; only one timer tick at a time
  933.  
  934. SUPER_UNUSED    EQU $FCFC0000    ;bits of Flag unused yet
  935.  
  936. ; - V36 new Flags which the programmer may specify in NewScreen.Flags
  937. WFLG_NW_EXTENDED    EQU $00040000    ; extension data provided
  938.                     ; see ExtNewWindow structure
  939.  
  940. ; --- V36 Flags to be set only by Intuition -------------------------
  941. WFLG_VISITOR        EQU $08000000    ; visitor window (see autodoc for OpenWindow)
  942. WFLG_ZOOMED        EQU $10000000    ; identifies "zoom state"
  943. WFLG_HASZOOM        EQU $20000000    ; window has a zoom gadget
  944.  
  945. ; --- Other Window Values ----------------------------------------------
  946. DEFAULTMOUSEQUEUE    EQU 5     ; no more mouse messages
  947.  
  948.  
  949. ; --- see struct IntuiMessage for the IDCMP Flag definitions -----------------
  950.  
  951.  
  952. ; ========================================================================
  953. ; === NewWindow ==========================================================
  954. ; ========================================================================
  955. ; NOTE: to use the new features of V36, you may need to use the
  956. ; ExtNewWindow structure, below.
  957.  STRUCTURE NewWindow,0
  958.  
  959.     WORD nw_LeftEdge        ; initial Window dimensions
  960.     WORD nw_TopEdge        ; initial Window dimensions
  961.     WORD nw_Width        ; initial Window dimensions
  962.     WORD nw_Height        ; initial Window dimensions
  963.  
  964.     BYTE nw_DetailPen        ; for rendering the detail bits of the Window
  965.     BYTE nw_BlockPen        ; for rendering the block-fill bits
  966.  
  967.     LONG nw_IDCMPFlags        ; initial IDCMP state
  968.  
  969.     LONG nw_Flags        ; see the Flag definition under Window
  970.  
  971.     ; You supply a linked-list of Gadgets for your Window.
  972.     ; This list DOES NOT include system Gadgets.  You get the standard
  973.     ; system Window Gadgets by setting flag-bits in the variable Flags (see
  974.     ; the bit definitions under the Window structure definition)
  975.     APTR    nw_FirstGadget
  976.  
  977.     ; the CheckMark is a pointer to the imagery that will be used when
  978.     ; rendering MenuItems of this Window that want to be checkmarked
  979.     ; if this is equal to NULL, you'll get the default imagery
  980.     APTR nw_CheckMark
  981.  
  982.     APTR nw_Title        ; title text for the Window
  983.     
  984.     ; the Screen pointer is used only if you've defined a CUSTOMSCREEN and
  985.     ; want this Window to open in it.  If so, you pass the address of the
  986.     ; Custom Screen structure in this variable.  Otherwise, this variable
  987.     ; is ignored and doesn't have to be initialized.
  988.     APTR nw_Screen
  989.     
  990.     ; WFLG_SUPER_BITMAP Window?  If so, put the address of your BitMap
  991.     ; structure in this variable.  If not, this variable is ignored and
  992.     ; doesn't have to be initialized
  993.     APTR nw_BitMap
  994.  
  995.     ; the values describe the minimum and maximum sizes of your Windows.
  996.     ; these matter only if you've chosen the WFLG_SIZEGADGET Gadget option,
  997.     ; which means that you want to let the User to change the size of 
  998.     ; this Window.  You describe the minimum and maximum sizes that the
  999.     ; Window can grow by setting these variables.  You can initialize
  1000.     ; any one these to zero, which will mean that you want to duplicate
  1001.     ; the setting for that dimension (if MinWidth == 0, MinWidth will be
  1002.     ; set to the opening Width of the Window).
  1003.     ; You can change these settings later using SetWindowLimits().
  1004.     ; If you haven't asked for a GTYP_SIZING Gadget, you don't have to
  1005.     ; initialize any of these variables.
  1006.     WORD nw_MinWidth
  1007.     WORD nw_MinHeight
  1008.     WORD nw_MaxWidth
  1009.     WORD nw_MaxHeight
  1010.  
  1011.     ; the type variable describes the Screen in which you want this Window to
  1012.     ; open.  The type value can either be CUSTOMSCREEN or one of the
  1013.     ; system standard Screen Types such as WBENCHSCREEN.  See the
  1014.     ; type definitions under the Screen structure
  1015.     ; A new possible value for this field is PUBLICSCREEN, which
  1016.     ; defines the window as a 'visitor' window.  See below for
  1017.     ; additional information provided.
  1018.     WORD nw_Type
  1019.  
  1020.     LABEL nw_SIZE
  1021.     LABEL nw_SIZEOF
  1022.  
  1023. ; ExtNewWindow -- NewWindow plus extension fields.
  1024. ; This structure may be extended again, so programs depending on its
  1025. ; size are incorrect.
  1026.  
  1027.  STRUCTURE ExtNewWindow,nw_SIZE
  1028.  
  1029.     ; extensions for V36
  1030.     ; if the NewWindow Flag WFLG_NW_EXTENDED is set, then
  1031.     ; this field is assumed to point to an array (or chain of arrays)
  1032.     ; of TagItem structures.  See also ExtNewScreen for another
  1033.     ; use of TagItems to pass optional data.
  1034.     ;
  1035.     ; see below for tag values and the corresponding data
  1036.  
  1037.     APTR    enw_Extension    ; pointer to TagItem array
  1038.     LABEL enw_SIZEOF
  1039.  
  1040. * The TagItem ID's (ti_Tag values) for OpenWindowTagList() follow.
  1041. * They are values in a TagItem array passed as extension/replacement
  1042. * values for the data in NewWindow.  OpenWindowTagList() can actually
  1043. * work well with a NULL NewWindow pointer.
  1044.  
  1045.     ENUM TAG_USER+100
  1046.  
  1047.     ; these tags simply override NewWindow parameters
  1048.     EITEM WA_Left
  1049.     EITEM WA_Top
  1050.     EITEM WA_Width
  1051.     EITEM WA_Height
  1052.     EITEM WA_DetailPen
  1053.     EITEM WA_BlockPen
  1054.     EITEM WA_IDCMP
  1055.     EITEM WA_Flags    ; not implemented at present
  1056.     EITEM WA_Gadgets
  1057.     EITEM WA_Checkmark
  1058.     EITEM WA_Title
  1059.     EITEM WA_ScreenTitle    ; means you don't have to call SetWindowTitles
  1060.                  ; after you open your window
  1061.  
  1062.     EITEM WA_CustomScreen
  1063.     EITEM WA_SuperBitMap    ; also implies WFLG_SUPER_BITMAP property
  1064.     EITEM WA_MinWidth
  1065.     EITEM WA_MinHeight
  1066.     EITEM WA_MaxWidth
  1067.     EITEM WA_MaxHeight
  1068.  
  1069.     ; The following are specifications for new features
  1070.  
  1071.     EITEM WA_InnerWidth
  1072.     EITEM WA_InnerHeight ; You can specify the dimensions of the interior
  1073.              ; region of your window, independent of what
  1074.              ; the border widths will be.  You probably want
  1075.              ; to also specify WA_AutoAdjust to allow
  1076.              ; Intuition to move your window or even
  1077.              ; shrink it so that it is completely on screen.
  1078.  
  1079.     EITEM WA_PubScreenName    ; declares that you want the window to open as
  1080.              ; a visitor on the public screen whose name is
  1081.              ; pointed to by (UBYTE *) ti_Data
  1082.  
  1083.     EITEM WA_PubScreen    ; open as a visitor window on the public screen
  1084.             ; whose address is in (struct Screen *) ti_Data.
  1085.             ; To ensure that this screen remains open, you
  1086.             ; should either be the screen's owner, have a
  1087.             ; window open on the screen, or use LockPubScreen().
  1088.  
  1089.     EITEM WA_PubScreenFallBack    ; A Boolean, specifies whether a visitor window
  1090.              ; should "fall back" to the default public screen
  1091.              ; (or Workbench) if the named public screen isn't
  1092.              ; available
  1093.  
  1094.     EITEM WA_WindowName    ; not implemented
  1095.     EITEM WA_Colors    ; a ColorSpec array for colors to be set
  1096.             ; when this window is active.  This is not 
  1097.             ; implemented, and may not be, since the default
  1098.             ; values to restore would be hard to track.
  1099.             ; We'd like to at least support per-window colors
  1100.             ; for the mouse pointer sprite.
  1101.  
  1102.     EITEM WA_Zoom    ; ti_Data points to an array of four WORD's,
  1103.             ; the initial Left/Top/Width/Height values of
  1104.             ; the "alternate" zoom position/dimensions.
  1105.             ; It also specifies that you want a Zoom gadget
  1106.             ; for your window, whether or not you have a
  1107.             ; sizing gadget.
  1108.  
  1109.     EITEM WA_MouseQueue    ; ti_Data contains initial value for the mouse
  1110.             ; message backlog limit for this window.
  1111.  
  1112.     EITEM WA_BackFill    ; unimplemented at present: provides a "backfill
  1113.             ; hook" for your window's layer.
  1114.  
  1115.     EITEM WA_RptQueue    ; initial value of repeat key backlog limit
  1116.  
  1117.     ; These Boolean tag items are alternatives to the NewWindow.Flags
  1118.     ; boolean flags with similar names.
  1119.  
  1120.     EITEM WA_SizeGadget
  1121.     EITEM WA_DragBar
  1122.     EITEM WA_DepthGadget
  1123.     EITEM WA_CloseGadget
  1124.     EITEM WA_Backdrop
  1125.     EITEM WA_ReportMouse
  1126.     EITEM WA_NoCareRefresh
  1127.     EITEM WA_Borderless
  1128.     EITEM WA_Activate
  1129.     EITEM WA_RMBTrap
  1130.     EITEM WA_WBenchWindow    ; PRIVATE!!
  1131.     EITEM WA_SimpleRefresh    ; only specify if TRUE
  1132.     EITEM WA_SmartRefresh    ; only specify if TRUE
  1133.     EITEM WA_SizeBRight
  1134.     EITEM WA_SizeBBottom
  1135.  
  1136.     ; New Boolean properties
  1137.     EITEM WA_AutoAdjust    ; shift or squeeze the window's position and
  1138.             ; dimensions to fit it on screen.
  1139.  
  1140.     EITEM WA_GimmeZeroZero    ; equiv. to NewWindow.Flags WFLG_GIMMEZEROZERO
  1141.  
  1142.     ; New for V37: WA_MenuHelp (ignored by V36)
  1143.     EITEM WA_MenuHelp    ; Enables IDCMP_MENUHELP:  Pressing HELP during menus
  1144.             ; will return IDCMP_MENUHELP IDCMP message.
  1145.  
  1146. *** End of Window attribute enumeration ***
  1147.  
  1148.  
  1149.  
  1150.     IFND INTUITION_SCREENS_I
  1151.     INCLUDE "intuition/screens.i"
  1152.     ENDC
  1153.  
  1154.     IFND INTUITION_PREFERENCES_I
  1155.     INCLUDE "intuition/preferences.i"
  1156.     ENDC
  1157.  
  1158. ; ========================================================================
  1159. ; === Remember ===========================================================
  1160. ; ========================================================================
  1161. ; this structure is used for remembering what memory has been allocated to
  1162. ; date by a given routine, so that a premature abort or systematic exit
  1163. ; can deallocate memory cleanly, easily, and completely
  1164.  STRUCTURE Remember,0
  1165.  
  1166.     APTR rm_NextRemember
  1167.     LONG rm_RememberSize
  1168.     APTR rm_Memory
  1169.  
  1170.  LABEL    rm_SIZEOF
  1171.  
  1172.  STRUCTURE ColorSpec,0
  1173.  
  1174.     WORD cs_ColorIndex    ; -1 terminates an array of ColorSpec
  1175.     UWORD cs_Red    ; only six bits recognized in V36
  1176.     UWORD cs_Green    ; only six bits recognized in V36
  1177.     UWORD cs_Blue    ; only six bits recognized in V36
  1178.  LABEL    cs_SIZEOF
  1179.  
  1180. * === Easy Requester Specification ======================================= *
  1181. * see also autodocs for EasyRequest and BuildEasyRequest
  1182. * NOTE: This structure may grow in size in the future
  1183.  
  1184.  STRUCTURE EasyStruct,0
  1185.  
  1186.     ULONG es_StructSize        ; should be es_SIZEOF
  1187.     ULONG es_Flags        ; should be 0 for now
  1188.     APTR  es_Title        ; title of requester window
  1189.     APTR  es_TextFormat        ; 'printf' style formatting string
  1190.     APTR  es_GadgetFormat    ; 'printf' style formatting string
  1191.  LABEL    es_SIZEOF
  1192.  
  1193.  
  1194.  
  1195. ; ======================================================================== 
  1196. ; === Miscellaneous ====================================================== 
  1197. ; ======================================================================== 
  1198.  
  1199. ; = MACROS ============================================================== 
  1200. ;#define MENUNUM(n) (n & 0x1F)
  1201. ;#define ITEMNUM(n) ((n >> 5) & 0x003F)
  1202. ;#define SUBNUM(n) ((n >> 11) & 0x001F)
  1203. ;
  1204. ;#define SHIFTMENU(n) (n & 0x1F)
  1205. ;#define SHIFTITEM(n) ((n & 0x3F) << 5)
  1206. ;#define SHIFTSUB(n) ((n & 0x1F) << 11)
  1207. ;
  1208. ;#define SRBNUM(n)  (0x08 - (n >> 4))  /* SerRWBits -> read bits per char */
  1209. ;#define SWBNUM(n)  (0x08 - (n & 0x0F))/* SerRWBits -> write bits per chr */
  1210. ;#define SSBNUM(n)  (0x01 + (n >> 4))  /* SerStopBuf -> stop bits per chr */
  1211. ;#define SPARNUM(n) (n >> 4)           /* SerParShk -> parity setting    */
  1212. ;#define SHAKNUM(n) (n & 0x0F)         /* SerParShk -> handshake mode    */
  1213. ;
  1214. ; = MENU STUFF =========================================================== 
  1215. NOMENU EQU    $001F
  1216. NOITEM EQU    $003F
  1217. NOSUB  EQU    $001F
  1218. MENUNULL EQU    $FFFF
  1219.  
  1220.  
  1221. ; = =RJ='s peculiarities =================================================
  1222. ;#define FOREVER for(;;)
  1223. ;#define SIGN(x) ( ((x) > 0) - ((x) < 0) )
  1224.  
  1225.  
  1226. ; these defines are for the COMMSEQ and CHECKIT menu stuff.  If CHECKIT,
  1227. ; I'll use a generic Width (for all resolutions) for the CheckMark.
  1228. ; If COMMSEQ, likewise I'll use this generic stuff
  1229. CHECKWIDTH    EQU    19
  1230. COMMWIDTH    EQU    27
  1231. LOWCHECKWIDTH    EQU    13
  1232. LOWCOMMWIDTH    EQU    16
  1233.  
  1234.  
  1235. ; these are the AlertNumber defines.  if you are calling DisplayAlert()
  1236. ; the AlertNumber you supply must have the ALERT_TYPE bits set to one
  1237. ; of these patterns
  1238. ALERT_TYPE    EQU    $80000000
  1239. RECOVERY_ALERT    EQU    $00000000    ; the system can recover from this
  1240. DEADEND_ALERT    EQU    $80000000    ; no recovery possible, this is it
  1241.  
  1242.  
  1243. ; When you're defining IntuiText for the Positive and Negative Gadgets 
  1244. ; created by a call to AutoRequest(), these defines will get you 
  1245. ; reasonable-looking text.  The only field without a define is the IText
  1246. ; field; you decide what text goes with the Gadget
  1247. AUTOFRONTPEN    EQU    0
  1248. AUTOBACKPEN    EQU    1
  1249. AUTODRAWMODE    EQU    RP_JAM2
  1250. AUTOLEFTEDGE    EQU    6
  1251. AUTOTOPEDGE    EQU    3
  1252. AUTOITEXTFONT    EQU    0
  1253. AUTONEXTTEXT    EQU    0
  1254.  
  1255.  
  1256.  
  1257. ;* --- RAWMOUSE Codes and Qualifiers (Console OR IDCMP) -------------------
  1258. SELECTUP    EQU    (IECODE_LBUTTON+IECODE_UP_PREFIX)
  1259. SELECTDOWN    EQU    (IECODE_LBUTTON)
  1260. MENUUP        EQU    (IECODE_RBUTTON+IECODE_UP_PREFIX)
  1261. MENUDOWN    EQU    (IECODE_RBUTTON)
  1262. ALTLEFT        EQU    (IEQUALIFIER_LALT)
  1263. ALTRIGHT    EQU    (IEQUALIFIER_RALT)
  1264. AMIGALEFT    EQU    (IEQUALIFIER_LCOMMAND)
  1265. AMIGARIGHT    EQU    (IEQUALIFIER_RCOMMAND)
  1266. AMIGAKEYS    EQU    (AMIGALEFT+AMIGARIGHT)
  1267.             
  1268. CURSORUP    EQU    $4C
  1269. CURSORLEFT    EQU    $4F
  1270. CURSORRIGHT    EQU    $4E
  1271. CURSORDOWN    EQU    $4D
  1272. KEYCODE_Q    EQU    $10
  1273. KEYCODE_X    EQU    $32
  1274. KEYCODE_N    EQU    $36
  1275. KEYCODE_M    EQU    $37
  1276. KEYCODE_V       EQU    $34
  1277. KEYCODE_B       EQU    $35
  1278. KEYCODE_LESS    EQU    $38
  1279. KEYCODE_GREATER    EQU    $39
  1280.  
  1281.     IFND    INTUITION_INTUITIONBASE_I
  1282.     INCLUDE    "intuition/intuitionbase.i"
  1283.     ENDC
  1284.  
  1285. * Include obsolete identifiers:
  1286.     IFND    INTUITION_IOBSOLETE_I
  1287.     INCLUDE "intuition/iobsolete.i"
  1288.     ENDC
  1289.  
  1290.     ENDC
  1291.