LittlevGL  3.20.00.19
lv_hal_disp.h
Go to the documentation of this file.
1 
8 #ifndef LV_HAL_DISP_H
9 #define LV_HAL_DISP_H
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 /*********************
16  * INCLUDES
17  *********************/
18 #include <stdint.h>
19 #include <stdbool.h>
20 #include "lv_hal.h"
21 #include "../lv_misc/lv_color.h"
22 #include "../lv_misc/lv_area.h"
23 #include "../lv_misc/lv_ll.h"
24 #include "../lv_misc/lv_task.h"
25 
26 /*********************
27  * DEFINES
28  *********************/
29 #ifndef LV_INV_BUF_SIZE
30 #define LV_INV_BUF_SIZE 32 /*Buffer size for invalid areas */
31 #endif
32 
33 #ifndef LV_ATTRIBUTE_FLUSH_READY
34 #define LV_ATTRIBUTE_FLUSH_READY
35 #endif
36 
37 /**********************
38  * TYPEDEFS
39  **********************/
40 
41 struct _disp_t;
42 struct _disp_drv_t;
43 
47 typedef struct
48 {
49  void * buf1;
50  void * buf2;
52  /*Internal, used by the library*/
53  void * buf_act;
54  uint32_t size; /*In pixel count*/
56  volatile uint32_t flushing : 1;
58 
62 typedef struct _disp_drv_t
63 {
64 
65  lv_coord_t hor_res;
66  lv_coord_t ver_res;
71 
72 #if LV_ANTIALIAS
73  uint32_t antialiasing : 1;
74 #endif
75  uint32_t rotated : 1;
77 #if LV_COLOR_SCREEN_TRANSP
78 
80  uint32_t screen_transp : 1;
81 #endif
82 
85  void (*flush_cb)(struct _disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p);
86 
89  void (*rounder_cb)(struct _disp_drv_t * disp_drv, lv_area_t * area);
90 
94  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,
95  lv_color_t color, lv_opa_t opa);
96 
99  void (*monitor_cb)(struct _disp_drv_t * disp_drv, uint32_t time, uint32_t px);
100 
101 #if LV_USE_GPU
102 
103  void (*gpu_blend_cb)(struct _disp_drv_t * disp_drv, lv_color_t * dest, const lv_color_t * src, uint32_t length,
104  lv_opa_t opa);
105 
107  void (*gpu_fill_cb)(struct _disp_drv_t * disp_drv, lv_color_t * dest_buf, lv_coord_t dest_width,
108  const lv_area_t * fill_area, lv_color_t color);
109 #endif
110 
113  lv_color_t color_chroma_key;
114 
115 #if LV_USE_USER_DATA
116  lv_disp_drv_user_data_t user_data;
117 #endif
118 
119 } lv_disp_drv_t;
120 
121 struct _lv_obj_t;
122 
127 typedef struct _disp_t
128 {
131 
134 
137  struct _lv_obj_t * act_scr;
138  struct _lv_obj_t * top_layer;
139  struct _lv_obj_t * sys_layer;
142  lv_area_t inv_areas[LV_INV_BUF_SIZE];
143  uint8_t inv_area_joined[LV_INV_BUF_SIZE];
144  uint32_t inv_p : 10;
145 
146  /*Miscellaneous data*/
148 } lv_disp_t;
149 
150 /**********************
151  * GLOBAL PROTOTYPES
152  **********************/
153 
160 void lv_disp_drv_init(lv_disp_drv_t * driver);
161 
177 void lv_disp_buf_init(lv_disp_buf_t * disp_buf, void * buf1, void * buf2, uint32_t size_in_px_cnt);
178 
186 
192 void lv_disp_drv_update(lv_disp_t * disp, lv_disp_drv_t * new_drv);
193 
198 void lv_disp_remove(lv_disp_t * disp);
199 
204 void lv_disp_set_default(lv_disp_t * disp);
205 
211 
217 lv_coord_t lv_disp_get_hor_res(lv_disp_t * disp);
218 
224 lv_coord_t lv_disp_get_ver_res(lv_disp_t * disp);
225 
232 
234 
239 LV_ATTRIBUTE_FLUSH_READY void lv_disp_flush_ready(lv_disp_drv_t * disp_drv);
240 
242 
249 
256 
261 uint16_t lv_disp_get_inv_buf_size(lv_disp_t * disp);
262 
267 void lv_disp_pop_from_inv_buf(lv_disp_t * disp, uint16_t num);
268 
274 bool lv_disp_is_double_buf(lv_disp_t * disp);
275 
283 
284 /**********************
285  * MACROS
286  **********************/
287 
288 #ifdef __cplusplus
289 } /* extern "C" */
290 #endif
291 
292 #endif
bool lv_disp_is_double_buf(lv_disp_t *disp)
lv_coord_t hor_res
Definition: lv_hal_disp.h:65
void(* monitor_cb)(struct _disp_drv_t *disp_drv, uint32_t time, uint32_t px)
Definition: lv_hal_disp.h:99
lv_disp_t * lv_disp_get_next(lv_disp_t *disp)
struct _disp_drv_t lv_disp_drv_t
lv_task_t * refr_task
Definition: lv_hal_disp.h:133
Definition: lv_obj.h:184
lv_coord_t lv_disp_get_ver_res(lv_disp_t *disp)
uint32_t size
Definition: lv_hal_disp.h:54
void * buf_act
Definition: lv_hal_disp.h:53
uint32_t rotated
Definition: lv_hal_disp.h:75
Definition: lv_hal_disp.h:127
Definition: lv_task.h:62
struct _disp_t lv_disp_t
lv_disp_buf_t * buffer
Definition: lv_hal_disp.h:70
void lv_disp_buf_init(lv_disp_buf_t *disp_buf, void *buf1, void *buf2, uint32_t size_in_px_cnt)
void(* rounder_cb)(struct _disp_drv_t *disp_drv, lv_area_t *area)
Definition: lv_hal_disp.h:89
void lv_disp_set_default(lv_disp_t *disp)
void lv_disp_pop_from_inv_buf(lv_disp_t *disp, uint16_t num)
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)
Definition: lv_hal_disp.h:94
void lv_disp_drv_init(lv_disp_drv_t *driver)
uint8_t lv_opa_t
Definition: lv_color.h:162
void * buf1
Definition: lv_hal_disp.h:49
struct _lv_obj_t * sys_layer
Definition: lv_hal_disp.h:139
lv_coord_t ver_res
Definition: lv_hal_disp.h:66
bool lv_disp_get_antialiasing(lv_disp_t *disp)
void * buf2
Definition: lv_hal_disp.h:50
uint32_t last_activity_time
Definition: lv_hal_disp.h:147
void lv_disp_drv_update(lv_disp_t *disp, lv_disp_drv_t *new_drv)
lv_disp_drv_t driver
Definition: lv_hal_disp.h:130
lv_disp_buf_t * lv_disp_get_buf(lv_disp_t *disp)
bool lv_disp_is_true_double_buf(lv_disp_t *disp)
lv_color_t color_chroma_key
Definition: lv_hal_disp.h:113
lv_area_t area
Definition: lv_hal_disp.h:55
lv_disp_t * lv_disp_drv_register(lv_disp_drv_t *driver)
lv_disp_t * lv_disp_get_default(void)
lv_ll_t scr_ll
Definition: lv_hal_disp.h:136
void(* flush_cb)(struct _disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p)
Definition: lv_hal_disp.h:85
Definition: lv_hal_disp.h:47
void lv_disp_remove(lv_disp_t *disp)
Definition: lv_area.h:46
Definition: lv_hal_disp.h:62
struct _lv_obj_t * top_layer
Definition: lv_hal_disp.h:138
lv_coord_t lv_disp_get_hor_res(lv_disp_t *disp)
uint16_t lv_disp_get_inv_buf_size(lv_disp_t *disp)
Definition: lv_ll.h:33
struct _lv_obj_t * act_scr
Definition: lv_hal_disp.h:137
© Copyright 1995-2019, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale