	IFND	INTUITION_INTUITION_I
INTUITION_INTUITION_I	EQU	1
**
**	$Filename: intuition/intuition.i $
**	$Release: 2.04 Includes, V37.4 $
**	$Revision: 36.30 $
**	$Date: 91/03/28 $
**
**	Interface definitions for Intuition applications
**
**	(C) Copyright 1985-1991 Commodore-Amiga, Inc.
**	    All Rights Reserved
**

	IFND	EXEC_TYPES_I
	INCLUDE	"exec/types.i"
	ENDC

	IFND	GRAPHICS_GFX_I
	INCLUDE	"graphics/gfx.i"
	ENDC

	IFND	GRAPHICS_CLIP_I
	INCLUDE	"graphics/clip.i"
	ENDC

	IFND	GRAPHICS_VIEW_I
	INCLUDE	"graphics/view.i"
	ENDC

	IFND	GRAPHICS_RASTPORT_I
	INCLUDE	"graphics/rastport.i"
	ENDC

	IFND	GRAPHICS_LAYERS_I
	INCLUDE	"graphics/layers.i"
	ENDC

	IFND	GRAPHICS_TEXT_I
	INCLUDE	"graphics/text.i"
	ENDC

	IFND	EXEC_PORTS_I
	INCLUDE	"exec/ports.i"
	ENDC

	IFND	DEVICES_TIMER_I
	INCLUDE	"devices/timer.i"
	ENDC

	IFND	DEVICES_INPUTEVENT_I
	INCLUDE	"devices/inputevent.i"
	ENDC

	IFND	UTILITY_TAGITEM_I
	INCLUDE	"utility/tagitem.i"
	ENDC

*
* NOTE:  intuition/iobsolete.i is included at the END of this file!
*


; ========================================================================;
; === Menu ===============================================================;
; ========================================================================;
	STRUCTURE	Menu,0

	APTR	mu_NextMenu	; menu pointer, same level
	WORD	mu_LeftEdge	; position of the select box
	WORD	mu_TopEdge	; position of the select box
	WORD	mu_Width	; dimensions of the select box
	WORD	mu_Height	; dimensions of the select box
	WORD	mu_Flags	; see flag definitions below
	APTR	mu_MenuName	; text for this Menu Header
	APTR	mu_FirstItem	; pointer to first in chain

	; these mysteriously-named variables are for internal use only
	WORD	mu_JazzX
	WORD	mu_JazzY
	WORD	mu_BeatX
	WORD	mu_BeatY

	LABEL	mu_SIZEOF

;*** FLAGS SET BY BOTH THE APPLIPROG AND INTUITION ***
MENUENABLED	EQU	$0001	; whether or not this menu is enabled

;*** FLAGS SET BY INTUITION ***
MIDRAWN	EQU	$0100	; this menu's items are currently drawn

; ========================================================================;
; === MenuItem ===========================================================;
; ========================================================================;
	STRUCTURE	MenuItem,0

	APTR	mi_NextItem	; pointer to next in chained list
	WORD	mi_LeftEdge	; position of the select box
	WORD	mi_TopEdge	; position of the select box
	WORD	mi_Width	; dimensions of the select box
	WORD	mi_Height	; dimensions of the select box
	WORD	mi_Flags	; see the defines below

	LONG	mi_MutualExclude ; set bits mean this item excludes that item

	APTR	mi_ItemFill	; points to Image, IntuiText, or NULL

	; when this item is pointed to by the cursor and the items highlight
	; mode HIGHIMAGE is selected, this alternate image will be displayed
	APTR	mi_SelectFill	; points to Image, IntuiText, or NULL

	BYTE	mi_Command	; only if appliprog sets the COMMSEQ flag

	BYTE	mi_KludgeFill00 ; This is strictly for word-alignment

	APTR	mi_SubItem	; if non-zero, points to MenuItem for submenu

	; The NextSelect field represents the menu number of next selected 
	; item (when user has drag-selected several items)
	WORD	mi_NextSelect

	LABEL	mi_SIZEOF

; --- FLAGS SET BY THE APPLIPROG --------------------------------------------
CHECKIT	EQU	$0001	; set to indicate checkmarkable item
ITEMTEXT	EQU	$0002	; set if textual, clear if graphical item
COMMSEQ	EQU	$0004	; set if there's an command sequence
MENUTOGGLE	EQU	$0008	; set for toggling checks (else mut. exclude)
ITEMENABLED	EQU	$0010	; set if this item is enabled

; these are the SPECIAL HIGHLIGHT FLAG state meanings
HIGHFLAGS	EQU	$00C0	; see definitions below for these bits
HIGHIMAGE	EQU	$0000	; use the user's "select image"
HIGHCOMP	EQU	$0040	; highlight by complementing the select box
HIGHBOX	EQU	$0080	; highlight by drawing a box around the image
HIGHNONE	EQU	$00C0	; don't highlight

; --- FLAGS SET BY BOTH APPLIPROG AND INTUITION -----------------------------
CHECKED	EQU	$0100	; state of the checkmark


; --- FLAGS SET BY INTUITION ------------------------------------------------
ISDRAWN	EQU	$1000	; this item's subs are currently drawn
HIGHITEM	EQU	$2000	; this item is currently highlighted
MENUTOGGLED	EQU	$4000	; this item was already toggled 






; ========================================================================
; === Requester ==========================================================
; ========================================================================
	STRUCTURE	Requester,0

	APTR	rq_OlderRequest
	WORD	rq_LeftEdge		; dimensions of the entire box
	WORD	rq_TopEdge		; dimensions of the entire box
	WORD	rq_Width		; dimensions of the entire box
	WORD	rq_Height		; dimensions of the entire box

	WORD	rq_RelLeft		; get POINTREL Pointer relativity offsets
	WORD	rq_RelTop		; get POINTREL Pointer relativity offsets

	APTR	rq_ReqGadget     	; pointer to the first of a list of gadgets
	APTR	rq_ReqBorder		; the box's border
	APTR	rq_ReqText		; the box's text

	WORD	rq_Flags		; see definitions below

	UBYTE	rq_BackFill		; pen number for back-plane fill before draws

	BYTE	rq_KludgeFill00	; This is strictly for word-alignment

	APTR	rq_ReqLayer		; layer in which requester rendered
	STRUCT	rq_ReqPad1,32	; for backwards compatibility (reserved)

	; If the BitMap plane pointers are non-zero, this tells the system 
	; that the image comes pre-drawn (if the appliprog wants to define 
	; its own box, in any shape or size it wants!); this is OK by 
	; Intuition as long as there's a good correspondence between the image
	; and the specified Gadgets
	APTR	rq_ImageBMap		; points to the BitMap of PREDRAWN imagery

	APTR	rq_RWindow		; points back to requester's window
	APTR	rq_ReqImage		; new for V36: drawn if USEREQIMAGE set
	STRUCT	rq_ReqPad2,32	; for backwards compatibility (reserved)

	LABEL	rq_SIZEOF

