347 lines
12 KiB
C
347 lines
12 KiB
C
/* Copyright(C) 2010- , JIELI TECHNOLOGY, Inc.
|
||
* All right reserved.
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/*
|
||
* @file ui_text.h
|
||
*
|
||
* @brief 文本控件API接口头文件
|
||
*
|
||
* @author
|
||
*
|
||
* @version V201
|
||
*
|
||
* @date 2022-12-15
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
|
||
#ifndef __UI_TEXT_WIDGET_H__
|
||
#define __UI_TEXT_WIDGET_H__
|
||
|
||
|
||
#include "jlui/ui_core.h"
|
||
#include "jlui/control.h"
|
||
#include "font/font_all.h"
|
||
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief 文本控件句柄结构定义
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
struct ui_text {
|
||
struct element elm;
|
||
struct ui_text_attrs attrs; // 文本属性,跟字库的使用相关,不能随意优化 64byte
|
||
char source[9]; // 数据源
|
||
u8 _format: 3; // 编码格式,跟随 UI 资源调整为枚举型,TEXT,ASCII,STRPIC,MULSTR,IMAGE 五种,3bit
|
||
u8 scroll: 5; //滚动使能,使能/不使能,可用1bit
|
||
|
||
u16 _str[UI_TEXT_LIST_MAX_NUM]; // 3个u16,数组
|
||
u16 timer; // 定时器id,用作文本滚动显示
|
||
|
||
|
||
u8 index; // 文本索引
|
||
u8 scroll_start_cnt; //滚动前计数:计数值*滚动间隔=滚动前停止时间
|
||
u8 scroll_end_cnt; //滚动后计数:同上
|
||
|
||
u8 scroll_real_cnt; //滚动实时计数值
|
||
|
||
const struct ui_text_info *info; // flash 存储相关
|
||
const struct element_event_handler *handler;
|
||
}; // 160byte
|
||
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief 通过ID获取文本控件句柄
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
#define ui_text_for_id(id) \
|
||
ui_element_for_id(id, struct ui_text)
|
||
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief ui_text_enable 文本控件使能(内部调用)
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
void ui_text_enable();
|
||
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief new_ui_text 创建文本控件(内部调用)
|
||
*
|
||
* @param _info 文本控件信息
|
||
* @param parent 父控件元素
|
||
*
|
||
* @return 文本控件句柄
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
void *new_ui_text(const void *_info, struct element *parent);
|
||
|
||
|
||
|
||
/****************************** api of format 'ascii' ******************************/
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief ui_text_set_str 文本控件显示ASCII编码字符串
|
||
*
|
||
* @param text 文本控件句柄
|
||
* @param format 文本编码格式
|
||
* @param str 文本字符串(注意:字符串buf生命周期必须与控件一致)
|
||
* @param strlen 文本字符串长度
|
||
* @param flags 显示标志
|
||
*
|
||
* @return 0 正常,-22 控件不存在
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
int ui_text_set_str(struct ui_text *text, int format, const char *str, int strlen, u32 flags);
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief ui_text_set_utf8_str 设置文本控件显示UTF-8编码字符串
|
||
*
|
||
* @param text 文本控件句柄
|
||
* @param format 文本编码格式
|
||
* @param str 文本字符串(注意:字符串buf生命周期必须与控件一致)
|
||
* @param strlen 文本字符串长度
|
||
* @param flags 显示标志
|
||
*
|
||
* @return 0 正常,-22 控件不存在
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
int ui_text_set_utf8_str(struct ui_text *text, int format, const char *str, int strlen, u32 flags);
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief ui_text_set_str_by_id 设置文本控件显示字符串(带redraw)
|
||
*
|
||
* @param id 文本控件ID
|
||
* @param format 文本编码格式
|
||
* @param str 文本字符串指针(注意:字符串buf生命周期必须与控件一致)
|
||
*
|
||
* @return 0 正常,-22 控件不存在
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
int ui_text_set_str_by_id(int id, int format, const char *str);
|
||
|
||
|
||
|
||
|
||
|
||
/****************************** api of format 'strpic' ******************************/
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief ui_text_set_index 设置文本控件显示的文本索引
|
||
*
|
||
* @param text 文本控件句柄
|
||
* @param index 文本在“文字列表”中的索引
|
||
*
|
||
* @return 0 正常,-22 控件不存在
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
int ui_text_set_index(struct ui_text *text, int index);
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief ui_text_show_index_by_id 设置文本控件显示的文本索引
|
||
*
|
||
* @param id 文本控件ID
|
||
* @param index 文本在“文字列表”中的索引
|
||
*
|
||
* @return 0 正常,-22 控件不存在
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
int ui_text_show_index_by_id(int id, int index);
|
||
|
||
|
||
|
||
|
||
/****************************** api of format 'text' ******************************/
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief ui_text_set_text_attrs 设置文本控件属性
|
||
*
|
||
* @param text 文本控件句柄
|
||
* @param str 文本字符串指针(注意:字符串buf生命周期必须与控件一致)
|
||
* @param strlen 文本字符串长度
|
||
* @param encode 文本字符串编码格式
|
||
* @param endian 文本字符串大、小端
|
||
* @param flags 显示标志
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
void ui_text_set_text_attrs(struct ui_text *text, const char *str, int strlen, u8 encode, u8 endian, u32 flags);
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief ui_text_set_text_by_id 设置指定ID的文本控件显示内容
|
||
*
|
||
* @param id 文本控件ID
|
||
* @param str 字符串指针(注意:字符串buf生命周期必须与控件一致)
|
||
* @param strlen 字符串长度
|
||
* @param flags 显示标志
|
||
*
|
||
* @return 0 正常,-22 控件不存在
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
int ui_text_set_text_by_id(int id, const char *str, int strlen, u32 flags);
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief ui_text_set_textw_by_id 设置指定ID的文本控件显示宽字节字符串
|
||
*
|
||
* @param id 文本控件ID
|
||
* @param str 宽字节字符串(注意:字符串buf生命周期必须与控件一致)
|
||
* @param strlen 字符串长度
|
||
* @param endian 存储格式(大端、小端)
|
||
* @param flags 显示标志
|
||
*
|
||
* @return 0 正常,-22 控件不存在
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
int ui_text_set_textw_by_id(int id, const char *str, int strlen, int endian, u32 flags);
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief ui_text_set_textu_by_id 设置指定ID的文本控件显示UTF8编码字符串
|
||
*
|
||
* @param id 文本控件ID
|
||
* @param str UTF8编码字符串(注意:字符串buf生命周期必须与控件一致)
|
||
* @param strlen 字符串长度
|
||
* @param flags 显示标志
|
||
*
|
||
* @return 0 正常,-22 控件不存在
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
int ui_text_set_textu_by_id(int id, const char *str, int strlen, u32 flags);
|
||
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief text_release 释放文本控件
|
||
*
|
||
* @param text 文本控件句柄
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
void text_release(struct ui_text *text);
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief ui_text_set_combine_index 设置文本控件显示多个excel文本拼接字符串
|
||
*
|
||
* @param text 文本控件句柄
|
||
* @param store_buf 必须是全局或者静态,不能是局部buf,大小为index_num+1
|
||
* @param index_buf 表示当前文本控件字符串ID的序号,从0开始
|
||
* @param index_num 表示有多少个字符串ID拼接起来
|
||
*
|
||
* @return
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
int ui_text_set_combine_index(struct ui_text *text, u16 *store_buf, u8 *index_buf, int index_num);
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief ui_text_set_multi_text_index 设置文本控件拼接显示excel文本
|
||
*
|
||
* @param text 文本控件指针
|
||
* @param index_buf 当前文本控件显示的文本索引列表
|
||
* @param index_num 文本列表中有多少个文本拼接显示
|
||
*
|
||
* @return 0 正常,-22 控件不存在
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
int ui_text_set_multi_text_index(struct ui_text *text, u8 *index_buf, int index_num);
|
||
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief ui_text_set_hide_by_id 设置为文本控件的隐藏状态
|
||
*
|
||
* @param id 文本控件ID
|
||
* @param hide 是否设置为隐藏状态(true 隐藏,false 显示)
|
||
*
|
||
* @return 0 正常, -22 控件不存在
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
int ui_text_set_hide_by_id(int id, int hide);
|
||
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief text_set_strpic_scroll_interval 设置strpic文本滚动时间间隔
|
||
*
|
||
* @param ms 默认250ms
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
void text_set_strpic_scroll_interval(u16 ms);
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief text_set_font_scroll_interval 设置字库文本滚动间隔
|
||
*
|
||
* @param ms 默认1000ms
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
void text_set_font_scroll_interval(u16 ms);
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief ui_text_get_strpic_scroll_interval 获取strpic文本滚动时间间隔
|
||
*
|
||
* @return 间隔
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
u16 ui_text_get_strpic_scroll_interval();
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief ui_text_get_font_scroll_interval 获取字库文本滚动间隔
|
||
*
|
||
* @return 间隔
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
u16 ui_text_get_font_scroll_interval();
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief ui_text_set_default_scroll_cnt 设置文本滚动前和滚动结束的静止等待时间
|
||
*
|
||
* @param strpic_start_cnt
|
||
* @param strpic_end_cnt
|
||
* @param font_start_cnt
|
||
* @param font_end_cnt
|
||
*
|
||
* @note 0不等待
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
void ui_text_set_default_scroll_cnt(u8 strpic_start_cnt, u8 strpic_end_cnt, u8 font_start_cnt, u8 font_end_cnt);
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief ui_text_set_scroll_redraw_enable 底层是否刷新文本(滚动参数还是会跑,只是不主动刷新)
|
||
*
|
||
* @param enable
|
||
*
|
||
* @return
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
u8 ui_text_set_scroll_redraw_enable(int enable);
|
||
|
||
/* ------------------------------------------------------------------------------------*/
|
||
/**
|
||
* @brief ui_text_set_strpic_scroll_steps 刷新步进
|
||
*
|
||
* @param pixel
|
||
*/
|
||
/* ------------------------------------------------------------------------------------*/
|
||
void ui_text_set_strpic_scroll_steps(u8 pixel);
|
||
u8 ui_text_get_strpic_scroll_steps();
|
||
/* 判断是否是utf-8格式编码 */
|
||
/* return true: 符合utf-8 */
|
||
int ui_text_utf8_check(u8 *buf, u16 len);
|
||
|
||
#endif
|