#ifndef _COMPO_SHAPE_H #define _COMPO_SHAPE_H enum COMPO_SHAPE_TYPE { COMPO_SHAPE_TYPE_RECTANGLE, COMPO_SHAPE_TYPE_ROUNDED_RECTANGLE, }; typedef struct compo_shape_t_ { COMPO_STRUCT_COMMON; u8 shape_type; widget_rect_t *rect; } compo_shape_t; /** * @brief 创建一个形状 * @param[in] frm : 窗体指针 * @param[in] shape_type : COMPO_SHAPE_TYPE_RECTANGLE 矩形 * @return 返回矩形指针 **/ compo_shape_t *compo_shape_create(compo_form_t *frm, u8 shape_type); /**@author:gzj * @brief 创建一个半径为r的圆角矩形 * @param[in] frm : 窗体指针 * @param[in] shape_type : COMPO_SHAPE_TYPE_ROUNDED_RECTANGLE 圆角矩形 * @return 返回矩形指针 **/ compo_shape_t *compo_radius_shape_create(compo_form_t *frm, u8 shape_type , u16 r); /** * @brief 设置形状的坐标及大小 注意:该设置默认的坐标是以中心点作为参考点 * @param[in] shape : 矩形指针 * @param[in] x : x轴坐标 * @param[in] y : y轴坐标 * @param[in] width : 矩形宽度 * @param[in] height : 矩形高度 **/ void compo_shape_set_location(compo_shape_t *shape, s16 x, s16 y, s16 width, s16 height); /**author:gzj * @brief 设置矩形框是否居中 * @param[in] textbox : 文本指针 * @param[in] align_center : 是否居中 **/ void compo_shape_set_align_center(compo_shape_t *shape, bool align_center); /** * @brief 获取形状的坐标及大小 注意:该设置默认的坐标是以中心点作为参考点 * @param[in] shape : 矩形指针 * @return 位置和大小 **/ rect_t compo_shape_get_location(compo_shape_t *shape); /** * @brief 设置形状的大小 注意:该设置默认的坐标是以中心点作为参考点 * @param[in] shape : 矩形指针 * @param[in] x : x轴坐标 * @param[in] y : y轴坐标 * @param[in] width : 矩形宽度 * @param[in] height : 矩形高度 **/ void compo_shape_set_size(compo_shape_t *shape, s16 width, s16 height); /** * @brief 设置形状的坐标 注意:该设置默认的坐标是以中心点作为参考点 * @param[in] shape : 矩形指针 * @param[in] x : x轴坐标 * @param[in] y : y轴坐标 **/ void compo_shape_set_pos(compo_shape_t *shape, s16 x, s16 y); /** * @brief 设置形状的颜色 * @param[in] shape : 矩形指针 * @param[in] color : 颜色 **/ void compo_shape_set_color(compo_shape_t *shape, u16 color); /** * @brief 设置形状的透明度 * @param[in] shape : 矩形指针 * @param[in] alpha : 透明度 **/ void compo_shape_set_alpha(compo_shape_t *shape, u8 alpha); /** * @brief 设置形状是否可见 * @param[in] shape : 矩形指针 * @param[in] visible : true 可见 false 不可见 **/ void compo_shape_set_visible(compo_shape_t *shape, bool visible); /** * @brief 设置形状(矩形)圆角半径 * @param[in] shape : 矩形指针 * @param[in] r : 半径 **/ void compo_shape_set_radius(compo_shape_t *shape, u16 r); #endif