; FLAGS SET BY THE APPLIPROG
POINTREL	EQU	$0001  ; if POINTREL set, TopLeft is relative to pointer
	; for DMRequester, relative to window center
	; for Request().
PREDRAWN	EQU	$0002  ; if ReqBMap points to predrawn Requester imagery
NOISYREQ	EQU	$0004  ; if you don't want requester to filter input

; New for V36
SIMPLEREQ	EQU	$0010  ; to use SIMPLEREFRESH layer (recommended)
USEREQIMAGE	EQU	$0020  ; render linked list ReqImage after BackFill
	; but before gadgets and text
NOREQBACKFILL	EQU	$0040  ; don't bother filling with Requester.BackFill


; FLAGS SET BY INTUITION;
REQOFFWINDOW	EQU	$1000	; part of one of the Gadgets was offwindow
REQACTIVE	EQU	$2000	; this requester is active
SYSREQUEST	EQU	$4000	; (unused) this requester caused by system
DEFERREFRESH	EQU	$8000	; this Requester stops a Refresh broadcast





; ========================================================================
; === Gadget =============================================================
; ========================================================================
	STRUCTURE	Gadget,0

	APTR	gg_NextGadget		; next gadget in the list

	WORD	gg_LeftEdge		; "hit box" of gadget
	WORD	gg_TopEdge		; "hit box" of gadget
	WORD	gg_Width		; "hit box" of gadget
	WORD	gg_Height		; "hit box" of gadget

	WORD	gg_Flags 		; see below for list of defines

	WORD	gg_Activation		; see below for list of defines

	WORD	gg_GadgetType		; see below for defines

	; appliprog can specify that the Gadget be rendered as either as Border
	; or an Image.  This variable points to which (or equals NULL if there's
	; nothing to be rendered about this Gadget)
	APTR	gg_GadgetRender

	; appliprog can specify "highlighted" imagery rather than algorithmic
	; this can point to either Border or Image data
	APTR	gg_SelectRender

	APTR	gg_GadgetText		; text for this gadget;

	; MutualExclude, never implemented, is now declared obsolete.
	; There are published examples of implementing a more general
	; and practical exclusion in your applications.
	;
	; Starting V36, this field is used to point to a hook
	; for a custom gadget.
	;
	; Programs using this field for their own processing will
	; continue to work, as long as they don't try the
	; trick with custom gadgets
	LONG	gg_MutualExclude 	; obsolete

	; pointer to a structure of special data required by Proportional, String 
	; and Integer Gadgets
	APTR	gg_SpecialInfo

	WORD	gg_GadgetID	; user-definable ID field
	APTR	gg_UserData	; ptr to general purpose User data (ignored by Intuit)

	LABEL	gg_SIZEOF

; --- Gadget.Flags values ---
; combinations in these bits describe the highlight technique to be used
GFLG_GADGHIGHBITS	EQU	$0003
GFLG_GADGHCOMP	EQU	$0000	; Complement the select box
GFLG_GADGHBOX	EQU	$0001	; Draw a box around the image
GFLG_GADGHIMAGE	EQU	$0002	; Blast in this alternate image
GFLG_GADGHNONE	EQU	$0003	; don't highlight

; set this flag if the GadgetRender and SelectRender point to Image imagery,
; clear if it's a Border 
GFLG_GADGIMAGE	EQU	$0004

; combinations in these next two bits specify to which corner the gadget's
; Left & Top coordinates are relative.	If relative to Top/Left,
; these are "normal" coordinates (everything is relative to something in
; this universe)
GFLG_RELBOTTOM	EQU	$0008	; set if rel to bottom, clear if to top
GFLG_RELRIGHT	EQU	$0010	; set if rel to right, clear if to left
; set the GFLG_RELWIDTH bit to spec that Width is relative to width of screen
GFLG_RELWIDTH	EQU	$0020
; set the GFLG_RELHEIGHT bit to spec that Height is rel to height of screen
GFLG_RELHEIGHT	EQU	$0040

; the GFLG_SELECTED flag is initialized by you and set by Intuition.  It
; specifies whether or not this Gadget is currently selected/highlighted
GFLG_SELECTED	EQU	$0080


; the GFLG_DISABLED flag is initialized by you and later set by Intuition
; according to your calls to On/OffGadget().  It specifies whether or not
; this Gadget is currently disabled from being selected
GFLG_DISABLED	EQU	$0100

* These flags specify the type of text field that Gadget.GadgetText
* points to.  In all normal (pre-V36) gadgets which you initialize
* this field should always be zero.  Some types of gadget objects
* created from classes will use these fields to keep track of
* types of labels/contents that different from IntuiText, but are
* stashed in GadgetText.

GFLG_LABELMASK	EQU	$3000
GFLG_LABELITEXT	EQU	$0000	; GadgetText points to IntuiText
GFLG_LABELSTRING	EQU	$1000	; GadgetText points to (UBYTE *)
GFLG_LABELIMAGE	EQU	$2000	; GadgetText points to Image (object)
; New for V37: GFLG_TABCYCLE
GFLG_TABCYCLE	EQU	$0200	; (string or custom) gadget
	; participates in cycling activation with
	; Tab or Shift-Tab

; New for V37: GFLG_STRINGEXTEND.  We discovered that V34 doesn't properly
; ignore the value we had chosen for the Gadget->Activation flag
; GACT_STRINGEXTEND.  NEVER SET THAT FLAG WHEN RUNNING UNDER V34.
; The Gadget->Flags bit GFLG_STRINGEXTEND is provided as a synonym which is
; safe under V34, and equivalent to GACT_STRINGEXTEND under V37.
; (Note that the two flags are not numerically equal)
GFLG_STRINGEXTEND	EQU	$0400  ; this String Gadget has StringExtend



; --- These are the Activation flag bits ----------------------------------
; GACT_RELVERIFY is set if you want to verify that the pointer was still over
; the gadget when the select button was released.  Will cause
; an IDCMP_GADGETUP message to be sent if so.
GACT_RELVERIFY	EQU	$0001

; the flag GACT_IMMEDIATE, when set, informs the caller that the gadget
; was activated when it was activated.  this flag works in conjunction with
; the GACT_RELVERIFY flag
GACT_IMMEDIATE	EQU	$0002

; the flag GACT_ENDGADGET, when set, tells the system that this gadget, when
; selected, causes the Requester or AbsMessage to be ended.  Requesters or
; AbsMessages that are ended are erased and unlinked from the system
GACT_ENDGADGET	EQU	$0004

; the GACT_FOLLOWMOUSE flag, when set, specifies that you want to receive
; reports on mouse movements while this gadget is active.
; You probably want to set the GACT_IMMEDIATE flag when using
; GACT_FOLLOWMOUSE, since that's the only reasonable way you have of learning
; why Intuition is suddenly sending you a stream of mouse movement events.
; If you don't set GACT_RELVERIFY, you'll get at least one Mouse Position
; event.
; Note: boolean FOLLOWMOUSE gadgets require GACT_RELVERIFY to get
; _any_ mouse movement events (this unusual behavior is a compatibility
; hold-over from the old days).

GACT_FOLLOWMOUSE	EQU	$0008

; if any of the BORDER flags are set in a Gadget that's included in the
; Gadget list when a Window is opened, the corresponding Border will
; be adjusted to make room for the Gadget
GACT_RIGHTBORDER	EQU	$0010
GACT_LEFTBORDER	EQU	$0020
GACT_TOPBORDER	EQU	$0040
GACT_BOTTOMBORDER	EQU	$0080
GACT_BORDERSNIFF	EQU	$8000	; neither set nor rely on this bit

GACT_TOGGLESELECT	EQU	$0100	; this bit for toggle-select mode
GACT_BOOLEXTEND	EQU	$2000	; This Boolean Gadget has a BoolInfo

; should properly be in StringInfo, but aren't
GACT_STRINGLEFT	EQU	$0000	; NOTE WELL: that this has value zero
GACT_STRINGCENTER	EQU	$0200	; center the String
GACT_STRINGRIGHT	EQU	$0400	; right-justify the String
GACT_LONGINT	EQU	$0800	; This String Gadget is a Long Integer
GACT_ALTKEYMAP	EQU	$1000	; has an alternate keymapping
GACT_STRINGEXTEND	EQU	$2000	; this String Gadget has an extension
	; NOTE: NEVER SET GACT_STRINGEXTEND
	; IF YOU ARE RUNNING ON LESS THAN V36!
	; SEE GFLG_STRINGEXTEND (ABOVE) INSTEAD

GACT_ACTIVEGADGET	EQU	$4000	; this gadget is "active".  This flag
	; is maintained by Intuition, and you
	; cannot count on its value persisting
	; while you do something on your program's
	; task.  It can only be trusted by
	; people implementing custom gadgets

* note $8000 is used above (GACT_BORDERSNIFF); all Activation flags defined



; --- GADGET TYPES -----------------------------------------------------------
; These are the Gaget Type definitions for the variable GadgetType.
; Gadget number type MUST start from one.  NO TYPES OF ZERO ALLOWED.
; first comes the mask for Gadget flags reserved for Gadget typing
GTYP_GADGETTYPE	EQU	$FC00	; all Gadget Global Type flags
	; (padded)
GTYP_SYSGADGET	EQU	$8000	; 1 = Allocated by the system, 0 = by app.
GTYP_SCRGADGET	EQU	$4000	; 1 = ScreenGadget, 0 = WindowGadget
GTYP_GZZGADGET	EQU	$2000	; 1 = Gadget for WFLG_GIMMEZEROZERO
	;     borders
GTYP_REQGADGET	EQU	$1000	; 1 = this is a Requester Gadget
; system gadgets
GTYP_SIZING	EQU	$0010
GTYP_WDRAGGING	EQU	$0020
GTYP_SDRAGGING	EQU	$0030
GTYP_WUPFRONT	EQU	$0040
GTYP_SUPFRONT	EQU	$0050
GTYP_WDOWNBACK	EQU	$0060
GTYP_SDOWNBACK	EQU	$0070
GTYP_CLOSE	EQU	$0080
; application gadgets
GTYP_BOOLGADGET	EQU	$0001
GTYP_GADGET0002	EQU	$0002
GTYP_PROPGADGET	EQU	$0003
GTYP_STRGADGET	EQU	$0004
GTYP_CUSTOMGADGET	EQU	$0005
GTYP_GTYPEMASK	EQU	$0004	; masks out to gadget class



; ======================================================================== 
; === BoolInfo============================================================
; ======================================================================== 
; This is the special data needed by an Extended Boolean Gadget
; Typically this structure will be pointed to by the Gadget field SpecialInfo

	STRUCTURE	BoolInfo,0

	WORD	bi_Flags	; defined below 
	APTR	bi_Mask	; bit mask for highlighting and selecting
	; mask must follow the same rules as an Image
	; plane.  Its width and height are determined
	; by the width and height of the gadget's
	; select box. (i.e. Gadget.Width and .Height).
	LONG	bi_Reserved	; set to 0

	LABEL	bi_SIZEOF

; set BoolInfo.Flags to this flag bit.
; in the future, additional bits might mean more stuff hanging
; off of BoolInfo.Reserved.

BOOLMASK	EQU	$0001	; extension is for masked gadget

; ========================================================================
; === PropInfo ===========================================================
; ========================================================================
; this is the special data required by the proportional Gadget
; typically, this data will be pointed to by the Gadget variable SpecialInfo
	STRUCTURE	PropInfo,0

	WORD	pi_Flags	; general purpose flag bits (see defines below)

	; You initialize the Pot variables before the Gadget is added to
	; the system.  Then you can look here for the current settings
	; any time, even while User is playing with this Gadget.  To
	; adjust these after the Gadget is added to the System, use
	; ModifyProp(); The Pots are the actual proportional settings,
	; where a value of zero means zero and a value of MAXPOT means
	; that the Gadget is set to its maximum setting.
	WORD	pi_HorizPot	; 16-bit FixedPoint horizontal quantity percentage;
	WORD	pi_VertPot	; 16-bit FixedPoint vertical quantity percentage;

	; the 16-bit FixedPoint Body variables describe what percentage
	; of the entire body of stuff referred to by this Gadget is
	; actually shown at one time.  This is used with the AUTOKNOB
	; routines, to adjust the size of the AUTOKNOB according to how
	; much of the data can be seen.  This is also used to decide how
	; far to advance the Pots when User hits the Container of the Gadget.
	; For instance, if you were controlling the display of a 5-line
	; Window of text with this Gadget, and there was a total of 15
	; lines that could be displayed, you would set the VertBody value to
	;	 (MAXBODY / (TotalLines / DisplayLines)) = MAXBODY / 3.
	; Therefore, the AUTOKNOB would fill 1/3 of the container, and if
	; User hits the Cotainer outside of the knob, the pot would advance
	; 1/3 (plus or minus) If there's no body to show, or the total 
	; amount of displayable info is less than the display area, set the 
	; Body variables to the MAX.  To adjust these after the Gadget is 
	; added to the System, use ModifyProp().
	WORD	pi_HorizBody	; horizontal Body
	WORD	pi_VertBody	; vertical Body

	; these are the variables that Intuition sets and maintains
	WORD	pi_CWidth	; Container width (with any relativity absoluted)
	WORD	pi_CHeight	; Container height (with any relativity absoluted)
	WORD	pi_HPotRes	; pot increments
	WORD	pi_VPotRes	; pot increments
	WORD	pi_LeftBorder	; Container borders
	WORD	pi_TopBorder	; Container borders
	LABEL	pi_SIZEOF

; --- FLAG BITS --------------------------------------------------------------
AUTOKNOB	EQU	$0001	; this flag sez:  gimme that old auto-knob
FREEHORIZ	EQU	$0002	; if set, the knob can move horizontally
FREEVERT	EQU	$0004	; if set, the knob can move vertically
PROPBORDERLESS	EQU	$0008	; if set, no border will be rendered
KNOBHIT	EQU	$0100	; set when this Knob is hit
PROPNEWLOOK	EQU	$0010	; set this if you want to get the new
	; V36 look

KNOBHMIN	EQU	6		; minimum horizontal size of the knob
KNOBVMIN	EQU	4		; minimum vertical size of the knob
MAXBODY	EQU	$FFFF	; maximum body value
MAXPOT	EQU	$FFFF	; maximum pot value


; ========================================================================
; === StringInfo =========================================================
; ========================================================================
; this is the special data required by the string Gadget
; typically, this data will be pointed to by the Gadget variable SpecialInfo
	STRUCTURE	StringInfo,0

	; you initialize these variables, and then Intuition maintains them
	APTR	si_Buffer	; the buffer containing the start and final string
	APTR	si_UndoBuffer	; optional buffer for undoing current entry
	WORD	si_BufferPos	; character position in Buffer
	WORD	si_MaxChars	; max number of chars in Buffer (including NULL)
	WORD	si_DispPos	; Buffer position of first displayed character

	; Intuition initializes and maintains these variables for you
	WORD	si_UndoPos	; character position in the undo buffer
	WORD	si_NumChars	; number of characters currently in Buffer
	WORD	si_DispCount	; number of whole characters visible in Container
	WORD	si_CLeft	; topleft offset of the container
	WORD	si_CTop	; topleft offset of the container

	; unused field is changed to allow extended specification
	; of string gadget parameters.  It is ignored unless the flag
	; GACT_STRINGEXTEND is set in the Gadget's Activation field
	; or the GFLG_STRINGEXTEND flag is set in the Gadget Flags field.
	; (See GFLG_STRINGEXTEND for an important note)
	;APTR  si_LayerPtr	; --- obsolete ---
	APTR	si_Extension

	; you can initialize this variable before the gadget is submitted to
	; Intuition, and then examine it later to discover what integer
	; the user has entered (if the user never plays with the gadget,
	; the value will be unchanged from your initial setting)
	LONG	si_LongInt	; the LONG return value of a GACT_LONGINT String Gad.

	; If you want this Gadget to use your own Console keymapping, you
	; set the GACT_ALTKEYMAP bit in the Activation flags of the Gadget, and
	; then set this variable to point to your keymap.  If you don't set the
	; GACT_ALTKEYMAP, you'll get the standard ASCII keymapping.
	APTR	si_AltKeyMap

	LABEL	si_SIZEOF




; ========================================================================
; === IntuiText ==========================================================
; ========================================================================
; IntuiText is a series of strings that start with a location
; (always relative to the upper-left corner of something) and then the
; text of the string.  The text is null-terminated.
	STRUCTURE	IntuiText,0

	BYTE	it_FrontPen		; the pens for rendering the text
	BYTE	it_BackPen		; the pens for rendering the text

	BYTE	it_DrawMode		; the mode for rendering the text

	BYTE	it_KludgeFill00	; This is strictly for word-alignment

	WORD	it_LeftEdge		; relative start location for the text
	WORD	it_TopEdge		; relative start location for the text

	APTR	it_ITextFont		; if NULL, you accept the defaults

	APTR	it_IText		; pointer to null-terminated text

	APTR	it_NextText		; pointer to another IntuiText to render

	LABEL	it_SIZEOF





; ========================================================================
; === Border =============================================================
; ========================================================================
; Data type Border, used for drawing a series of lines which is intended for
; use as a border drawing, but which may, in fact, be used to render any
; arbitrary vector shape.
; The routine DrawBorder sets up the RastPort with the appropriate
; variables, then does a Move to the first coordinate, then does Draws
; to the subsequent coordinates.
; After all the Draws are done, if NextBorder is non-zero we call DrawBorder
; on NextBorder
	STRUCTURE	Border,0

	WORD	bd_LeftEdge		; initial offsets from the origin
	WORD	bd_TopEdge		; initial offsets from the origin
	BYTE	bd_FrontPen		; pen number for rendering
	BYTE	bd_BackPen		; pen number for rendering
	BYTE	bd_DrawMode		; mode for rendering
	BYTE	bd_Count		; number of XY pairs
	APTR	bd_XY			; vector coordinate pairs rel to LeftTop
	APTR	bd_NextBorder		; pointer to any other Border too

	LABEL	bd_SIZEOF


; ========================================================================
; === Image ==============================================================
; ========================================================================
; This is a brief image structure for very simple transfers of
; image data to a RastPort
	STRUCTURE	Image,0

	WORD	ig_LeftEdge		; starting offset relative to something
	WORD	ig_TopEdge		; starting offset relative to something
	WORD	ig_Width		; pixel size (though data is word-aligned)
	WORD	ig_Height		; pixel size
	WORD	ig_Depth		; pixel size
	APTR	ig_ImageData		; pointer to the actual image bits

	; the PlanePick and PlaneOnOff variables work much the same way as the
	; equivalent GELS Bob variables.  It's a space-saving 
	; mechanism for image data.  Rather than defining the image data
	; for every plane of the RastPort, you need define data only for planes 
	; that are not entirely zero or one.  As you define your Imagery, you will
	; often find that most of the planes ARE just as color selectors.  For
	; instance, if you're designing a two-color Gadget to use colors two and
	; three, and the Gadget will reside in a five-plane display, plane zero
	; of your imagery would be all ones, bit plane one would have data that
	; describes the imagery, and bit planes two through four would be
	; all zeroes.  Using these flags allows you to avoid wasting all that
	; memory in this way:
	; first, you specify which planes you want your data to appear
	; in using the PlanePick variable.	For each bit set in the variable, the
	; next "plane" of your image data is blitted to the display.  For each bit
	; clear in this variable, the corresponding bit in PlaneOnOff is examined.
	; If that bit is clear, a "plane" of zeroes will be used.  If the bit is
	; set, ones will go out instead.  So, for our example:
	;	Gadget.PlanePick = 0x02;
	;	Gadget.PlaneOnOff = 0x01;
	; Note that this also allows for generic Gadgets, like the System Gadgets,
	; which will work in any number of bit planes
	; Note also that if you want an Image that is only a filled rectangle,
	; you can get this by setting PlanePick to zero (pick no planes of data)
	; and set PlaneOnOff to describe the pen color of the rectangle.
	;
	; NOTE:  Intuition relies on PlanePick to know how many planes
	; of data are found in ImageData.  There should be no more
	; '1'-bits in PlanePick than there are planes in ImageData.
	BYTE	ig_PlanePick
	BYTE	ig_PlaneOnOff

	; if the NextImage variable is not NULL, Intuition presumes that
	; it points to another Image structure with another Image to be
	; rendered
	APTR	ig_NextImage


	LABEL	ig_SIZEOF




; ========================================================================
; === IntuiMessage =======================================================
; ========================================================================
	STRUCTURE	IntuiMessage,0

	STRUCT	im_ExecMessage,MN_SIZE

	; the Class bits correspond directly with the IDCMP Flags, except for the
	; special bit IDCMP_LONELYMESSAGE (defined below)
	LONG	im_Class

	; the Code field is for special values like MENU number
	WORD	im_Code

	; the Qualifier field is a copy of the current InputEvent's Qualifier 
	WORD	im_Qualifier

	; IAddress contains particular addresses for Intuition functions, like
	; the pointer to the Gadget or the Screen
	APTR	im_IAddress

	; when getting mouse movement reports, any event you get will have the
	; the mouse coordinates in these variables.  the coordinates are relative
	; to the upper-left corner of your Window (WFLG_GIMMEZEROZERO
	; notwithstanding)
	; If the DELTAMOVE IDCMP flag is set, these values will be deltas from
	; the last reported position.
	WORD	im_MouseX
	WORD	im_MouseY

	; the time values are copies of the current system clock time.  Micros
	; are in units of microseconds, Seconds in seconds.
	LONG	im_Seconds
	LONG	im_Micros

	; the IDCMPWindow variable will always have the address of the Window of 
	; this IDCMP 
	APTR	im_IDCMPWindow

	; system-use variable 
	APTR	im_SpecialLink

	LABEL	im_SIZEOF



; --- IDCMP Classes ------------------------------------------------------ 
; Please refer to the Autodoc for OpenWindow() and to the Rom Kernel
; Manual for full details on the IDCMP classes.

IDCMP_SIZEVERIFY	EQU	$00000001
IDCMP_NEWSIZE	EQU	$00000002
IDCMP_REFRESHWINDOW	EQU	$00000004
IDCMP_MOUSEBUTTONS	EQU	$00000008
IDCMP_MOUSEMOVE	EQU	$00000010
IDCMP_GADGETDOWN	EQU	$00000020
IDCMP_GADGETUP	EQU	$00000040
IDCMP_REQSET	EQU	$00000080
IDCMP_MENUPICK	EQU	$00000100
IDCMP_CLOSEWINDOW	EQU	$00000200
IDCMP_RAWKEY	EQU	$00000400
IDCMP_REQVERIFY	EQU	$00000800
IDCMP_REQCLEAR	EQU	$00001000
IDCMP_MENUVERIFY	EQU	$00002000
IDCMP_NEWPREFS	EQU	$00004000
IDCMP_DISKINSERTED	EQU	$00008000
IDCMP_DISKREMOVED	EQU	$00010000
IDCMP_WBENCHMESSAGE	EQU	$00020000	; System use only
IDCMP_ACTIVEWINDOW	EQU	$00040000
IDCMP_INACTIVEWINDOW	EQU	$00080000
IDCMP_DELTAMOVE	EQU	$00100000
IDCMP_VANILLAKEY	EQU	$00200000
IDCMP_INTUITICKS	EQU	$00400000
;  for notifications from "boopsi" gadgets:
IDCMP_IDCMPUPDATE	EQU	$00800000  	; new for V36
; for getting help key report during menu session:
IDCMP_MENUHELP	EQU	$01000000  	; new for V36
; for notification of any move/size/zoom/change window:
IDCMP_CHANGEWINDOW	EQU	$02000000  	; new for V36
; NOTEZ-BIEN:		$80000000 is reserved for internal use by IDCMP

; the IDCMP Flags do not use this special bit, which is cleared when
; Intuition sends its special message to the Task, and set when Intuition
; gets its Message back from the Task.  Therefore, I can check here to
; find out fast whether or not this Message is available for me to send
IDCMP_LONELYMESSAGE	EQU	$80000000



; --- IDCMP Codes -------------------------------------------------------- 
; This group of codes is for the IDCMP_MENUVERIFY function 
MENUHOT	EQU	$0001	; IntuiWants verification or MENUCANCEL    
MENUCANCEL	EQU	$0002	; HOT Reply of this cancels Menu operation 
MENUWAITING	EQU	$0003	; Intuition simply wants a ReplyMsg() ASAP 

; These are internal tokens to represent state of verification attempts
; shown here as a clue.
OKOK	EQU	MENUHOT		; guy didn't care
OKABORT	EQU	$0004		; window rendered question moot
OKCANCEL	EQU	MENUCANCEL	; window sent cancel reply

; This group of codes is for the IDCMP_WBENCHMESSAGE messages
WBENCHOPEN	EQU	$0001
WBENCHCLOSE	EQU	$0002

; A data structure common in V36 Intuition processing

	STRUCTURE	IBox,0
	WORD	ibox_Left
	WORD	ibox_Top
	WORD	ibox_Width
	WORD	ibox_Height
	LABEL	ibox_SIZEOF


