mqpat.blt

来自「WinCE 3.0 BSP, 包含Inter SA1110, Intel_815」· BLT 代码 · 共 129 行

BLT
129
字号
void
MQGC::PatternSetupSolid( GPEBltParms *pBltParms, ULONG *ulCmd )
{
	// NO NEED to set pattern offset since it is a solid pattern anyway

	if ( m_pSrc->Format() == gpe1Bpp )
	{
		geWAITCMDFIFO( 3 );
		geREG(MONO_PATTERN0, 0xFFFFFFFFUL);
		geREG(MONO_PATTERN1, 0xFFFFFFFFUL);
		geREG(PAT_FG_COLOR, m_ulSolidColor);
		*ulCmd |= MONO_PATTERN;
	}
	else
	{
		geWAITCMDFIFO( 1 );
		geREG(PAT_FG_COLOR, m_ulSolidColor);
		*ulCmd |= MONO_PATTERN | MONO_SOLID;
	}
}

#ifdef	MPATBLT_ON
void
MQGC::PatternSetup1BPP( GPEBltParms *pBltParms, ULONG *ulCmd )
{
	// Set Pattern Offset
	m_ulDestXY |=
			((((m_ulDestXY & 0x0FFFUL) - pBltParms->pptlBrush->x)
				& 0x7UL) << 13)
			| (((((m_ulDestXY >> 16) & 0x0FFFUL) - pBltParms->pptlBrush->y)
				& 0x7UL) << 29);

	geWAITCMDFIFO( 4 );
	geREG(MONO_PATTERN0, *m_lpPattern);
	geREG(MONO_PATTERN1, *(m_lpPattern+1));
	geREG(PAT_FG_COLOR, *(m_pLookup+1));
	geREG(PAT_BG_COLOR,  *m_pLookup);
	*ulCmd |= MONO_PATTERN;
}
#endif	//MPATBLT_ON

#ifdef CHECK_8BPP
void
MQGC::PatternSetup8BPP( GPEBltParms *pBltParms, ULONG *ulCmd )
{
	ULONG	idx,max;

	DEBUGMSG(GPE_ZONE_MQEMUL1,(TEXT(">> PATTERN BLT8\r\n")));

	m_ulDestXY |=
			((((m_ulDestXY & 0x0FFFUL) - pBltParms->pptlBrush->x)
				& 0x7UL) << 13)
			| (((((m_ulDestXY >> 16) & 0x0FFFUL) - pBltParms->pptlBrush->y)
				& 0x7UL) << 29);

	max = COLOR_PATTERN + (16 * uBUSW);
	geWAITFULLCMDFIFO;
	for( idx = COLOR_PATTERN; idx < max; idx += uBUSW )
		geREG(idx, *m_lpPattern++);
}
#endif	//CHECK_8BPP

#ifdef CHECK_16BPP
void
MQGC::PatternSetup16BPP( GPEBltParms *pBltParms, ULONG *ulCmd )
{
	ULONG	idx,regmax;

	DEBUGMSG(GPE_ZONE_MQEMUL1,(TEXT(">> PATTERN BLT16\r\n")));

	// Set Pattern Offset
	m_ulDestXY |=
			((((m_ulDestXY & 0x0FFFUL) - pBltParms->pptlBrush->x)
				& 0x7UL) << 13)
			| (((((m_ulDestXY >> 16) & 0x0FFFUL) - pBltParms->pptlBrush->y)
				& 0x7UL) << 29);

#ifdef CHECK_CMDFIFO
	regmax = COLOR_PATTERN;
	idx = regmax;
	for (ULONG Max = 2 ; Max > 0; Max--)
	{
		geWAITFULLCMDFIFO;
		for(regmax += (16 * uBUSW); idx < regmax; idx += uBUSW )
			geREG(idx, *m_lpPattern++);
	}
#else	//CHECK_CMDFIFO
	regmax = COLOR_PATTERN + (32 * uBUSW);
	for( idx = COLOR_PATTERN; idx < regmax; idx += uBUSW )
		geREG(idx, *m_lpPattern++);
#endif	//CHECK_CMDFIFO
}
#endif	//CHECK_16BPP

#ifdef CHECK_24BPP
//Not supported!!!
void
MQGC::PatternSetup24BPP( GPEBltParms *pBltParms, ULONG *ulCmd )
{
}
#endif	//CHECK_24BPP

#ifdef CHECK_32BPP
void
MQGC::PatternSetup32BPP( GPEBltParms *pBltParms, ULONG *ulCmd )
{
	ULONG	idx,regmax;

	DEBUGMSG(GPE_ZONE_MQEMUL1,(TEXT(">> PATTERN BLT32\r\n")));

#ifdef CHECK_CMDFIFO
	regmax = COLOR_PATTERN;
	idx = regmax;
	for (ULONG Max = 2 ; Max > 0; Max--)
	{
		geWAITFULLCMDFIFO;
		for(regmax += (16 * uBUSW); idx < regmax; idx += uBUSW )
			geREG(idx, *m_lpPattern++);
	}
#else	//CHECK_CMDFIFO
	regmax = COLOR_PATTERN + (32 * uBUSW);
	for( idx = COLOR_PATTERN; idx < regmax; idx += uBUSW )
		geREG(idx, *m_lpPattern++);
#endif	//CHECK_CMDFIFO

}
#endif	//CHECK_32BPP

⌨️ 快捷键说明

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