#ifndef  CLIB_INTUITION_PROTOS_H
#define  CLIB_INTUITION_PROTOS_H

/*******************************************************************
 pOS / Amiga adapt
*******************************************************************/

#ifndef  INTUITION_INTUITION_H
#include <intuition/intuition.h>
#endif
#ifndef  INTUITION_CLASSES_H
#include <intuition/classes.h>
#endif
#ifndef  INTUITION_CGHOOKS_H
#include <intuition/cghooks.h>
#endif
#ifndef  INTUITION_CLASSUSR_H
#include <intuition/classusr.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif

void OpenIntuition( void );
void Intuition( struct InputEvent *iEvent );
UWORD AddGadget( struct Window *window, struct Gadget *gadget,ULONG position );
void ClearMenuStrip( struct Window *window );
BOOL CloseScreen( struct Screen *screen );
void CloseWindow( struct Window *window );
void CurrentTime( ULONG *seconds, ULONG *micros );
void DisplayBeep( struct Screen *screen );
BOOL DoubleClick(ULONG sSeconds,ULONG sMicros,ULONG cSeconds,ULONG cMicros );
void DrawBorder(struct RastPort*,struct Border*,long leftOffset,long topOffset );
void DrawImage(struct RastPort*,struct Image*, long leftOffset, long topOffset );
struct MenuItem *ItemAddress(struct Menu*,ULONG menuNumber );
BOOL ModifyIDCMP( struct Window *window, unsigned long flags );
void MoveWindow( struct Window *window, long dx, long dy );
void OffGadget(struct Gadget*,struct Window*,struct Requester*);
void OffMenu( struct Window *window, unsigned long menuNumber );
void OnGadget(struct Gadget*, struct Window*,struct Requester*);
void OnMenu( struct Window *window, unsigned long menuNumber );
struct Window *OpenWindow( struct NewWindow *newWindow );
void RefreshGadgets(struct Gadget*,struct Window*,struct Requester*);
UWORD RemoveGadget( struct Window *window, struct Gadget *gadget );
BOOL SetMenuStrip( struct Window *window, struct Menu *menu );
void SetWindowTitles( struct Window *window, UBYTE *windowTitle,UBYTE*);
void SizeWindow( struct Window *window, long dx, long dy );
struct ViewPort *ViewPortAddress( struct Window *window );
void WindowToBack( struct Window *window );
void WindowToFront( struct Window *window );
BOOL WindowLimits(struct Window*,long widthMin,long heightMin,ULONG widthMax,ULONG heightMax );
void BeginRefresh( struct Window *window );
void EndRefresh( struct Window *window, long complete );
void FreeSysRequest( struct Window *window );
void RefreshGList( struct Gadget*,struct Window*,struct Requester*,long numGad );
UWORD AddGList(struct Window*,struct Gadget*,ULONG pos,ULONG numGad, struct Requester*);
UWORD RemoveGList( struct Window *remPtr, struct Gadget *gadget,ULONG numGad );
void ActivateWindow( struct Window *window );
void RefreshWindowFrame( struct Window *window );
BOOL ActivateGadget( struct Gadget*,struct Window*,struct Requester*);
LONG QueryOverscan( unsigned long displayID, struct Rectangle*,long oScanType );
void ChangeWindowBox( struct Window*,long left,long top,long width,long height );
LONG SetMouseQueue( struct Window *window, unsigned long queueLength );
void ZipWindow( struct Window *window );
struct Screen *LockPubScreen( UBYTE *name );
void UnlockPubScreen( UBYTE *name, struct Screen *screen );
UWORD PubScreenStatus( struct Screen *screen, unsigned long statusFlags );
LONG EasyRequestArgs(struct Window*,struct EasyStruct*,ULONG *idcmpPtr,APTR args);
LONG EasyRequest(struct Window*,struct EasyStruct*,ULONG *idcmpPtr, ... );
LONG SysReqHandler( struct Window *window, ULONG *idcmpPtr, long waitInput );
struct Window *OpenWindowTagList( struct NewWindow*,struct TagItem *tagList );
struct Window *OpenWindowTags(struct NewWindow*,unsigned long tag1Type, ... );
struct Screen *OpenScreenTagList(struct NewScreen*,struct TagItem *tagList );
struct Screen *OpenScreenTags(struct NewScreen *newScreen,unsigned long tag1Type, ... );
APTR NewObjectA( struct IClass *classPtr, UBYTE *classID,struct TagItem *tagList );
APTR NewObject( struct IClass *classPtr, UBYTE *classID,ULONG tag1,... );
void DisposeObject( APTR object );
ULONG SetAttrsA( APTR object, struct TagItem *tagList );
ULONG SetAttrs( APTR object, unsigned long tag1, ... );
ULONG GetAttr( unsigned long attrID, APTR object, ULONG *storagePtr );
ULONG SetGadgetAttrsA(struct Gadget*,struct Window*,struct Requester*,struct TagItem*);
ULONG SetGadgetAttrs(struct Gadget*,struct Window*,struct Requester*,ULONG tag1, ... );
struct DrawInfo *GetScreenDrawInfo( struct Screen *screen );
void FreeScreenDrawInfo( struct Screen *screen, struct DrawInfo *drawInfo );
void ScrollWindowRaster(struct Window*,long dx,long dy,long xMin,long yMin,long xMax,long yMax);
void ReportMouse( long flag, struct Window *window );
void ReportMouse1( struct Window *window, long flag );
APTR AllocRemember( struct Remember **rememberKey,ULONG size,ULONG flags );
void FreeRemember( struct Remember **rememberKey, long reallyForget );
void MoveScreen( struct Screen *screen, long dx, long dy );
void ScreenToBack( struct Screen *screen );
void ScreenToFront( struct Screen *screen );

/*MIC*/ void PrintIText(struct RastPort *rp, struct IntuiText *intuitext, LONG dx, LONG dy);
/*MIC*/ LONG IntuiTextLength( struct IntuiText *intuitext );



#ifdef __IGNORE_NOT_SUPPORTED__

  BOOL ClearDMRequest( struct Window *window );
  void ClearPointer( struct Window *window );
  LONG CloseWorkBench( void );
  BOOL DisplayAlert( unsigned long alertNumber, UBYTE *string,ULONG height );
  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 );
  void ModifyProp(struct Gadget*,struct Window*,struct Requester*,ULONG,ULONG,ULONG,ULONG,ULONG);
  struct Screen *OpenScreen( struct NewScreen *newScreen );
  ULONG OpenWorkBench( void );
  BOOL Request( struct Requester *requester, struct Window *window );
  BOOL SetDMRequest( struct Window *window, struct Requester *requester );
  void SetPointer(struct Window*,UWORD*,long,long,long,long);
  void ShowTitle( struct Screen *screen, long showIt );
  struct View *ViewAddress( void );
  struct Preferences *SetPrefs(struct Preferences*,long,long);
  BOOL WBenchToBack( void );
  BOOL WBenchToFront( void );
  BOOL AutoRequest(struct Window*,struct IntuiText*,struct IntuiText*,struct IntuiText*,ULONG,ULONG,ULONG,ULONG);
  struct Window *BuildSysRequest(struct Window*,struct IntuiText*,struct IntuiText*,struct IntuiText*,ULONG,ULONG,ULONG);
  LONG MakeScreen( struct Screen *screen );
  LONG RemakeDisplay( void );
  LONG RethinkDisplay( void );
  ULONG LockIBase( unsigned long dontknow );
  void UnlockIBase( unsigned long ibLock );
  LONG GetScreenData(APTR,ULONG,ULONG,struct Screen*);
  void NewModifyProp(struct Gadget*,struct Window*,struct Requester*,ULONG,ULONG,ULONG,ULONG,ULONG,SLONG);
  void MoveWindowInFrontOf( struct Window*,struct Window*);
  struct Hook *SetEditHook(struct Hook*);
  struct List *LockPubScreenList( void );
  void UnlockPubScreenList( void );
  UBYTE *NextPubScreen( struct Screen *screen, UBYTE *namebuf );
  void SetDefaultPubScreen( UBYTE *name );
  UWORD SetPubScreenModes( unsigned long modes );
  struct RastPort *ObtainGIRPort( struct GadgetInfo *gInfo );
  void ReleaseGIRPort( struct RastPort *rp );
  void GadgetMouse(struct Gadget*,struct GadgetInfo*,WORD*);
  void GetDefaultPubScreen( UBYTE *nameBuffer );
  struct Window *BuildEasyRequestArgs(struct Window*,struct EasyStruct*,ULONG,APTR);
  struct Window *BuildEasyRequest(struct Window*,struct EasyStruct*,ULONG, ... );
  void DrawImageState(struct RastPort*,struct Image*,long,long,ULONG,struct DrawInfo*);
  BOOL PointInImage( unsigned long point, struct Image *image );
  void EraseImage(struct RastPort*,struct Image*,long,long);
  APTR NextObject( APTR objectPtrPtr );
  struct IClass *MakeClass(UBYTE*,UBYTE*,struct IClass*,ULONG,ULONG);
  void AddClass( struct IClass *classPtr );
  BOOL ResetMenuStrip( struct Window *window, struct Menu *menu );
  void RemoveClass( struct IClass *classPtr );
  BOOL FreeClass( struct IClass *classPtr );
  struct ScreenBuffer *AllocScreenBuffer(struct Screen*,struct BitMap*,ULONG);
  void FreeScreenBuffer( struct Screen *sc, struct ScreenBuffer *sb );
  ULONG ChangeScreenBuffer( struct Screen *sc, struct ScreenBuffer *sb );
  void ScreenDepth( struct Screen *screen, unsigned long flags, APTR reserved );
  void ScreenPosition(struct Screen*,ULONG,long,long,long,long);
  void LendMenus( struct Window *fromwindow, struct Window *towindow );
  ULONG DoGadgetMethodA(struct Gadget*,struct Window*,struct Requester*,APTR);
  ULONG DoGadgetMethod(struct Gadget*,struct Window*,struct Requester*,ULONG, ... );
  void SetWindowPointerA( struct Window *win, struct TagItem *taglist );
  void SetWindowPointer( struct Window *win, unsigned long tag1, ... );
  BOOL TimedDisplayAlert(ULONG,UBYTE*,ULONG,ULONG);
  void HelpControl( struct Window *win, unsigned long flags );

#else  /** __IGNORE_NOT_SUPPORTED__ **/


#define ClearDMRequest ClearDMRequest_NOT_SUPPORTED
  BOOL ClearDMRequest(struct NOT_SUPPORTED*, struct Window *window );
#define ClearPointer ClearPointer_NOT_SUPPORTED
  void ClearPointer(struct NOT_SUPPORTED*, struct Window *window );
#define CloseWorkBench CloseWorkBench_NOT_SUPPORTED
  LONG CloseWorkBench(struct NOT_SUPPORTED*);
#define DisplayAlert DisplayAlert_NOT_SUPPORTED
  BOOL DisplayAlert(struct NOT_SUPPORTED*, unsigned long alertNumber, UBYTE *string,ULONG height );
#define EndRequest EndRequest_NOT_SUPPORTED
  void EndRequest(struct NOT_SUPPORTED*, struct Requester *requester, struct Window *window );
#define GetDefPrefs GetDefPrefs_NOT_SUPPORTED
  struct Preferences *GetDefPrefs(struct NOT_SUPPORTED*, struct Preferences *preferences, long size );
#define GetPrefs GetPrefs_NOT_SUPPORTED
  struct Preferences *GetPrefs(struct NOT_SUPPORTED*, struct Preferences *preferences, long size );
#define InitRequester InitRequester_NOT_SUPPORTED
  void InitRequester(struct NOT_SUPPORTED*, struct Requester *requester );
#define ModifyProp ModifyProp_NOT_SUPPORTED
  void ModifyProp(struct NOT_SUPPORTED*,struct Gadget*,struct Window*,struct Requester*,ULONG,ULONG,ULONG,ULONG,ULONG);
#define OpenScreen OpenScreen_NOT_SUPPORTED
  struct Screen *OpenScreen(struct NOT_SUPPORTED*, struct NewScreen *newScreen );
#define OpenWorkBench OpenWorkBench_NOT_SUPPORTED
  ULONG OpenWorkBench(struct NOT_SUPPORTED*);
#define Request Request_NOT_SUPPORTED
  BOOL Request(struct NOT_SUPPORTED*, struct Requester *requester, struct Window *window );
#define SetDMRequest SetDMRequest_NOT_SUPPORTED
  BOOL SetDMRequest(struct NOT_SUPPORTED*, struct Window *window, struct Requester *requester );
#define SetPointer SetPointer_NOT_SUPPORTED
  void SetPointer(struct NOT_SUPPORTED*,struct Window*,UWORD*,long,long,long,long);
#define ShowTitle ShowTitle_NOT_SUPPORTED
  void ShowTitle(struct NOT_SUPPORTED*, struct Screen *screen, long showIt );
#define ViewAddress ViewAddress_NOT_SUPPORTED
  struct View *ViewAddress(struct NOT_SUPPORTED*);
#define SetPrefs SetPrefs_NOT_SUPPORTED
  struct Preferences *SetPrefs(struct NOT_SUPPORTED*,struct Preferences*,long,long);
#define WBenchToBack WBenchToBack_NOT_SUPPORTED
  BOOL WBenchToBack(struct NOT_SUPPORTED*);
#define WBenchToFront WBenchToFront_NOT_SUPPORTED
  BOOL WBenchToFront(struct NOT_SUPPORTED*);
#define AutoRequest AutoRequest_NOT_SUPPORTED
  BOOL AutoRequest(struct NOT_SUPPORTED*,struct Window*,struct IntuiText*,struct IntuiText*,struct IntuiText*,ULONG,ULONG,ULONG,ULONG);
#define BuildSysRequest BuildSysRequest_NOT_SUPPORTED
  struct Window *BuildSysRequest(struct NOT_SUPPORTED*,struct Window*,struct IntuiText*,struct IntuiText*,struct IntuiText*,ULONG,ULONG,ULONG);
#define MakeScreen MakeScreen_NOT_SUPPORTED
  LONG MakeScreen(struct NOT_SUPPORTED*, struct Screen *screen );
#define RemakeDisplay RemakeDisplay_NOT_SUPPORTED
  LONG RemakeDisplay(struct NOT_SUPPORTED*);
#define RethinkDisplay RethinkDisplay_NOT_SUPPORTED
  LONG RethinkDisplay(struct NOT_SUPPORTED*);
#define LockIBase LockIBase_NOT_SUPPORTED
  ULONG LockIBase(struct NOT_SUPPORTED*, unsigned long dontknow );
#define UnlockIBase UnlockIBase_NOT_SUPPORTED
  void UnlockIBase(struct NOT_SUPPORTED*, unsigned long ibLock );
#define GetScreenData GetScreenData_NOT_SUPPORTED
  LONG GetScreenData(struct NOT_SUPPORTED*,APTR,ULONG,ULONG,struct Screen*);
#define NewModifyProp NewModifyProp_NOT_SUPPORTED
  void NewModifyProp(struct NOT_SUPPORTED*,struct Gadget*,struct Window*,struct Requester*,ULONG,ULONG,ULONG,ULONG,ULONG,SLONG);
#define MoveWindowInFrontOf MoveWindowInFrontOf_NOT_SUPPORTED
  void MoveWindowInFrontOf(struct NOT_SUPPORTED*, struct Window*,struct Window*);
#define SetEditHook SetEditHook_NOT_SUPPORTED
  struct Hook *SetEditHook(struct NOT_SUPPORTED*,struct Hook*);
#define LockPubScreenList LockPubScreenList_NOT_SUPPORTED
  struct List *LockPubScreenList(struct NOT_SUPPORTED*);
#define UnlockPubScreenList UnlockPubScreenList_NOT_SUPPORTED
  void UnlockPubScreenList(struct NOT_SUPPORTED*);
#define NextPubScreen NextPubScreen_NOT_SUPPORTED
  UBYTE *NextPubScreen(struct NOT_SUPPORTED*, struct Screen *screen, UBYTE *namebuf );
#define SetDefaultPubScreen SetDefaultPubScreen_NOT_SUPPORTED
  void SetDefaultPubScreen(struct NOT_SUPPORTED*, UBYTE *name );
#define SetPubScreenModes SetPubScreenModes_NOT_SUPPORTED
  UWORD SetPubScreenModes(struct NOT_SUPPORTED*, unsigned long modes );
#define ObtainGIRPort ObtainGIRPort_NOT_SUPPORTED
  struct RastPort *ObtainGIRPort(struct NOT_SUPPORTED*, struct GadgetInfo *gInfo );
#define ReleaseGIRPort ReleaseGIRPort_NOT_SUPPORTED
  void ReleaseGIRPort(struct NOT_SUPPORTED*, struct RastPort *rp );
#define GadgetMouse GadgetMouse_NOT_SUPPORTED
  void GadgetMouse(struct NOT_SUPPORTED*,struct Gadget*,struct GadgetInfo*,WORD*);
#define GetDefaultPubScreen GetDefaultPubScreen_NOT_SUPPORTED
  void GetDefaultPubScreen(struct NOT_SUPPORTED*, UBYTE *nameBuffer );
#define BuildEasyRequestArgs BuildEasyRequestArgs_NOT_SUPPORTED
  struct Window *BuildEasyRequestArgs(struct NOT_SUPPORTED*,struct Window*,struct EasyStruct*,ULONG,APTR);
#define BuildEasyRequest BuildEasyRequest_NOT_SUPPORTED
  struct Window *BuildEasyRequest(struct NOT_SUPPORTED*,struct Window*,struct EasyStruct*,ULONG, ... );
#define DrawImageState DrawImageState_NOT_SUPPORTED
  void DrawImageState(struct NOT_SUPPORTED*,struct RastPort*,struct Image*,long,long,ULONG,struct DrawInfo*);
#define PointInImage PointInImage_NOT_SUPPORTED
  BOOL PointInImage(struct NOT_SUPPORTED*, unsigned long point, struct Image *image );
#define EraseImage EraseImage_NOT_SUPPORTED
  void EraseImage(struct NOT_SUPPORTED*,struct RastPort*,struct Image*,long,long);
#define NextObject NextObject_NOT_SUPPORTED
  APTR NextObject(struct NOT_SUPPORTED*, APTR objectPtrPtr );
#define MakeClass MakeClass_NOT_SUPPORTED
  struct IClass *MakeClass(struct NOT_SUPPORTED*,UBYTE*,UBYTE*,struct IClass*,ULONG,ULONG);
#define AddClass AddClass_NOT_SUPPORTED
  void AddClass(struct NOT_SUPPORTED*, struct IClass *classPtr );
#define ResetMenuStrip ResetMenuStrip_NOT_SUPPORTED
  BOOL ResetMenuStrip(struct NOT_SUPPORTED*, struct Window *window, struct Menu *menu );
#define RemoveClass RemoveClass_NOT_SUPPORTED
  void RemoveClass(struct NOT_SUPPORTED*, struct IClass *classPtr );
#define FreeClass FreeClass_NOT_SUPPORTED
  BOOL FreeClass(struct NOT_SUPPORTED*, struct IClass *classPtr );
#define AllocScreenBuffer AllocScreenBuffer_NOT_SUPPORTED
  struct ScreenBuffer *AllocScreenBuffer(struct NOT_SUPPORTED*,struct Screen*,struct BitMap*,ULONG);
#define FreeScreenBuffer FreeScreenBuffer_NOT_SUPPORTED
  void FreeScreenBuffer(struct NOT_SUPPORTED*, struct Screen *sc, struct ScreenBuffer *sb );
#define ChangeScreenBuffer ChangeScreenBuffer_NOT_SUPPORTED
  ULONG ChangeScreenBuffer(struct NOT_SUPPORTED*, struct Screen *sc, struct ScreenBuffer *sb );
#define ScreenDepth ScreenDepth_NOT_SUPPORTED
  void ScreenDepth(struct NOT_SUPPORTED*, struct Screen *screen, unsigned long flags, APTR reserved );
#define ScreenPosition ScreenPosition_NOT_SUPPORTED
  void ScreenPosition(struct NOT_SUPPORTED*,struct Screen*,ULONG,long,long,long,long);
#define LendMenus LendMenus_NOT_SUPPORTED
  void LendMenus(struct NOT_SUPPORTED*, struct Window *fromwindow, struct Window *towindow );
#define DoGadgetMethodA DoGadgetMethodA_NOT_SUPPORTED
  ULONG DoGadgetMethodA(struct NOT_SUPPORTED*,struct Gadget*,struct Window*,struct Requester*,APTR);
#define DoGadgetMethod DoGadgetMethod_NOT_SUPPORTED
  ULONG DoGadgetMethod(struct NOT_SUPPORTED*,struct Gadget*,struct Window*,struct Requester*,ULONG, ... );
#define SetWindowPointerA SetWindowPointerA_NOT_SUPPORTED
  void SetWindowPointerA(struct NOT_SUPPORTED*, struct Window *win, struct TagItem *taglist );
#define SetWindowPointer SetWindowPointer_NOT_SUPPORTED
  void SetWindowPointer(struct NOT_SUPPORTED*, struct Window *win, unsigned long tag1, ... );
#define TimedDisplayAlert TimedDisplayAlert_NOT_SUPPORTED
  BOOL TimedDisplayAlert(struct NOT_SUPPORTED*,ULONG,UBYTE*,ULONG,ULONG);
#define HelpControl HelpControl_NOT_SUPPORTED
  void HelpControl(struct NOT_SUPPORTED*, struct Window *win, unsigned long flags );

#endif /** __IGNORE_NOT_SUPPORTED__ **/









#ifdef __cplusplus
}
#endif

#endif   /* CLIB_INTUITION_PROTOS_H */