; ========================================================================
; === Window =============================================================
; ========================================================================
	STRUCTURE	Window,0

	APTR	wd_NextWindow		; for the linked list of a Screen

	WORD	wd_LeftEdge		; screen dimensions
	WORD	wd_TopEdge		; screen dimensions
	WORD	wd_Width		; screen dimensions
	WORD	wd_Height		; screen dimensions

	WORD	wd_MouseY		; relative top top-left corner
	WORD	wd_MouseX		; relative top top-left corner

	WORD	wd_MinWidth		; minimum sizes
	WORD	wd_MinHeight		; minimum sizes
	WORD	wd_MaxWidth		; maximum sizes
	WORD	wd_MaxHeight		; maximum sizes

	LONG	wd_Flags		; see below for definitions

	APTR	wd_MenuStrip		; first in a list of menu headers

	APTR	wd_Title		; title text for the Window

	APTR	wd_FirstRequest	; first in linked list of active Requesters
	APTR	wd_DMRequest		; the double-menu Requester
	WORD	wd_ReqCount		; number of Requesters blocking this Window
	APTR	wd_WScreen		; this Window's Screen
	APTR	wd_RPort		; this Window's very own RastPort

	; the border variables describe the window border.	If you specify
	; WFLG_GIMMEZEROZERO when you open the window, then the upper-left of the
	; ClipRect for this window will be upper-left of the BitMap (with correct
	; offsets when in SuperBitMap mode; you MUST select WFLG_GIMMEZEROZERO
	; when using SuperBitMap).	If you don't specify ZeroZero, then you save
	; memory (no allocation of RastPort, Layer, ClipRect and associated
	; Bitmaps), but you also must offset all your writes by BorderTop,
	; BorderLeft and do your own mini-clipping to prevent writing over the
	; system gadgets
	BYTE	wd_BorderLeft
	BYTE	wd_BorderTop
	BYTE	wd_BorderRight
	BYTE	wd_BorderBottom
	APTR	wd_BorderRPort

	; You supply a linked-list of gadget that you want for your Window.
	; This list DOES NOT include system Gadgets.  You get the standard
	; window system Gadgets by setting flag-bits in the variable Flags (see
	; the bit definitions below)
	APTR	wd_FirstGadget

	; these are for opening/closing the windows 
	APTR	wd_Parent
	APTR	wd_Descendant

	; sprite data information for your own Pointer
	; set these AFTER you Open the Window by calling SetPointer()
	APTR	wd_Pointer
	BYTE	wd_PtrHeight
	BYTE	wd_PtrWidth
	BYTE	wd_XOffset
	BYTE	wd_YOffset

	; the IDCMP Flags and User's and Intuition's Message Ports 
	ULONG	wd_IDCMPFlags
	APTR	wd_UserPort
	APTR	wd_WindowPort
	APTR	wd_MessageKey

	BYTE	wd_DetailPen
	BYTE	wd_BlockPen

	; the CheckMark is a pointer to the imagery that will be used when 
	; rendering MenuItems of this Window that want to be checkmarked
	; if this is equal to NULL, you'll get the default imagery
	APTR	wd_CheckMark

	; if non-null, Screen title when Window is active
	APTR	wd_ScreenTitle

	; These variables have the mouse coordinates relative to the
	; inner-Window of WFLG_GIMMEZEROZERO Windows.  This is compared with the
	; MouseX and MouseY variables, which contain the mouse coordinates
	; relative to the upper-left corner of the Window, WFLG_GIMMEZEROZERO
	; notwithstanding
	WORD	wd_GZZMouseX
	WORD	wd_GZZMouseY
	; these variables contain the width and height of the inner-Window of
	; WFLG_GIMMEZEROZERO Windows
	WORD	wd_GZZWidth
	WORD	wd_GZZHeight

	APTR	wd_ExtData

	; general-purpose pointer to User data extension
	APTR	wd_UserData
	APTR	wd_WLayer	; stash of Window.RPort->Layer

	; NEW 1.2: need to keep track of the font that OpenWindow opened,
	; in case user SetFont's into RastPort
	APTR	wd_IFont

	; (V36) another flag word (the Flags field is used up).
	; At present, all flag values are system private.
	; Until further notice, you may not change nor use this field.
	ULONG	wd_MoreFlags

	; ----- subsequent fields are INTUITION PRIVATE ---

	LABEL	wd_Size
	LABEL	wd_SIZEOF	; you should never use this: only Intuition allocates

; --- Flags requested at OpenWindow() time by the application -------------
WFLG_SIZEGADGET	EQU	$0001	; include sizing system-gadget? 
WFLG_DRAGBAR	EQU	$0002	; include dragging system-gadget? 
WFLG_DEPTHGADGET	EQU	$0004	; include depth arrangement gadget? 
WFLG_CLOSEGADGET	EQU	$0008	; include close-box system-gadget? 

WFLG_SIZEBRIGHT	EQU	$0010	; size gadget uses right border 
WFLG_SIZEBBOTTOM	EQU	$0020	; size gadget uses bottom border 

; --- refresh modes ----------------------------------------------------------
; combinations of the WFLG_REFRESHBITS select the refresh type 
WFLG_REFRESHBITS	EQU	$00C0
WFLG_SMART_REFRESH	EQU	$0000
WFLG_SIMPLE_REFRESH	EQU	$0040
WFLG_SUPER_BITMAP	EQU	$0080
WFLG_OTHER_REFRESH	EQU	$00C0

WFLG_BACKDROP	EQU	$0100	; this is a backdrop window 

WFLG_REPORTMOUSE	EQU	$0200	; set this to hear every mouse move

WFLG_GIMMEZEROZERO	EQU	$0400	; make extra border stuff 

WFLG_BORDERLESS	EQU	$0800	; set this to get a Window sans border 

WFLG_ACTIVATE	EQU	$1000	; when Window opens, it's the Active
	; one

; FLAGS SET BY INTUITION
WFLG_WINDOWACTIVE	EQU	$2000	; this window is the active one
WFLG_INREQUEST	EQU	$4000	; this window is in request mode
WFLG_MENUSTATE	EQU	$8000	; this Window is active with its
	; Menus on

; --- Other User Flags -------------------------------------------------------
WFLG_RMBTRAP	EQU	$00010000	; Catch RMB events for your own
WFLG_NOCAREREFRESH	EQU	$00020000	; not to be bothered with REFRESH

; --- Other Intuition Flags ----------------------------------------------
WFLG_WINDOWREFRESH	EQU	$01000000	; Window is currently refreshing
WFLG_WBENCHWINDOW	EQU	$02000000	; WorkBench Window
WFLG_WINDOWTICKED	EQU	$04000000	; only one timer tick at a time

SUPER_UNUSED	EQU	$FCFC0000	;bits of Flag unused yet

; - V36 new Flags which the programmer may specify in NewScreen.Flags
WFLG_NW_EXTENDED	EQU	$00040000	; extension data provided
	; see ExtNewWindow structure

; --- V36 Flags to be set only by Intuition -------------------------
WFLG_VISITOR	EQU	$08000000	; visitor window (see autodoc for OpenWindow)
WFLG_ZOOMED	EQU	$10000000	; identifies "zoom state"
WFLG_HASZOOM	EQU	$20000000	; window has a zoom gadget

; --- Other Window Values ----------------------------------------------
DEFAULTMOUSEQUEUE	EQU	5	 ; no more mouse messages


; --- see struct IntuiMessage for the IDCMP Flag definitions -----------------


