#ifndef __INC_POS_PROTO_PINTUI_H
#define __INC_POS_PROTO_PINTUI_H
/*******************************************************************
 Includes Release 24
 (C) Copyright 1995-1997 proDAD
     All Rights Reserved

 $AUT Holger Burkarth
 $DAT >>pIntui2.h<<   29 Jan 1997    15:55:09 - (C) ProDAD
*******************************************************************/
#ifndef __INC_POS_PEXEC_LIST_H
#include <pExec/List.h>
#endif



#ifdef __cplusplus
extern "C" {
#endif

/*------ IntuBase  -------------------------------------------------------*/
struct pOS_Process* pOS_InitIntuiIOReq(_R_A0 struct pOS_IntuiStdReq*);
VOID pOS_SendInputEvent(_R_A0 const struct pOS_InputEvent*);
BOOL pOS_CmpDoubleClick(_R_A0 const struct pOS_DoubleClick* just,_R_A1 const struct pOS_DoubleClick*);
BOOL pOS_CheckDoubleClick(_R_A0 const struct pOS_IntuiMessage*);
BOOL pOS_SysIMessage(_R_A0 struct pOS_IntuiMessage*);
struct pOS_IntuiMessage* pOS_CreateIMessage(_R_A0 struct pOS_MsgPort *replyPort,_R_D0 size_t dataSize);
VOID pOS_DeleteIMessage(_R_A0 __ARID__ struct pOS_IntuiMessage*);
VOID pOS_DisplayBeep(_R_A0 struct pOS_Screen*,_R_D0 ULONG type);
VOID pOS_LockIntuiBase(_R_A0 struct pOS_IntuiUnit*);
VOID pOS_UnlockIntuiBase(_R_A0 struct pOS_IntuiUnit*);
VOID pOS_LockIntuiGadgets(_R_A0 struct pOS_Screen*);
VOID pOS_UnlockIntuiGadgets(_R_A0 struct pOS_Screen*);
VOID pOS_LockIntuiGadget(_R_A0 struct pOS_Window*);
VOID pOS_UnlockIntuiGadget(_R_A0 struct pOS_Window*);
VOID pOS_CurrentTime(_R_A0 ULONG* sec,_R_A1 ULONG* mic);



/*------ IntuScr  --------------------------------------------------------*/
__ARID__ struct pOS_Screen* pOS_OpenScreenA(_R_A0 const struct pOS_TagItem*);
BOOL pOS_CloseScreen(_R_A0 __ARID__ struct pOS_Screen*);
struct pOS_Screen* pOS_LockPubScreen(_R_A0 const CHAR*);
BOOL pOS_UnlockPubScreen(_R_A0 struct pOS_Screen*);
ULONG pOS_PubScreenStatus(_R_A0 struct pOS_Screen*,_R_D0 ULONG);
struct pOS_ColorMap* pOS_GetIColorMap(_R_A0 const struct pOS_Screen*,_R_A1 const struct pOS_Window*);
BOOL pOS_GetWindowBorder(_R_A0 struct pOS_Screen*,_R_A1 struct pOS_WBox*,_R_D0 ULONG winFlags,_R_D1 ULONG gadFlags,_R_D2 ULONG gadAct);
BOOL pOS_SetScreenPosition(_R_A0 struct pOS_Screen*,_R_D0 SLONG x,_R_D1 SLONG y);
BOOL pOS_ScreenToFront(_R_A0 struct pOS_Screen*);
BOOL pOS_ScreenToBack(_R_A0 struct pOS_Screen*);



/*------ IntuWin  --------------------------------------------------------*/
__ARID__ struct pOS_Window* pOS_OpenWindowA(_R_A0 const struct pOS_TagItem*);
BOOL pOS_CloseWindow(_R_A0 __ARID__ struct pOS_Window*);
BOOL pOS_ChangeWindowBox(_R_A0 struct pOS_Window*,_R_D0 SLONG x,_R_D1 SLONG y,_R_D2 SLONG width,_R_D3 SLONG height);
BOOL pOS_ModifyIDCMP(_R_A0 struct pOS_Window*,_R_D0 ULONG idcmp);
BOOL pOS_ModifySharedIDCMP(_R_A0 struct pOS_Window*,_R_D0 ULONG idcmp,_R_D1 ULONG mask);
BOOL pOS_WindowToFront(_R_A0 struct pOS_Window*);
BOOL pOS_WindowToBack(_R_A0 struct pOS_Window*);
BOOL pOS_BeginRefresh(_R_A0 struct pOS_Window*,_R_A1 const struct pOS_List*);
BOOL pOS_EndRefresh(_R_A0 struct pOS_Window*,_R_D0 ULONG);
VOID pOS_RefreshWindowFrame(_R_A0 struct pOS_Window*);
VOID pOS_InvalidWindowRect(_R_A0 struct pOS_Window*,_R_A1 const struct pOS_Rectangle*,_R_D0 ULONG mode);
VOID pOS_ActivateWindow(_R_A0 struct pOS_Window*);
BOOL pOS_ZipWindow(_R_A0 struct pOS_Window*);
VOID pOS_SetWindowMenu(_R_A0 struct pOS_Window*,_R_A1 struct pOS_ExList* mList,_R_A2 struct pOS_ExList* oldMenu);
VOID pOS_GetWindowIBox(_R_A0 struct pOS_Window*,_R_A1 struct pOS_IBox*,_R_A2 const struct pOS_Layer*);
BOOL pOS_CheckVisibleIBox(_R_A0 const struct pOS_Window*,_R_A1 const struct pOS_IBox*,_R_A2 const struct pOS_Layer*);
BOOL pOS_CheckVisibleIRect(_R_A0 const struct pOS_Window*,_R_A1 const struct pOS_Rectangle*,_R_A2 const struct pOS_Layer*);
BOOL pOS_SetWindowLimits(_R_A0 struct pOS_Window*,_R_D0 ULONG minWidth,_R_D1 ULONG minHeight,
                         _R_D2 ULONG maxWidth,_R_D3 ULONG maxHeight);
VOID pOS_SetWindowTitles(_R_A0 struct pOS_Window*,_R_A1 const CHAR* winTitle,_R_A2 const CHAR* scrTitle);
VOID  pOS_InactivateWindow(_R_A0 struct pOS_Window* win);
ULONG pOS_SetWindowBusy(_R_A0 struct pOS_Window* win,_R_D0 ULONG busyState);
struct pOS_Task* pOS_SetWindowTask(_R_A0 struct pOS_Window*,_R_A1 struct pOS_Task*,_R_D0 SLONG priAct,_R_D1 SLONG priDeact);
struct pOS_MenuList* pOS_SetMenuStrip(_R_A0 struct pOS_Window*,_R_A1 struct pOS_MenuList*);
ULONG pOS_SetMouseQueue(_R_A0 struct pOS_Window*,_R_D0 ULONG cnt);
ULONG pOS_SetKeyQueue(_R_A0 struct pOS_Window*,_R_D0 ULONG cnt);
ULONG pOS_SetUpdateGadQueue(_R_A0 struct pOS_Window*,_R_D0 ULONG cnt);
struct pOS_GfxMap* pOS_SetWinBgFill(_R_A0 struct pOS_Window*,_R_A1 const struct pOS_GfxMap*,_R_D0 SLONG x,_R_D1 SLONG y);
VOID pOS_AddWindowTickHandler(_R_A0 struct pOS_Window*,_R_A1 struct pOS_Callback*);
VOID pOS_RemWindowTickHandler(_R_A0 struct pOS_Window*,_R_A1 struct pOS_Callback*);
BOOL pOS_GetVisibleIRect(_R_A0 const struct pOS_Window*,_R_A1 struct pOS_Rectangle*,_R_A2 const struct pOS_Layer*);



/*------ IntuGad  --------------------------------------------------------*/
VOID  pOS_AddGadgets(_R_A0 struct pOS_Window*,_R_A1 struct pOS_List*);
VOID  pOS_RemGadgets(_R_A0 struct pOS_Window*,_R_A1 const struct pOS_Gadget*,_R_A2 struct pOS_List*,_R_D0 ULONG,_R_D1 ULONG);
VOID  pOS_AddGadget(_R_A0 struct pOS_Window*,_R_A1 struct pOS_Gadget*);
VOID  pOS_RemGadget(_R_A0 struct pOS_Window*,_R_A1 struct pOS_Gadget*);
VOID  pOS_RefreshGadgets(_R_A0 struct pOS_Window*,_R_A1 const struct pOS_Gadget*,_R_D0 ULONG anz);
VOID  pOS_RefreshLayerGadgets(_R_A0 struct pOS_Window*,_R_A1 const struct pOS_Layer*);
__ARID__ APTR pOS_NewIObjectA(_R_A0 struct pOS_NClass*,_R_A1 const CHAR*,_R_D0 ULONG ver,_R_A2 const struct pOS_TagItem*);
VOID  pOS_DisposeIObject(_R_A0 __ARID__ APTR);
ULONG pOS_SetGadgetAttrsA(_R_A0 struct pOS_Window*,_R_A1 struct pOS_Gadget*,_R_A2 const struct pOS_TagItem*);
BOOL  pOS_ActivateGadget(_R_A0 struct pOS_Window*,_R_A1 struct pOS_Gadget*);
VOID  pOS_EnableGadget(_R_A0 struct pOS_Window*,_R_A1 struct pOS_Gadget*,_R_D0 ULONG enable);
VOID  pOS_RefreshGadgetsMd(_R_A0 struct pOS_Window*,_R_A1 const struct pOS_Gadget*,_R_D0 ULONG anz,_R_D1 ULONG mode);
VOID  pOS_LayoutGadgets(_R_A0 struct pOS_Window*,_R_A1 const struct pOS_IBox*,_R_D0 ULONG flags);
BOOL  pOS_GetGadgetAttr(_R_A0 struct pOS_Window*,_R_A1 struct pOS_Gadget*,_R_D0 ULONG id,_R_A2 ULONG*);
BOOL  pOS_InactivateGadget(_R_A0 struct pOS_Window*,_R_A1 struct pOS_Gadget*);
BOOL  pOS_IsGadgetActive(_R_A0 struct pOS_Window*,_R_A1 const struct pOS_Gadget*);


/*------ IObj  --------------------------------------------------------*/
VOID pOS_DrawIObj(_R_D0 SLONG x,_R_D1 SLONG y,
                  _R_A0 const struct pOS_IntuiObj*,_R_A1 struct pOS_RastPort*,
                  _R_A2 const struct pOS_DrawInfo*,_R_D2 ULONG mode,_R_A3 const struct pOS_Rectangle* clip);
VOID pOS_IObjDisposeList(_R_A0 struct pOS_IntuiObj*);
VOID pOS_IObjGetBoxList(_R_A0 const struct pOS_IntuiObj*,
                  _R_A1 struct pOS_IObjectMethod*,_R_A2 struct pOS_Rectangle*);
VOID pOS_IObjDrawList(_R_A0 const struct pOS_IntuiObj*,_R_A1 struct pOS_IObjectMethod*,
                      _R_A2 const struct pOS_Rectangle* lay,_R_D0 ULONG mode,_R_D1 ULONG layout,
                      _R_D2 ULONG nT,_R_D3 ULONG oT,_R_A3 const struct pOS_Rectangle* clip);




/*------ Menu  --------------------------------------------------------*/
ULONG pOS_PreLayoutMenu(_R_A0 struct pOS_MenuList*,_R_A1 const struct pOS_DrawInfo*);
BOOL  pOS_LayoutMenu(_R_A0 struct pOS_ExList*,_R_A1 const struct pOS_DrawInfo*,_R_D0 SLONG,_R_D1 SLONG);
__ARID__
struct pOS_MenuList* pOS_CreateMenuTagA(_R_A0 const struct pOS_DrawInfo*,_R_A1 const struct pOS_MenuTag*,_R_A2 ULONG*);
VOID  pOS_DeleteMenu(__ARID__ _R_A0 struct pOS_MenuList*);
ULONG pOS_SetMenuHighLight(_R_A0 struct pOS_MenuDraw*,_R_A1 struct pOS_MenuItem*);
ULONG pOS_MenuHandleIEvent(_R_A0 struct pOS_MenuDraw*,_R_A1 const struct pOS_InputEvent*);
BOOL  pOS_OpenHandleMenuIEvent(_R_A0 struct pOS_MenuDraw*);
VOID  pOS_CloseHandleMenuIEvent(_R_A0 struct pOS_MenuDraw*);
struct pOS_MenuItem* pOS_GetMenuItemFromNum(_R_A0 const struct pOS_ExList*,_R_A1 const struct pOS_MenuNum*);
VOID  pOS_GetMenuNumFromItem(_R_A0 const struct pOS_MenuItem*,_R_A1 struct pOS_MenuNum*);
BOOL  pOS_SetWindowMenuChecker(_R_A0 const struct pOS_Window*,_R_A1 const struct pOS_MenuNum* menuNum,_R_D0 BOOL set);
SLONG pOS_GetWindowMenuChecker(_R_A0 const struct pOS_Window*,_R_A1 const struct pOS_MenuNum* menuNum);
BOOL  pOS_EnableWindowMenu(_R_A0 const struct pOS_Window*,_R_A1 const struct pOS_MenuNum* menuNum,_R_D0 BOOL enable);
struct pOS_MenuItem* pOS_GetMenuVKey(_R_A0 const struct pOS_MenuList*,_R_D0 ULONG key);
BOOL pOS_HandleMenuItemEvent(_R_A0 struct pOS_MenuList*,_R_A1 struct pOS_MenuItem*);


/*------ Help  --------------------------------------------------------*/
__ARID__ struct pOS_BubbleHelp *pOS_CreateBubbleHelpA(_R_A0 const struct pOS_TagItem*);
VOID pOS_DeleteBubbleHelp(_R_A0 __ARID__ struct pOS_BubbleHelp*);


/*------ Easy  --------------------------------------------------------*/
struct pOS_Window* pOS_CreateRequestWinA(_R_A0 const struct pOS_TagItem*);
VOID pOS_DeleteRequestWin(_R_A0 struct pOS_Window*);
SLONG pOS_EasyRequestArgs(_R_A0 struct pOS_Window*,_R_A1 const struct pOS_EasyStruct*,_R_A2 ULONG* idcmp,_R_A3 const ULONG* argv);
SLONG pOS_RequestWinHandler(_R_A0 struct pOS_Window*,_R_A1 ULONG* idcmp,_R_D0 BOOL wait);




/*------ Drag  --------------------------------------------------------*/
VOID pOS_AddDrag(_R_A0 struct pOS_IntuiUnit*,_R_A1 struct pOS_Drag*);
VOID pOS_RemDrag(_R_A0 struct pOS_IntuiUnit*,_R_A1 struct pOS_Drag*);
__ARID__ struct pOS_Drag* pOS_CreateDragA(_R_A0 const struct pOS_TagItem*);
VOID pOS_DeleteDrag(_R_A0 __ARID__ struct pOS_Drag*);
BOOL pOS_CreateDragGfx(_R_A0 struct pOS_RastPort*,_R_A1 struct pOS_Drag*);
VOID pOS_DeleteDragGfx(_R_A0 struct pOS_Drag*);
VOID pOS_ConstructDragList(_R_A0 struct pOS_DragList*);
VOID pOS_DestructDragList(_R_A0 struct pOS_DragList*);
BOOL pOS_LayoutDragList(_R_A0 struct pOS_DragList*,_R_A1 struct pOS_RastPort*);
BOOL pOS_CreateDragListGfx(_R_A0 struct pOS_DragList*,_R_A1 struct pOS_RastPort*);
VOID pOS_DeleteDragListGfx(_R_A0 struct pOS_DragList*);
VOID pOS_RenderDragList(_R_A0 struct pOS_DragList*,_R_D0 ULONG drMode);
VOID pOS_MoveDragList(_R_A0 struct pOS_DragList*,_R_D0 SLONG dx,_R_D1 SLONG dy,_R_D2 ULONG rdMode);
VOID pOS_RestoreDragList(_R_A0 struct pOS_DragList*);
VOID pOS_SaveDragList(_R_A0 struct pOS_DragList*);
const struct pOS_DropAttribute* pOS_GetDropAttFromDragList(_R_A0 struct pOS_DragList*,
                    _R_A1 const struct pOS_GadgetDrop*,_R_A2 const struct pOS_DropAttribute*);





__ARID__ struct pOS_Screen* pOS_OpenScreen(ULONG tag,...);
__ARID__ struct pOS_Window* pOS_OpenWindow(ULONG tag,...);
__ARID__ APTR pOS_NewIObject(_R_A0 struct pOS_NClass*,_R_A1 const CHAR*,_R_D0 ULONG ver,ULONG tag,...);
ULONG pOS_SetGadgetAttrs(_R_A0 struct pOS_Window*,_R_A1 struct pOS_Gadget*,ULONG tag,...);
struct pOS_BubbleHelp *pOS_CreateBubbleHelp(ULONG tag,...);
struct pOS_Window* pOS_CreateRequestWin(ULONG tag,...);
__ARID__ struct pOS_Drag* pOS_CreateDrag(ULONG tag,...);


#ifdef __cplusplus
}
#endif

#endif
