📄 mqmacros.blt
字号:
{\
geREG(SRC_IMAGE_DATA,0UL);\
}
#endif
#else //CHECK_SRCFIFO
#define MACRO_PUMP_PACKED_SRCFIFO(pSrcBits, ulDWords, ulExtras, lSrcStride, height) \
PULONG pulData; \
ULONG i; \
while( height-- ) \
{ \
pulData = (PULONG)(((ULONG)pSrcBits + 3UL) & ~0x03UL); \
for ( i = 0; i < ulDWords; i++ ) \
geREG(SRC_IMAGE_DATA, *pulData++); \
pSrcBits += lSrcStride; \
} \
while( ulExtras-- ) \
geREG(SRC_IMAGE_DATA, 0UL);
#define MACRO_PUMP_PACKED_SRCFIFO180(pSrcBits, ulDWords, ulExtras, \
ulDWordsTotal, lSrcStride, height) \
PULONG pulData;\
ULONG ulDataTmp,ulData; \
ULONG i;\
while( height-- ) \
{ \
pulData = (PULONG)(((ULONG)pSrcBits) & ~0x03UL); \
for ( i = 0; i < ulDWords; i++ ) \
{\
ulDataTmp = *pulData--;\
ulData = (ulDataTmp >> 24) | (ulDataTmp&0x00FF0000) >> 8 \
| (ulDataTmp&0x0000FF00) << 8 | (ulDataTmp &0x000000FF)<<24;\
geREG(SRC_IMAGE_DATA, ulData); \
}\
pSrcBits += lSrcStride; \
} \
while( ulExtras-- ) \
geREG(SRC_IMAGE_DATA, 0UL);
#define MACRO_PUMP_PACKED_SRCFIFO90_270(pSrcBits, width, height, LineInc,\
PixelInc,ulExtras)\
ULONG w;\
PBYTE pByte;\
ULONG ulData;\
while( height-- ) \
{ \
w = width;\
pByte = (PBYTE)pSrcBits;\
pSrcBits += LineInc; \
while ( w >= 4) \
{ \
ulData = (ULONG)(*pByte); \
pByte += PixelInc;\
ulData |= ( (ULONG )(*pByte) << 8);\
pByte += PixelInc;\
ulData |= ( (ULONG )(*pByte) << 16);\
pByte += PixelInc;\
ulData |= ( (ULONG )(*pByte) << 24);\
pByte += PixelInc;\
geREG(SRC_IMAGE_DATA,ulData);\
w -= 4;\
}\
if(w)\
{\
switch(w)\
{\
default:\
break;\
case 1: \
ulData = (ULONG)(*pByte); \
break;\
case 2:\
ulData = (ULONG)(*pByte); \
pByte += PixelInc;\
ulData |= ( (ULONG )(*pByte) << 8);\
break;\
case 3:\
ulData = (ULONG)(*pByte); \
pByte += PixelInc;\
ulData |= ( (ULONG )(*pByte) << 8);\
pByte += PixelInc;\
ulData |= ( (ULONG )(*pByte) << 16);\
break;\
}\
geREG(SRC_IMAGE_DATA,ulData);\
}\
}\
while(ulExtras--)\
{\
geREG(SRC_IMAGE_DATA,0UL);\
}
#define MACRO_PUMP_PACKED_SRCFIFO16BPP180(pSrcBits, ulDWords, ulExtras, \
ulDWordsTotal, lSrcStride, height) \
PULONG pulData;\
ULONG ulDataTmp,ulData; \
ULONG i,j;\
while( height-- ) \
{ \
pulData = (PULONG)(((ULONG)pSrcBits) & ~0x03UL); \
j = ulDWords; \
while ( j >= SRC_FIFO_MAX_DWORDS ) \
{ \
for ( i = 0; i < SRC_FIFO_MAX_DWORDS; i++ ) \
{ \
ulDataTmp = *pulData--;\
ulData = (ulDataTmp >> 16) | (ulDataTmp&0x0000FFFF) <<16;\
geREG(SRC_IMAGE_DATA, ulData); \
}\
j -= SRC_FIFO_MAX_DWORDS; \
}\
while( j-- ) \
{\
ulDataTmp = *pulData--;\
ulData = (ulDataTmp >> 16) | (ulDataTmp&0x0000FFFF) <<16;\
geREG(SRC_IMAGE_DATA, ulData); \
}\
pSrcBits += lSrcStride; \
} \
while( ulExtras-- ) \
geREG(SRC_IMAGE_DATA, 0UL);
#define MACRO_PUMP_PACKED_SRCFIFO16BPP90_270(pSrcBits, width, height, LineInc,\
PixelInc,ulExtras)\
ULONG w;\
PDWORD pDWord;\
ULONG ulData;\
ULONG ulData1;\
ULONG i;\
ULONG ulWordStart;\
PDWORD pBuffer=(PDWORD)MM_GetMemory(width*4);\
ulWordStart = (ULONG)pSrcBits & 0x03UL;\
if(ulWordStart)\
{\
--height;\
w = width;\
pDWord = (PDWORD)(((ULONG)pSrcBits) & ~0x03UL); \
pSrcBits += LineInc; \
while ( w >= 2) \
{ \
ulData = *pDWord; \
pDWord = (PDWORD)((PWORD)(pDWord) + PixelInc);\
ulData1 = *pDWord; \
pDWord = (PDWORD)((PWORD)(pDWord) + PixelInc);\
ulData = (ulData>>16) + (ulData1&0xFFFF0000);\
geREG(SRC_IMAGE_DATA,ulData);\
w -= 2;\
}\
if(w)\
{\
ulData = (ulData>>16);\
geREG(SRC_IMAGE_DATA,ulData);\
}\
}\
while(height)\
{ \
--height;\
i=0;\
w = width;\
pDWord = (PDWORD)(((ULONG)pSrcBits) & ~0x03UL); \
pSrcBits += LineInc; \
while ( w >= 2) \
{ \
ulData = *pDWord; \
pDWord = (PDWORD)((PWORD)(pDWord) + PixelInc);\
ulData1 = *pDWord; \
pDWord = (PDWORD)((PWORD)(pDWord) + PixelInc);\
pBuffer[i++]= (ulData>>16) + (ulData1&0xFFFF0000);\
ulData = (ulData & 0x0000FFFF) +(ulData1<<16);\
geREG(SRC_IMAGE_DATA,ulData);\
w -= 2;\
}\
if(w)\
{\
ulData = *pDWord; \
pBuffer[i]= (ulData>>16);\
geREG(SRC_IMAGE_DATA,ulData);\
}\
i=0;\
pSrcBits += LineInc; \
if(height)\
{\
--height;\
w = width;\
while ( w >= 2) \
{ \
ulData = pBuffer[i++]; \
geREG(SRC_IMAGE_DATA,ulData);\
w -= 2;\
}\
if(w)\
{\
ulData = pBuffer[i];\
geREG(SRC_IMAGE_DATA,ulData);\
}\
}\
}\
MM_ReturnMemory((ADDRESS)pBuffer);\
while(ulExtras--)\
{\
geREG(SRC_IMAGE_DATA,0UL);\
}
#endif //CHECK_SRCFIFO
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//$$$$ Routine: Pump Packed Src FIFO with Lookup $$$$$$$$$$$$$$$$$$$
#ifdef CHECK_SRCFIFO
#define MACRO_PUMP_PACKED_SRCFIFO_LOOKUP8BPP(pSrcBits, ulDWords, ulExtras, \
ulDWordsTotal, lSrcStride, pLookup) \
PULONG pulData; \
ULONG ulData, ulRData, i, j; \
while( height-- ) \
{ \
pulData = (PULONG)(((ULONG)pSrcBits + 3UL) & ~0x03UL); \
j = ulDWords; \
while ( j >= SRC_FIFO_MAX_DWORDS ) \
{ \
geWAITSRCFIFO( SRC_FIFO_MAX_DWORDS ); \
for ( i = 0; i < SRC_FIFO_MAX_DWORDS; i++ ) \
{ \
ulRData = *pulData++; \
LOOKUP_8BPP(ulData, ulRData, pLookup); \
geREG(SRC_IMAGE_DATA, ulData); \
} \
j -= SRC_FIFO_MAX_DWORDS; \
}\
geWAITSRCFIFO( j ); \
while( j-- ) \
{ \
ulRData = *pulData++; \
LOOKUP_8BPP(ulData, ulRData, pLookup); \
geREG(SRC_IMAGE_DATA, ulData); \
} \
pSrcBits += lSrcStride; \
} \
geWAITSRCFIFO( ulExtras ); \
while( ulExtras-- ) \
geREG(SRC_IMAGE_DATA, 0UL);
#if 1 // No FIFO check version
#define MACRO_PUMP_PACKED_SRCFIFO_LOOKUP8BPP180(pSrcBits, ulDWords, ulExtras, \
ulDWordsTotal, lSrcStride, pLookup) \
ULONG j;\
ULONG ulData,ulRData;\
PULONG pulData;\
while( height-- ) \
{ \
pulData = (PULONG)(((ULONG)pSrcBits) & ~0x03UL); \
j = ulDWords; \
while (j) \
{ \
--j;\
ulRData = *pulData--; \
LOOKUP_8BPP(ulData, ulRData, pLookup); \
ulRData = (ulData >> 24) | (ulData &0x00FF0000) >> 8 \
| (ulData & 0x0000FF00) << 8 | (ulData & 0x000000FF)<<24;\
geREG(SRC_IMAGE_DATA, ulRData); \
}\
pSrcBits += lSrcStride; \
} \
while( ulExtras) \
{\
--ulExtras;\
geREG(SRC_IMAGE_DATA, 0UL);\
}
#else // FIFO check version
#define MACRO_PUMP_PACKED_SRCFIFO_LOOKUP8BPP180(pSrcBits, ulDWords, ulExtras, \
ulDWordsTotal, lSrcStride, pLookup) \
ULONG i,j;\
ULONG ulData,ulRData;\
PULONG pulData;\
while( height-- ) \
{ \
pulData = (PULONG)(((ULONG)pSrcBits) & ~0x03UL); \
j = ulDWords; \
while ( j >= SRC_FIFO_MAX_DWORDS ) \
{ \
geWAITSRCFIFO( SRC_FIFO_MAX_DWORDS ); \
for ( i = 0; i < SRC_FIFO_MAX_DWORDS; i++ ) \
{ \
ulRData = *pulData--; \
LOOKUP_8BPP(ulData, ulRData, pLookup); \
ulRData = (ulData >> 24) | (ulData &0x00FF0000) >> 8 \
| (ulData & 0x0000FF00) << 8 | (ulData & 0x000000FF)<<24;\
geREG(SRC_IMAGE_DATA, ulRData); \
} \
j -= SRC_FIFO_MAX_DWORDS; \
}\
geWAITSRCFIFO( j ); \
while( j-- ) \
{ \
ulRData = *pulData--; \
LOOKUP_8BPP(ulData, ulRData, pLookup); \
ulRData = (ulData >> 24) | (ulData &0x00FF0000) >> 8 \
| (ulData & 0x0000FF00) << 8 | (ulData & 0x000000FF)<<24;\
geREG(SRC_IMAGE_DATA, ulRData); \
} \
pSrcBits += lSrcStride; \
} \
geWAITSRCFIFO( ulExtras ); \
while( ulExtras-- ) \
geREG(SRC_IMAGE_DATA, 0UL);
#endif
#if 1 // NO FIFO check version
#define MACRO_PUMP_PACKED_SRCFIFO_LOOKUP8BPP90_270(pSrcBits, width, height, LineInc, \
PixelInc, ulExtras, pLookup) \
ULONG ulData,ulRData; \
ULONG w;\
PBYTE pByte;\
while( height-- ) \
{ \
w = width;\
pByte = (PBYTE)pSrcBits;\
pSrcBits += LineInc; \
while ( w >= 4) \
{ \
ulData= (ULONG)(*pByte); \
pByte += PixelInc;\
ulData|= ( (ULONG )(*pByte) << 8);\
pByte += PixelInc;\
ulData|= ( (ULONG )(*pByte) << 16);\
pByte += PixelInc;\
ulData|= ( (ULONG )(*pByte) << 24);\
pByte += PixelInc;\
LOOKUP_8BPP(ulRData, ulData,pLookup); \
geREG(SRC_IMAGE_DATA,ulRData);\
w -= 4;\
}\
if(w)\
{\
switch(w)\
{\
default:\
break;\
case 1: \
ulData = (ULONG)(*pByte); \
break;\
case 2:\
ulData = (ULONG)(*pByte); \
pByte += PixelInc;\
ulData |= ( (ULONG )(*pByte) << 8);\
break;\
case 3:\
ulData = (ULONG)(*pByte); \
pByte += PixelInc;\
ulData |= ( (ULONG )(*pByte) << 8);\
pByte += PixelInc;\
ulData |= ( (ULONG )(*pByte) << 16);\
break;\
}\
LOOKUP_8BPP(ulRData, ulData, pLookup); \
geREG(SRC_IMAGE_DATA,ulRData);\
}\
}\
while(ulExtras--)\
{\
geREG(SRC_IMAGE_DATA,0UL);\
}
#else // FIFO check version
#define MACRO_PUMP_PACKED_SRCFIFO_LOOKUP8BPP90_270(pSrcBits, width, height, LineInc, \
PixelInc, ulExtras, pLookup) \
ULONG i,j;\
PBYTE pByte;\
ULONG ulData,ulRData; \
ULONG w=(width&0x03UL);\
while( height-- ) \
{ \
j = width>>2;\
pByte = (PBYTE)pSrcBits;\
pSrcBits += LineInc; \
while ( j >= SRC_FIFO_MAX_DWORDS ) \
{\
geWAITSRCFIFO( SRC_FIFO_MAX_DWORDS ); \
for ( i = 0; i < SRC_FIFO_MAX_DWORDS; i++ ) \
{ \
ulData = (ULONG)(*pByte); \
pByte += PixelInc;\
ulData |= ( (ULONG )(*pByte) << 8);\
pByte += PixelInc;\
ulData |= ( (ULONG )(*pByte) << 16);\
pByte += PixelInc;\
ulData |= ( (ULONG )(*pByte) << 24);\
pByte += PixelInc;\
LOOKUP_8BPP(ulRData, ulData, pLookup); \
geREG(SRC_IMAGE_DATA,ulRData);\
}\
j -= SRC_FIFO_MAX_DWORDS; \
}\
geWAITSRCFIFO( j ); \
while(j) \
{ \
--j;\
ulData = (ULONG)(*pByte); \
pByte += PixelInc;\
ulData |= ( (ULONG )(*pByte) << 8);\
pByte += PixelInc;\
ulData |= ( (ULONG )(*pByte) << 16);\
pByte += PixelInc;\
ulData |= ( (ULONG )(*pByte) << 24);\
pByte += PixelInc;\
LOOKUP_8BPP(ulRData, ulData, pLookup); \
geREG(SRC_IMAGE_DATA,ulRData);\
}\
if(w)\
{\
switch(w)\
{\
default:\
break;\
case 1: \
ulData = (ULONG)(*pByte); \
break;\
case 2:\
ulData = (ULONG)(*pByte); \
pByte += PixelInc;\
ulData |= ( (ULONG )(*pByte) << 8);\
break;\
case 3:\
ulData = (ULONG)(*pByte); \
pByte += PixelInc;\
ulData |= ( (ULONG )(*pByte) << 8);\
pByte += PixelInc;\
ulData |= ( (ULONG )(*pByte) << 16);\
break;\
}\
geWAITSRCFIFO( 1 ); \
LOOKUP_8BPP(ulRData, ulData, pLookup); \
geREG(SRC_IMAGE_DATA,ulRData);\
}\
}\
geWAITSRCFIFO( ulExtras ); \
while(ulExtras--)\
{\
geREG(SRC_IMAGE_DATA,0UL);\
}
#endif
#if 1 // No FIFO check version
#define MACRO_PUMP_PACKED_SRCFIFO_LOOKUP16BPP180(pSrcBits, ulDWords, ulExtras, \
ulDWordsTotal, lSrcStride, pLookup) \
ULONG j;\
ULONG ulData,ulRData;\
PULONG pulData;\
while( height-- ) \
{ \
pulData = (PULONG)(((ULONG)pSrcBits) & ~0x03UL); \
j = ulDWords; \
while (j) \
{ \
--j;\
ulRData = *pulData--; \
ulData = (ulRData >> 16) | (ulRData &0x0000FFFF) << 16; \
LOOKUP_16BPP(ulRData, ulData, pLookup); \
geREG(SRC_IMAGE_DATA, ulRData); \
} \
pSrcBits += lSrcStride; \
} \
while( ulExtras) \
{\
--ulExtras;\
geREG(SRC_IMAGE_DATA, 0UL);\
}
#else // FIFO check version
#define MACRO_PUMP_PACKED_SRCFIFO_LOOKUP16BPP180(pSrcBits, ulDWords, ulExtras, \
ulDWordsTotal, lSrcStride, pLookup) \
ULONG i,j;\
ULONG ulData,ulRData;\
PULONG pulData;\
while( height-- ) \
{ \
pulData = (PULONG)(((ULONG)pSrcBits) & ~0x03UL); \
j = ulDWords; \
while ( j >= SRC_FIFO_MAX_DWORDS ) \
{ \
geWAITSRCFIFO( SRC_FIFO_MAX_DWORDS ); \
for ( i = 0; i < SRC_FIFO_MAX_DWORDS; i++ ) \
{ \
ulRData = *pulData--; \
LOOKUP_16BPP(ulData, ulRData, pLookup); \
ulRData = (ulData >> 16) | (ulData &0x0000FFFF) << 16; \
geREG(SRC_IMAGE_DATA, ulRData); \
} \
j -= SRC_FIFO_MAX_DWORDS; \
}\
geWAITSRCFIFO( j ); \
while( j-- ) \
{ \
ulRData = *pulData--; \
LOOKUP_16BPP(ulData, ulRData, pLookup); \
ulRData = (ulData >> 16) | (ulData &0x0000FFFF) << 16; \
geREG(SRC_IMAGE_DATA, ulRData); \
} \
pSrcBits += lSrcStride; \
} \
geWAITSRCFIFO( ulExtras ); \
while( ulExtras-- ) \
geREG(SRC_IMAGE_DATA, 0UL);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -