mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2024-12-30 10:26:58 +01:00
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:
parent
a08dc22023
commit
6870178490
1 changed files with 47 additions and 4 deletions
|
@ -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, ... )
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue