mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-01-18 22:26:30 +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
8277d3736a
commit
e8731492b4
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,
|
||||
DRAW_FUNC_NAME(vertScrollBoard)( DrawCtx* p_dctx, XP_Rect* rect,
|
||||
XP_S16 dist )
|
||||
{
|
||||
#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