#ifndef  CLIB_INTUITION_PROTO_H
#define  CLIB_INTUITION_PROTO_H
/* "intuition.library" */
#ifndef  INTUITION_INTUITION_H
#include <intuition/intuition.h>
#endif
void OpenIntuition( void );
void Intuition( struct InputEvent *iEvent );
LONG AddGadget( struct Window *window, struct Gadget *gadget, LONG position );
LONG ClearDMRequest( struct Window *window );
void ClearMenuStrip( struct Window *window );
void ClearPointer( struct Window *window );
void CloseScreen( struct Screen *screen );
void CloseWindow( struct Window *window );
LONG CloseWorkBench( void );
void CurrentTime( LONG *seconds, LONG *micros );
LONG DisplayAlert( ULONG *alertNumber, UBYTE *string, LONG height );
void DisplayBeep( struct Screen *screen );
LONG DoubleClick( LONG sSeconds, LONG sMicros, LONG cSeconds, LONG cMicros );
void DrawBorder( struct RastPort *rp, struct Border *border, LONG leftOffset,
	LONG topOffset );
void DrawImage( struct RastPort *rp, struct Image *image, LONG leftOffset,
	LONG topOffset );
void EndRequest( struct Requester *requester, struct Window *window );
struct Preferences *GetDefPrefs( struct Preferences *preferences, LONG size );
struct Preferences *GetPrefs( struct Preferences *preferences, LONG size );
void InitRequester( struct Requester *requester );
struct MenuItem *ItemAddress( struct Menu *menuStrip, LONG menuNumber );
void ModifyIDCMP( struct Window *window, LONG flags );
void ModifyProp( struct Gadget *gadget, struct Window *window,
	struct Requester *requester, UWORD flags, UWORD horizPot,
	UWORD vertPot, UWORD horizBody, UWORD vertBody );
void MoveScreen( struct Screen *screen, LONG dx, LONG dy );
void MoveWindow( struct Window *window, LONG dx, LONG dy );
void OffGadget( struct Gadget *gadget, struct Window *window,
	struct Requester *requester );
void OffMenu( struct Window *window, LONG menuNumber );
void OnGadget( struct Gadget *gadget, struct Window *window,
	struct Requester *requester );
void OnMenu( struct Window *window, LONG menuNumber );
struct Screen *OpenScreen( struct NewScreen *newScreen );
struct Window *OpenWindow( struct NewWindow *newWindow );
LONG OpenWorkBench( void );
void PrintIText( struct RastPort *rp, struct IntuiText *iText, LONG left,
	LONG top );
void RefreshGadgets( struct Gadget *gadgets, struct Window *window,
	struct Requester *requester );
LONG RemoveGadget( struct Window *window, struct Gadget *gadget );
/* The official calling sequence for ReportMouse is given below. */
/* Note the register order.  For the complete story, read the ReportMouse */
/* autodoc.  !!! problems: official conflicts w/ lattice prototype !!! */
void ReportMouse1( struct Window *window, BOOL flag );
void ReportMouse2( BOOL flag, struct Window *window );
LONG Request( struct Requester *requester, struct Window *window );
void ScreenToBack( struct Screen *screen );
void ScreenToFront( struct Screen *screen );
LONG SetDMRequest( struct Window *window, struct Requester *requester );
BOOL SetMenuStrip( struct Window *window, struct Menu *menu );
void SetPointer( struct Window *window, UWORD *pointer, LONG height,
	LONG width, LONG xOffset, LONG yOffset );
void SetWindowTitles( struct Window *window, UBYTE *windowTitle,
	UBYTE *screenTitle );
void ShowTitle( struct Screen *screen, BOOL showIt );
void SizeWindow( struct Window *window, LONG dx, LONG dy );
struct View *ViewAddress( void );
struct ViewPort *ViewPortAddress( struct Window *window );
void WindowToBack( struct Window *window );
void WindowToFront( struct Window *window );
LONG WindowLimits( struct Window *window, LONG widthMin, LONG heightMin,
	LONG widthMax, LONG heightMax );
/*--- start of next generation of names -------------------------------------*/
void SetPrefs( struct Preferences *preferences, LONG size, LONG flag );
/*--- start of next next generation of names --------------------------------*/
LONG IntuiTextLength( struct IntuiText *iText );
LONG WBenchToBack( void );
LONG WBenchToFront( void );
/*--- start of next next next generation of names ---------------------------*/
LONG AutoRequest( struct Window *window, struct IntuiText *body,
	struct IntuiText *posText, struct IntuiText *negText, ULONG pFlag,
	ULONG nFlag, LONG width, LONG height );
void BeginRefresh( struct Window *window );
struct Window *BuildSysRequest( struct Window *window, struct IntuiText *body,
	struct IntuiText *posText, struct IntuiText *negText, ULONG flags,
	LONG width, LONG height );
void EndRefresh( struct Window *window, LONG complete );
void FreeSysRequest( struct Window *window );
void MakeScreen( struct Screen *screen );
void RemakeDisplay( void );
void RethinkDisplay( void );
/*--- start of next next next next generation of names ----------------------*/
APTR AllocRemember( struct Remember **rememberKey, LONG size, LONG flags );
void AlohaWorkbench( LONG wbport );
void FreeRemember( struct Remember **rememberKey, BOOL reallyForget );
/*--- start of 15 Nov 85 names ------------------------*/
LONG LockIBase( LONG dontknow );
void UnlockIBase( LONG ibLock );
/*--- functions in V33 or higher (distributed as Release 1.2) ---*/
LONG GetScreenData( UBYTE *buffer, LONG size, LONG type,
	struct Screen *screen );
void RefreshGList( struct Gadget *gadgets, struct Window *window,
	struct Requester *requester, LONG numGad );
LONG AddGList( struct Window *addPtr, struct Gadget *gadget, LONG position,
	LONG numGad, struct Requester *requester );
LONG RemoveGList( struct Window *remPtr, struct Gadget *gadget, LONG numGad );
void ActivateWindow( struct Window *window );
void RefreshWindowFrame( struct Window *window );
LONG ActivateGadget( struct Gadget *gadgets, struct Window *window,
	struct Requester *requester );
void NewModifyProp( struct Gadget *gadget, struct Window *window,
	struct Requester *requester, LONG flags, LONG horizPos, LONG vertPos,
	LONG horizBody, LONG vertBody, LONG numGad );
/*--- functions in V36 or higher (distributed as Release 2.0 Beta) ---*/
void QueryOverscan( ULONG displayID, struct Rectangle *rect, WORD oScanType );
void MoveWindowInFrontOf( struct Window *window,
	struct Window *behindWindow );
void ChangeWindowBox( struct Window *window, WORD left, WORD top, WORD width,
	WORD height );
void SetEditHook( struct Hook *hook );
void SetMouseQueue( struct Window *window, UWORD queueLength );
void ZipWindow( struct Window *window );
/*--- public screens ---*/
struct Screen *LockPubScreen( UBYTE *name );
void UnlockPubScreen( UBYTE *name, struct Screen *screen );
struct List *LockPubScreenList( void );
void UnlockPubScreenList( void );
void NextPubScreen( struct Screen *screen, UBYTE *namebuf );
void SetDefaultPubScreen( UBYTE *name );
UWORD SetPubScreenModes( UWORD modes );
void PubScreenStatus( struct Screen *screen, UWORD statusFlags );
/**/
void ObtainGIRPort( struct GadgetInfo *gInfo );
void ReleaseGIRPort( struct RastPort *rp );
void GadgetMouse( struct Gadget *gadget, struct GadgetInfo *gInfo,
	WORD *mousePoint );
/* SetIPrefs is system private and not to be used by applications */
void SetIPrefs( APTR ptr, LONG size, LONG type );
void GetDefaultPubScreen( UBYTE *nameBuffer );
void EasyRequestArgs( struct Window *window, struct EasyStruct *easyStruct,
	ULONG *idcmpPtr, APTR args );
void EasyRequest( struct Window *window, struct EasyStruct *easyStruct,
	ULONG *idcmpPtr, APTR arg1, ... );
void BuildEasyRequestArgs( struct Window *window,
	struct EasyStruct *easyStruct, ULONG idcmp, APTR args );
void BuildEasyRequest( struct Window *window, struct EasyStruct *easyStruct,
	ULONG idcmp, APTR arg1, ... );
void SysReqHandler( struct Window *window, ULONG *idcmpPtr, BOOL waitInput );
struct Window *OpenWindowTagList( struct NewWindow *newWindow,
	struct TagItem *tagList );
struct Window *OpenWindowTags( struct NewWindow *newWindow, ULONG tag1Type,
	... );
struct Screen *OpenScreenTagList( struct NewScreen *newScreen,
	struct TagItem *tagList );
struct Screen *OpenScreenTags( struct NewScreen *newScreen, ULONG tag1Type,
	... );
/**/
/* changes happening from here down: jimm 11,22,89 */
/*	new Image functions */
void DrawImageState( struct RastPort *rp, struct Image *image,
	UWORD leftOffset, UWORD topOffset, ULONG state,
	struct DrawInfo *drawInfo );
BOOL PointInImage( ULONG point, struct Image *image );
ULONG EraseImage( struct RastPort *rp, struct Image *image, UWORD leftOffset,
	UWORD topOffset );
/**/
APTR NewObjectA( ULONG class, ULONG classID, struct TagItem *tagList );
void DisposeObject( APTR object );
void SetAttrsA( APTR object, struct TagItem *tagList );
void GetAttr( ULONG attrID, APTR object, APTR storagePtr );
/* 	special set attribute call for gadgets */
void SetGadgetAttrsA( struct Gadget *gadget, struct Window *window,
	struct Requester *requester, struct TagItem *tagList );
/**/
/*	for class implementors only */
void NextObject( APTR objectPtrPtr );
void FindClass( LONG classID );
void MakeClass( LONG classID, APTR superClassPtr, LONG instanceSize );
void AddClass( LONG class );
/**/
/* Back to our normal, documented entry points, */
/**/
struct DrawInfo *GetScreenDrawInfo( struct Screen *screen );
void FreeScreenDrawInfo( struct Screen *screen, struct DrawInfo *drawInfo );
/**/
BOOL ResetMenuStrip( struct Window *window, struct Menu *menu );
#endif   /* CLIB_INTUITION_PROTO_H */
