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

87 lines
2.6 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef __UI_CURVE_GRAD_H__
#define __UI_CURVE_GRAD_H__
/* cg 为 curve gradient 缩写,避免 point 结构体命名与其它冲突 */
struct cg_point {
int x;
int y;
};
typedef struct {
int x;
int y;
u8 alpha;
} Pixel;
/* 绘制信息结构体 */
struct curve_grad_info {
int x;
int y;
int width;
int height;
struct cg_point *points;
int points_num;
int line_width;
u32 color;
};
/* ------------------------------------------------------------------------------------*/
/**
* @brief create_a8_gradient 创建alpha渐变数组,渐变色宽度为start --> end
*
* @Params start 起始点索引(包含)
* @Params end 结束点索引(包含)
* @Params grid_max alpha的最大值
*
* @return 堆内存分配的渐变数组指针,需调用者释放
*/
/* ------------------------------------------------------------------------------------*/
u8 *create_a8_gradient(int start, int end, int grid_max);
/* ------------------------------------------------------------------------------------*/
/**
* @brief compute_smooth_curve 通过离散点计算平滑曲线,曲线经过所有离散点
*
* 注意:
* 1. 离散点必须时x坐标递增的;
* 2. 平滑曲线点只计算y坐标,默认x坐标从0递增到points[points_num-1].x
* 3. 返回堆内存,需调用者释放内存。
*
* @Params points 离散点坐标列表
* @Params points_num 离散点坐标数量
* @Params x_max x坐标最大值,等于points[points_num - 1].x
* @Params y_max y坐标最大值,所有点都在[0, y_max]区间
*
* @return 堆内存分配的平滑曲线y坐标数组指针,需调用者释放
*/
/* ------------------------------------------------------------------------------------*/
int *compute_smooth_curve(struct cg_point *points, int points_num, int x_max, int y_max);
/* ------------------------------------------------------------------------------------*/
/**
* @brief get_curve_grad_check 计算平滑曲线渐变图的校验值
* 对折线的宽、高、坐标、线宽、颜色进行校验计算,如果校验值变化,则重新生成,否则只调整坐标。
*
* @Params points 离散点坐标列表
* @Params points_num 离散点坐标数量
* @Params draw_width 绘制宽度
* @Params draw_height 绘制高度
* @Params line_width 线宽
* @Params color 颜色
*
* @return crc校验值
*/
/* ------------------------------------------------------------------------------------*/
u32 get_curve_grad_check(struct cg_point *points, int points_num, int draw_width, int draw_height, int line_width, u32 color);
#endif