This is dim-screen code. Needs checks added, such as viewport still existing
at UnBlank time.

#define MAX_COLORS	32
UWORD	origcolors[MAX_COLORS], dimcolors[MAX_COLORS];
UWORD	dimfactor = 5;	/* 0..10 */
static	struct Screen *dimscr;

/* blank display, by putting up a black screen */
void
BlankScreen()
{
	struct ViewPort *vp;
	ULONG lock;
	UWORD i, r, g, b;

	lock = LockIBase(0);
	dimscr = IntuitionBase->FirstScreen;
	vp = &dimscr->ViewPort;
	UnlockIBase(lock);

	for (i = 0; i < MAX_COLORS; i++)
	{
		origcolors[i] = dimcolors[i] = GetRGB4(vp->ColorMap, i);
		
		r = dimfactor*(dimcolors[i] & 0x0f00);
		g = dimfactor*(dimcolors[i] & 0x00f0);
		b = dimfactor*(dimcolors[i] & 0x000f);

		r = (r/10) & 0x0f00;
		g = (g/10) & 0x00f0;
		b = (b/10) & 0x000f;

		dimcolors[i] = r | g | b;
	}
	LoadRGB4(vp, dimcolors, MAX_COLORS);
	blanked = TRUE;
}
	
/* unblank display, i.e. close our screen */
void
UnBlankScreen()
{
	if (dimscr && FindScreen(dimscr))
	{
		LoadRGB4(&dimscr->ViewPort, origcolors, MAX_COLORS);
		dimscr = FALSE;
		blanked = FALSE;
	}
}

