#ifndef  CLIB_GADTOOLS_PROTOS_H
#define  CLIB_GADTOOLS_PROTOS_H

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

#ifndef  EXEC_TYPES_H
#include <exec/types.h>
#endif
#ifndef  INTUITION_INTUITION_H
#include <intuition/intuition.h>
#endif
#ifndef  UTILITY_TAGITEM_H
#include <utility/tagitem.h>
#endif
#ifndef  LIBRARIES_GADTOOLS_H
#include <libraries/gadtools.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif

struct Gadget *CreateGadgetA( unsigned long kind, struct Gadget *gad,
        struct NewGadget *ng, struct TagItem *taglist );
struct Gadget *CreateGadget( unsigned long kind, struct Gadget *gad,
        struct NewGadget *ng, Tag tag1, ... );
void FreeGadgets( struct Gadget *gad );
void GT_SetGadgetAttrsA( struct Gadget *gad, struct Window *win,
        struct Requester *req, struct TagItem *taglist );
void GT_SetGadgetAttrs( struct Gadget *gad, struct Window *win,
        struct Requester *req, Tag tag1, ... );

struct Menu *CreateMenusA(struct NewMenu *newmenu,APTR vi,struct TagItem *taglist );
struct Menu *CreateMenus(struct NewMenu *newmenu,APTR vi,Tag tag1, ... );
void FreeMenus( struct Menu *menu );
BOOL LayoutMenusA( struct Menu *firstmenu, APTR vi, struct TagItem *taglist );
BOOL LayoutMenus( struct Menu *firstmenu, APTR vi, Tag tag1, ... );

struct IntuiMessage *GT_GetIMsg( struct MsgPort *iport );
void GT_ReplyIMsg( struct IntuiMessage *imsg );
void GT_RefreshWindow( struct Window *win, struct Requester *req );
void GT_BeginRefresh( struct Window *win );
void GT_EndRefresh( struct Window *win, long complete );
struct Gadget *CreateContext( struct Gadget **glistptr );

void DrawBevelBoxA( struct RastPort *rport, long left, long top, long width,
        long height, struct TagItem *taglist );
void DrawBevelBox( struct RastPort *rport, long left, long top, long width,
        long height, Tag tag1, ... );

APTR GetVisualInfoA( struct Screen *screen, struct TagItem *taglist );
APTR GetVisualInfo( struct Screen *screen, Tag tag1, ... );
void FreeVisualInfo( APTR vi );

LONG GT_GetGadgetAttrsA( struct Gadget *gad, struct Window *win,
        struct Requester *req, struct TagItem *taglist );
LONG GT_GetGadgetAttrs( struct Gadget *gad, struct Window *win,
        struct Requester *req, Tag tag1, ... );



#ifdef __IGNORE_NOT_SUPPORTED__

  BOOL LayoutMenuItemsA( struct MenuItem *firstitem, APTR vi,struct TagItem *taglist );
  BOOL LayoutMenuItems( struct MenuItem *firstitem, APTR vi, Tag tag1, ... );
  struct IntuiMessage *GT_FilterIMsg( struct IntuiMessage *imsg );
  struct IntuiMessage *GT_PostFilterIMsg( struct IntuiMessage *imsg );

#else  /** __IGNORE_NOT_SUPPORTED__ **/

#define LayoutMenuItemsA LayoutMenuItemsA_NOT_COMPATIBLE
  BOOL LayoutMenuItemsA(struct NOT_SUPPORTED*, struct MenuItem *firstitem, APTR vi,struct TagItem *taglist );
#define LayoutMenuItems LayoutMenuItems_NOT_COMPATIBLE
  BOOL LayoutMenuItems(struct NOT_SUPPORTED*, struct MenuItem *firstitem, APTR vi, Tag tag1, ... );
#define GT_FilterIMsg GT_FilterIMsg_NOT_COMPATIBLE
  struct IntuiMessage *GT_FilterIMsg(struct NOT_SUPPORTED*, struct IntuiMessage *imsg );
#define GT_PostFilterIMsg GT_PostFilterIMsg_NOT_COMPATIBLE
  struct IntuiMessage *GT_PostFilterIMsg(struct NOT_SUPPORTED*, struct IntuiMessage *imsg );

#endif /** __IGNORE_NOT_SUPPORTED__ **/




#ifdef __cplusplus
}
#endif

#endif   /* CLIB_GADTOOLS_PROTOS_H */
