	IFND BAREED_DAC_I
	BAREED_DAC_I	SET	1
*
**	BAREED_DAC
**
**	(C) Copyright 2001 J.v.d.Loo
**
**	Any declared pointer (below) is only readable because it points to a BareED intern variable!
**	Never change it!!!
**
**	Any DAC-application can be compiled for a 68020 CPU since BareED itself presupposes it!	
**
**	Note that function parameters must be passed onto stack! - and the values returned by
**	a CallBack-Hook are passed on the stack, too.
**
**	The result of a function, however, is returned in register D0.
**
*

	IFND	EXEC_LIBARIES_I
	INCLUDE <exec/libraries.i>
	ENDC

	IFND	GRAPHICS_GFXBASE_I
	INCLUDE <graphics/gfxbase.i>
	ENDC

	IFND	INTUITION_INTUITIONBASE_I
	INCLUDE <intuition/intuitionbase.i>
	ENDC

	IFND	INTUITION_SCREENS_I
	INCLUDE <intuition/intuitionbase.i>
	ENDC

	IFND	WORKBENCH_STARTUP_I
	INCLUDE <workbench/startup.i>
	ENDC


	; Returned by "pm_CreateProgressBar()" - see below.
	; Don't assume anything about the ProgressBar more than here stated -
	; in real it has got much more items!
	;
	STRCUTURE ProgressBar,0
	; The only item visible so far...
	APTR	pb_Window
	LABEL	PB_SIZEOF		; Not really the end...




	STRUCTURE PseudoMsg,0
	; Normal start-up-message, with one argument (path & filename)
	; LN_NAME points to "BAREED"
	; LN_PRI set to zero (= version of this structure - 0 means beta)
	;
	STRUCT	pm_Startup,sm_SIZEOF


	; Following is private, do not read or modify!
	;
	BPTR	pm_Lock
	APTR	pm_Name
	STRUCT	pm_FileName,108
	STRUCT	pm_Dir,256


	; Library bases (assume at least all are v36, except: Asl v38, Icon & Diskfont v33, Locale v1)
	;
	APTR	pm_GfxBase
	APTR	pm_IntuitionBase
	APTR	pm_GadToolsBase
	APTR	pm_DiskfontBase
	APTR	pm_AslBase
	APTR	pm_IconBase
	APTR	pm_LocaleBase
	APTR	pm_WorkbenchBase

	; If you have to do own rendering using GadTools, these two may help you.
	; But beware of releasing them - BareED is the owner!
	;
	APTR	VisualInfo;		; Never release it!
	APTR	DrawInfo;		; Never release it!


	; Storage (buffer) start and size
	;
	APTR	pm_RegionStart
	ULONG	pm_RegionSize


	; Archive start and end
	;
	APTR	pm_TextStart
	APTR	pm_TextEnd


	; Application was started with this marked block
	;
	APTR	pm_BlockStart
	APTR	pm_BlockEnd


	; Editor is using this attribute for the used font
	;
	APTR	pm_FontAttr


	; By editor used font
	;
	APTR	pm_Font


	; The editor's surrounding
	;
	APTR	pm_EdWindow


	; How wide is a tab character in pixels
	;
	ULONG	pm_TabWidth


	; A tab stop occurs every 'n' characters (almost!)
	;
	ULONG	pm_TabStops;


	; Rightmost offset set to 'n' characters (may zero!!!)
	;
	ULONG	pm_RightMargin;


	; Pointer to 256 bytes - same order like LATIN-1 char-set - where each byte holds
	; the width of the concerned character, e. g. at offset 32 the width of the SPACE-
	; character can be found
	;
	APTR	pm_CharSpace		; Pointer to the character-spaces of the used font


	; Currently, following two function pointers are out of order (they are empty!!!)
	; To check if the current BareED version support those two, check them against zero!
	;
	APTR	pm_GetAttr
	APTR	pm_ChangeAttr


	; Two functions to permit/allow modifications through user-interface --- NOTE:
	; Since BareED protects the archive against modification (user/Arexx) there is no need to
	; call these functions - furthermore - even if you call AllowInput() it will not turn off
	; the protection - it only allows the user to scroll around in the text-file (for example)
	; which is anyway the defaulted mode!
	; void	(*pm_BlockInput)( void);
	; void	(*pm_AllowInput)( void);
	;
	APTR	pm_BlockInput
	APTR	pm_AllowInput


	; Display a simple text-requester whithout inhibiting the user from changing BareED's
	; interface. You could call BlockInput() first...
	; void	(*pm_Tell)( STRPTR str);
	;
	APTR	pm_Tell


	; Display a simple text-requester without inhibiting the user from changing BareED's
	; interface. The user can react on the requester with "YES" or "NO".
	; unsigned int	(*pm_CaseTell)( STRPTR str);
	;
	APTR	pm_CaseTell


	; Display a simple number-requester with inhibiting the user from changing BareED's
	; interface!
	;	initial	 = intial number for the string-gadget that may be changed by the user later on
	;	winname  = title of the requester
	;	hailtext = the text displayed as body
	;	gadtext  = there is only one bool-gadget in this requester, this is the string for it
	;	zero	 = must be set to zero!
	;   Returns NULL if user abandoned or the entered number
	; unsigned int	(*pm_RequestNumber)( unsigned int initial, STRPTR winname, STRPTR hailtext, STRPTR gadtext, BOOL zero);
	;
	APTR	pm_RequestNumber


	; Four functions - please refere to the DAC-guide for function-reference
	; unsigned int	(*pm_StrPixelLen)( unsigned char *start, unsigned char *end);
	; void		(*pm_DumpStrLine)( unsigned char *start, unsigned char *end, struct RastPort *rp, unsigned int x, unsigned int y);
	; unsigned int	(*pm_WidestStrLen)( unsigned char *text, unsigned char *stop, unsigned int (*inform_code)( unsigned int len, unsigned int line), unsigned int inform);
	; void		(*pm_DumpStrings)( struct RastPort *rp, unsigned int (*dump_code)( unsigned int len, unsigned int line), unsigned char *text, unsigned char *stop);
	;
	APTR	pm_StrPixelLen
	APTR	pm_DumpStrline
	APTR	pm_WidestStrLen
	APTR	pm_DumpStrings


	; Functions attached to the progress-bar - refere to DAC-guide...
	; void			(*pm_FreeProgressBar)( struct ProgressBar *pb);
	; struct ProgressBar *	(*pm_CreateProgressBar)( STRPTR wintitle, STRPTR hail, STRPTR stop, STRPTR cont, STRPTR cancel);
	; unsigned int		(*pm_PullPBarEvent)( struct ProgressBar *pb);
	; void			(*pm_ChangePBarIndicator)( struct ProgressBar *pb, unsigned int percent, STRPTR hail);
	;
	APTR	pm_FreeProgressBar
	APTR	pm_CreateProgressBar
	APTR	pm_PullPBarEvent
	APTR	pm_ChangePBarIndicator

	; <<< Following does not work properly yet - so don't use! >>>
	;
	; void	(*pm_TogglePBarGad)( struct ProgressBar *pb);
	;
	APTR	pm_TogglePBarGad

	LABEL	PSMSG_SIZEOF

	ENDC	; BAREED_DAC_I
