#ifndef PROTO_H
#define PROTO_H

/*		In maker.c		*/

void About(USHORT code);
void Quit(USHORT code);
BOOL DoOpen(USHORT code);
BOOL DoSaveAs(USHORT code);
void DoWindSize(USHORT code);
void WriteStruct(USHORT code);
void		main(void),
			DoMenu(USHORT code),
			ReDraw(void),
			SelectObj(LinkNode *selObj),
			HandleDoubleClick(LinkNode *objPtr),
			DoMouse(Point *mousePt, USHORT code, TimeStamp *timeStamp),
			DoKey(USHORT code),
			DoGadget(Gadget *gadgetPtr, USHORT code);
BOOL		CanResize(LinkNode *objPtr);
void		SetClip(void);
void		DoEditMode(USHORT code);
BOOL		NewWindow(USHORT left, USHORT top, USHORT width, USHORT height, BOOL sizeable);
void		UpdateInfoWindow(Rect *rectPtr);
void		UpdateInfoItem(LinkNode *nodePtr);
LinkNode	*FindObj(Point *mousePt);
void		PickLVString(USHORT code);


/*		In drag.c		*/

BOOL PtinRect(Point *pt, Rect *rect);
BOOL PtbyLine(Point *pt, Rect *rect, short tol);
BOOL DragRect(register Window *window, register Point *mouse, register Rect *rect);
BOOL DragLine(register Window *window, register Point *mouse, register Rect *rect);
BOOL SizeLine(register Window *window, register Point *mouse, Point *start, Point *anchor);
BOOL DragPoly(register Window *window, register Point *mouse, short npts,
					register short *points);
BOOL SizeRect(register Window *window, register Point *mouse, register Rect *rect,
					Point *minsize, Point *maxsize);


/*		In memory.c		*/

BOOL		GetMem(void **ptr, ULONG size);
BOOL		DropMem(void **ptr, long size);
BOOL		RemLink(void **root, void *node);
BOOL		AddLink(void **root, void *node);
BOOL		InsertLink(void **root, void *node, USHORT pos);
USHORT	NodeCount(void **root);
LinkNode	*FindNode(LinkNode **root, register short nodenum);
short		NodeNum(LinkNode **root, register LinkNode *targetNode);

/*		In gadget.c		*/

void		DoDisable(USHORT code);
void		DoBringFront(USHORT code);
void		DoSendBack(USHORT code);
Gadget	*LastGadget(void);
BOOL		BreakGList(Gadget *theGadget, USHORT numGadget);
void		CountGadgets( Gadget *lastGadget, Gadget **topGadget, USHORT *numGadget );
BOOL		GetGadgetData(LinkNode *nodePtr, Gadget **firstGadget, USHORT *numGadget,
								ULONG *flags, char **labelPtr, BOOL *disable);
LinkNode *AllocateObj( USHORT objType );
void		DisposeObj( LinkNode *nodePtr );
void		NewObj(USHORT code);
USHORT	MakeGadget(LinkNode *nodePtr);
BOOL		UpdateLVConnect(LinkNode *nodePtr, BOOL clearIt);

/*		In init.c		*/			

void		init(void),
			quit(char *note);

/*		In double.c		*/

BOOL		DoubleIText(LinkNode *objPtr);

/*		In itemlist.c		*/

char *GetItemText(LinkNode *nodePtr);
short GetTextPlacement(LinkNode *nodePtr);
void WriteItems(USHORT code);

#endif	/*	PROTO_H	*/
