87 lines
2.6 KiB
C
87 lines
2.6 KiB
C
#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
|
||
|
||
|