📄 efont8x8.c
字号:
ROM8x8_InstallFont,
ROM8x8_CreateFont,
ROM8x8_DeleteFont,
ROM8x8_MaxHeight,
ROM8x8_MaxWidth,
ROM8x8_WordLength,
ROM8x8_WordHeight,
ROM8x8_WordWidth,
ROM8x8_WordMask,
ROM8x8_TextWidth,
ROM8x8_TextHeight,
ROM8x8_NextWord
};
#define IS_TEXT_MARK( v ) ( (v) == TEXT_SOFT_BREAK || (v) == TEXT_KEY_BREAK || (v) == TEXT_EOF )
#define FONT_HEIGHT 8
#define FONT_WIDTH 8
// define all function
// *****************************************************************
// 声明:static DWORD ROM8x8_Init( void )
// 参数:
// 无
// 返回值:
// 假如成功,返回对象句柄;否则,返回NULL
// 功能描述:
// 初始化字体驱动程序
// 引用:
// 驱动程序接口函数
// *****************************************************************
static DWORD ROM8x8_Init( void )
{
return 1;
}
// *****************************************************************
// 声明:static BOOL ROM8x8_Deinit( DWORD dwData )
// 参数:
// IN dwData - 由ROM8x8_Init返回的对象句柄
// 返回值:
// 假如成功,返回TRUE;否则,返回FALSE
// 功能描述:
// 释放对象
// 引用:
// 驱动程序接口函数
// *****************************************************************
static BOOL ROM8x8_Deinit( DWORD dwData )
{
return TRUE;
}
// *****************************************************************
// 声明:BOOL ROM8x8_InstallFont( DWORD dwData, LPCTSTR lpszPathName )
// 参数:
// IN dwData - 由ROM8x8_Init返回的对象句柄
// IN lpszPathName - 文件路径名(字体文件)
// 返回值:
// 假如字体文件被该驱动程序识别,返回TRUE; 否则,返回FALSE
// 功能描述:
// 安装一个字体
// 引用:
// 驱动程序接口函数
// *****************************************************************
BOOL ROM8x8_InstallFont( DWORD dwData, LPCTSTR lpszPathName )
{
return FALSE;
}
// *****************************************************************
// 声明:HANDLE ROM8x8_CreateFont( DWORD dwData, const LOGFONT *lplf )
// 参数:
// IN dwData - 由ROM8x8_Init返回的对象句柄
// IN lplf - LOGFONT 结构指针,包含逻辑字体属性
// 返回值:
// 假如成功,返回打开的逻辑字体对象句柄
// 功能描述:
// 创建逻辑字体对象
// 引用:
// 驱动程序接口函数
// *****************************************************************
HANDLE ROM8x8_CreateFont( DWORD dwData, const LOGFONT *lplf )
{
return (HANDLE)1;
}
// *****************************************************************
// 声明:BOOL ROM8x8_DeleteFont( HANDLE handle )
// 参数:
// IN handle - 由 ROM8x8_CreateFont 返回的逻辑字体对象句柄
// 返回值:
// 假如成功,返回TRUE; 否则,返回FALSE
// 功能描述:
// 删除逻辑字体对象
// 引用:
// 驱动程序接口函数
// *****************************************************************
BOOL ROM8x8_DeleteFont( HANDLE handle )
{
return TRUE;
}
// *****************************************************************
// 声明:static int ROM8x8_MaxHeight( HANDLE handle )
// 参数:
// IN handle - 由 ROM8x8_CreateFont 返回的逻辑字体对象句柄
// 返回值:
// 返回逻辑字体的高度
// 功能描述:
// 得到逻辑字体的高度
// 引用:
// 驱动程序接口函数
// *****************************************************************
static int ROM8x8_MaxHeight( HANDLE handle )
{
return 8;
}
// *****************************************************************
// 声明:static int ROM8x8_MaxWidth( HANDLE handle )
// 参数:
// IN handle - 由 ROM8x8_CreateFont 返回的逻辑字体对象句柄
// 返回值:
// 返回逻辑字体的宽度
// 功能描述:
// 得到逻辑字体的宽度
// 引用:
// 驱动程序接口函数
// *****************************************************************
static int ROM8x8_MaxWidth( HANDLE handle )
{
return 8;
}
// *****************************************************************
// 声明:static int ROM8x8_WordHeight( HANDLE handle, WORD aWord )
// 参数:
// IN handle - 由 ROM8x8_CreateFont 返回的逻辑字体对象句柄
// IN aWord - 字符代码
// 返回值:
// 返回字符的高度
// 功能描述:
// 得到字符的高度
// 引用:
// 驱动程序接口函数
// *****************************************************************
static int ROM8x8_WordHeight( HANDLE handle, WORD aWord )
{
return 8;
}
// *****************************************************************
// 声明:static int ROM8x8_WordWidth( HANDLE handle, WORD aWord )
// 参数:
// IN handle - 由 ROM8x8_CreateFont 返回的逻辑字体对象句柄
// IN aWord - 字符代码
// 返回值:
// 返回字符的宽度
// 功能描述:
// 得到字符的宽度
// 引用:
// 驱动程序接口函数
// *****************************************************************
static int ROM8x8_WordWidth( HANDLE handle, WORD aWord )
{
return 8;
}
// *****************************************************************
// 声明:static int ROM8x8_WordMask( HANDLE handle, const BYTE FAR* lpText, _LPBITMAPDATA lpMask )
// 参数:
// IN handle - 由 ROM8x8_CreateFont 返回的逻辑字体对象句柄
// IN lpText - 文本指针
// OUT lpMask - 用于接受字模的结构指针
// 返回值:
// 返回字符代码的字节数(宽字符为2),lpMask包含该字符的长宽和字模地址
// 功能描述:
// 得到字符代码的字节数(宽字符为2)和字符的长宽和字模地址
// 引用:
// 驱动程序接口函数
// *****************************************************************
static int ROM8x8_WordMask( HANDLE handle, const BYTE FAR* lpText, _LPBITMAPDATA lpMask )
{
lpMask->bmWidth = 8;
lpMask->bmHeight = 8;
lpMask->bmWidthBytes = 1;
lpMask->bmBits = (LPBYTE)&eng8x8Mask[(*lpText) << 3];
return 1;
}
// *****************************************************************
// 声明:static int ROM8x8_TextWidth( HANDLE handle, const BYTE FAR* lpText, int len )
// 参数:
// IN handle - 由 ROM8x8_CreateFont 返回的逻辑字体对象句柄
// IN lpText - 文本指针
// IN len - 需要统计的文本长度
// 返回值:
// 文本的象素长度
// 功能描述:
// 得到文本的象素长度,如果文本长度(len)中间包含换行字符,则统计到换行字符位置为止。
// 引用:
// 驱动程序接口函数
// *****************************************************************
static int ROM8x8_TextWidth( HANDLE handle, const BYTE FAR* lpText, int len )
{
int w = 0;
if( lpText )
{
while( !IS_TEXT_MARK( *lpText ) && *lpText && len )
{
w += 8;
lpText++;
if( len > 0 )
len--;
}
}
return w;
}
// *****************************************************************
// 声明:static int ROM8x8_TextHeight( HANDLE handle, const BYTE FAR* lpText, int aLineWidth )
// 参数:
// IN handle - 由 ROM8x8_CreateFont 返回的逻辑字体对象句柄
// IN lpText - 文本指针
// IN aLineWidth - 需要统计的象素最大宽度,如果为0,则没有宽度限制
// 返回值:
// 文本的象素高度
// 功能描述:
// 得到文本的象素高度,如果文本象素长度 大于等于aLineWidth则增加字体高度;
// 如果文本中间包含换行字符,则增加字体高度。
// 如果aLineWidth为0,则没有宽度限制,以换行字符确定下一行
// 引用:
// 驱动程序接口函数
// *****************************************************************
static int ROM8x8_TextHeight( HANDLE handle, const BYTE FAR* lpText, int aLineWidth )
{
int h = 0, w = 0;
if( lpText )
{
h = FONT_HEIGHT;
do
{
if( (aLineWidth > 0 && w + 8 >= aLineWidth) ||
IS_TEXT_MARK( *lpText ) )
{ //换行或宽度限制已到
h += 8;
w = 0;
}
else
w += 8;
lpText++;
}while( *lpText );
}
return h;
}
// *****************************************************************
// 声明:const BYTE FAR* ROM8x8_NextWord( HANDLE handle, const BYTE FAR* lpText )
// 参数:
// IN handle - 由 ROM8x8_CreateFont 返回的逻辑字体对象句柄
// IN lpText - 文本指针
// 返回值:
// 文本的下一个字符地址指针
// 功能描述:
// 得到文本的下一个字符地址指针
// 引用:
// 驱动程序接口函数
// *****************************************************************
const BYTE FAR* ROM8x8_NextWord( HANDLE handle, const BYTE FAR* lpText )
{
return (lpText + 1);
}
// *****************************************************************
// 声明:int ROM8x8_WordLength( HANDLE handle, const BYTE FAR* lpText )
// 参数:
// IN handle - 由 ROM8x8_CreateFont 返回的逻辑字体对象句柄
// IN lpText - 文本指针
// 返回值:
// 文本中以字符为单位的数量
// 功能描述:
// 得到文本中以字符为单位的数量
// 引用:
// 驱动程序接口函数
// *****************************************************************
int ROM8x8_WordLength( HANDLE handle, const BYTE FAR* lpText )
{
int l = 0;
while( *lpText++ )l++;
return l;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -