Files
AC707N/SDK/interface/ui/jlui/font/font_textout.h
T
2025-12-03 11:12:34 +08:00

207 lines
3.5 KiB
C

#ifndef __FONT_OUT_H__
#define __FONT_OUT_H__
#include "generic/typedef.h"
#include "font/font_all.h"
#include "font/font_unic.h"
/**
* @brief 打开字库
*
* @param info:字库信息
* @param language:语言id
*
* @returns TRUE:打开成功 FALSE:打开失败
*/
struct font_info *font_open(struct font_info *info, u8 language);
/**
* @brief 关闭字库,释放相关资源
*
* @param info
*/
void font_close(struct font_info *info);
/**
* @brief 获取内码字符宽度
*
* @param info
* @param str
* @param strlen
*
* @returns 字符串宽度
*/
u16 font_text_width(struct font_info *info, u8 *str, u16 strlen);
/**
* @brief 获取unicode编码字符宽度
*
* @param info
* @param str
* @param strlen
*
* @returns 字符串宽度
*/
u16 font_textw_width(struct font_info *info, u8 *str, u16 strlen);
/**
* @brief 获取utf8编码字符宽度
*
* @param info
* @param str
* @param strlen
*
* @returns 字符串宽度
*/
u16 font_textu_width(struct font_info *info, u8 *str, u16 strlen);
/**
* @brief 设置字库语言id
*
* @param language
*
* @returns
*/
void font_lang_set(int language);
/**
* @brief 获取字库语言id *
*
* @returns 字库语言id
*/
int font_lang_get();
// 字库换行方式 value == 1:换行时考虑单词整体性, value == 0:强制换行; 默认为1
void font_smart_line_break_set(u8 value);
/**
* @brief 字库内码显示接口
*
* @param info
* @param str
* @param strlen
*
* @returns 实际显示的编码长度
*/
u16 font_textout(struct font_info *info, u8 *str, u16 strlen, u16 x, u16 y);
/**
* @brief 字库unicode显示接口
*
* @param info
* @param str
* @param strlen
* @param x 显示起始x坐标
* @param y 显示起始Y坐标
*
* @returns 实际显示的编码长度
*/
u16 font_textout_unicode(struct font_info *info, u8 *str, u16 strlen, u16 x, u16 y);
/**
* @brief 字库utf8显示接口
*
* @param info
* @param str
* @param strlen
* @param x 显示起始x坐标
* @param y 显示起始Y坐标
*
* @returns 实际显示的编码长度
*/
u16 font_textout_utf8(struct font_info *info, u8 *str, u16 strlen, u16 x, u16 y);
/**
* @brief utf8转内码
*
* @param info
* @param utf8
* @param utf8len
* @param ansi
*
* @returns 内码长度
*/
u16 font_utf8toansi(struct font_info *info, u8 *utf8, u16 utf8len, u8 *ansi);
/**
* @brief utf16转内码
*
* @param info
* @param utf
* @param len
* @param ansi
*
* @returns 内码长度
*/
u16 font_utf16toansi(struct font_info *info, u8 *utf, u16 len, u8 *ansi);
/**
* @brief utf8转utf16
*
* @param info
* @param utf8
* @param utf8len
* @param utf16
*
* @returns utf16长度
*/
u16 font_utf8toutf16(struct font_info *info, u8 *utf8, u16 utf8len, u16 *utf16);
/**
* @brief 字库层malloc接口,弱函数,用户可自定义
*
* @param size 申请大小(byte)
* @returns buf地址
*/
void *font_malloc(size_t size);
/**
* @brief 字库层zalloc接口,弱函数,用户可自定义
*
* @param size 申请大小(byte)
* @returns buf地址
*/
void *font_zalloc(size_t size);
/**
* @brief 字库层free接口,弱函数,用户可自定义
*
* @param pv 待释放内存地址
*/
void font_free(void *pv);
/**
* @brief 字库多行显示时用于记录每行宽度信息,多行居中的功能需要
*
* @param info 字库结构体
*/
int font_create_each_line_width_info(struct font_info *info);
/**
* @brief 字库释放多行信息
*
* @param info 字库结构体
*/
void font_release_each_line_width_info(struct font_info *info);
#endif