84 lines
2.4 KiB
C
84 lines
2.4 KiB
C
/**
|
|
* @file lv_draw_layer.h
|
|
*
|
|
*/
|
|
|
|
#ifndef LV_DRAW_LAYER_H
|
|
#define LV_DRAW_LAYER_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*********************
|
|
* INCLUDES
|
|
*********************/
|
|
#include "../lv_conf_internal.h"
|
|
|
|
/*********************
|
|
* DEFINES
|
|
*********************/
|
|
|
|
/**********************
|
|
* TYPEDEFS
|
|
**********************/
|
|
struct _lv_draw_ctx_t;
|
|
struct _lv_draw_layer_ctx_t;
|
|
|
|
typedef enum {
|
|
LV_DRAW_LAYER_FLAG_NONE,
|
|
LV_DRAW_LAYER_FLAG_HAS_ALPHA,
|
|
LV_DRAW_LAYER_FLAG_CAN_SUBDIVIDE,
|
|
} lv_draw_layer_flags_t;
|
|
|
|
/**********************
|
|
* GLOBAL PROTOTYPES
|
|
**********************/
|
|
|
|
/**
|
|
* Create a new layer context. It is used to start and independent rendering session
|
|
* with the current draw_ctx
|
|
* @param draw_ctx pointer to the current draw context
|
|
* @param layer_area the coordinates of the layer
|
|
* @param flags OR-ed flags from @lv_draw_layer_flags_t
|
|
* @return pointer to the layer context, or NULL on error
|
|
*/
|
|
struct _lv_draw_layer_ctx_t * lv_draw_layer_create(struct _lv_draw_ctx_t * draw_ctx, const lv_area_t * layer_area,
|
|
lv_draw_layer_flags_t flags);
|
|
|
|
/**
|
|
* Adjust the layer_ctx and/or draw_ctx based on the `layer_ctx->area_act`.
|
|
* It's called only if flags has `LV_DRAW_LAYER_FLAG_CAN_SUBDIVIDE`
|
|
* @param draw_ctx pointer to the current draw context
|
|
* @param layer_ctx pointer to a layer context
|
|
* @param flags OR-ed flags from @lv_draw_layer_flags_t
|
|
*/
|
|
void lv_draw_layer_adjust(struct _lv_draw_ctx_t * draw_ctx, struct _lv_draw_layer_ctx_t * layer_ctx,
|
|
lv_draw_layer_flags_t flags);
|
|
|
|
/**
|
|
* Blend a rendered layer to `layer_ctx->area_act`
|
|
* @param draw_ctx pointer to the current draw context
|
|
* @param layer_ctx pointer to a layer context
|
|
* @param draw_dsc pointer to an image draw descriptor
|
|
*/
|
|
void lv_draw_layer_blend(struct _lv_draw_ctx_t * draw_ctx, struct _lv_draw_layer_ctx_t * layer_ctx,
|
|
lv_draw_img_dsc_t * draw_dsc);
|
|
|
|
/**
|
|
* Destroy a layer context.
|
|
* @param draw_ctx pointer to the current draw context
|
|
* @param layer_ctx pointer to a layer context
|
|
*/
|
|
void lv_draw_layer_destroy(struct _lv_draw_ctx_t * draw_ctx, struct _lv_draw_layer_ctx_t * layer_ctx);
|
|
|
|
/**********************
|
|
* MACROS
|
|
**********************/
|
|
|
|
#ifdef __cplusplus
|
|
} /*extern "C"*/
|
|
#endif
|
|
|
|
#endif /*LV_DRAW_LAYER_H*/
|