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

#include "gtlayout_global.h"

struct Gadget * __regargs
LTP_CreateIncrementer(LayoutHandle *handle,ObjectNode *parentNode,struct Gadget *parentGadget,struct NewGadget *ng,BOOLEAN leftDirection,LONG incAmount)
{
	ObjectNode	*node;
	struct Gadget	*incer;

	if(node = LTP_CreateObjectNode(handle,INCREMENTER_KIND,parentGadget -> GadgetID,NULL))
	{
		ng -> ng_LeftEdge	= ng -> ng_LeftEdge + ng -> ng_Width;
		ng -> ng_Width		= 4 + handle -> GlyphWidth + 4;
		ng -> ng_GadgetText	= "";
		ng -> ng_UserData	= node;
		ng -> ng_Flags		= NULL;

		node -> Special . Incrementer . Amount = incAmount;

		if(leftDirection)
		{
			node -> Special . Incrementer . Image = NewObject(LTP_ImageClass,NULL,
				IIA_ImageType,	IMAGECLASS_LEFTINCREMENTER,
				IA_Width,	ng -> ng_Width,
				IA_Height,	ng -> ng_Height,
			TAG_DONE);
		}
		else
		{
			node -> Special . Incrementer . Image = NewObject(LTP_ImageClass,NULL,
				IIA_ImageType,	IMAGECLASS_RIGHTINCREMENTER,
				IA_Width,	ng -> ng_Width,
				IA_Height,	ng -> ng_Height,
			TAG_DONE);
		}

		if(node -> Special . Incrementer . Image)
		{
			if(incer = CreateGadgetA(GENERIC_KIND,handle -> Previous,ng,NULL))
			{
				incer -> GadgetType	|= GTYP_BOOLGADGET;
				incer -> Flags		|= GFLG_GADGIMAGE | GFLG_GADGHIMAGE;
				incer -> Activation	|= GACT_IMMEDIATE | GACT_RELVERIFY;
				incer -> GadgetRender	 = node -> Special . Incrementer . Image;
				incer -> SelectRender	 = node -> Special . Incrementer . Image;

				if(parentNode -> Disabled)
					incer -> Flags |= GFLG_DISABLED;

				node -> Host = incer;

				node -> Special . Incrementer . Parent = parentGadget;

				return(incer);
			}
			else
				LTP_DeleteObjectNode(handle,node);
		}
	}

	return(NULL);
}
