论坛元老
 
- 积分
- 3772
- 金钱
- 3772
- 注册时间
- 2015-4-26
- 在线时间
- 765 小时
|
发表于 2018-10-6 20:06:01
|
显示全部楼层
[mw_shl_code=applescript,true]
#ifndef __FONTS_MANAGER_H__
#define __FONTS_MANAGER_H__
typedef struct FontBitMap {
int iXLeft; /* lcd坐标系中字模左上角坐标值 */
int iYTop;
int iXMax; /* lcd坐标系中字模右下角坐标值 */
int iYMax;
int iBpp;
int iPitch; /* 对于freetype来说,每个字的大小并不一致,这里表示一行用几个字节表示 */
int iCurOriginX; /* LCD坐标系中字模左下角坐标值 */
int iCurOriginY;
int iNextOriginX; /* 每次显示都会计算出下一次要显示的字模的原点坐标 */
int iNextOriginY;
unsigned char *pucBuffer;
}T_FontBitMap, *PT_FontBitMap;
typedef struct FontOpr {
char *name;
int (*FontInit)(char *strFontFile, unsigned int dwFontSize);
int (*GetFontBitmap)(unsigned int dwCode, PT_FontBitMap ptFontBitMap);
struct FontOpr *ptNext;
}T_FontOpr, *PT_FontOpr;
/******************************ascii.c************************************/
int AsciiInit(void);
/******************************gbk.c************************************/
int GBKInit(void);
/******************************freetype.c************************************/
int FreetypeInit(void);
/******************************fonts_manager.c************************************/
int RegisterFontOpr(PT_FontOpr ptFontOpr);
void ShowFontOpr(void);
PT_FontOpr GetFontOpr(char *strName);
int FontsInit(void);
#endif /* __FONTS_MANAGER_H__ */
[/mw_shl_code]
[mw_shl_code=applescript,true]
#include <config.h>
#include <fonts_manager.h>
#include <string.h>
static PT_FontOpr g_ptFontOprHead = NULL;
/*****************************************************
* 函数功能:注册字模操作结构体
* 输入参数:ptFontOpr - 指针
* 输出参数:
* 返回值 :0 - 成功 其它 - 失败
* 备 注:
-----------------------------------------------------
* 作者: king 日期:20180810
*****************************************************/
int RegisterFontOpr(PT_FontOpr ptFontOpr)
{
ptFontOpr->ptNext = g_ptFontOprHead;
g_ptFontOprHead = ptFontOpr;
return 0;
}
/*****************************************************
* 函数功能:打印支持的字模操作结构体名
* 输入参数:
* 输出参数:
* 返回值 :
* 备 注:
-----------------------------------------------------
* 作者: king 日期:20180810
*****************************************************/
void ShowFontOpr(void)
{
int i = 0;
PT_FontOpr ptTmp = g_ptFontOprHead;
while (ptTmp)
{
printf("[%02d] %s\n", i++, ptTmp->name);
ptTmp = ptTmp->ptNext;
}
}
/*****************************************************
* 函数功能:根据名字获取字模操作结构体
* 输入参数:strName - 名字
* 输出参数:
* 返回值 :NULL - 失败 其它 - 对应的结构体指针
* 备 注:
-----------------------------------------------------
* 作者: king 日期:20180810
*****************************************************/
PT_FontOpr GetFontOpr(char *strName)
{
PT_FontOpr ptTmp = g_ptFontOprHead;
while (ptTmp)
{
if (strcmp(ptTmp->name, strName) == 0)
{
return ptTmp;
}
ptTmp = ptTmp->ptNext;
}
return NULL;
}
/*****************************************************
* 函数功能:初始化字模
* 输入参数:
* 输出参数:
* 返回值 :
* 备 注:
-----------------------------------------------------
* 作者: king 日期:20180810
*****************************************************/
int FontsInit(void)
{
int iError = 0;
iError = AsciiInit();
if (iError)
{
DBG_PRINTF("AsciiInit error\n");
return -1;
}
iError = GBKInit();
if (iError)
{
DBG_PRINTF("GBKInit error\n");
return -1;
}
iError = FreetypeInit();
if (iError)
{
DBG_PRINTF("FreetypeInit error\n");
return -1;
}
return iError;
}
[/mw_shl_code] |
|