📄 haigdi.c
字号:
case 1: *pImage++ = COLOR_BLACK_8;
}while (--w);
}
pImage += WidthBytes - wbak;
}
return S_TRUE;
case 16:
pImage += y * WidthBytes + (x<<1);
while (h--)
{
w = (wbak+7)>>3;
switch (wbak%8)
{
case 0:do{*(S_WORD*)pImage = COLOR_BLACK_16; pImage += 2;
case 7: *(S_WORD*)pImage = COLOR_BLACK_16; pImage += 2;
case 6: *(S_WORD*)pImage = COLOR_BLACK_16; pImage += 2;
case 5: *(S_WORD*)pImage = COLOR_BLACK_16; pImage += 2;
case 4: *(S_WORD*)pImage = COLOR_BLACK_16; pImage += 2;
case 3: *(S_WORD*)pImage = COLOR_BLACK_16; pImage += 2;
case 2: *(S_WORD*)pImage = COLOR_BLACK_16; pImage += 2;
case 1: *(S_WORD*)pImage = COLOR_BLACK_16; pImage += 2;
}while (--w);
}
pImage += WidthBytes - (wbak<<1);
}
return S_TRUE;
case 24:
pImage += y * WidthBytes + x*3;
c8 = (S_BYTE)COLOR_BLACK_24;
while (h--)
{
w = (wbak+7)>>3;
switch (wbak%8)
{
case 0:do{*pImage++ = c8;*pImage++ = c8;*pImage++ = c8;
case 7: *pImage++ = c8;*pImage++ = c8;*pImage++ = c8;
case 6: *pImage++ = c8;*pImage++ = c8;*pImage++ = c8;
case 5: *pImage++ = c8;*pImage++ = c8;*pImage++ = c8;
case 4: *pImage++ = c8;*pImage++ = c8;*pImage++ = c8;
case 3: *pImage++ = c8;*pImage++ = c8;*pImage++ = c8;
case 2: *pImage++ = c8;*pImage++ = c8;*pImage++ = c8;
case 1: *pImage++ = c8;*pImage++ = c8;*pImage++ = c8;
}while (--w);
}
pImage += WidthBytes - wbak*3;
}
return S_TRUE;
default:
return S_FALSE;
}
return S_FALSE;
}
static S_BOOL __BitBlt2_Whiteness(S_BYTE *pImage, S_WORD BitsPixel, S_WORD WidthBytes, S_SHORT x, S_SHORT y, S_SHORT w, S_SHORT h)
{
S_BYTE c8;
S_SHORT wbak = w;
switch (BitsPixel)
{
case 4:
c8 = (S_BYTE)COLOR_GRAY15<<4 | (S_BYTE)COLOR_GRAY15;
pImage += y * WidthBytes + (x>>1);
while (h--)
{
w = wbak;
if (w && x&0x1)
{
*pImage = (*pImage&0xF0) | COLOR_GRAY15;
pImage++;
w--;
}
for (;w > 1; w -= 2)
{
*pImage++ = c8;
}
if (w == 1)
{
*pImage = (S_BYTE)((*pImage&0x0F) | COLOR_GRAY15<<4);
pImage++;
}
pImage += WidthBytes - ((wbak+1)>>1);
if (x&0x1 && !(wbak&0x1))
pImage -= 1;
}
return S_TRUE;
case 8:
pImage += y * WidthBytes + x;
while (h--)
{
w = (wbak+7)>>3;
switch (wbak%8)
{
case 0:do{*pImage++ = COLOR_WHITE_8;
case 7: *pImage++ = COLOR_WHITE_8;
case 6: *pImage++ = COLOR_WHITE_8;
case 5: *pImage++ = COLOR_WHITE_8;
case 4: *pImage++ = COLOR_WHITE_8;
case 3: *pImage++ = COLOR_WHITE_8;
case 2: *pImage++ = COLOR_WHITE_8;
case 1: *pImage++ = COLOR_WHITE_8;
}while (--w);
}
pImage += WidthBytes - wbak;
}
return S_TRUE;
case 16:
pImage += y * WidthBytes + (x<<1);
while (h--)
{
w = (wbak+7)>>3;
switch (wbak%8)
{
case 0:do{*(S_WORD*)pImage = COLOR_WHITE_16; pImage += 2;
case 7: *(S_WORD*)pImage = COLOR_WHITE_16; pImage += 2;
case 6: *(S_WORD*)pImage = COLOR_WHITE_16; pImage += 2;
case 5: *(S_WORD*)pImage = COLOR_WHITE_16; pImage += 2;
case 4: *(S_WORD*)pImage = COLOR_WHITE_16; pImage += 2;
case 3: *(S_WORD*)pImage = COLOR_WHITE_16; pImage += 2;
case 2: *(S_WORD*)pImage = COLOR_WHITE_16; pImage += 2;
case 1: *(S_WORD*)pImage = COLOR_WHITE_16; pImage += 2;
}while (--w);
}
pImage += WidthBytes - (wbak<<1);
}
return S_TRUE;
case 24:
pImage += y * WidthBytes + x*3;
c8 = (S_BYTE)COLOR_WHITE_24;
while (h--)
{
w = (wbak+7)>>3;
switch (wbak%8)
{
case 0:do{*pImage++ = c8; *pImage++ = c8; *pImage++ = c8;
case 7: *pImage++ = c8; *pImage++ = c8; *pImage++ = c8;
case 6: *pImage++ = c8; *pImage++ = c8; *pImage++ = c8;
case 5: *pImage++ = c8; *pImage++ = c8; *pImage++ = c8;
case 4: *pImage++ = c8; *pImage++ = c8; *pImage++ = c8;
case 3: *pImage++ = c8; *pImage++ = c8; *pImage++ = c8;
case 2: *pImage++ = c8; *pImage++ = c8; *pImage++ = c8;
case 1: *pImage++ = c8; *pImage++ = c8; *pImage++ = c8;
}while (--w);
}
pImage += WidthBytes - (wbak*3);
}
return S_TRUE;
default:
return S_FALSE;
}
return S_FALSE;
}
static S_BOOL __BitBlt2_Dstinvert(S_BYTE *pImage, S_WORD BitsPixel, S_WORD WidthBytes, S_SHORT x, S_SHORT y, S_SHORT w, S_SHORT h)
{
S_SHORT wbak = w;
switch (BitsPixel)
{
case 4:
pImage += y * WidthBytes + (x>>1);
while (h--)
{
w = wbak;
if (w && x&0x1)
{
*pImage = (*pImage & 0xF0) | (~*pImage & 0xF);
pImage++;
w--;
}
for (;w > 1; w -= 2)
{
*pImage = ~*pImage;
pImage++;
}
if (w == 1)
{
*pImage = (*pImage&0xF) | (~*pImage & 0xF0);
pImage++;
}
pImage += WidthBytes - ((wbak+1)>>1);
if (x&0x1 && !(wbak&0x1))
pImage -= 1;
}
return S_TRUE;
case 8:
pImage += y * WidthBytes + x;
while (h--)
{
w = (wbak+7)>>3;
switch (wbak%8)
{
case 0:do{*pImage++ = ~*pImage;
case 7: *pImage++ = ~*pImage;
case 6: *pImage++ = ~*pImage;
case 5: *pImage++ = ~*pImage;
case 4: *pImage++ = ~*pImage;
case 3: *pImage++ = ~*pImage;
case 2: *pImage++ = ~*pImage;
case 1: *pImage++ = ~*pImage;
}while (--w);
}
pImage += WidthBytes - wbak;
}
return S_TRUE;
case 16:
pImage += y * WidthBytes + (x<<1);
while (h--)
{
w = (wbak+7)>>3;
switch (wbak%8)
{
case 0:do{*(S_WORD*)pImage = ~*(S_WORD*)pImage; pImage += 2;
case 7: *(S_WORD*)pImage = ~*(S_WORD*)pImage; pImage += 2;
case 6: *(S_WORD*)pImage = ~*(S_WORD*)pImage; pImage += 2;
case 5: *(S_WORD*)pImage = ~*(S_WORD*)pImage; pImage += 2;
case 4: *(S_WORD*)pImage = ~*(S_WORD*)pImage; pImage += 2;
case 3: *(S_WORD*)pImage = ~*(S_WORD*)pImage; pImage += 2;
case 2: *(S_WORD*)pImage = ~*(S_WORD*)pImage; pImage += 2;
case 1: *(S_WORD*)pImage = ~*(S_WORD*)pImage; pImage += 2;
}while (--w);
}
pImage += WidthBytes - (wbak<<1);
}
return S_TRUE;
case 24:
pImage += y * WidthBytes + x*3;
while (h--)
{
w = (wbak+7)>>3;
switch (wbak%8)
{
case 0:do{*pImage++ = ~*pImage; *pImage++ = ~*pImage; *pImage++ = ~*pImage;
case 7: *pImage++ = ~*pImage; *pImage++ = ~*pImage; *pImage++ = ~*pImage;
case 6: *pImage++ = ~*pImage; *pImage++ = ~*pImage; *pImage++ = ~*pImage;
case 5: *pImage++ = ~*pImage; *pImage++ = ~*pImage; *pImage++ = ~*pImage;
case 4: *pImage++ = ~*pImage; *pImage++ = ~*pImage; *pImage++ = ~*pImage;
case 3: *pImage++ = ~*pImage; *pImage++ = ~*pImage; *pImage++ = ~*pImage;
case 2: *pImage++ = ~*pImage; *pImage++ = ~*pImage; *pImage++ = ~*pImage;
case 1: *pImage++ = ~*pImage; *pImage++ = ~*pImage; *pImage++ = ~*pImage;
}while (--w);
}
pImage += WidthBytes - wbak*3;
}
return S_TRUE;
default:
return S_FALSE;
}
return S_FALSE;
}
static S_BOOL __BitBlt2_Patinvert(S_BYTE *pImage, S_WORD BitsPixel, S_WORD WidthBytes, S_SHORT x, S_SHORT y, S_SHORT w, S_SHORT h, S_COLOR PatColor)
{
S_BYTE c8, r, g, b;
S_WORD c16;
S_SHORT wbak = w;
switch (BitsPixel)
{
case 4:
pImage += y * WidthBytes + (x>>1);
c8 = (S_BYTE)(PatColor<<4) | (S_BYTE)(PatColor&0xF);
while (h--)
{
w = wbak;
if (w && x&0x1)
{
*pImage = (*pImage & 0xF0) | ((*pImage^c8)&0xF);
pImage++;
w--;
}
for (;w > 1; w -= 2)
{
*pImage = *pImage ^ c8;
pImage++;
}
if (w == 1)
{
*pImage = (*pImage&0xF) | ((*pImage^c8)&0xF0);
pImage++;
}
pImage += WidthBytes - ((wbak+1)>>1);
if (x&0x1 && !(wbak&0x1))
pImage -= 1;
}
return S_TRUE;
case 8:
pImage += y * WidthBytes + x;
c8 = (S_BYTE)PatColor;
while (h--)
{
w = (wbak+7)>>3;
switch (wbak%8)
{
case 0:do{*pImage++ = *pImage ^ c8;
case 7: *pImage++ = *pImage ^ c8;
case 6: *pImage++ = *pImage ^ c8;
case 5: *pImage++ = *pImage ^ c8;
case 4: *pImage++ = *pImage ^ c8;
case 3: *pImage++ = *pImage ^ c8;
case 2: *pImage++ = *pImage ^ c8;
case 1: *pImage++ = *pImage ^ c8;
}while (--w);
}
pImage += WidthBytes - wbak;
}
return S_TRUE;
case 16:
pImage += y * WidthBytes + (x<<1);
c16 = (S_WORD)PatColor;
while (h--)
{
w = (wbak+7)>>3;
switch (wbak%8)
{
case 0:do{*(S_WORD*)pImage = *(S_WORD*)pImage ^ c16; pImage += 2;
case 7: *(S_WORD*)pImage = *(S_WORD*)pImage ^ c16; pImage += 2;
case 6: *(S_WORD*)pImage = *(S_WORD*)pImage ^ c16; pImage += 2;
case 5: *(S_WORD*)pImage = *(S_WORD*)pImage ^ c16; pImage += 2;
case 4: *(S_WORD*)pImage = *(S_WORD*)pImage ^ c16; pImage += 2;
case 3: *(S_WORD*)pImage = *(S_WORD*)pImage ^ c16; pImage += 2;
case 2: *(S_WORD*)pImage = *(S_WORD*)pImage ^ c16; pImage += 2;
case 1: *(S_WORD*)pImage = *(S_WORD*)pImage ^ c16; pImage += 2;
}while (--w);
}
pImage += WidthBytes - (wbak<<1);
}
return S_TRUE;
case 24:
pImage += y * WidthBytes + x*3;
r = (S_BYTE)PatColor; g = (S_BYTE)(PatColor>>8); b = (S_BYTE)(PatColor>>16);
while (h--)
{
w = (wbak+7)>>3;
switch (wbak%8)
{
case 0:do{*pImage++ = *pImage ^ r; *pImage++ = *pImage ^ g; *pImage++ = *pImage ^ b;
case 7: *pImage++ = *pImage ^ r; *pImage++ = *pImage ^ g; *pImage++ = *pImage ^ b;
case 6: *pImage++ = *pImage ^ r; *pImage++ = *pImage ^ g; *pImage++ = *pImage ^ b;
case 5: *pImage++ = *pImage ^ r; *pImage++ = *pImage ^ g; *pImage++ = *pImage ^ b;
case 4: *pImage++ = *pImage ^ r; *pImage++ = *pImage ^ g; *pImage++ = *pImage ^ b;
case 3: *pImage++ = *pImage ^ r; *pImage++ = *pImage ^ g; *pImage++ = *pImage ^ b;
case 2: *pImage++ = *pImage ^ r; *pImage++ = *pImage ^ g; *pImage++ = *pImage ^ b;
case 1: *pImage++ = *pImage ^ r; *pImage++ = *pImage ^ g; *pImage++ = *pImage ^ b;
}while (--w);
}
pImage += WidthBytes - wbak*3;
}
return S_TRUE;
default:
return S_FALSE;
}
return S_FALSE;
}
static S_BOOL __BitBlt2_Patpaint(S_BYTE *pImage, S_WORD BitsPixel, S_WORD WidthBytes, S_SHORT x, S_SHORT y, S_SHORT w, S_SHORT h, S_COLOR PatColor)
{
S_BYTE c8, r, g, b;
S_WORD c16;
S_SHORT wbak = w;
switch (BitsPixel)
{
case 4:
pImage += y * WidthBytes + (x>>1);
c8 = (S_BYTE)(PatColor<<4) | (S_BYTE)(PatColor&0xF);
while (h--)
{
w = wbak;
if (w && x&0x1)
{
*pImage = (*pImage & 0xF0) | ((*pImage|c8)&0xF);
pImage++;
w--;
}
for (;w > 1; w -= 2)
{
*pImage = *pImage | c8;
pImage++;
}
if (w == 1)
{
*pImage = (*pImage&0xF) | ((*pImage|c8)&0xF0);
pImage++;
}
pImage += WidthBytes - ((wbak+1)>>1);
if (x&0x1 && !(wbak&0x1))
pImage -= 1;
}
return S_TRUE;
case 8:
pImage += y * WidthBytes + x;
c8 = (S_BYTE)PatColor;
while (h--)
{
w = (wbak+7)>>3;
switch (wbak%8)
{
case 0:do{*pImage++ = *pImage | c8;
case 7: *pImage++ = *pImage | c8;
case 6: *pImage++ = *pImage | c8;
case 5: *pImage++ = *pImage | c8;
case 4: *pImage++ = *pImage | c8;
case 3: *pImage++ = *pImage | c8;
case 2: *pImage++ = *pImage | c8;
case 1: *pImage++ = *pImage | c8;
}while (--w);
}
pImage += WidthBytes - wbak;
}
return S_TRUE;
case 16:
pImage += y * WidthBytes + (x<<1);
c16 = (S_WORD)PatColor;
while (h--)
{
w = (wbak+7)>>3;
switch (wbak%8)
{
case 0:do{*(S_WORD*)pImage = *(S_WORD*)pImage | c16; pImage += 2;
case 7: *(S_WORD*)pImage = *(S_WORD*)pImage | c16; pImage += 2;
case 6: *(S_WORD*)pImage = *(S_WORD*)pImage | c16; pImage += 2;
case 5: *(S_WORD*)pImage = *(S_WORD*)pImage | c16; pImage += 2;
case 4: *(S_WORD*)pImage = *(S_WORD*)pImage | c16; pImage += 2;
case 3: *(S_WORD*)pImage = *(S_WORD*)pImage | c16; pImage += 2;
case 2: *(S_WORD*)pImage = *(S_WORD*)pImage | c16; pImage += 2;
case 1: *(S_WORD*)pImage = *(S_WORD*)pImage | c16; pImage += 2;
}while (--w);
}
pImage += WidthBytes - (wbak<<1);
}
return S_TRUE;
case 24:
pImage += y * WidthBytes + x*3;
r = (S_BYTE)PatColor; g = (S_BYTE)(PatColor>>8); b = (S_BYTE)(PatColor>>16);
while (h--)
{
w = (wbak+7)>>3;
switch (wbak%8)
{
case 0:do{*pImage++ = *pImage | r; *pImage++ = *pImage | g; *pImage++ = *pImage | b;
case 7: *pImage++ = *pImage | r; *pImage++ = *pImage | g; *pImage++ = *pImage | b;
case 6: *pImage++ = *pImage | r; *pImage++ = *pImage | g; *pImage++ = *pImage | b;
case 5: *pImage++ = *pImage | r; *pImage++ = *pImage | g; *pImage++ = *pImage | b;
case 4: *pImage++ = *pImage | r; *pImage++ = *pImage | g; *pImage++ = *pImage | b;
case 3: *pImage++ = *pImage | r; *pImage++ = *pImage | g; *pImage++ = *pImage | b;
case 2: *pImage++ = *pImage | r; *pImage++ = *pImage | g; *pImage++ = *pImage | b;
case 1: *pImage++ = *pImage | r; *pImage++ = *pImage | g; *pImage++ = *pImage | b;
}while (--w);
}
pImage += WidthBytes - wbak*3;
}
return S_TRUE;
default:
return S_FALSE;
}
return S_FALSE;
}
static S_BOOL __BitBlt2_Patcopy(S_BYTE *pImage, S_WORD BitsPixel, S_WORD WidthBytes, S_SHORT x, S_SHORT y, S_SHORT w, S_SHORT h, S_COLOR PatColor)
{
S_BYTE c8, r, g, b;
S_WORD c16;
S_SHORT wbak = w;
switch (BitsPixel)
{
case 4:
pImage += y * WidthBytes + (x>>1);
c8 = (S_BYTE)(PatColor<<4) | (S_BYTE)(PatColor&0xF);
while (h--)
{
w = wbak;
if (w && x&0x1)
{
*pImage = (*pImage & 0xF0) | (c8 & 0xF);
pImage++;
w--;
}
for (;w > 1; w -= 2)
{
*pImage++ = c8;
}
if (w == 1)
{
*pImage = (*pImage&0xF) | (c8 & 0xF0);
pImage++;
}
pImage += WidthBytes - ((wbak+1)>>1);
if (x&0x1 && !(wbak&0x1))
pImage -= 1;
}
return S_TRUE;
case 8:
pImage += y * WidthBytes + x;
c8 = (S_BYTE)PatColor;
while (h--)
{
w = (wbak+7)>>3;
switch (wbak%8)
{
case 0:do{*pImage++ = c8;
case 7: *pImage++ = c8;
case 6: *pImage++ = c8;
case 5: *pImage++ = c8;
case 4: *pImage++ = c8;
case 3: *pImage++ = c8;
case 2: *pImage++ = c8;
case 1: *pImage++ = c8;
}while (--w);
}
pImage += WidthBytes - wbak;
}
return S_TRUE;
case 16:
pImage += y * WidthBytes + (x<<1);
c16 = (S_WORD)PatColor;
while (h--)
{
w = (wbak+7)>>3;
switch (wbak%8)
{
case 0:do{*(S_WORD*)pImage = c16; pImage += 2;
case 7: *(S_WORD*)pImage = c16; pImage += 2;
case 6: *(S_WORD*)pImage = c16; pImage += 2;
case 5: *(S_WORD*)pImage = c16; pImage += 2;
case 4: *(S_WORD*)pImage = c16; pImage += 2;
case 3: *(S_WORD*)pImage = c16; pImage += 2;
case 2: *(S_WORD*)pImage = c16; pImage += 2;
case 1: *(S_WORD*)pImage = c16; pImage += 2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -