rem: GetContextClipRect (&r);
context: ScaleSystem (void){#if 0#define NUM_STEPS 8	COUNT num_steps;	SIZE err, d, new_radius, step;	RECT r;	BOOLEAN first_time;	CONTEXT OldContext;	first_time = TRUE;	new_radius = pSolarSysState->SunDesc[0].radius;		BatchGraphics ();	DrawSimpleSystem (new_radius, DRAW_PLANETS | DRAW_ORBITS | GRAB_BKGND);	pSolarSysState->SunDesc[0].radius = old_radius;		d = new_radius - old_radius;	step = d / NUM_STEPS;	if (d < 0)		d = -d;	num_steps = err = NUM_STEPS;	OldContext = SetContext (SpaceContext);	GetContextClipRect (&r);	SetGraphicGrabOther (1); // to grab from hidden screen (since we haven't flipped yet)	LoadIntoExtraScreen (&r);	SetGraphicGrabOther (0);	SetContextFGFrame (Screen);	do	{		if ((err -= d) <= 0)		{			pSolarSysState->SunDesc[0].radius += step;			BatchGraphics ();			DrawFromExtraScreen (r.corner.x, r.corner.y);			DrawSimpleSystem (pSolarSysState->SunDesc[0].radius,					DRAW_ORBITS | DRAW_STARS | GRAB_BKGND | DRAW_HYPER_COORDS);								RedrawQueue (FALSE);						if (first_time)			{				first_time = FALSE;				UnbatchGraphics (); // to balance out Batch before DrawSimpleSystem above			}			UnbatchGraphics ();						err += d;		}	} while (--num_steps);		SetContext (OldContext);	pSolarSysState->SunDesc[0].radius = new_radius;	DrawSystem (pSolarSysState->SunDesc[0].radius, FALSE);	old_radius = 0;#else	RECT r;	CONTEXT OldContext;		OldContext = SetContext (SpaceContext);	BatchGraphics ();	DrawSystem (pSolarSysState->SunDesc[0].radius, FALSE);	GetContextClipRect (&r);	ScreenTransition (3, &r);	UnbatchGraphics ();	LoadIntoExtraScreen (&r);	SetContext (OldContext);		old_radius = 0;#endif}