LittlevGL  3.20.00.19
lv_img_decoder.h
Go to the documentation of this file.
1 
6 #ifndef LV_IMG_DEOCER_H
7 #define LV_IMG_DEOCER_H
8 
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12 
13 /*********************
14  * INCLUDES
15  *********************/
16 #ifdef LV_CONF_INCLUDE_SIMPLE
17 #include "lv_conf.h"
18 #else
19 #include "../../../lv_conf.h"
20 #endif
21 
22 #include <stdint.h>
23 #include "../lv_misc/lv_fs.h"
24 #include "../lv_misc/lv_types.h"
25 #include "../lv_misc/lv_area.h"
26 #include "../lv_core/lv_style.h"
27 
28 /*********************
29  * DEFINES
30  *********************/
31 /*If image pixels contains alpha we need to know how much byte is a pixel*/
32 #if LV_COLOR_DEPTH == 1 || LV_COLOR_DEPTH == 8
33 #define LV_IMG_PX_SIZE_ALPHA_BYTE 2
34 #elif LV_COLOR_DEPTH == 16
35 #define LV_IMG_PX_SIZE_ALPHA_BYTE 3
36 #elif LV_COLOR_DEPTH == 32
37 #define LV_IMG_PX_SIZE_ALPHA_BYTE 4
38 #endif
39 
40 /**********************
41  * TYPEDEFS
42  **********************/
43 
46 enum {
51 };
52 
53 typedef uint8_t lv_img_src_t;
57 typedef struct
58 {
59 
60  /* The first 8 bit is very important to distinguish the different source types.
61  * For more info see `lv_img_get_src_type()` in lv_img.c */
62  uint32_t cf : 5; /* Color format: See `lv_img_color_format_t`*/
63  uint32_t always_zero : 3; /*It the upper bits of the first byte. Always zero to look like a
64  non-printable character*/
65 
66  uint32_t reserved : 2; /*Reserved to be used later*/
67 
68  uint32_t w : 11; /*Width of the image map*/
69  uint32_t h : 11; /*Height of the image map*/
71 
72 /*Image color format*/
73 enum {
75 
115 };
116 typedef uint8_t lv_img_cf_t;
117 
120 typedef struct
121 {
123  uint32_t data_size;
124  const uint8_t * data;
125 } lv_img_dsc_t;
126 
127 /* Decoder function definitions */
128 
129 struct _lv_img_decoder;
130 struct _lv_img_decoder_dsc;
131 
139 typedef lv_res_t (*lv_img_decoder_info_f_t)(struct _lv_img_decoder * decoder, const void * src,
140  lv_img_header_t * header);
141 
147 typedef lv_res_t (*lv_img_decoder_open_f_t)(struct _lv_img_decoder * decoder, struct _lv_img_decoder_dsc * dsc);
148 
161  lv_coord_t x, lv_coord_t y, lv_coord_t len, uint8_t * buf);
162 
168 typedef void (*lv_img_decoder_close_f_t)(struct _lv_img_decoder * decoder, struct _lv_img_decoder_dsc * dsc);
169 
170 typedef struct _lv_img_decoder
171 {
176 
177 #if LV_USE_USER_DATA
178  lv_img_decoder_user_data_t user_data;
179 #endif
181 
183 typedef struct _lv_img_decoder_dsc
184 {
187 
189  const void * src;
190 
192  const lv_style_t * style;
193 
195  lv_img_src_t src_type;
196 
199 
202  const uint8_t * img_data;
203 
206  uint32_t time_to_open;
207 
210  const char * error_msg;
211 
213  void * user_data;
215 
216 /**********************
217  * GLOBAL PROTOTYPES
218  **********************/
219 
223 void lv_img_decoder_init(void);
224 
235 lv_res_t lv_img_decoder_get_info(const char * src, lv_img_header_t * header);
236 
249 lv_res_t lv_img_decoder_open(lv_img_decoder_dsc_t * dsc, const void * src, const lv_style_t * style);
250 
260 lv_res_t lv_img_decoder_read_line(lv_img_decoder_dsc_t * dsc, lv_coord_t x, lv_coord_t y, lv_coord_t len,
261  uint8_t * buf);
262 
268 
274 
280 
287 
294 
301 
308 
309 
310 
318 lv_res_t lv_img_decoder_built_in_info(lv_img_decoder_t * decoder, const void * src, lv_img_header_t * header);
319 
327 
340  lv_coord_t y, lv_coord_t len, uint8_t * buf);
341 
348 
349 /**********************
350  * MACROS
351  **********************/
352 
353 #ifdef __cplusplus
354 } /* extern "C" */
355 #endif
356 
357 #endif /*LV_TEMPL_H*/
uint8_t lv_img_cf_t
Definition: lv_img_decoder.h:116
Definition: lv_img_decoder.h:95
void lv_img_decoder_set_read_line_cb(lv_img_decoder_t *decoder, lv_img_decoder_read_line_f_t read_line_cb)
void(* lv_img_decoder_close_f_t)(struct _lv_img_decoder *decoder, struct _lv_img_decoder_dsc *dsc)
Definition: lv_img_decoder.h:168
Definition: lv_img_decoder.h:79
Definition: lv_img_decoder.h:102
Definition: lv_img_decoder.h:99
Definition: lv_img_decoder.h:105
lv_res_t(* lv_img_decoder_read_line_f_t)(struct _lv_img_decoder *decoder, struct _lv_img_decoder_dsc *dsc, lv_coord_t x, lv_coord_t y, lv_coord_t len, uint8_t *buf)
Definition: lv_img_decoder.h:160
Definition: lv_img_decoder.h:107
Definition: lv_img_decoder.h:111
void lv_img_decoder_built_in_close(lv_img_decoder_t *decoder, lv_img_decoder_dsc_t *dsc)
Definition: lv_img_decoder.h:114
Definition: lv_img_decoder.h:97
Definition: lv_img_decoder.h:100
Definition: lv_img_decoder.h:76
Definition: lv_img_decoder.h:113
void lv_img_decoder_set_info_cb(lv_img_decoder_t *decoder, lv_img_decoder_info_f_t info_cb)
struct _lv_img_decoder_dsc lv_img_decoder_dsc_t
Definition: lv_img_decoder.h:98
Definition: lv_img_decoder.h:74
Definition: lv_img_decoder.h:109
Definition: lv_img_decoder.h:103
void lv_img_decoder_close(lv_img_decoder_dsc_t *dsc)
Definition: lv_img_decoder.h:50
Definition: lv_img_decoder.h:88
lv_res_t lv_img_decoder_built_in_open(lv_img_decoder_t *decoder, lv_img_decoder_dsc_t *dsc)
Definition: lv_img_decoder.h:94
Definition: lv_img_decoder.h:57
Definition: lv_img_decoder.h:47
Definition: lv_img_decoder.h:49
lv_res_t lv_img_decoder_read_line(lv_img_decoder_dsc_t *dsc, lv_coord_t x, lv_coord_t y, lv_coord_t len, uint8_t *buf)
Definition: lv_img_decoder.h:90
const char * error_msg
Definition: lv_img_decoder.h:210
struct _lv_img_decoder lv_img_decoder_t
const uint8_t * data
Definition: lv_img_decoder.h:124
const lv_style_t * style
Definition: lv_img_decoder.h:192
lv_img_decoder_info_f_t info_cb
Definition: lv_img_decoder.h:172
lv_res_t(* lv_img_decoder_info_f_t)(struct _lv_img_decoder *decoder, const void *src, lv_img_header_t *header)
Definition: lv_img_decoder.h:139
Definition: lv_img_decoder.h:110
Definition: lv_img_decoder.h:112
lv_img_decoder_t * decoder
Definition: lv_img_decoder.h:186
Definition: lv_img_decoder.h:87
Definition: lv_img_decoder.h:101
const void * src
Definition: lv_img_decoder.h:189
Definition: lv_img_decoder.h:84
Definition: lv_img_decoder.h:82
void lv_img_decoder_delete(lv_img_decoder_t *decoder)
lv_img_header_t header
Definition: lv_img_decoder.h:198
uint32_t time_to_open
Definition: lv_img_decoder.h:206
void lv_img_decoder_init(void)
lv_res_t lv_img_decoder_get_info(const char *src, lv_img_header_t *header)
lv_res_t lv_img_decoder_built_in_info(lv_img_decoder_t *decoder, const void *src, lv_img_header_t *header)
lv_res_t(* lv_img_decoder_open_f_t)(struct _lv_img_decoder *decoder, struct _lv_img_decoder_dsc *dsc)
Definition: lv_img_decoder.h:147
void * user_data
Definition: lv_img_decoder.h:213
Definition: lv_img_decoder.h:48
Definition: lv_img_decoder.h:120
lv_img_decoder_t * lv_img_decoder_create(void)
const uint8_t * img_data
Definition: lv_img_decoder.h:202
uint8_t lv_res_t
Definition: lv_types.h:33
lv_img_src_t src_type
Definition: lv_img_decoder.h:195
uint32_t data_size
Definition: lv_img_decoder.h:123
Definition: lv_img_decoder.h:170
lv_res_t lv_img_decoder_built_in_read_line(lv_img_decoder_t *decoder, lv_img_decoder_dsc_t *dsc, lv_coord_t x, lv_coord_t y, lv_coord_t len, uint8_t *buf)
lv_res_t lv_img_decoder_open(lv_img_decoder_dsc_t *dsc, const void *src, const lv_style_t *style)
Definition: lv_img_decoder.h:108
void lv_img_decoder_set_close_cb(lv_img_decoder_t *decoder, lv_img_decoder_close_f_t close_cb)
lv_img_decoder_read_line_f_t read_line_cb
Definition: lv_img_decoder.h:174
void lv_img_decoder_set_open_cb(lv_img_decoder_t *decoder, lv_img_decoder_open_f_t open_cb)
Definition: lv_img_decoder.h:92
Definition: lv_img_decoder.h:83
Definition: lv_img_decoder.h:93
uint8_t lv_img_src_t
Definition: lv_img_decoder.h:53
Definition: lv_img_decoder.h:183
Definition: lv_style.h:57
Definition: lv_img_decoder.h:104
lv_img_decoder_open_f_t open_cb
Definition: lv_img_decoder.h:173
lv_img_decoder_close_f_t close_cb
Definition: lv_img_decoder.h:175
Definition: lv_img_decoder.h:89
lv_img_header_t header
Definition: lv_img_decoder.h:122
Definition: lv_img_decoder.h:77
© Copyright 1995-2019, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale