mirror of
https://github.com/lvgl/lvgl.git
synced 2025-01-28 07:03:00 +08:00
91 lines
2.0 KiB
C
91 lines
2.0 KiB
C
/**
|
|
* @file lv_vdb.h
|
|
*
|
|
*/
|
|
|
|
#ifndef LV_VDB_H
|
|
#define LV_VDB_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*********************
|
|
* INCLUDES
|
|
*********************/
|
|
#ifdef LV_CONF_INCLUDE_SIMPLE
|
|
#include "lv_conf.h"
|
|
#else
|
|
#include "../../lv_conf.h"
|
|
#endif
|
|
|
|
#if LV_VDB_SIZE != 0
|
|
|
|
#include "../lv_misc/lv_color.h"
|
|
#include "../lv_misc/lv_area.h"
|
|
|
|
/*********************
|
|
* DEFINES
|
|
*********************/
|
|
/*Can be used in `lv_conf.h` the set an invalid address for the VDB. It should be replaced later by a valid address using `lv_vdb_set_adr()`*/
|
|
#define LV_VDB_ADR_INV 8 /*8 is still too small to be valid but it's aligned on 64 bit machines as well*/
|
|
|
|
#ifndef LV_VDB_PX_BPP
|
|
#warning "LV_VDB_PX_BPP is not specified in lv_conf.h. Use the default value (LV_COLOR_SIZE)"
|
|
#define LV_VDB_PX_BPP LV_COLOR_SIZE
|
|
#endif
|
|
/**********************
|
|
* TYPEDEFS
|
|
**********************/
|
|
|
|
typedef struct
|
|
{
|
|
lv_area_t area;
|
|
lv_color_t *buf;
|
|
} lv_vdb_t;
|
|
|
|
/**********************
|
|
* GLOBAL PROTOTYPES
|
|
**********************/
|
|
|
|
/**
|
|
* Get the 'vdb' variable or allocate one in LV_VDB_DOUBLE mode
|
|
* @return pointer to a 'vdb' variable
|
|
*/
|
|
lv_vdb_t * lv_vdb_get(void);
|
|
|
|
/**
|
|
* Flush the content of the vdb
|
|
*/
|
|
void lv_vdb_flush(void);
|
|
|
|
/**
|
|
* Set the address of VDB buffer(s) manually. To use this set `LV_VDB_ADR` (and `LV_VDB2_ADR`) to `LV_VDB_ADR_INV` in `lv_conf.h`.
|
|
* It should be called before `lv_init()`.
|
|
* The size of the buffer should be: `((LV_VDB_SIZE * LV_VDB_PX_BPP) >> 3) + (((LV_VDB_SIZE * LV_VDB_PX_BPP) & 0x7) ? 1 : 0)`
|
|
* @param buf1 address of the VDB.
|
|
* @param buf2 address of the second buffer. `NULL` if `LV_VDB_DOUBLE 0`
|
|
*/
|
|
void lv_vdb_set_adr(void * buf1, void * buf2);
|
|
|
|
/**
|
|
* Call in the display driver's 'disp_flush' function when the flushing is finished
|
|
*/
|
|
void lv_flush_ready(void);
|
|
|
|
/**********************
|
|
* MACROS
|
|
**********************/
|
|
|
|
#else /*LV_VDB_SIZE != 0*/
|
|
|
|
/*Just for compatibility*/
|
|
void lv_flush_ready(void);
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
} /* extern "C" */
|
|
#endif
|
|
|
|
#endif /*LV_VDB_H*/
|