70 lines
2.0 KiB
C
70 lines
2.0 KiB
C
|
/**
|
||
|
* @file lv_draw_sw_blend.h
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#ifndef LV_DRAW_SW_BLEND_H
|
||
|
#define LV_DRAW_SW_BLEND_H
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/*********************
|
||
|
* INCLUDES
|
||
|
*********************/
|
||
|
#include "../../misc/lv_color.h"
|
||
|
#include "../../misc/lv_area.h"
|
||
|
#include "../../misc/lv_style.h"
|
||
|
#include "../lv_draw_mask.h"
|
||
|
|
||
|
/*********************
|
||
|
* DEFINES
|
||
|
*********************/
|
||
|
|
||
|
/**********************
|
||
|
* TYPEDEFS
|
||
|
**********************/
|
||
|
|
||
|
typedef struct {
|
||
|
const lv_area_t * blend_area; /**< The area with absolute coordinates to draw on `draw_ctx->buf`
|
||
|
* will be clipped to `draw_ctx->clip_area` */
|
||
|
const lv_color_t * src_buf; /**< Pointer to an image to blend. If set `fill_color` is ignored */
|
||
|
lv_color_t color; /**< Fill color*/
|
||
|
lv_opa_t * mask_buf; /**< NULL if ignored, or an alpha mask to apply on `blend_area`*/
|
||
|
lv_draw_mask_res_t mask_res; /**< The result of the previous mask operation */
|
||
|
const lv_area_t * mask_area; /**< The area of `mask_buf` with absolute coordinates*/
|
||
|
lv_opa_t opa; /**< The overall opacity*/
|
||
|
lv_blend_mode_t blend_mode; /**< E.g. LV_BLEND_MODE_ADDITIVE*/
|
||
|
} lv_draw_sw_blend_dsc_t;
|
||
|
|
||
|
struct _lv_draw_ctx_t;
|
||
|
|
||
|
/**********************
|
||
|
* GLOBAL PROTOTYPES
|
||
|
**********************/
|
||
|
|
||
|
/**
|
||
|
* Call the blend function of the `draw_ctx`.
|
||
|
* @param draw_ctx pointer to a draw context
|
||
|
* @param dsc pointer to an initialized blend descriptor
|
||
|
*/
|
||
|
void lv_draw_sw_blend(struct _lv_draw_ctx_t * draw_ctx, const lv_draw_sw_blend_dsc_t * dsc);
|
||
|
|
||
|
/**
|
||
|
* The basic blend function used with software rendering.
|
||
|
* @param draw_ctx pointer to a draw context
|
||
|
* @param dsc pointer to an initialized blend descriptor
|
||
|
*/
|
||
|
LV_ATTRIBUTE_FAST_MEM void lv_draw_sw_blend_basic(struct _lv_draw_ctx_t * draw_ctx, const lv_draw_sw_blend_dsc_t * dsc);
|
||
|
|
||
|
/**********************
|
||
|
* MACROS
|
||
|
**********************/
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
} /*extern "C"*/
|
||
|
#endif
|
||
|
|
||
|
#endif /*LV_DRAW_SW_BLEND_H*/
|