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

📄 sysfont16.c

📁 深圳市微逻辑电子有限公司 巨果&#8226 Kingmos&reg 系统核心
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************
Copyright(c) 版权所有,1998-2003微逻辑。保留所有权利。
******************************************************/


/*****************************************************
文件说明:系统字体字模驱动程序
版本号:1.0.0
开发时期:2000
作者:李林
修改记录:

******************************************************/
#include <eframe.h>
#include <gwmeobj.h>
#include <eobjtype.h>
#include "hzk16.h"

static DWORD SYSFont16_Init(void);
static BOOL SYSFont16_Deinit( DWORD dwData );
static BOOL SYSFont16_InstallFont( DWORD dwData, LPCTSTR lpszPathName );
static HANDLE SYSFont16_CreateFont( DWORD dwData, const LOGFONT *lplf );
static BOOL SYSFont16_DeleteFont( HANDLE );
static int SYSFont16_MaxHeight( HANDLE );
static int SYSFont16_MaxWidth( HANDLE );
static int SYSFont16_WordLength( HANDLE, const BYTE FAR* lpText );
static int SYSFont16_WordHeight( HANDLE, WORD aWord );
static int SYSFont16_WordWidth( HANDLE, WORD aWord );
static int SYSFont16_WordMask( HANDLE, const BYTE FAR* lpText, _LPBITMAPDATA );
static int SYSFont16_TextWidth( HANDLE, const BYTE FAR* lpText, int aLimiteWidth );
static int SYSFont16_TextHeight( HANDLE, const BYTE FAR* lpText, int aLineWidth );
static const BYTE FAR* SYSFont16_NextWord( HANDLE, const BYTE FAR* lpText );

static LPCBYTE _GetChineseMask( WORD );
//	驱动程序接口函数
const _FONTDRV FAR _SYSFont16Drv = {
                      SYSFont16_Init,
                      SYSFont16_Deinit,
	                  SYSFont16_InstallFont,
	                  SYSFont16_CreateFont,
	                  SYSFont16_DeleteFont,
                      SYSFont16_MaxHeight,
                      SYSFont16_MaxWidth,
                      SYSFont16_WordLength,
                      SYSFont16_WordHeight,
                      SYSFont16_WordWidth,
                      SYSFont16_WordMask,
                      SYSFont16_TextWidth,
                      SYSFont16_TextHeight,
                      SYSFont16_NextWord 
};


enum{
    USE_NOFONT = 0,
    USE_ROMFONT = 1,
    USE_FILEFONT = 2
};

#define MK_FARP( seg, ofs ) ( (void * )MAKELONG( ofs, seg ) )

#define IS_CHINESE( lpText ) ( (*(lpText) & 0x80) && ( *((lpText) + 1) & 0x80 ) )
#define IS_TEXT_MARK( v ) ( (v) == TEXT_SOFT_BREAK || (v) == TEXT_KEY_BREAK || (v) == TEXT_EOF )
#define _GET_CHINESE( lpText ) ( (WORD)( (((WORD)*(lpText)) << 8) | *((lpText) + 1) ) )
#define _GET_ENGLISH( lpText ) ( *(lpText) )
#define FONT_HEIGHT 16
#define CHINESE_WIDTH 16
#define ENGLISH_WIDTH 8


// *****************************************************************
// 声明:static DWORD SYSFont16_Init( void )
// 参数:
//	无
// 返回值:
//	假如成功,返回对象句柄;否则,返回NULL
// 功能描述:
//	初始化字体驱动程序
// 引用: 
//	驱动程序接口函数
// *****************************************************************
static DWORD SYSFont16_Init( void )
{
	return 1;
}

// *****************************************************************
// 声明:static BOOL SYSFont16_Deinit( DWORD dwData )
// 参数:
//	IN dwData - 由SYSFont16_Init返回的对象句柄
// 返回值:
//	假如成功,返回TRUE;否则,返回FALSE
// 功能描述:
//	释放对象
// 引用: 
//	驱动程序接口函数
// *****************************************************************
static BOOL SYSFont16_Deinit( DWORD dwData )
{
	return 1;
}

// *****************************************************************
// 声明:BOOL SYSFont16_InstallFont( DWORD dwData, LPCTSTR lpszPathName )
// 参数:
//	IN dwData - 由ROM8x8_Init返回的对象句柄
//	IN lpszPathName - 文件路径名(字体文件)
// 返回值:
//	假如字体文件被该驱动程序识别,返回TRUE; 否则,返回FALSE
// 功能描述:
//	安装一个字体
// 引用: 
//	驱动程序接口函数
// *****************************************************************
BOOL SYSFont16_InstallFont( DWORD dwData, LPCTSTR lpszPathName )
{
	return FALSE;
}

// *****************************************************************
// 声明:HANDLE SYSFont16_CreateFont( DWORD dwData, const LOGFONT *lplf )
// 参数:
//	IN dwData - 由SYSFont16_Init返回的对象句柄
//	IN lplf - LOGFONT 结构指针,包含逻辑字体属性
// 返回值:
//	假如成功,返回打开的逻辑字体对象句柄
// 功能描述:
//	创建逻辑字体对象
// 引用: 
//	驱动程序接口函数
// *****************************************************************
HANDLE SYSFont16_CreateFont( DWORD dwData, const LOGFONT *lplf )
{
	return (HANDLE)1;
}

// *****************************************************************
// 声明:BOOL SYSFont16_DeleteFont( HANDLE handle )
// 参数:
//	IN handle - 由 SYSFont16_CreateFont 返回的逻辑字体对象句柄
// 返回值:
//	假如成功,返回TRUE; 否则,返回FALSE
// 功能描述:
//	删除逻辑字体对象
// 引用: 
//	驱动程序接口函数
// *****************************************************************

BOOL SYSFont16_DeleteFont( HANDLE handle )
{
	return TRUE;
}

// *****************************************************************
// 声明:static int SYSFont16_MaxHeight( HANDLE handle )
// 参数:
//	IN handle - 由 SYSFont16_CreateFont 返回的逻辑字体对象句柄
// 返回值:
//	返回逻辑字体的高度
// 功能描述:
//	得到逻辑字体的高度
// 引用: 
//	驱动程序接口函数
// *****************************************************************
static int SYSFont16_MaxHeight( HANDLE handle )
{
    return FONT_HEIGHT;
}

// *****************************************************************
// 声明:static int SYSFont16_MaxWidth( HANDLE handle )
// 参数:
//	IN handle - 由 SYSFont16_CreateFont 返回的逻辑字体对象句柄
// 返回值:
//	返回逻辑字体的宽度
// 功能描述:
//	得到逻辑字体的宽度
// 引用: 
//	驱动程序接口函数
// *****************************************************************
static int SYSFont16_MaxWidth( HANDLE handle )
{
    return 8;
}

// *****************************************************************
// 声明:static int SYSFont16_WordHeight( HANDLE handle, WORD aWord )
// 参数:
//	IN handle - 由 SYSFont16_CreateFont 返回的逻辑字体对象句柄
//	IN aWord - 字符代码
// 返回值:
//	返回字符的高度
// 功能描述:
//	得到字符的高度
// 引用: 
//	驱动程序接口函数
// *****************************************************************
static int SYSFont16_WordHeight( HANDLE handle, WORD aWord )
{
    return FONT_HEIGHT;
}

// *****************************************************************
// 声明:static int SYSFont16_WordWidth( HANDLE handle, WORD aWord )
// 参数:
//	IN handle - 由 SYSFont16_CreateFont 返回的逻辑字体对象句柄
//	IN aWord - 字符代码
// 返回值:
//	返回字符的宽度
// 功能描述:
//	得到字符的宽度
// 引用: 
//	驱动程序接口函数
// *****************************************************************
static int SYSFont16_WordWidth( HANDLE handle, WORD aWord )
{
    return aWord < 0xff ? ENGLISH_WIDTH : CHINESE_WIDTH;
}

// *****************************************************************
// 声明:static int SYSFont16_WordMask( HANDLE handle, const BYTE FAR* lpText, _LPBITMAPDATA lpMask )
// 参数:
//	IN handle - 由 SYSFont16_CreateFont 返回的逻辑字体对象句柄
//	IN lpText - 文本指针
//	OUT lpMask - 用于接受字模的结构指针
// 返回值:
//	返回字符代码的字节数(宽字符为2),lpMask包含该字符的长宽和字模地址
// 功能描述:
//	得到字符代码的字节数(宽字符为2)和字符的长宽和字模地址
// 引用: 
//	驱动程序接口函数
// *****************************************************************
static int SYSFont16_WordMask( HANDLE handle, LPCBYTE lpText, _LPBITMAPDATA lpMask )
{
#ifdef EML_DOS
    static const WORD FAR chineseMask[16] =
    { 0xfffe,
      0x8002,
      0x8002,
      0x8002,
      0x8002,
      0x8002,
      0x8002,
      0x8002,
      0x8002,
      0x8002,
      0x8002,
      0x8002,
      0x8002,
      0x8002,
      0xfffe,
      0x0000 };
    static const BYTE FAR englishMask[16] =
    { 0xfe,
      0x82,
      0x82,
      0x82,
      0x82,
      0x82,
      0x82,
      0x82,

⌨️ 快捷键说明

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