#ifndef	LIBRARIES_ASL_H
#define	LIBRARIES_ASL_H	1

/*
 ************************************************************************
 *									*
 * 12/3/89	asl.h	by cdh						*
 *									*
 *	Last edit 2/15/90						*
 *									*
 ************************************************************************
 */
#ifndef	EXEC_TYPES_H
#include	<exec/types.h>
#endif

#ifndef	EXEC_LISTS_H
#include	<exec/lists.h>
#endif

#ifndef	EXEC_ALERTS_H
#include	<exec/alerts.h>
#endif

#ifndef	EXEC_LIBRARIES_H
#include	<exec/libraries.h>
#endif

#ifndef	EXEC_SEMAPHORES_H
#include	<exec/semaphores.h>
#endif

#ifndef	DOS_DOS_H
#include	<dos/dos.h>
#endif

#ifndef INTUITION_INTUITION_H
#include <intuition/intuition.h>
#endif

#ifndef UTILITY_HOOKS_H
#include <utility/hooks.h>
#endif


/*
 ************************************************************************
 *	Standard definitions for asl library information		*
 ************************************************************************
 */
#define	AslName		"asl.library"

/*
 ************************************************************************
 *									*
 *	The ASL file requester data structure...			*
 *									*
 * The fields described here are for READ ACCESS to the structure	*
 * returned by AllocAslRequest( ASL_FileRequest, ... )			*
 *									*
 * Any modifications MUST be done via TAGS either at the time of	*
 * creation by AllocAslRequest(), or when used, via AslRequest()	*
 *									*
 ************************************************************************
 */
struct FileRequester	{
	APTR	Reserved1;
	BYTE	*rf_File;	/* Filename pointer		*/
	BYTE	*rf_Dir;	/* Directory name pointer	*/
	APTR	Reserved2;
	WORD	Reserved3;
	LONG	Reserved4;
	LONG	Reserved5;
	LONG	Reserved6;
	WORD	Reserved7;
	struct MinList	rf_SelectList;	/* List returned for multiselect */
	};

/************************************************************************/
/*									*/
/* SelectList is the data structure returned in the rf_Select		*/
/* list, when requesting multiple selections in file request, or when	*/
/* explicitly requesting the Lock/Name return convention in addition to	*/
/* the values returned in rf_File and rf_Dir.				*
/*									*/
/************************************************************************/
struct SelectList {
	struct Node	SelectNode;
	BPTR		ParentLock;
	UBYTE		*FileName;
	};

/*
 ************************************************************************
 *	The ASL font requester data structure...			*
 *									*
 * As with the FileRequest structure, the fields documented here are	*
 * for READ ACCESS ONLY.  Any modifications must be done via tags.	*
 ************************************************************************
 */
struct FontRequester	{
	APTR	Reserved1;
	APTR	Reserved2;
	struct TextAttr fo_Attr;	/* Returned TextAttr		*/
	UBYTE	fo_FrontPen;		/* Returned pens, if selected	*/
	UBYTE	fo_BackPen;
	UBYTE	fo_DrawMode;
	};


/************************************************************************/
/* Arguments to AllocAslRequest()					*/
/* Types of requester structures which may be allocated:		*/
/************************************************************************/
#define	ASL_FileRequest	0
#define	ASL_FontRequest	1

/************************************************************************/
/* Tags for AllocAslRequest() and AslRequest()				*/
/************************************************************************/
enum {
	ASL_Dummy = TAG_USER + 0x80000,
	ASL_Hail,		/* Hailing text follows			*/
	ASL_Window,		/* Parent window for IDCMP and screen	*/
	ASL_LeftEdge,		/* Initialize LeftEdge			*/
	ASL_TopEdge,		/* Initialize TopEdge			*/
	ASL_Width,
	ASL_Height,
	ASL_HookFunc,		/* Hook function pointer		*/

/* Tags specific to file request					*/
	ASL_File,		/* Initial name of file follows		*/
	ASL_Dir,		/* Initial string for filerequest dir	*/

/* Tags specific to font request					*/
	ASL_FontName,		/* Initial font name			*/
	ASL_FontHeight,		/* Initial font height			*/
	ASL_FontStyles,		/* Initial font styles			*/
	ASL_FontFlags,		/* Initial font flags for textattr	*/
	ASL_FrontPen,		/* Initial frontpen color		*/
	ASL_BackPen,		/* Initial backpen color		*/
	ASL_MinHeight,		/* Minimum font height to display	*/
	ASL_MaxHeight,		/* Max font height to display		*/

	ASL_OKText,		/* Text displayed in OK gadget		*/
	ASL_CancelText,		/* Text displayed in CANCEL gadget	*/
	ASL_FuncFlags,		/* Function flags, depend on request	*/
	};

/* Bit defines for ASL_FuncFlags, for FONT requester			*/
#define	FONB_FrontColor	0	/* Display Front color selector?	*/
#define	FONB_BackColor	1	/* Display Back color selector?		*/
#define	FONB_Styles	2	/* Display Styles checkboxes?		*/
#define	FONB_DrawMode	3	/* Display DrawMode NWay?		*/
#define	FOB_FixedWidth	4	/* Only allow fixed-width fonts?	*/

#define	FONF_FrontColor	1
#define	FONF_BackColor	2
#define	FONF_Styles	4
#define	FONF_DrawMode	8
#define	FONF_FixedWidth	16

#endif
