Fix clipped cross-fade in OpenGL mode with complex scalers (bug #674)

git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@1466 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
avolkov
2005-01-19 07:49:40 +00:00
parent f8732fa1bc
commit 775849ea3d
@@ -81,9 +81,53 @@ FlushGraphics ()
TFB_DrawScreen_WaitForSignal ();
}
static void
ExpandRect (PRECT rect, int expansion)
{
if (rect->corner.x - expansion >= 0)
{
rect->extent.width += expansion;
rect->corner.x -= expansion;
}
else
{
rect->extent.width += rect->corner.x;
rect->corner.x = 0;
}
if (rect->corner.y - expansion >= 0)
{
rect->extent.height += expansion;
rect->corner.y -= expansion;
}
else
{
rect->extent.height += rect->corner.y;
rect->corner.y = 0;
}
if (rect->corner.x + rect->extent.width + expansion <= SCREEN_WIDTH)
rect->extent.width += expansion;
else
rect->extent.width = SCREEN_WIDTH - rect->corner.x;
if (rect->corner.y + rect->extent.height + expansion <= SCREEN_HEIGHT)
rect->extent.height += expansion;
else
rect->extent.height = SCREEN_HEIGHT - rect->corner.y;
}
void
SetTransitionSource (PRECT pRect)
{
RECT ActualRect;
if (pRect)
{ /* expand the rect to accomodate scalers in OpenGL mode */
ActualRect = *pRect;
pRect = &ActualRect;
ExpandRect (&ActualRect, 2);
}
TFB_DrawScreen_Copy(pRect, TFB_SCREEN_MAIN, TFB_SCREEN_TRANSITION);
}