efont8x6.c
来自「深圳市微逻辑电子有限公司 巨果• Kingmos® 系统核心」· C语言 代码 · 共 476 行 · 第 1/2 页
C
476 行
0X00,0X00,0X00,0X00,0X1F,0X18,0X18,0X18,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,
0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,0XF0,
0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,
0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,
0X00,0X00,0X76,0XDC,0XC8,0XDC,0X76,0X00,
0X00,0X78,0XCC,0XF8,0XCC,0XF8,0XC0,0XC0,
0X00,0XFC,0XCC,0XC0,0XC0,0XC0,0XC0,0X00,
0X00,0XFE,0X6C,0X6C,0X6C,0X6C,0X6C,0X00,
0XFC,0XCC,0X60,0X30,0X60,0XCC,0XFC,0X00,
0X00,0X00,0X7E,0XD8,0XD8,0XD8,0X70,0X00,
0X00,0X66,0X66,0X66,0X66,0X7C,0X60,0XC0,
0X00,0X76,0XDC,0X18,0X18,0X18,0X18,0X00,
0XFC,0X30,0X78,0XCC,0XCC,0X78,0X30,0XFC,
0X38,0X6C,0XC6,0XFE,0XC6,0X6C,0X38,0X00,
0X38,0X6C,0XC6,0XC6,0X6C,0X6C,0XEE,0X00,
0X1C,0X30,0X18,0X7C,0XCC,0XCC,0X78,0X00,
0X00,0X00,0X7E,0XDB,0XDB,0X7E,0X00,0X00,
0X06,0X0C,0X7E,0XDB,0XDB,0X7E,0X60,0XC0,
0X38,0X60,0XC0,0XF8,0XC0,0X60,0X38,0X00,
0X78,0XCC,0XCC,0XCC,0XCC,0XCC,0XCC,0X00,
0X00,0XFC,0X00,0XFC,0X00,0XFC,0X00,0X00,
0X30,0X30,0XFC,0X30,0X30,0X00,0XFC,0X00,
0X60,0X30,0X18,0X30,0X60,0X00,0XFC,0X00,
0X18,0X30,0X60,0X30,0X18,0X00,0XFC,0X00,
0X0E,0X1B,0X1B,0X18,0X18,0X18,0X18,0X18,
0X18,0X18,0X18,0X18,0X18,0XD8,0XD8,0X70,
0X30,0X30,0X00,0XFC,0X00,0X30,0X30,0X00,
0X00,0X76,0XDC,0X00,0X76,0XDC,0X00,0X00,
0X38,0X6C,0X6C,0X38,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X18,0X18,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X18,0X00,0X00,0X00,
0X0F,0X0C,0X0C,0X0C,0XEC,0X6C,0X3C,0X1C,
0X78,0X6C,0X6C,0X6C,0X6C,0X00,0X00,0X00,
0X70,0X18,0X30,0X60,0X78,0X00,0X00,0X00,
0X00,0X00,0X3C,0X3C,0X3C,0X3C,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00
*/
};
static DWORD ROM8x6_Init(void);
static BOOL ROM8x6_Deinit( DWORD dwData );
static BOOL ROM8x6_InstallFont( DWORD dwData, LPCTSTR lpszPathName );
static HANDLE ROM8x6_CreateFont( DWORD dwData, const LOGFONT *lplf );
static BOOL ROM8x6_DeleteFont( HANDLE );
static int ROM8x6_MaxHeight( HANDLE );
static int ROM8x6_MaxWidth( HANDLE );
static int ROM8x6_WordLength( HANDLE, const BYTE FAR* lpText );
static int ROM8x6_WordHeight( HANDLE, WORD aWord );
static int ROM8x6_WordWidth( HANDLE, WORD aWord );
static int ROM8x6_WordMask( HANDLE, const BYTE FAR* lpText, _LPBITMAPDATA );
static int ROM8x6_TextWidth( HANDLE, const BYTE FAR* lpText, int aLimiteWidth );
static int ROM8x6_TextHeight( HANDLE, const BYTE FAR* lpText, int aLineWidth );
static const BYTE FAR* ROM8x6_NextWord( HANDLE, const BYTE FAR* lpText );
static void _DeleteObject( void );
static int _Resume();
// DWORD (*lpInit)(void);
// void (*lpDeinit)( DWORD dwData );
// BOOL (*lpInstallFont)( DWORD dwData, LPCTSTR lpszPathName );
// HANDLE (*lpCreateFont)( DWORD dwData, CONST LOGFONT *lplf );
// HANDLE (*lpDeleteFont)( HANDLE );
// int (*lpMaxHeight)( HANDLE );
//int (*lpMaxWidth)( HANDLE );
//int (*lpWordLength)( HANDLE, const BYTE FAR* lpText );
//int (*lpWordHeight)( HANDLE, WORD wWord );
//int (*lpWordWidth)( HANDLE, WORD wWord );
//int (*lpWordBitmap)( HANDLE, const BYTE FAR* lpText, _LPBITMAPDATA );
//int (*lpTextWidth)( HANDLE, const BYTE FAR* lpText, int iLimiteWidth );
//int (*lpTextHeight)( HANDLE, const BYTE FAR* lpText, int iLineWidth );
//const BYTE FAR* (*lpNextWord)( HANDLE, const BYTE FAR* );
const _FONTDRV FAR _ROM8x6Drv = {
// OBJ_FONT,
ROM8x6_Init,
ROM8x6_Deinit,
ROM8x6_InstallFont,
ROM8x6_CreateFont,
ROM8x6_DeleteFont,
ROM8x6_MaxHeight,
ROM8x6_MaxWidth,
ROM8x6_WordLength,
ROM8x6_WordHeight,
ROM8x6_WordWidth,
ROM8x6_WordMask,
ROM8x6_TextWidth,
ROM8x6_TextHeight,
ROM8x6_NextWord
};
//const _FONT _ROM8x6Font = {
// { OBJ_FONT | OBJ_FREE_DISABLE, NULL, NULL, NULL, 0 },
// 1,
// (HANDLE)1,
// (_LPFONTDRV)&_ROM8x6Drv };
//HFONT hEngFont8x6 = (HFONT)&ROM8x6Font;
//const _FONT * _lpROM8x6Font;
#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)*(lpText)) << 8) | *((lpText) + 1) )
#define _GET_ENGLISH( lpText ) ( *(lpText) )
#define FONT_HEIGHT 8
#define FONT_WIDTH 8
// define all function
static void _DeleteObject( void )
{
}
static int _Resume( void )
{
return 1;
}
static DWORD ROM8x6_Init( void )
{
//_Resume();
return 1;
}
static BOOL ROM8x6_Deinit( DWORD dwData )
{
_DeleteObject();
return TRUE;
}
BOOL ROM8x6_InstallFont( DWORD dwData, LPCTSTR lpszPathName )
{
return FALSE;
}
HANDLE ROM8x6_CreateFont( DWORD dwData, const LOGFONT *lplf )
{
return (HANDLE)1;
}
BOOL ROM8x6_DeleteFont( HANDLE handle )
{
return TRUE;
}
static int ROM8x6_MaxHeight( HANDLE handle )
{
return 8;
}
static int ROM8x6_MaxWidth( HANDLE handle )
{
return 6;
}
static int ROM8x6_WordHeight( HANDLE handle, WORD aWord )
{
return 8;
}
static int ROM8x6_WordWidth( HANDLE handle, WORD aWord )
{
return 6;
}
static int ROM8x6_WordMask( HANDLE handle, const BYTE FAR* lpText, _LPBITMAPDATA lpMask )
{
int iPosition;
iPosition=*lpText-'0';
if (iPosition<0||iPosition>=10)
iPosition=10; // This is Blank
iPosition*=8;
lpMask->bmWidth = 6;
lpMask->bmHeight = 8;
lpMask->bmWidthBytes = 1;
lpMask->bmBits = (BYTE *)&eng8x8Mask[iPosition];
return 1;
}
static int ROM8x6_TextWidth( HANDLE handle, const BYTE FAR* lpText, int len )
{
int w = 0;
if( lpText )
{
while( !IS_TEXT_MARK( *lpText ) && *lpText && len )
{
w += 6;
lpText++;
if( len > 0 )
len--;
}
}
return w;
}
static int ROM8x6_TextHeight( HANDLE handle, const BYTE FAR* lpText, int aLineWidth )
{
int h = 0, w = 0;
if( lpText )
{
h = FONT_HEIGHT;
do
{
if( (aLineWidth > 0 && w + 6 >= aLineWidth) ||
IS_TEXT_MARK( *lpText ) )
{
h += 8;
w = 0;
}
else
w += 6;
lpText++;
}while( *lpText );
}
return h;
}
const BYTE FAR* ROM8x6_NextWord( HANDLE handle, const BYTE FAR* lpText )
{
return (lpText + 1);
}
int ROM8x6_WordLength( HANDLE handle, const BYTE FAR* lpText )
{
int l = 0;
while( *lpText++ )l++;
return l;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?