; ========================================================================
; === NewWindow ==========================================================
; ========================================================================
; NOTE: to use the new features of V36, you may need to use the
; ExtNewWindow structure, below.
	STRUCTURE	NewWindow,0

	WORD	nw_LeftEdge		; initial Window dimensions
	WORD	nw_TopEdge		; initial Window dimensions
	WORD	nw_Width		; initial Window dimensions
	WORD	nw_Height		; initial Window dimensions

	BYTE	nw_DetailPen		; for rendering the detail bits of the Window
	BYTE	nw_BlockPen		; for rendering the block-fill bits

	LONG	nw_IDCMPFlags		; initial IDCMP state

	LONG	nw_Flags		; see the Flag definition under Window

	; You supply a linked-list of Gadgets for your Window.
	; This list DOES NOT include system Gadgets.  You get the standard
	; system Window Gadgets by setting flag-bits in the variable Flags (see
	; the bit definitions under the Window structure definition)
	APTR	nw_FirstGadget

	; the CheckMark is a pointer to the imagery that will be used when
	; rendering MenuItems of this Window that want to be checkmarked
	; if this is equal to NULL, you'll get the default imagery
	APTR	nw_CheckMark

	APTR	nw_Title		; title text for the Window
	
	; the Screen pointer is used only if you've defined a CUSTOMSCREEN and
	; want this Window to open in it.  If so, you pass the address of the
	; Custom Screen structure in this variable.  Otherwise, this variable
	; is ignored and doesn't have to be initialized.
	APTR	nw_Screen
	
	; WFLG_SUPER_BITMAP Window?  If so, put the address of your BitMap
	; structure in this variable.  If not, this variable is ignored and
	; doesn't have to be initialized
	APTR	nw_BitMap

	; the values describe the minimum and maximum sizes of your Windows.
	; these matter only if you've chosen the WFLG_SIZEGADGET Gadget option,
	; which means that you want to let the User to change the size of 
	; this Window.  You describe the minimum and maximum sizes that the
	; Window can grow by setting these variables.  You can initialize
	; any one these to zero, which will mean that you want to duplicate
	; the setting for that dimension (if MinWidth == 0, MinWidth will be
	; set to the opening Width of the Window).
	; You can change these settings later using SetWindowLimits().
	; If you haven't asked for a GTYP_SIZING Gadget, you don't have to
	; initialize any of these variables.
	WORD	nw_MinWidth
	WORD	nw_MinHeight
	WORD	nw_MaxWidth
	WORD	nw_MaxHeight

	; the type variable describes the Screen in which you want this Window to
	; open.  The type value can either be CUSTOMSCREEN or one of the
	; system standard Screen Types such as WBENCHSCREEN.  See the
	; type definitions under the Screen structure
	; A new possible value for this field is PUBLICSCREEN, which
	; defines the window as a 'visitor' window.  See below for
	; additional information provided.
	WORD	nw_Type

	LABEL	nw_SIZE
	LABEL	nw_SIZEOF

; ExtNewWindow -- NewWindow plus extension fields.
; This structure may be extended again, so programs depending on its
; size are incorrect.

	STRUCTURE	ExtNewWindow,nw_SIZE

	; extensions for V36
	; if the NewWindow Flag WFLG_NW_EXTENDED is set, then
	; this field is assumed to point to an array (or chain of arrays)
	; of TagItem structures.  See also ExtNewScreen for another
	; use of TagItems to pass optional data.
	;
	; see below for tag values and the corresponding data

	APTR	enw_Extension	; pointer to TagItem array
	LABEL	enw_SIZEOF

* The TagItem ID's (ti_Tag values) for OpenWindowTagList() follow.
* They are values in a TagItem array passed as extension/replacement
* values for the data in NewWindow.  OpenWindowTagList() can actually
* work well with a NULL NewWindow pointer.

	ENUM	TAG_USER+100

	; these tags simply override NewWindow parameters
	EITEM	WA_Left
	EITEM	WA_Top
	EITEM	WA_Width
	EITEM	WA_Height
	EITEM	WA_DetailPen
	EITEM	WA_BlockPen
	EITEM	WA_IDCMP
	EITEM	WA_Flags	; not implemented at present
	EITEM	WA_Gadgets
	EITEM	WA_Checkmark
	EITEM	WA_Title
	EITEM	WA_ScreenTitle	; means you don't have to call SetWindowTitles
	; after you open your window

	EITEM	WA_CustomScreen
	EITEM	WA_SuperBitMap	; also implies WFLG_SUPER_BITMAP property
	EITEM	WA_MinWidth
	EITEM	WA_MinHeight
	EITEM	WA_MaxWidth
	EITEM	WA_MaxHeight

	; The following are specifications for new features

	EITEM	WA_InnerWidth
	EITEM	WA_InnerHeight ; You can specify the dimensions of the interior
	; region of your window, independent of what
	; the border widths will be.  You probably want
	; to also specify WA_AutoAdjust to allow
	; Intuition to move your window or even
	; shrink it so that it is completely on screen.

	EITEM	WA_PubScreenName	; declares that you want the window to open as
	; a visitor on the public screen whose name is
	; pointed to by (UBYTE *) ti_Data

	EITEM	WA_PubScreen	; open as a visitor window on the public screen
	; whose address is in (struct Screen *) ti_Data.
	; To ensure that this screen remains open, you
	; should either be the screen's owner, have a
	; window open on the screen, or use LockPubScreen().

	EITEM	WA_PubScreenFallBack	; A Boolean, specifies whether a visitor window
	; should "fall back" to the default public screen
	; (or Workbench) if the named public screen isn't
	; available

	EITEM	WA_WindowName	; not implemented
	EITEM	WA_Colors	; a ColorSpec array for colors to be set
	; when this window is active.  This is not 
	; implemented, and may not be, since the default
	; values to restore would be hard to track.
	; We'd like to at least support per-window colors
	; for the mouse pointer sprite.

	EITEM	WA_Zoom	; ti_Data points to an array of four WORD's,
	; the initial Left/Top/Width/Height values of
	; the "alternate" zoom position/dimensions.
	; It also specifies that you want a Zoom gadget
	; for your window, whether or not you have a
	; sizing gadget.

	EITEM	WA_MouseQueue	; ti_Data contains initial value for the mouse
	; message backlog limit for this window.

	EITEM	WA_BackFill	; unimplemented at present: provides a "backfill
	; hook" for your window's layer.

	EITEM	WA_RptQueue	; initial value of repeat key backlog limit

	; These Boolean tag items are alternatives to the NewWindow.Flags
	; boolean flags with similar names.

	EITEM	WA_SizeGadget
	EITEM	WA_DragBar
	EITEM	WA_DepthGadget
	EITEM	WA_CloseGadget
	EITEM	WA_Backdrop
	EITEM	WA_ReportMouse
	EITEM	WA_NoCareRefresh
	EITEM	WA_Borderless
	EITEM	WA_Activate
	EITEM	WA_RMBTrap
	EITEM	WA_WBenchWindow	; PRIVATE!!
	EITEM	WA_SimpleRefresh	; only specify if TRUE
	EITEM	WA_SmartRefresh	; only specify if TRUE
	EITEM	WA_SizeBRight
	EITEM	WA_SizeBBottom

	; New Boolean properties
	EITEM	WA_AutoAdjust	; shift or squeeze the window's position and
	; dimensions to fit it on screen.

	EITEM	WA_GimmeZeroZero	; equiv. to NewWindow.Flags WFLG_GIMMEZEROZERO

	; New for V37: WA_MenuHelp (ignored by V36)
	EITEM	WA_MenuHelp	; Enables IDCMP_MENUHELP:  Pressing HELP during menus
	; will return IDCMP_MENUHELP IDCMP message.

