home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-09-12 | 37.9 KB | 1,010 lines |
- IFND INTUITION_INTUITION_I
- INTUITION_INTUITION_I SET 1
- **
- ** $Filename: intuition/intuition.i $
- ** $Release: 1.3 $
- **
- ** main intuition include
- **
- ** (C) Copyright 1985,1986,1987,1988 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
-
-
- ; ========================================================================;
- ; === 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, DrawMenu shows "->"
-
- ; 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 ; whether to check this item if selected
- ITEMTEXT EQU $0002 ; set if textual, clear if graphical item
- COMMSEQ EQU $0004 ; set if there's an command sequence
- MENUTOGGLE EQU $0008 ; set to toggle the check of a menu item
- 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 ; if CHECKIT, then set this when selected
-
-
- ; --- 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
-
- ; the ClipRect and BitMap and used for rendering the requester
- 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
- ; it's 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
- STRUCT rq_ReqPad2,36 ; for backwards compatibility (reserved)
-
- LABEL rq_SIZEOF
-
- ; FLAGS SET BY THE APPLIPROG
- POINTREL EQU $0001 ; if POINTREL set, TopLeft is relative to pointer
- PREDRAWN EQU $0002 ; if ReqBMap points to predrawn Requester imagery
- NOISYREQ EQU $0004 ; if you don't want requester to filter input
-
- ; 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 ; 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;
-
- ; by using the MutualExclude word, the appliprog can describe
- ; which gadgets mutually-exclude which other ones. The bits in
- ; MutualExclude correspond to the gadgets in object containing
- ; the gadget list. If this gadget is selected and a bit is set
- ; in this gadget's MutualExclude and the gadget corresponding to
- ; that bit is currently selected (e.g. bit 2 set and gadget 2
- ; is currently selected) that gadget must be unselected. Intuition
- ; does the visual unselecting (with checkmarks) and leaves it up
- ; to the program to unselect internally
- LONG gg_MutualExclude ; set bits mean this gadget excludes that
-
- ; 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
-
- ; --- FLAGS SET BY THE APPLIPROG --------------------------------------------
- ; combinations in these bits describe the highlight technique to be used
- GADGHIGHBITS EQU $0003
- GADGHCOMP EQU $0000 ; Complement the select box
- GADGHBOX EQU $0001 ; Draw a box around the image
- GADGHIMAGE EQU $0002 ; Blast in this alternate image
- GADGHNONE EQU $0003 ; don't highlight
-
- ; set this flag if the GadgetRender and SelectRender point to Image imagery,
- ; clear if it's a Border
- 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)
- GRELBOTTOM EQU $0008 ; set if rel to bottom, clear if rel top
- GRELRIGHT EQU $0010 ; set if rel to right, clear if to left
- ; set the RELWIDTH bit to spec that Width is relative to width of screen
- GRELWIDTH EQU $0020
- ; set the RELHEIGHT bit to spec that Height is rel to height of screen
- GRELHEIGHT EQU $0040
-
- ; the SELECTED flag is initialized by you and set by Intuition. It
- ; specifies whether or not this Gadget is currently selected/highlighted
- SELECTED EQU $0080
-
-
- ; the GADGDISABLED 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
- GADGDISABLED EQU $0100
-
-
- ; --- These are the Activation flag bits ----------------------------------
- ; RELVERIFY is set if you want to verify that the pointer was still over
- ; the gadget when the select button was released
- RELVERIFY EQU $0001
-
- ; the flag GADGIMMEDIATE, when set, informs the caller that the gadget
- ; was activated when it was activated. this flag works in conjunction with
- ; the RELVERIFY flag
- GADGIMMEDIATE EQU $0002
-
- ; the flag 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
- ENDGADGET EQU $0004
-
- ; the FOLLOWMOUSE flag, when set, specifies that you want to receive
- ; reports on mouse movements (ie, you want the REPORTMOUSE function for
- ; your Window). When the Gadget is deselected (immediately if you have
- ; no RELVERIFY) the previous state of the REPORTMOUSE flag is restored
- ; You probably want to set the GADGIMMEDIATE flag when using 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 RELVERIFY, you'll get at least one Mouse Position event.
- 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
- RIGHTBORDER EQU $0010
- LEFTBORDER EQU $0020
- TOPBORDER EQU $0040
- BOTTOMBORDER EQU $0080
-
- TOGGLESELECT EQU $0100 ; this bit for toggle-select mode
-
- STRINGCENTER EQU $0200 ; center the String
- STRINGRIGHT EQU $0400 ; right-justify the String
-
- LONGINT EQU $0800 ; This String Gadget is a Long Integer
-
- ALTKEYMAP EQU $1000 ; This String has an alternate keymapping
-
- BOOLEXTEND EQU $2000 ; This Boolean Gadget has a BoolInfo
-
- ; --- 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
- GADGETTYPE EQU $FC00 ; all Gadget Global Type flags (padded)
- SYSGADGET EQU $8000 ; 1 = SysGadget, 0 = AppliGadget
- SCRGADGET EQU $4000 ; 1 = ScreenGadget, 0 = WindowGadget
- GZZGADGET EQU $2000 ; 1 = Gadget for GIMMEZEROZERO borders
- REQGADGET EQU $1000 ; 1 = this is a Requester Gadget
- ; system gadgets
- SIZING EQU $0010
- WDRAGGING EQU $0020
- SDRAGGING EQU $0030
- WUPFRONT EQU $0040
- SUPFRONT EQU $0050
- WDOWNBACK EQU $0060
- SDOWNBACK EQU $0070
- CLOSE EQU $0080
- ; application gadgets
- BOOLGADGET EQU $0001
- GADGET0002 EQU $0002
- PROPGADGET EQU $0003
- STRGADGET EQU $0004
-
-
-
- ; ========================================================================
- ; === 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. It's 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
-
-
- 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
- APTR si_LayerPtr ; the RastPort containing this Gadget
-
- ; 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 LONGINT String Gadget
-
- ; If you want this Gadget to use your own Console keymapping, you
- ; set the 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
- ; 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 screen 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 ; continuation to TxWrite another text
-
- 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
- ; recursively
- 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.
- 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 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 (GIMMEZEROZERO notwithstanding)
- 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 ------------------------------------------------------
- SIZEVERIFY EQU $00000001 ; See the Programmer's Guide
- NEWSIZE EQU $00000002 ; See the Programmer's Guide
- REFRESHWINDOW EQU $00000004 ; See the Programmer's Guide
- MOUSEBUTTONS EQU $00000008 ; See the Programmer's Guide
- MOUSEMOVE EQU $00000010 ; See the Programmer's Guide
- GADGETDOWN EQU $00000020 ; See the Programmer's Guide
- GADGETUP EQU $00000040 ; See the Programmer's Guide
- REQSET EQU $00000080 ; See the Programmer's Guide
- MENUPICK EQU $00000100 ; See the Programmer's Guide
- CLOSEWINDOW EQU $00000200 ; See the Programmer's Guide
- RAWKEY EQU $00000400 ; See the Programmer's Guide
- REQVERIFY EQU $00000800 ; See the Programmer's Guide
- REQCLEAR EQU $00001000 ; See the Programmer's Guide
- MENUVERIFY EQU $00002000 ; See the Programmer's Guide
- NEWPREFS EQU $00004000 ; See the Programmer's Guide
- DISKINSERTED EQU $00008000 ; See the Programmer's Guide
- DISKREMOVED EQU $00010000 ; See the Programmer's Guide
- WBENCHMESSAGE EQU $00020000 ; See the Programmer's Guide
- ACTIVEWINDOW EQU $00040000 ; See the Programmer's Guide
- INACTIVEWINDOW EQU $00080000 ; See the Programmer's Guide
- DELTAMOVE EQU $00100000 ; See the Programmer's Guide
- VANILLAKEY EQU $00200000 ; See the Programmer's Guide
- INTUITICKS EQU $00400000 ; See the Programmer's Guide
- ; 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
- LONELYMESSAGE EQU $80000000
-
-
-
- ; --- IDCMP Codes --------------------------------------------------------
- ; This group of codes is for the 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 WBENCHMESSAGE messages
- WBENCHOPEN EQU $0001
- WBENCHCLOSE EQU $0002
-
-
-
-
- ; ========================================================================
- ; === 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
- ; 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 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 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, GIMMEZEROZERO
- ; notwithstanding
- WORD wd_GZZMouseX
- WORD wd_GZZMouseY
- ; these variables contain the width and height of the inner-Window of
- ; 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 IFont
-
- LABEL wd_Size
-
- ; --- FLAGS REQUESTED (NOT DIRECTLY SET THOUGH) BY THE APPLIPROG -------------
- WINDOWSIZING EQU $0001 ; include sizing system-gadget?
- WINDOWDRAG EQU $0002 ; include dragging system-gadget?
- WINDOWDEPTH EQU $0004 ; include depth arrangement gadget?
- WINDOWCLOSE EQU $0008 ; include close-box system-gadget?
-
- SIZEBRIGHT EQU $0010 ; size gadget uses right border
- SIZEBBOTTOM EQU $0020 ; size gadget uses bottom border
-
- ; --- refresh modes ----------------------------------------------------------
- ; combinations of the REFRESHBITS select the refresh type
- REFRESHBITS EQU $00C0
- SMART_REFRESH EQU $0000
- SIMPLE_REFRESH EQU $0040
- SUPER_BITMAP EQU $0080
- OTHER_REFRESH EQU $00C0
-
- BACKDROP EQU $0100 ; this is an ever-popular BACKDROP window
-
- REPORTMOUSE EQU $0200 ; set this to hear about every mouse move
-
- GIMMEZEROZERO EQU $0400 ; make extra border stuff
-
- BORDERLESS EQU $0800 ; set this to get a Window sans border
-
- ACTIVATE EQU $1000 ; when Window opens, it's the Active one
-
- ; FLAGS SET BY INTUITION
- WINDOWACTIVE EQU $2000 ; this window is the active one
- INREQUEST EQU $4000 ; this window is in request mode
- MENUSTATE EQU $8000 ; this Window is active with its Menus on
-
- ; --- Other User Flags -------------------------------------------------------
- RMBTRAP EQU $00010000 ; Catch RMB events for your own
- NOCAREREFRESH EQU $00020000 ; not to be bothered with REFRESH
-
- ; --- Other Intuition Flags ----------------------------------------------
- WINDOWREFRESH EQU $01000000 ; Window is currently refreshing
- WBENCHWINDOW EQU $02000000 ; WorkBench Window
- WINDOWTICKED EQU $04000000 ; only one timer tick at a time
-
- SUPER_UNUSED EQU $FCFC0000 ;bits of Flag unused yet
-
-
- ; --- see struct IntuiMessage for the IDCMP Flag definitions -----------------
-
-
- ; ========================================================================
- ; === NewWindow ==========================================================
- ; ========================================================================
- 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
-
- ; 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 WINDOWSIZING 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 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
- WORD nw_Type
-
- LABEL nw_SIZE
-
-
- 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
-
-
-
- ; ========================================================================
- ; === 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
-
- IFND INTUITION_INTUITIONBASE_I
- include "intuition/intuitionbase.i"
- ENDC
-
- ENDC ; INTUITION_INTUITION_I
-