/* myhooks.c -- set up layers vector stealing	*/

typedef	LONG	(*PFL)();

struct	hook	{
	LONG	hk_SysFunc;
	PFL		hk_MyFunc;
	PFL		hk_Entry;	/* unique entry point	*/
	WORD	hk_Test;
	LONG	hk_LVO;
};

void	drawShadowSignal();

/* unique entry points	*/
long	entry0();
long	entry1();
long	entry2();
long	entry3();
long	entry4();
long	entry5();
long	entry6();

struct hook	myhooks[] = {
	{	0,	
		(PFL) drawShadowSignal,
		entry0,
		0,
		-48,		/* upfront			*/
	},
	{	0,	
		(PFL) drawShadowSignal,
		entry1,
		0,
		-42			/* create behind	*/
	},
	{	0,	
		(PFL) drawShadowSignal,
		entry2,
		0,
		-36			/* create upfront	*/
	},
	{	0,	
		(PFL) drawShadowSignal,
		entry3,
		0,
		-90			/* delete			*/
	},
	{	0,	
		(PFL) drawShadowSignal,
		entry4,
		0,
		-54			/* behind			*/
	},
	{	0,	
		(PFL) drawShadowSignal,
		entry5,
		0,
		-66			/* size 			*/
	},
	{	0,	
		(PFL) drawShadowSignal,
		entry6,
		0,
		-60			/* move 			*/
	}
};

#define NUMHOOKS	(sizeof (myhooks)/ sizeof (struct hook))

extern	long	LayersBase;

setup_hooks()
{
	int		i;

	/* install the hooks	*/
	Forbid();
	for (i = 0; i < NUMHOOKS; ++i)
	{
		myhooks[i].hk_SysFunc =
			SetFunction(LayersBase, myhooks[i].hk_LVO, myhooks[i].hk_Entry);
	}
	Permit();
}

cleanup_hooks()
{
	int	i;

	/* remove the hooks		*/
	/*** ZZZZ need to see if vectors are still mine	***/
	for (i = 0; i < NUMHOOKS; ++i)
	{
		SetFunction(LayersBase, myhooks[i].hk_LVO, myhooks[i].hk_SysFunc);
	}

	return (1);		/* tell him it's ok to exit	*/
}
