169 lines
6.3 KiB
C
169 lines
6.3 KiB
C
/* Copyright(C) 2010- , JIELI TECHNOLOGY, Inc.
|
|
* All right reserved.
|
|
*/
|
|
|
|
/* ------------------------------------------------------------------------------------*/
|
|
/*
|
|
* @file ui_number.h
|
|
*
|
|
* @brief 数字控件API头文件
|
|
*
|
|
* @author
|
|
*
|
|
* @version V201
|
|
*
|
|
* @date 2022-12-15
|
|
*/
|
|
/* ------------------------------------------------------------------------------------*/
|
|
|
|
#ifndef __UI_NUMBER_WIDGET_H__
|
|
#define __UI_NUMBER_WIDGET_H__
|
|
|
|
|
|
#include "jlui/control.h"
|
|
#include "jlui/ui_core.h"
|
|
#include "jlui/p.h"
|
|
|
|
|
|
|
|
/* ------------------------------------------------------------------------------------*/
|
|
/**
|
|
* @brief 数字控件参数 type 的类型定义,允许显示数字或字符串
|
|
*/
|
|
/* ------------------------------------------------------------------------------------*/
|
|
enum {
|
|
TYPE_NUM,
|
|
TYPE_STRING,
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------------------*/
|
|
/**
|
|
* @brief 数字控件显示参数
|
|
*/
|
|
/* ------------------------------------------------------------------------------------*/
|
|
struct unumber {
|
|
u8 numbs; // 参数数量
|
|
u8 type; // 参数类型
|
|
|
|
// 参数类型(type)决定使用下面哪个参数用作显示,number[2]和num_str互斥,数字控件只会显示其中一个
|
|
u32 number[2]; // 数字(允许显示两个数值,中间自动由间隔符隔开)
|
|
u8 *num_str; // 字符串(将通过ascii字库显示)
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------------------*/
|
|
/**
|
|
* @brief 数字控件元素句柄
|
|
*/
|
|
/* ------------------------------------------------------------------------------------*/
|
|
struct ui_number {
|
|
struct element_text text; // 共享文本的起始结构,如果数字控件无图片时,用ascii绘图,84byte
|
|
char source[9]; // 数据源
|
|
u8 css_num : 4; // css属性个数
|
|
u8 nums: 2; // 显示的数字个数,这里决定从 number[]中拿几个数字使用
|
|
u8 type: 2; // 数据类型,TYPE_NUM/TYPE_STRING,目前就两种选项
|
|
u16 number[2]; // 最多两个数字,u16的大小,如果显示小数,number[0].number[1]
|
|
u16 buf[20]; // 使用图片显示数字时的索引,按照这个buf顺序显示图片,最多显示19个图片,要以 0xff 结尾
|
|
|
|
u16 color; // 普通颜色,与flash资源保持一致
|
|
u16 hi_color; // 高亮颜色,与flash资源保持一致
|
|
|
|
char delimiter[2]; // 分隔符索引映射表,比如数字控件的格式为%d/%d?,当解析到字符'/'时,会读取分隔符图片列表中序号为delimiter[0]的分隔符图片,即delimiter数组的下标由格式字符串的分隔符序号决定(序号从0开始,依此类推)
|
|
|
|
u32 css[2]; // 控件属性指针
|
|
|
|
u8 *num_str; // 如果显示字符串时的字符串内容
|
|
|
|
const struct ui_number_info *info;
|
|
const struct element_event_handler *handler; // text 结构体中已经包含了handler指针
|
|
}; // 164 byte
|
|
|
|
|
|
/* ------------------------------------------------------------------------------------*/
|
|
/**
|
|
* @brief 通过ID获取数字控件句柄
|
|
*/
|
|
/* ------------------------------------------------------------------------------------*/
|
|
#define ui_number_for_id(id) \
|
|
(struct ui_number *)ui_core_get_element_by_id(id)
|
|
// ui_element_for_id(id, struct ui_number)
|
|
|
|
|
|
/* ------------------------------------------------------------------------------------*/
|
|
/**
|
|
* @brief ui_number_enable 数字控件使能(内部调用)
|
|
*/
|
|
/* ------------------------------------------------------------------------------------*/
|
|
void ui_number_enable();
|
|
|
|
|
|
/* ------------------------------------------------------------------------------------*/
|
|
/**
|
|
* @brief new_ui_number 创建新的数字控件(内部调用)
|
|
*
|
|
* @param _info 数字控件信息
|
|
* @param parent 父控件
|
|
*
|
|
* @return 数字控件元素句柄
|
|
*/
|
|
/* ------------------------------------------------------------------------------------*/
|
|
void *new_ui_number(const void *_info, struct element *parent);
|
|
|
|
|
|
/* ------------------------------------------------------------------------------------*/
|
|
/**
|
|
* @brief ui_number_update 更新数字控件内容(不带redraw)
|
|
*
|
|
* @param number 数字控件句柄
|
|
* @param n 待显示的内容
|
|
*
|
|
* @return 0 正常,-22 控件不存在
|
|
*/
|
|
/* ------------------------------------------------------------------------------------*/
|
|
int ui_number_update(struct ui_number *number, struct unumber *n);
|
|
|
|
|
|
/* ------------------------------------------------------------------------------------*/
|
|
/**
|
|
* @brief ui_number_update_by_id 更新数字控件内容(带redraw)
|
|
*
|
|
* @param id 数字控件ID
|
|
* @param n 待显示内容
|
|
*
|
|
* @return 0 正常,-22 控件不存在
|
|
*/
|
|
/* ------------------------------------------------------------------------------------*/
|
|
int ui_number_update_by_id(int id, struct unumber *n);
|
|
|
|
/* ------------------------------------------------------------------------------------*/
|
|
/**
|
|
* @brief ui_number_update_with_delimiter 更新数字控件内容以及分隔符序号(不带redraw)
|
|
*
|
|
* @param number 数字控件句柄
|
|
* @param n 待显示的内容
|
|
* @param delimiter_0 数字控件格式属性第一个分隔符在分隔符图片列表中的序号(从0开始),-1为使用默认序号
|
|
* @param delimiter_1 数字控件格式属性第二个分隔符在分隔符图片列表中的序号(从0开始),-1为使用默认序号
|
|
*
|
|
* @return 0 正常,-22 控件不存在
|
|
*/
|
|
/* ------------------------------------------------------------------------------------*/
|
|
int ui_number_update_with_delimiter(struct ui_number *number, struct unumber *n, char delimiter_0, char delimiter_1);
|
|
|
|
/* ------------------------------------------------------------------------------------*/
|
|
/**
|
|
* @brief ui_number_update_with_delimiter_by_id 更新数字控件内容以及分隔符序号(带redraw)
|
|
*
|
|
* @param id 数字控件ID
|
|
* @param n 待显示内容
|
|
* @param delimiter_0 数字控件格式属性第一个分隔符在分隔符图片列表中的序号(从0开始),-1为使用默认序号
|
|
* @param delimiter_1 数字控件格式属性第二个分隔符在分隔符图片列表中的序号(从0开始),-1为使用默认序号
|
|
*
|
|
* @return 0 正常,-22 控件不存在
|
|
*/
|
|
/* ------------------------------------------------------------------------------------*/
|
|
int ui_number_update_with_delimiter_by_id(int id, struct unumber *n, char delimiter_0, char delimiter_1);
|
|
|
|
#endif
|
|
|