
    IFND INTUITION_GADGETCLASS_I
INTUITION_GADGETCLASS_I SET 1

*** gadgetclass.h ********************************************************
*
*  Gadget class interface
*
*  $Header: /home/amiga/V36/src/kickstart/intuition/RCS/gadgetclass.i,v 1.5 90/04/06 22:24:41 jimm Exp $
*
*  Confidential Information: Commodore-Amiga Computer, Inc.
*  Copyright (c) Commodore-Amiga Computer, Inc.
****************************************************************************/

	IFND EXEC_TYPES_I
	INCLUDE 'exec/types.i'
	ENDC

	IFND UTILITY_HOOKS_I
	INCLUDE 'utility/hooks.i'
	ENDC

	IFND INTUITION_INTUITION_I
	INCLUDE 'intuition/intuition.i'
	ENDC


; Gadget Class attributes
    ENUM TAG_USER+$30001

    EITEM GA_LEFT
    EITEM GA_RELRIGHT
    EITEM GA_TOP
    EITEM GA_RELBOTTOM
    EITEM GA_WIDTH
    EITEM GA_RELWIDTH
    EITEM GA_HEIGHT
    EITEM GA_RELHEIGHT
    EITEM GA_TEXT
    EITEM GA_IMAGE
    EITEM GA_BORDER
    EITEM GA_SELECTRENDER
    EITEM GA_HIGHLIGHT
    EITEM GA_DISABLED
    EITEM GA_GZZGADGET
    EITEM GA_ID
    EITEM GA_USERDATA
    EITEM GA_SPECIALINFO
    EITEM GA_SELECTED
    EITEM GA_ENDGADGET
    EITEM GA_IMMEDIATE
    EITEM GA_RELVERIFY
    EITEM GA_FOLLOWMOUSE
    EITEM GA_RIGHTBORDER
    EITEM GA_LEFTBORDER
    EITEM GA_TOPBORDER
    EITEM GA_BOTTOMBORDER
    EITEM GA_TOGGLESELECT

    ; internal use only, until further notice, please
    EITEM GA_SYSGADGET	; bool, sets SYSGADGET field in type
    EITEM GA_SYSGTYPE	; e.g., WUPFRONT, ...

    EITEM GA_PREVIOUS	; previous gadget ((struct Gadget **)) in linked list
    EITEM GA_NEXT	; next gadget in list.  NOTE: NEITHER of these two can
		   	; be used to link new gadgets into the gadget list of
		   	; an open window or requester.  You must use AddGList().

; PropG Class attributes

    ENUM TAG_USER+$310001
    EITEM PGA_FREEDOM
    EITEM PGA_BORDERLESS
    EITEM PGA_HORIZPOT
    EITEM PGA_HORIZBODY
    EITEM PGA_VERTPOT
    EITEM PGA_VERTBODY
    EITEM PGA_TOTAL	; not implemented
    EITEM PGA_PAGE	; not implemented
    EITEM PGA_TOP	; not implemented

; Gadget Layout related attributes

    ENUM TAG_USER+$38001
    EITEM LAYOUTA_LAYOUTOBJ	; layout delegate
    EITEM LAYOUTA_SPACING	; pixels, for now
    EITEM LAYOUTA_ORIENTATION	; values from below

; orientation values
LORIENT_NONE	EQU 0
LORIENT_HORIZ	EQU 1
LORIENT_VERT	EQU 2


; Custom gadget hook command ID's 
; (gadget class method/message ID's)

    ENUM
    EITEM GM_HITTEST	; return GMR_GADGETHIT if you are clicked
			; (whether or not  you want to go active).
    EITEM GM_RENDER	; draw yourself, in the appropriate state
    EITEM GM_GOACTIVE	; you are now going to be fed input
    EITEM GM_HANDLEINPUT ; handle that input
    EITEM GM_GOINACTIVE	; whether or not by choice, you are done
    ; GM_SETUPINFO is obsolete

; Parameters Bundles

; All parameter structure begin with a MethodID field
 STRUCTURE MsgHeader,0
	ULONG	MethodID
	LABEL	methodid_SIZEOF

; GM_HITTEST
 STRUCTURE	gpHitTest,methodid_SIZEOF
    APTR	gpht_GInfo
    UWORD	gpht_MouseX
    UWORD	gpht_MouseY

; GM_HITTEST return value
GMR_GADGETHIT	EQU $00000004	; if no hit, return 0

; GM_RENDER
 STRUCTURE	gpRender,methodid_SIZEOF
    APTR	gpr_GInfo	; gadget context
    APTR	gpr_RPort	; all ready for use
    LONG	gpr_Redraw	; might be a "highlight pass"

; values of gpr_Redraw
GREDRAW_UPDATE	EQU 1	; update for change in attributesvalues
GREDRAW_REDRAW	EQU 1	; redraw gadget
GREDRAW_TOGGLE	EQU 0	; toggle highlight, if applicable

; GM_GOACTIVE, GM_HANDLEINPUT
 STRUCTURE	gpInput,methodid_SIZEOF
    APTR	gpi_GInfo;
    APTR	gpi_IEvent;
    APTR	gpi_Termination;
    UWORD	gpi_MouseX
    UWORD	gpi_MouseY

; GM_GOINACTIVE
 STRUCTURE	gpGoInactive,methodid_SIZEOF
    APTR	gpgi_GInfo;

; GM_HANDLEINPUT and GM_GOACTIVE  return code flags
; return GHR_MEACTIVE (0) alone if you want more input.
; Otherwise, return ONE of GHR_NOREUSE and GHR_REUSE, and optionally
; GHR_VERIFY.

GMR_MEACTIVE	EQU $0001
GMR_NOREUSE	EQU $0002
GMR_REUSE	EQU $0004
GMR_VERIFY	EQU $0008	; you MUST set cgp_Termination

	ENDC
