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

📄 efont8x8.c

📁 深圳市微逻辑电子有限公司 巨果&#8226 Kingmos&reg 系统核心
💻 C
📖 第 1 页 / 共 2 页
字号:
	                  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 + -