implement vertical scrolling using BitBlt. It's faster and smoother, but

commented out for now since it may be better not to add so late in the cycle.
This commit is contained in:
ehouse 2006-06-22 04:59:18 +00:00
parent a08dc22023
commit 6870178490

View file

@ -933,12 +933,55 @@ DRAW_FUNC_NAME(destroyCtxt)( DrawCtx* p_dctx )
#ifdef DRAW_LINK_DIRECT
DLSTATIC XP_Bool
DRAW_FUNC_NAME(vertScrollBoard)( DrawCtx* dctx, XP_Rect* rect,
XP_S16 dist )
DRAW_FUNC_NAME(vertScrollBoard)( DrawCtx* p_dctx, XP_Rect* rect,
XP_S16 dist )
{
return XP_FALSE;
}
#if 0 /* don't turn this on until after ship? */
if ( dist < 0 ) {
return XP_FALSE;
} else {
XP_Bool success = XP_FALSE;
/* board passes in the whole board rect, so we need to subtract from it
the height of the area to be overwritten. If dist is negative, the
dest is above the src. Otherwise it's below. */
CEDrawCtx* dctx = (CEDrawCtx*)p_dctx;
CEAppGlobals* globals = dctx->globals;
int destY, srcY;
XP_Bool down = dist <= 0;
if ( down ) {
srcY = rect->top;
dist = -dist; /* make it positive */
destY = srcY + dist;
} else {
destY = rect->top;
srcY = destY + dist;
}
success = BitBlt( globals->hdc, /* HDC hdcDest, */
rect->left, /* int nXDest */
destY,
rect->width, /* width */
rect->height - dist, /* int nHeight */
globals->hdc, /* HDC hdcSrc */
rect->left, /* int nXSrc */
srcY,
SRCCOPY ); /* DWORD dwRop */
/* need to return the rect that must still be redrawn */
if ( success ) {
if ( !down ) {
rect->top += rect->height - dist;
}
rect->height = dist;
}
return success;
}
#else
return XP_FALSE;
#endif
}
#else /* #ifdef DRAW_LINK_DIRECT */
static void
ce_draw_doNothing( DrawCtx* dctx, ... )
{