bltfill.h
来自「深圳市微逻辑电子有限公司 巨果• Kingmos® 系统核心」· C头文件 代码 · 共 65 行
H
65 行
#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;
LPWORD lpDstStart = (LPWORD)( lpData->lpDestImage->bmBits +
lpData->lpDestImage->bmWidthBytes * lpData->lprcDest->top ) +
lpData->lprcDest->left;
DWORD scanBytes = lpData->lpDestImage->bmWidthBytes;
DWORD destWords = lpData->lprcDest->right - lpData->lprcDest->left;
// LPBYTE lpDstEnd = lpDstStart + destBytes - 1;
DWORD color;
int n;
int m;
int leftWords;
int midWords;
int rightWords;
n = (int)( ( (DWORD)lpDstStart >> 1 ) & 0x01 );
// m = (destBytes&0x01);
// leftBytes = min( n, m );
// midBytes = (destBytes - leftBytes) & (~0x01);
// rightBytes = destBytes - midBytes - leftBytes;
m = destWords;
leftWords = min( n, m );
midWords = (destWords - leftWords) & (~0x0001);
rightWords = destWords - midWords - leftWords;
color = (WORD)lpData->solidColor;
color = (color << 16) | color;
for( n = 0; n < height; n++ )
{
LPWORD lpDst = lpDstStart;
LPWORD lpEnd = lpDstStart + leftWords;
while( lpDst < lpEnd )
{
*lpDst = BLT_ROP( *lpDst, (WORD)color );
lpDst++;
}
lpEnd = lpDst + midWords;
while( lpDst < lpEnd )
{
*((DWORD*)lpDst) = BLT_ROP( *((DWORD*)lpDst), (DWORD)color );
lpDst += 2;
}
lpEnd = lpDst + rightWords;
while( lpDst < lpEnd )
{
*lpDst = BLT_ROP( *lpDst, (WORD)color );
lpDst++;
}
lpDstStart = (LPWORD)((LPBYTE)lpDstStart + scanBytes);
}
return TRUE;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?