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

📄 haigdi.c

📁 HGui4.1.rar
💻 C
📖 第 1 页 / 共 5 页
字号:
			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 + -