261 lines
8.5 KiB
C
261 lines
8.5 KiB
C
#ifndef _COMPO_CARDBOX_H
|
||
#define _COMPO_CARDBOX_H
|
||
|
||
#define CARD_RECT_MAX 2
|
||
#define CARD_ICON_MAX 5
|
||
#define CARD_TEXT_MAX 7
|
||
#define CARD_MAX_WORD_CNT 16 //每条列表项最多16个字符
|
||
|
||
typedef struct compo_cardbox_t_ {
|
||
COMPO_STRUCT_COMMON;
|
||
widget_page_t *page;
|
||
widget_rect_t *rect[CARD_RECT_MAX];
|
||
widget_image_t *icon[CARD_ICON_MAX]; //icon已改为image,兼容旧版本,函数名不变
|
||
widget_text_t *text[CARD_TEXT_MAX];
|
||
compo_roll_cb_t roll_cb; //只对text[0]设一个滚动控制器
|
||
} compo_cardbox_t;
|
||
|
||
/**
|
||
* @brief 创建一个卡片控件
|
||
* @param[in] frm : 窗体指针
|
||
* @param[in] rect_num : 卡片包含的矩形背景数量
|
||
* @param[in] icon_num : 卡片包含的图片数量
|
||
* @param[in] text_num : 卡片包含的文本数量
|
||
* @param[in] org_wid, org_hei : 卡片原始宽高
|
||
* @return 返回卡片指针
|
||
**/
|
||
compo_cardbox_t *compo_cardbox_create(compo_form_t *frm, u8 rect_num, u8 icon_num, u8 text_num, u16 org_wid, u16 org_hei);
|
||
|
||
|
||
/**
|
||
* @author gzj[慎用,容易蓝屏]
|
||
* @brief 创建一个卡片控件
|
||
* @param[in] frm : 窗体指针
|
||
* @param[in] rect_num : 卡片包含的矩形背景数量
|
||
* @param[in] icon_num : 卡片包含的图片数量
|
||
* @param[in] text_num : 卡片包含的文本数量
|
||
* @param[in] org_wid, org_hei : 卡片原始宽高
|
||
* @return 返回卡片指针
|
||
**/
|
||
compo_cardbox_t *compo_cardbox_create_set_strlen(compo_form_t *frm, u8 rect_num, u8 icon_num, u8 text_num, u16 org_wid, u16 org_hei,u8 strlen);
|
||
|
||
/**
|
||
* @brief 设置卡片(圆角)矩形背景颜色
|
||
* @param[in] cardbox : 卡片指针
|
||
* @param[in] idx : 矩形指针存储序号
|
||
* @param[in] color : 色值
|
||
**/
|
||
void compo_cardbox_rect_set_color(compo_cardbox_t *cardbox, u8 idx, u16 color);
|
||
|
||
/**
|
||
* @brief 设置卡片(圆角)矩形背景尺寸
|
||
* @param[in] cardbox : 卡片指针
|
||
* @param[in] idx : 矩形指针存储序号
|
||
* @param[in] x,y,wid,hei,r : 位置、宽、高、圆角半径
|
||
**/
|
||
void compo_cardbox_rect_set_location(compo_cardbox_t *cardbox, u8 idx, s16 x, s16 y, u16 wid, u16 hei, u16 r);
|
||
|
||
/**
|
||
* @brief 更改卡片控件的图片资源
|
||
* @param[in] cardbox : 卡片指针
|
||
* @param[in] idx : 图片指针存储序号
|
||
* @param[in] res_addr : 资源地址
|
||
**/
|
||
void compo_cardbox_icon_set(compo_cardbox_t *cardbox, u8 idx, u32 res_addr);
|
||
|
||
/**
|
||
* @brief 设置卡片控件的图片裁剪
|
||
* @param[in] cardbox : 卡片指针
|
||
* @param[in] idx : 图片指针存储序号
|
||
* @param[in] cnt : 裁剪序号
|
||
* @param[in] total_cnt : 分割总数
|
||
**/
|
||
void compo_cardbox_icon_cut(compo_cardbox_t *cardbox, u8 idx, u8 index, u8 total_cnt);
|
||
|
||
/**
|
||
* @brief 设置卡片控件的图片位置和大小
|
||
* @param[in] cardbox : 卡片指针
|
||
* @param[in] idx : 图片指针存储序号
|
||
* @param[in] x,y,wid,hei : 位置和大小
|
||
**/
|
||
void compo_cardbox_icon_set_location(compo_cardbox_t *cardbox, u8 idx, s16 x, s16 y, u16 wid, u16 hei);
|
||
|
||
/**
|
||
* @brief 更新卡片控件的文本内容
|
||
* @param[in] cardbox : 卡片指针
|
||
* @param[in] idx : 文本指针存储序号
|
||
* @param[in] str : 文本字符串指针
|
||
**/
|
||
void compo_cardbox_text_set(compo_cardbox_t *cardbox, u8 idx, const char *str);
|
||
|
||
/**
|
||
* @brief 更换卡片控件的文本字库
|
||
* @param[in] cardbox : 卡片指针
|
||
* @param[in] idx : 文本指针存储序号
|
||
* @param[in] font_res_addr : 设置字库资源地址
|
||
**/
|
||
void compo_cardbox_text_set_font(compo_cardbox_t *cardbox, u8 idx, u32 font_res_addr);
|
||
|
||
/**
|
||
* @brief 更改卡片控件的文本颜色
|
||
* @param[in] cardbox : 卡片指针
|
||
* @param[in] idx : 文本指针存储序号
|
||
* @param[in] color : 颜色
|
||
**/
|
||
void compo_cardbox_text_set_color(compo_cardbox_t *cardbox, u8 idx, u16 color);
|
||
|
||
/**
|
||
* @brief 设置卡片控件文本是否中心点对齐
|
||
* @param[in] cardbox : 卡片指针
|
||
* @param[in] idx : 文本指针存储序号
|
||
* @param[in] align_center : 是否中心点对齐
|
||
**/
|
||
void compo_cardbox_text_set_align_center(compo_cardbox_t *cardbox, u8 idx, bool align_center);
|
||
|
||
/**
|
||
* @brief 设置卡片内文本框是否自适应尺寸
|
||
* @param[in] cardbox : 卡片指针
|
||
* @param[in] idx : 文本指针存储序号
|
||
* @param[in] autosize : 是否自适应尺寸
|
||
**/
|
||
void compo_cardbox_text_set_autosize(compo_cardbox_t *cardbox, u8 idx, bool autosize);
|
||
|
||
/**
|
||
* @brief 获取卡片内文本字体区域
|
||
* @param[in] cardbox : 卡片指针
|
||
* @param[in] idx : 文本指针存储序号
|
||
* @return 文本内容的宽度和高度
|
||
**/
|
||
area_t compo_cardbox_text_get_area(compo_cardbox_t *cardbox, u8 idx);
|
||
|
||
/**
|
||
* @brief 设置卡片控件的文本
|
||
* @param[in] cardbox : 卡片指针
|
||
* @param[in] idx : 文本指针存储序号
|
||
* @param[in] str : 文本字符串指针
|
||
* @param[in] x,y,wid,hei : 位置和大小(默认非autosize)
|
||
**/
|
||
void compo_cardbox_text_set_location(compo_cardbox_t *cardbox, u8 idx, s16 x, s16 y, u16 wid, u16 hei);
|
||
|
||
/**
|
||
* @brief 卡片控件文本0滚动刷新
|
||
(文本需要set_align_center为false,否则初始状态无法保证左对齐)
|
||
* @param[in] cardbox : 卡片指针
|
||
* @return 无
|
||
**/
|
||
void compo_cardbox_text0_scroll_process(compo_cardbox_t *cardbox);
|
||
|
||
/**
|
||
* @brief 卡片控件文本0滚动暂停/继续
|
||
* @param[in] cardbox : 卡片指针
|
||
* @param[in] pause : true暂停,false继续
|
||
* @return 无
|
||
**/
|
||
void compo_cardbox_text0_scroll_pause(compo_cardbox_t *cardbox, bool pause);
|
||
|
||
/**
|
||
* @brief 卡片控件文本0滚动重置(赋值后需要重新计算)
|
||
* @param[in] cardbox : 卡片指针
|
||
* @return 无
|
||
**/
|
||
void compo_cardbox_text0_scroll_reset(compo_cardbox_t *cardbox);
|
||
|
||
/**
|
||
* @brief 设置卡片控件的位置和缩放大小
|
||
* @param[in] cardbox : 卡片指针
|
||
* @param[in] x,y,wid,hei : 位置和缩放大小
|
||
**/
|
||
void compo_cardbox_set_location(compo_cardbox_t *cardbox, s16 x, s16 y, u16 wid, u16 hei);
|
||
|
||
/**
|
||
* @brief 设置卡片控件的位置
|
||
* @param[in] cardbox : 卡片指针
|
||
* @param[in] x,y : 位置
|
||
**/
|
||
void compo_cardbox_set_pos(compo_cardbox_t *cardbox, s16 x, s16 y);
|
||
|
||
/**
|
||
* @brief 设置卡片控件的图片
|
||
* @param[in] cardbox : 卡片指针
|
||
* @param[in] idx : 图片指针存储序号
|
||
* @param[in] x,y,wid,hei : 位置和大小
|
||
**/
|
||
void compo_cardbox_icon_set_pos(compo_cardbox_t *cardbox, u8 idx, s16 x, s16 y);
|
||
|
||
/**
|
||
* @brief 获取卡片控件的位置和缩放大小
|
||
* @param[in] cardbox : 卡片指针
|
||
* @param[in] x,y,wid,hei : 位置和缩放大小
|
||
**/
|
||
rect_t compo_cardbox_get_location(compo_cardbox_t *cardbox);
|
||
|
||
/**
|
||
* @brief 获取卡片绝对位置和大小
|
||
* @param[in] cardbox : 卡片指针
|
||
* @return 返回卡片page绝对位置和大小
|
||
**/
|
||
rect_t compo_cardbox_get_absolute(compo_cardbox_t *cardbox);
|
||
|
||
/**
|
||
* @brief 获取卡片内矩形的绝对位置和大小
|
||
* @param[in] cardbox : 卡片指针
|
||
* @param[in] idx : 矩形指针存储序号
|
||
* @return 返回相应序号图片的绝对位置和大小
|
||
**/
|
||
rect_t compo_cardbox_get_rect_absolute(compo_cardbox_t *cardbox, u8 idx);
|
||
|
||
/**
|
||
* @brief 获取卡片内图片的绝对位置和大小
|
||
* @param[in] cardbox : 卡片指针
|
||
* @param[in] idx : 图片指针存储序号
|
||
* @return 返回相应序号图片的绝对位置和大小
|
||
**/
|
||
rect_t compo_cardbox_get_icon_absolute(compo_cardbox_t *cardbox, u8 idx);
|
||
|
||
/**
|
||
* @brief 设置卡片中图片可见性
|
||
* @param[in] cardbox : 卡片指针
|
||
**/
|
||
void compo_cardbox_icon_set_visible(compo_cardbox_t *cardbox, u8 idx, bool visible);
|
||
|
||
/**
|
||
* @brief 设置卡片中文字可见性
|
||
* @param[in] cardbox : 卡片指针
|
||
**/
|
||
void compo_cardbox_text_set_visible(compo_cardbox_t *cardbox, u8 idx, bool visible);
|
||
|
||
/**
|
||
* @brief 设置卡片可见性
|
||
* @param[in] cardbox : 卡片指针
|
||
**/
|
||
void compo_cardbox_set_visible(compo_cardbox_t *cardbox, bool visible);
|
||
|
||
/**
|
||
* @brief 获取卡片可见性
|
||
* @param[in] cardbox : 卡片指针
|
||
**/
|
||
bool compo_cardbox_get_visible(compo_cardbox_t *cardbox);
|
||
|
||
/**
|
||
* @brief 设置相对坐标
|
||
* @param[in] cardbox : 卡片指针
|
||
**/
|
||
void compo_cardbox_set_client(compo_cardbox_t *cardbox, s16 x, s16 y);
|
||
|
||
/**
|
||
* @brief 判断点击区域是否在卡片内
|
||
* @param[in] cardbox : 卡片指针
|
||
* @param[in] pt : 点击区域
|
||
* @return true or false
|
||
**/
|
||
bool compo_cardbox_btn_is(compo_cardbox_t *cardbox, point_t pt);
|
||
|
||
/**
|
||
* @brief 设置透明度
|
||
* @param[in] cardbox : 卡片指针
|
||
* @param[in] alpha : 透明度(0 ~ 0xff)
|
||
**/
|
||
void compo_cardbox_set_alpha(compo_cardbox_t *cardbox, u8 alpha);
|
||
|
||
#endif
|