1
0
mirror of https://github.com/lvgl/lvgl.git synced 2025-01-28 07:03:00 +08:00

add USE_LV_USER_DATA_SINGLE/MULTI

This commit is contained in:
Gabor Kiss-Vamosi 2019-02-25 07:06:05 +01:00
parent 663b8d6c89
commit eb33596d02
4 changed files with 26 additions and 7 deletions

View File

@ -161,6 +161,12 @@
#ifndef USE_LV_I18N
#define USE_LV_I18N 1 /*1: Enable InternationalizatioN (multi-language) support*/
#endif
#ifndef USE_LV_USER_DATA_SINGLE
#define USE_LV_USER_DATA_SINGLE 1 /*1: Add a `user_data` to drivers and objects*/
#endif
#ifndef USE_LV_USER_DATA_MULTI
#define USE_LV_USER_DATA_MULTI 0 /*1: Add separate `user_data` for every callback*/
#endif
/*Compiler settings*/
#ifndef LV_ATTRIBUTE_TICK_INC

View File

@ -90,11 +90,9 @@
#define USE_LV_GROUP 1 /*1: Enable object groups (for keyboards)*/
#define USE_LV_GPU 1 /*1: Enable GPU interface*/
#define USE_LV_FILESYSTEM 1 /*1: Enable file system (might be required for images*/
<<<<<<< HEAD
#define USE_LV_I18N 1 /*1: Enable InternationalizatioN (multi-language) support*/
=======
#define USE_LV_I18N 0 /*1: Enable InternationalizatioN (multi-language) support*/
>>>>>>> i18n
#define USE_LV_USER_DATA_SINGLE 1 /*1: Add a `user_data` to drivers and objects*/
#define USE_LV_USER_DATA_MULTI 0 /*1: Add separate `user_data` for every callback*/
/*Compiler settings*/
#define LV_ATTRIBUTE_TICK_INC /* Define a custom attribute to `lv_tick_inc` function */

View File

@ -69,22 +69,30 @@ typedef struct _disp_drv_t {
/* MANDATORY: Write the internal buffer (VDB) to the display. 'lv_flush_ready()' has to be called when finished */
void (*flush_cb)(struct _disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p);
lv_disp_drv_user_data_t flush_user_data;
/* OPTIONAL: Extend the invalidated areas to match with the display drivers requirements
* E.g. round `y` to, 8, 16 ..) on a monochrome display*/
void (*rounder_cb)(struct _disp_drv_t * disp_drv, lv_area_t * area);
lv_disp_drv_user_data_t rounder_user_data;
/* OPTIONAL: Set a pixel in a buffer according to the special requirements of the display
* Can be used for color format not supported in LittelvGL. E.g. 2 bit -> 4 gray scales
* Note: Much slower then drawing with supported color formats. */
void (*set_px_cb)(struct _disp_drv_t * disp_drv, uint8_t * buf, lv_coord_t buf_w, lv_coord_t x, lv_coord_t y, lv_color_t color, lv_opa_t opa);
lv_disp_drv_user_data_t set_px_user_data;
/* OPTIONAL: Called after every refresh cycle to tell the rendering and flushing time + the number of flushed pixels */
void (*monitor_cb)(struct _disp_drv_t * disp_drv, uint32_t time, uint32_t px);
#if USE_LV_USER_DATA_SINGLE
lv_disp_drv_user_data_t user_data;
#endif
#if USE_LV_USER_DATA_MULTI
lv_disp_drv_user_data_t flush_user_data;
lv_disp_drv_user_data_t rounder_user_data;
lv_disp_drv_user_data_t set_px_user_data;
lv_disp_drv_user_data_t monitor_user_data;
#endif
#if USE_LV_GPU
/*OPTIONAL: Blend two memories using opacity (GPU only)*/

View File

@ -72,7 +72,14 @@ typedef struct {
typedef struct _lv_indev_drv_t {
lv_hal_indev_type_t type; /*Input device type*/
bool (*read_cb)(struct _lv_indev_drv_t * indev_drv, lv_indev_data_t *data); /*Function pointer to read_cb data. Return 'true' if there is still data to be read_cb (buffered)*/
#if USE_LV_USER_DATA_MULTI
lv_indev_drv_user_data_t read_user_data; /*Pointer to user defined data, passed in 'lv_indev_data_t' on read*/
#endif
#if USE_LV_USER_DATA_SINGLE
lv_indev_drv_user_data_t user_data;
#endif
struct _disp_t * disp; /*Pointer to the assigned display*/
} lv_indev_drv_t;