*** End of Window attribute enumeration ***



	IFND	INTUITION_SCREENS_I
	INCLUDE	"intuition/screens.i"
	ENDC

	IFND	INTUITION_PREFERENCES_I
	INCLUDE	"intuition/preferences.i"
	ENDC

; ========================================================================
; === Remember ===========================================================
; ========================================================================
; this structure is used for remembering what memory has been allocated to
; date by a given routine, so that a premature abort or systematic exit
; can deallocate memory cleanly, easily, and completely
	STRUCTURE	Remember,0

	APTR	rm_NextRemember
	LONG	rm_RememberSize
	APTR	rm_Memory

	LABEL	rm_SIZEOF

	STRUCTURE	ColorSpec,0

	WORD	cs_ColorIndex	; -1 terminates an array of ColorSpec
	UWORD	cs_Red	; only six bits recognized in V36
	UWORD	cs_Green	; only six bits recognized in V36
	UWORD	cs_Blue	; only six bits recognized in V36
	LABEL	cs_SIZEOF

* === Easy Requester Specification ======================================= *
* see also autodocs for EasyRequest and BuildEasyRequest
* NOTE: This structure may grow in size in the future

	STRUCTURE	EasyStruct,0

	ULONG	es_StructSize		; should be es_SIZEOF
	ULONG	es_Flags		; should be 0 for now
	APTR	es_Title		; title of requester window
	APTR	es_TextFormat		; 'printf' style formatting string
	APTR	es_GadgetFormat	; 'printf' style formatting string
	LABEL	es_SIZEOF



; ======================================================================== 
; === Miscellaneous ====================================================== 
; ======================================================================== 

; = MACROS ============================================================== 
;#define MENUNUM(n) (n & 0x1F)
;#define ITEMNUM(n) ((n >> 5) & 0x003F)
;#define SUBNUM(n) ((n >> 11) & 0x001F)
;
;#define SHIFTMENU(n) (n & 0x1F)
;#define SHIFTITEM(n) ((n & 0x3F) << 5)
;#define SHIFTSUB(n) ((n & 0x1F) << 11)
;
;#define SRBNUM(n)  (0x08 - (n >> 4))  /* SerRWBits -> read bits per char */
;#define SWBNUM(n)  (0x08 - (n & 0x0F))/* SerRWBits -> write bits per chr */
;#define SSBNUM(n)  (0x01 + (n >> 4))  /* SerStopBuf -> stop bits per chr */
;#define SPARNUM(n) (n >> 4)           /* SerParShk -> parity setting    */
;#define SHAKNUM(n) (n & 0x0F)         /* SerParShk -> handshake mode    */
;
; = MENU STUFF =========================================================== 
NOMENU	EQU	$001F
NOITEM	EQU	$003F
NOSUB	EQU	$001F
MENUNULL	EQU	$FFFF


; = =RJ='s peculiarities =================================================
;#define FOREVER for(;;)
;#define SIGN(x) ( ((x) > 0) - ((x) < 0) )


; these defines are for the COMMSEQ and CHECKIT menu stuff.  If CHECKIT,
; I'll use a generic Width (for all resolutions) for the CheckMark.
; If COMMSEQ, likewise I'll use this generic stuff
CHECKWIDTH	EQU	19
COMMWIDTH	EQU	27
LOWCHECKWIDTH	EQU	13
LOWCOMMWIDTH	EQU	16


; these are the AlertNumber defines.  if you are calling DisplayAlert()
; the AlertNumber you supply must have the ALERT_TYPE bits set to one
; of these patterns
ALERT_TYPE	EQU	$80000000
RECOVERY_ALERT	EQU	$00000000	; the system can recover from this
DEADEND_ALERT	EQU	$80000000	; no recovery possible, this is it


; When you're defining IntuiText for the Positive and Negative Gadgets 
; created by a call to AutoRequest(), these defines will get you 
; reasonable-looking text.  The only field without a define is the IText
; field; you decide what text goes with the Gadget
AUTOFRONTPEN	EQU	0
AUTOBACKPEN	EQU	1
AUTODRAWMODE	EQU	RP_JAM2
AUTOLEFTEDGE	EQU	6
AUTOTOPEDGE	EQU	3
AUTOITEXTFONT	EQU	0
AUTONEXTTEXT	EQU	0



;* --- RAWMOUSE Codes and Qualifiers (Console OR IDCMP) -------------------
SELECTUP	EQU	(IECODE_LBUTTON+IECODE_UP_PREFIX)
SELECTDOWN	EQU	(IECODE_LBUTTON)
MENUUP	EQU	(IECODE_RBUTTON+IECODE_UP_PREFIX)
MENUDOWN	EQU	(IECODE_RBUTTON)
ALTLEFT	EQU	(IEQUALIFIER_LALT)
ALTRIGHT	EQU	(IEQUALIFIER_RALT)
AMIGALEFT	EQU	(IEQUALIFIER_LCOMMAND)
AMIGARIGHT	EQU	(IEQUALIFIER_RCOMMAND)
AMIGAKEYS	EQU	(AMIGALEFT+AMIGARIGHT)
	
CURSORUP	EQU	$4C
CURSORLEFT	EQU	$4F
CURSORRIGHT	EQU	$4E
CURSORDOWN	EQU	$4D
KEYCODE_Q	EQU	$10
KEYCODE_X	EQU	$32
KEYCODE_N	EQU	$36
KEYCODE_M	EQU	$37
KEYCODE_V	EQU	$34
KEYCODE_B	EQU	$35
KEYCODE_LESS	EQU	$38
KEYCODE_GREATER	EQU	$39

	IFND	INTUITION_INTUITIONBASE_I
	INCLUDE	"intuition/intuitionbase.i"
	ENDC

* Include obsolete identifiers:
	IFND	INTUITION_IOBSOLETE_I
	INCLUDE	"intuition/iobsolete.i"
	ENDC

	ENDC
