⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bltcpy.h

📁 深圳市微逻辑电子有限公司 巨果&#8226 Kingmos&reg 系统核心
💻 H
字号:
#ifndef FUNCTION
    #error not define FUNCTION!
#endif

#ifndef BLT_ROP
    #error not define BLT_ROP
#endif

static BOOL FUNCTION( _LPBLKBITBLT lpData )
{
    int height = lpData->lprcDest->bottom - lpData->lprcDest->top;
    int cols = lpData->lprcDest->right - lpData->lprcDest->left;
    int n;
    int scanDestBytes = lpData->lpDestImage->bmWidthBytes;
    int scanSrcBytes = lpData->lpSrcImage->bmWidthBytes;

    LPCWORD lpSrcStart;
    LPWORD lpDestStart;

    lpSrcStart = (LPWORD)( lpData->lpSrcImage->bmBits +
                 lpData->lpSrcImage->bmWidthBytes * lpData->lprcSrc->top ) +
                 lpData->lprcSrc->left;
    lpDestStart = (LPWORD)( lpData->lpDestImage->bmBits +
                 lpData->lpDestImage->bmWidthBytes * lpData->lprcDest->top ) +
                 lpData->lprcDest->left;

    if( !lpData->yPositive )
    { // from end to top
        lpSrcStart = (LPWORD)( (LPBYTE)lpSrcStart + lpData->lpSrcImage->bmWidthBytes * (height - 1) );
        lpDestStart = (LPWORD)( (LPBYTE)lpDestStart + lpData->lpDestImage->bmWidthBytes * (height - 1) );
        scanSrcBytes = -scanSrcBytes;
        scanDestBytes = -scanDestBytes;
    }

#ifdef FAST_OP

	cols *= sizeof( WORD );
    for ( n = 0; n < height; n++)
	{
		memcpy( lpDestStart, lpSrcStart, cols );
        lpDestStart = (LPWORD)( (LPBYTE)lpDestStart + scanDestBytes );
        lpSrcStart = (LPWORD)( (LPBYTE)lpSrcStart + scanSrcBytes );
	}
#else

    if (!lpData->xPositive)
    {
        // right -> left
        for( n = 0; n < height; n++ )
        {
            LPWORD lpDest = lpDestStart + cols - 1;
            LPCWORD lpSrc = lpSrcStart + cols - 1;

            while (lpDest >= lpDestStart)
            {
                *lpDest = BLT_ROP(*lpDest, *lpSrc);
                lpDest--;
                lpSrc--;
            }
            lpDestStart = (LPWORD)( (LPBYTE)lpDestStart + scanDestBytes );
            lpSrcStart = (LPWORD)( (LPBYTE)lpSrcStart + scanSrcBytes );
        }
    }
    else
    {
        // Copy from left to right
        for ( n = 0; n < height; n++)
        {
            LPWORD lpDest = lpDestStart;
            LPCWORD lpSrc = lpSrcStart;
            LPWORD lpDestEnd = lpDest + cols;

            while (lpDest < lpDestEnd)
            {
                *lpDest = BLT_ROP(*lpDest, *lpSrc);
                lpDest++;
                lpSrc++;
            }
            lpDestStart = (LPWORD)( (LPBYTE)lpDestStart + scanDestBytes );
            lpSrcStart = (LPWORD)( (LPBYTE)lpSrcStart + scanSrcBytes );
        }
    }

#endif


    return TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -