📄 gdi0.c
字号:
#include "winav.h"
#include "gdi.h"
extern DWORD _dwGDITemp;
extern WORD _wGDITemp;
extern BYTE _bGDITemp;
// This function must be put in Common bank
void GDI_OutputText(WORD code *pw)
{
#ifndef NO_GDI
BYTE bLength, bStart;
// Brian1.21, only OSDND need this special process
// move it to OSDN module to reduce common bank
/*
// Brian1.00
if (__bGDIMacroParam)
{
_wGDITemp = GDI_GetCodeStringWidth(pw);
if (__wGDIx >_wGDITemp)
{
// for OSDVP, it may need to minus the string width first.
__wGDIx -= _wGDITemp;
}
else
{
// string too long
__wGDIx = 0;
}
}
*/
bLength = (BYTE)pw[0];
bStart = 1;
while (bLength)
{
if (bLength > GDI_STRING_LENGTH)
{
for (_bGDITemp=bStart; _bGDITemp < (bStart+GDI_STRING_LENGTH); _bGDITemp++)
__wGDIString[_bGDITemp-bStart+1] = pw[_bGDITemp];
__wGDIString[0] = GDI_STRING_LENGTH;
bLength -= GDI_STRING_LENGTH;
bStart += GDI_STRING_LENGTH;
}
else
{
for (_bGDITemp=bStart; _bGDITemp < (bStart+bLength); _bGDITemp++)
__wGDIString[_bGDITemp-bStart+1] = pw[_bGDITemp];
__wGDIString[0] = bLength;
bLength = 0;
}
GDI_DRAW_STRING(__wGDIx, __wGDIy);
__wGDIx += GDI_GetStringWidth();
}
#endif //#ifndef NO_GDI
}
// This function must be put in Common bank
void GDI_CopyCodeString(WORD code *pw)
{
#ifndef NO_GDI
for (_bGDITemp=0; _bGDITemp<=pw[0] && _bGDITemp<=GDI_STRING_LENGTH; _bGDITemp++)
__wGDIString[_bGDITemp] = pw[_bGDITemp];
#endif //#ifndef NO_GDI
}
WORD GDI_GetCodeStringWidth(WORD code *pw)
{
#ifndef NO_GDI
_dwGDITemp = 0;
// calculate total text width
for (_bGDITemp=0; _bGDITemp<pw[0]; _bGDITemp++)
{
_dwGDITemp += (pw[_bGDITemp+1] & 0xF000) >> 10; // get width ( >> 12 * 4)
}
return (WORD)_dwGDITemp;
#else
return 0;
#endif //#ifndef NO_GDI
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -