/* GadTools layout toolkit
**
** Copyright © 1993-1995 by Olaf `Olsen' Barthel
** Freely distributable.
*/

#ifndef _GTLAYOUT_LIBPROTOS_H
#define _GTLAYOUT_LIBPROTOS_H 1

ULONG __regargs			LTP_Atol(STRPTR String);
VOID __asm __saveds		LTP_BackfillRoutine(register __a0 struct Hook *Hook,register __a1 struct LayerMsg *Bounds,register __a2 struct RastPort *RPort);
BOOLEAN __regargs		LTP_ConvertNum(BOOLEAN negAllowed,STRPTR buffer,LONG *value);
VOID __regargs			LTP_AddHistory(struct SGWork *Work);
VOID __regargs			LTP_HandleHistory(struct SGWork *Work);
ULONG __asm __saveds		LTP_FracEditRoutine(register __a0 struct Hook *Hook,register __a2 struct SGWork *Work,register __a1 ULONG *Msg);
ULONG __asm __saveds		LTP_DefaultEditRoutine(register __a0 struct Hook *Hook,register __a2 struct SGWork *Work,register __a1 ULONG *Msg);
ULONG __asm __saveds		LTP_HexEditRoutine(register __a0 struct Hook *hook,register __a2 struct SGWork *sgw,register __a1 ULONG *msg);
ULONG __asm __saveds		LTP_PasswordEditRoutine(register __a0 struct Hook *Hook,register __a2 struct SGWork *Work,register __a1 ULONG *Msg);
VOID __regargs			LTP_SetPens(struct RastPort *rp, UWORD apen, UWORD bpen,UBYTE mode);
VOID __regargs			LTP_SetAPen(struct RastPort *rp,UWORD apen);
VOID __regargs			LTP_SetFont(struct LayoutHandle *handle,struct TextFont *font);
VOID __regargs			LTP_DrawBevelBox(struct LayoutHandle *handle,struct ObjectNode *node);
VOID __regargs			LTP_PlaceText(struct LayoutHandle *handle,STRPTR text,ULONG textLen,LONG x,LONG y);
VOID __regargs			LTP_GetDisplayClip(struct Screen *screen,WORD *left,WORD *top,WORD *width,WORD *height);
VOID __regargs			LTP_MoveToWindow(struct LayoutHandle *handle);
VOID __regargs			LTP_GetStorage(struct ObjectNode *Node);
VOID __regargs			LTP_PutStorage(struct ObjectNode *Node);
VOID __stdargs			sprintf(STRPTR buffer, STRPTR formatString,...);
VOID __regargs			LTP_BlinkButton(struct LayoutHandle *handle,struct Gadget *gadget);
VOID __regargs			LTP_DrawGauge(struct LayoutHandle *handle,struct ObjectNode *node,LONG percent,BOOLEAN fullRefresh);
VOID __regargs			LTP_PrintLine(struct LayoutHandle *handle,UBYTE alignType,LONG left,LONG top,LONG space,STRPTR line,LONG len);
VOID __regargs			LTP_PrintLinePadded(struct LayoutHandle *Handle,LONG Left,LONG Top,LONG Space,STRPTR Line,LONG Len);
VOID __regargs			LTP_PrintBoxLine(struct LayoutHandle *handle,struct ObjectNode *node,LONG index);
VOID __regargs			LTP_ResetGroups(struct ObjectNode *group);
VOID __regargs			LTP_Rescale(struct LayoutHandle *handle,BOOLEAN trimWidth,BOOLEAN trimHeight);
VOID __regargs			LTP_DrawIncrementer(struct RastPort *rp,BOOLEAN leftDirection,LONG left,LONG top,LONG width,LONG height);
VOID __regargs			LTP_DrawBackFore(struct RastPort *RPort,BOOLEAN Back,LONG Left,LONG Top,LONG Width,LONG Height);
VOID __regargs			LTP_DrawPrevNext(struct RastPort *RPort,BOOLEAN Prev,LONG Left,LONG Top,LONG Width,LONG Height);
VOID __regargs			LTP_DrawPicker(struct RastPort *RPort,BOOLEAN UpDirection,LONG Left,LONG Top,LONG Width,LONG Height);
VOID __regargs			LTP_RenderCircle(struct RastPort *RPort,LONG Left,LONG Top,LONG Radius,LONG AspectX,LONG AspectY);
VOID __regargs			LTP_PrintLabel(LayoutHandle *handle,ObjectNode *node,UWORD left,UWORD top);
VOID __regargs			LTP_RenderArrow(struct RastPort *RPort,BOOLEAN LeftDirection,LONG Left,LONG Top,LONG Width,LONG Height);
VOID __regargs			LTP_DrawTapeButton(struct RastPort *RPort,ImageInfo *imageInfo,LONG Left,LONG Top,LONG Width,LONG Height,LONG AspectX,LONG AspectY,LONG Background);
VOID __regargs			LTP_DrawBox(struct RastPort *rp,struct DrawInfo *drawInfo,LONG left,LONG top,LONG width,LONG height,BOOLEAN selected,BOOLEAN ghosted,ImageInfo *imageInfo);
ULONG __regargs			LTP_ImageClassDraw(struct Image *image,struct impDraw *drawMsg,ImageInfo *imageInfo);
ULONG __regargs			LTP_ImageClassErase(struct Image *image,struct impErase *eraseMsg);
ULONG __regargs			LTP_ImageClassNew(struct IClass *class,Object *object,struct opSet *SetMethod);
ULONG __regargs			LTP_ImageClassGet(Class *class,Object *object,struct opGet *GetMsg);
ULONG __saveds __asm		LTP_ImageDispatch(register __a0 struct IClass *class,register __a2 Object *object,register __a1 Msg msg);
VOID __regargs			LTP_TunnelDraw(struct RastPort *rp,LONG from,LONG to,LONG y,LONG left,LONG right);
VOID __regargs			LTP_DrawGroove(struct LayoutHandle *handle,LONG left,LONG top,LONG width,LONG height,LONG from,LONG to);
VOID __regargs			LTP_DrawLabel(struct LayoutHandle *handle,struct ObjectNode *label);
APTR __regargs			LTP_Alloc(struct LayoutHandle *handle,ULONG amount);
VOID __regargs			LTP_Free(struct LayoutHandle *handle,APTR mem,ULONG memsize);
VOID __regargs			LTP_LevelGadgetDrawLabel(struct Gadget *Gadget,BOOL FullRefresh);
ULONG __regargs			LTP_LevelGadgetRender(struct Gadget *Gadget,struct gpRender *RenderMsg);
ULONG __regargs			LTP_LevelGadgetGoActive(struct Gadget *Gadget,struct gpInput *InputMsg);
ULONG __regargs			LTP_LevelGadgetHandleInput(struct Gadget *Gadget,struct gpInput *InputMsg);
ULONG __saveds __asm		LTP_LevelGadgetDispatcher(register __a0 struct Hook *Hook,register __a2 struct Gadget *Gadget,register __a1 Msg msg);
VOID __regargs			LTP_DetermineSize(struct LayoutHandle *Handle,struct ObjectNode *Node);
ULONG __asm __saveds		LTP_DefaultHistoryHook(register __a0 struct Hook *Hook,register __a1 STRPTR NewString,register __a2 struct Gadget *Gadget);
VOID __regargs			LTP_Spread(struct LayoutHandle *Handle,struct ObjectNode *Group,LONG Width,LONG Height);
VOID __regargs			LTP_LayoutGroup(struct LayoutHandle *Handle,struct ObjectNode *Group);
VOID __regargs			LTP_PlaceGroups(struct LayoutHandle *handle,struct ObjectNode *group,LONG left,LONG top);
struct ObjectNode * __regargs	LTP_FindNode_Position(struct ObjectNode *group,LONG x,LONG y);
struct ObjectNode * __regargs	LTP_FindNode(struct ObjectNode *group,LONG id);
struct Gadget * __regargs	LTP_FindGadget(struct LayoutHandle *handle,LONG id);
VOID __regargs			LTP_SearchKeys(struct LayoutHandle *handle,struct ObjectNode *group);
VOID __regargs			LTP_SelectKeys(struct LayoutHandle *handle,struct ObjectNode *group);
struct ObjectNode * __regargs	LTP_CreateObjectNode(struct LayoutHandle *handle,UBYTE type,ULONG id,STRPTR label);
VOID __regargs			LTP_DeleteObjectNode(struct LayoutHandle *handle,struct ObjectNode *node);
struct Gadget * __regargs	LTP_CreatePicker(struct LayoutHandle *handle,struct ObjectNode *parentNode,struct Gadget *parentGadget,struct NewGadget *ng);
struct Gadget * __regargs	LTP_CreateIncrementer(struct LayoutHandle *handle,struct ObjectNode *parentNode,struct Gadget *parentGadget,struct NewGadget *ng,BOOLEAN leftDirection,LONG incAmount);
VOID __regargs			LTP_LayoutGadgets(struct LayoutHandle *Handle,struct ObjectNode *Group,LONG Left,LONG Top,LONG PlusWidth,LONG PlusHeight);
BOOLEAN __regargs		LTP_GlyphSetup(struct LayoutHandle *Handle,struct TextAttr *TextAttr);
VOID __regargs			LTP_CloneScreen(struct LayoutHandle *Handle,LONG Width,LONG Height);
BOOLEAN __regargs		LTP_PrepareCloning(struct LayoutHandle *Handle);
VOID __regargs			LTP_CreateGadgets(struct LayoutHandle *Handle,struct IBox *Bounds,LONG Left,LONG Top,LONG PlusWidth,LONG PlusHeight);
VOID __regargs			LTP_DrawGroup(struct LayoutHandle *Handle,struct ObjectNode *Group);
VOID __regargs			LTP_AddGadgets(struct LayoutHandle *handle);
VOID __regargs			LTP_DrawLevelImageLeft(struct RastPort *RPort,struct DrawInfo *DrawInfo,LevelImageInfo *Level,struct Image *Image,WORD Left,WORD Top,WORD Width,WORD Height,WORD OffsetX,WORD OffsetY);
VOID __regargs			LTP_DrawLevelImageRight(struct RastPort *RPort,struct DrawInfo *DrawInfo,LevelImageInfo *Level,struct Image *Image,WORD Left,WORD Top,WORD Width,WORD Height,WORD OffsetX,WORD OffsetY);
VOID __regargs			LTP_DrawLevelImageKnob(struct RastPort *RPort,struct DrawInfo *DrawInfo,WORD Left,WORD Top,WORD Width,WORD Height,LevelImageInfo *Level,BOOL Selected);
VOID __regargs			LTP_DrawLevelImageComplete(struct Image *Image,struct RastPort *RPort,struct DrawInfo *DrawInfo,LevelImageInfo *Level,WORD OffsetX,WORD OffsetY,BOOL Selected);
ULONG __regargs			LTP_LevelClassDraw(struct Image *Image,struct impDraw *DrawMsg,LevelImageInfo *Level);
ULONG __regargs			LTP_LevelClassSet(Class *class,struct Image *Image,struct opSet *SetMsg);
ULONG __regargs			LTP_LevelClassGet(Class *class,struct Image *Image,struct opGet *GetMsg);
ULONG __regargs			LTP_LevelClassNew(Class *class,Object *object,struct opSet *SetMsg);
ULONG __saveds __asm		LTP_LevelClassDispatcher(register __a0 Class *class,register __a2 Object *object,register __a1 Msg msg);
ULONG __regargs			LTP_GetSizeWidth(struct LayoutHandle *handle);
ULONG __regargs			LTP_GetSizeHeight(struct LayoutHandle *Handle);
VOID __regargs			LTP_Delay(ULONG Seconds,ULONG Micros);
VOID __regargs			LTP_DisposeGadgets(struct LayoutHandle *Handle);
VOID __regargs			LTP_DrawPalette(struct LayoutHandle *Handle,struct ObjectNode *Node);
VOID __regargs			LTP_DrawObjectLabel(LayoutHandle *Handle,ObjectNode *Node);
struct TextFont * __regargs	LTP_OpenFont(struct TextAttr *TextAttr);
VOID __regargs			LTP_ResetListViewTextAttrs(ObjectNode *Group);
VOID __regargs			LTP_DrawTick(LayoutHandle *Handle,ObjectNode *Node,WORD Left,WORD Top);
VOID __regargs			LTP_GetDefaultFont(struct TTextAttr *TextAttr);
VOID __regargs			LTP_InitIText(RootMenu *Root,struct IntuiText *IText);
MenuNode * __regargs		LTP_MakeMenu(RootMenu *Root,MenuNode *Menu,struct NewMenu *Template);
ItemNode * __regargs		LTP_MakeItem(RootMenu *Root,struct NewMenu *Template);
WORD __regargs			LTP_GetCommandWidth(RootMenu *Root,ItemNode *Item);
WORD __regargs			LTP_AdjustItemPosition(struct MenuItem *Item,WORD Left,WORD Top);
VOID __regargs			LTP_AdjustMenuPosition(RootMenu *Root);
VOID __regargs			LTP_ShrinkMenu(RootMenu *Root,ItemNode *First,ItemNode *Last,UWORD Mask);
BOOLEAN __regargs		LTP_CorrectItemList(RootMenu *Root,ItemNode *First,ItemNode *Last);
BOOLEAN __regargs		LTP_LayoutMenu(RootMenu *Root,WORD ExtraFront,WORD ExtraSpace);
VOID __regargs			LTP_FixExtraLabel(RootMenu *Root,LONG *Error);
BOOLEAN __regargs		LTP_CreateMenuTemplate(RootMenu *Root,LONG *Error,struct NewMenu *MenuTemplate);
VOID __regargs			LTP_FillSub(ULONG MenuID,ULONG ItemID,struct MenuItem *Item);
VOID __regargs			LTP_FillItem(ULONG MenuID,struct MenuItem *Item);
VOID __regargs			LTP_FillMenu(struct Menu *Menu);
BOOLEAN __regargs		LTP_CreateMenuTagList(RootMenu *Root,LONG *Error,struct TagItem *TagList);
RootMenu * __regargs		LTP_NewMenu(struct Screen *Screen,struct TextAttr *TextAttr,struct Image *AmigaGlyph,struct Image *CheckGlyph,LONG *Error);
WORD __regargs			LTP_Find_Clicked_Item(LayoutHandle *handle,ObjectNode *radio,LONG x,LONG y);
VOID __stdargs			LTP_LevelWidth(LayoutHandle *handle,STRPTR levelFormat,LONG (* __stdargs dispFunc)(struct Gadget *,WORD),LONG min,LONG max,LONG *maxWidth,LONG *maxLen,BOOL fullCheck);
ULONG __saveds __asm		LTP_PopupClassDispatcher(register __a0 struct IClass *class,register __a2 Object *object,register __a1 Msg msg);
BOOL __stdargs			LTP_ObtainTabSize(struct IBox *Box,...);
ULONG __saveds __asm		LTP_TabClassDispatcher(register __a0 struct IClass *class,register __a2 Object *object,register __a1 Msg msg);

#endif
