home *** CD-ROM | disk | FTP | other *** search
-
- *********************************************************************
- *
- * workbench.h
- *
- * Commodore-Amiga, Inc.
- *
- * $Header: workbench.i,v 31.2 85/09/02 21:32:18 neil Exp $
- *
- * $Locker: $
- *
- *********************************************************************
-
- IFND EXEC_TYPES_I
- INCLUDE "exec/types.i"
- ENDC !EXEC_TYPES_I
-
- IFND EXEC_NODES_I
- INCLUDE "exec/nodes.i"
- ENDC !EXEC_NODES_I
-
- IFND EXEC_LISTS_I
- INCLUDE "exec/lists.i"
- ENDC !EXEC_LISTS_I
-
- IFND EXEC_TASKS_I
- INCLUDE "exec/tasks.i"
- ENDC !EXEC_TASKS_I
-
- IFND INTUITION_INTUITION_I
- INCLUDE "intuition/intuition.i"
- ENDC !INTUITION_INTUITION_I
-
-
- ; the Workbench object types
- WBDISK EQU 1
- WBDRAWER EQU 2
- WBTOOL EQU 3
- WBPROJECT EQU 4
- WBGARBAGE EQU 5
- WBDEVICE EQU 6
- WBKICK EQU 7
-
-
- ; the main workbench object structure
- STRUCTURE DrawerData,0
- STRUCT dd_NewWindow,nw_SIZE ; args to open window
- LONG dd_CurrentX ; current x coordinate of origin
- LONG dd_CurrentY ; current y coordinate of origin
- LONG dd_MinX ; smallest x coordinate in window
- LONG dd_MinY ; smallest y coordinate in window
- LONG dd_MaxX ; largest x coordinate in window
- LONG dd_MaxY ; largest y coordinate in window
- STRUCT dd_HorizScroll,gg_SIZEOF
- STRUCT dd_VertScroll,gg_SIZEOF
- STRUCT dd_UpMove,gg_SIZEOF
- STRUCT dd_DownMove,gg_SIZEOF
- STRUCT dd_LeftMove,gg_SIZEOF
- STRUCT dd_RightMove,gg_SIZEOF
- STRUCT dd_HorizImage,ig_SIZEOF
- STRUCT dd_VertImage,ig_SIZEOF
- STRUCT dd_HorizProp,pi_SIZEOF
- STRUCT dd_VertProp,pi_SIZEOF
- APTR dd_DrawerWin ; pointer to drawers window
- APTR dd_Object ; back pointer to drawer object
- STRUCT dd_Children,LN_SIZE ; where our children hang out
- LONG dd_Lock
- LABEL dd_SIZEOF
-
- ; the amount of DrawerData actually written to disk
- DRAWERDATAFILESIZE EQU (nw_SIZE+2*(4))
-
-
- STRUCTURE DiskObject,0
- UWORD do_Magic ; a magic num at the start of the file
- UWORD do_Version ; a version number, so we can change it
- STRUCT do_Gadget,gg_SIZEOF ; a copy of in core gadget
- UWORD do_Type
- APTR do_DefaultTool
- APTR do_ToolTypes
- LONG do_CurrentX
- LONG do_CurrentY
- APTR do_DrawerData
- APTR do_ToolWindow ; only applies to tools
- LONG do_StackSize ; only applies to tools
- LABEL do_SIZEOF
-
- WB_DISKMAGIC EQU $e310 ; a magic number, not easily impersonated
- WB_DISKVERSION EQU 1 ; our current version number
-
- STRUCTURE FreeList,0
- WORD fl_NumFree
- STRUCT fl_MemList,LH_SIZE
- ; weird name to avoid conflicts with FileLocks
- LABEL FreeList_SIZEOF
-
-
- STRUCTURE WBObject,0
- STRUCT wo_MasterNode,LN_SIZE ; all objects are on this list
- STRUCT wo_Siblings,LN_SIZE ; list of drawer members
- STRUCT wo_SelectNode,LN_SIZE ; list of all selected objects
- STRUCT wo_UtilityNode,LN_SIZE ; function specific linkages
- APTR wo_Parent
-
- ; object flags -- see below for definitions
- UBYTE wo_Flags
-
- UBYTE wo_Type ; what flavor object is this?
- USHORT wo_UseCount ; number of references to this obj
- APTR wo_Name ; this object's textual name
- SHORT wo_NameXOffset ; where to put the name
- SHORT wo_NameYOffset
-
- APTR wo_DefaultTool
- APTR wo_DrawerData ; if this is a drawer or disk
- APTR wo_IconWin ; each object's icon lives here
- LONG wo_CurrentX ; virtual X in drawer
- LONG wo_CurrentY ; virtual Y in drawer
- APTR wo_ToolTypes ; the types for this tool
- STRUCT wo_Gadget,gg_SIZEOF ; NOT a ptr, but an instance of it
- STRUCT wo_FreeList,FreeList_SIZEOF ; this objects free list
- APTR wo_ToolWindow ; character string for tool's window
- LONG wo_StackSize ; how much stack to give to this
- LONG wo_Lock ; if this tool is in the backdrop
- LABEL wo_SIZEOF
-
- ; workbench object flags
- BITDEF WO,IconDisp,7 ; icon is currently in a window
- BITDEF WO,DrawerOpen,6 ; we're a drawer, and it is open
- BITDEF WO,Selected,5 ; our icon is selected
- BITDEF WO,Background,4 ; set if icon is in background
-
-
- * each message that comes into the WorkBenchPort must have a type field
- * in the preceeding short. These are the defines for this type
- *
-
- MTYPE_PSTD EQU 1 ; a "standard Potion" message
- MTYPE_TOOLEXIT EQU 2 ; exit message from our tools
- MTYPE_DISKCHANGE EQU 3 ; dos telling us of a disk change
- MTYPE_TIMER EQU 4 ; we got a timer tick
- MTYPE_CLOSEDOWN EQU 5 ; <unimplemented>
- MTYPE_IOPROC EQU 6 ; <unimplemented>
-
- ; we use the gadget id field to encode some special information
- GID_WBOBJECT EQU 0 ; a normal workbench object
- GID_HORIZSCROLL EQU 1 ; the horizontal scroll gadget for a drawer
- GID_VERTSCROLL EQU 2 ; the vertical scroll gadget for a drawer
- GID_LEFTSCROLL EQU 3 ; move one window left
- GID_RIGHTSCROLL EQU 4 ; move one window right
- GID_UPSCROLL EQU 5 ; move one window up
- GID_DOWNSCROLL EQU 6 ; move one window down
- GID_NAME EQU 7 ; the name field for an object
-
-
- * workbench does different complement modes for its gadgets.
- * It supports separate images, complement mode, and backfill mode.
- * The first two are identical to intuitions GADGIMAGE and GADGHCOMP.
- * backfill is similar to GADGHCOMP, but the region outside of the
- * image (which normally would be color three when complemented)
- * is flood-filled to color zero.
- *
- GADGBACKFILL EQU $0001
-
- * if an icon does not really live anywhere, set its current position
- * to here
- *
- NO_ICON_POSITION EQU ($80000000)
-